From nobody Mon Aug 26 13:54:47 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4WsscR51Pmz5Sy2p; Mon, 26 Aug 2024 13:54:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WsscR3c01z4fMB; Mon, 26 Aug 2024 13:54:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1724680487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YK/1o6TpLuAbgxMqWSu22W943yNZb11tvAW99vCn0JM=; b=Tz6pngQ86OD6EcABgM1RfNv8K6oHyN3eJsIiuM/zC1mmiHqIZXl0BxNJHF6rVdVIyrMay5 a4xe9Faks1QIPJA+Vu38MMoiXXspKJ4bHcIKYuqJjQ6DXY0NWnY8/1lg/2/DiWmxDjECbN pWBFKbJIyENcdguEMIy9L8j/pOdweq97Rt4C/2kqs24jF19/5bB099ugJvMFXHvm9HJUXg 0cZlURmOxgLpYPgAi5FI/QVfZckEuB/7OE/LZoeGg0F6EQDaMXl2ijRTE6aHs/6mW0ZhN8 YCviJoiecdbcC5EhXF5di8mU4LHPs37ElPM9o1XqKKzm9oMl4mqwRwYD2YYc9A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1724680487; a=rsa-sha256; cv=none; b=U248Cne8HcjbsEqtGkSN+KJzi93GkobB6mH1movEoSail2nCYrQshQg/WfviexIPD3C7wj pxGI1wi/BnA8nqswrrRnN3IJFKI6Yhblv0jq9da2psk86eX4OXvJiS58CHiu4ZFDWsR048 uK2esalINhuC1lL8xCrzb3LezMTUpqkReR8xtBHyKsMMwY1VvVdv18cFtybJB6n8GFDhq1 5oy4BFLf2aZG5tSt/bWMUO9TpwGTKbK+iQmV8ShQHimFaAab8flQI9psnk0MpIQ/to3+nz N/sHS/CPG8wumgQtvntxGJ7jab98BFf7C2gkeBqm3gS9LGu9VDr2fZZBRKor3w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1724680487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YK/1o6TpLuAbgxMqWSu22W943yNZb11tvAW99vCn0JM=; b=Z6bUeBsAeZHsOC5A8t1DtDv1tCSyCEmpJq7nDzR5VNPFSH1b9AA6waoV9Bn0gsUBQJtY5b oLzK0oIiLATA+2Oyv2EcqNNCyLNGx/3/dX0KJm85cXZCrZSwxzDJe2bkSZxJ/eq2QENFr2 5+fiiWcN/+Aa1ym+dq+sFxH5s6butK2Q0Z9zgyn9AyYK69mXAG+tt0pBt/B9qFxZkKwsYO aQpPbglKi9QBXDnAFoFxDATNIQbIbSH4aT++yETxgLmQcEKpTXnXpDXcgiOhNe4MhXOgLR aMIs2f+c3hd3f9+LQLbTy+ThiXbaxUaYTX71xGbpYwJotkTMLQYxQpJv06sAwA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4WsscR2r5Pz17RW; Mon, 26 Aug 2024 13:54:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 47QDsliT017364; Mon, 26 Aug 2024 13:54:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 47QDslRj017361; Mon, 26 Aug 2024 13:54:47 GMT (envelope-from git) Date: Mon, 26 Aug 2024 13:54:47 GMT Message-Id: <202408261354.47QDslRj017361@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 276d76adf984 - stable/14 - sound examples: Simplify MIDI example List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 276d76adf984909876dc72970244ea43049217ce Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=276d76adf984909876dc72970244ea43049217ce commit 276d76adf984909876dc72970244ea43049217ce Author: Christos Margiolis AuthorDate: 2024-08-24 12:07:40 +0000 Commit: Christos Margiolis CommitDate: 2024-08-26 13:52:59 +0000 sound examples: Simplify MIDI example Sponsored by: The FreeBSD Foundation MFC after: 2 days Reviewed by: dev_submerge.ch, emaste Differential Revision: https://reviews.freebsd.org/D46306 (cherry picked from commit 0ca4d5d8209cf4d2d0bb37d7f20d95ac3457026d) --- share/examples/Makefile | 3 +- share/examples/sound/oss/midi.c | 77 ++++++++++++++++++++++---------------- share/examples/sound/oss/ossmidi.h | 63 ------------------------------- 3 files changed, 46 insertions(+), 97 deletions(-) diff --git a/share/examples/Makefile b/share/examples/Makefile index 1fbc74f51083..04117719aa95 100644 --- a/share/examples/Makefile +++ b/share/examples/Makefile @@ -318,8 +318,7 @@ SE_SOUND_OSS= \ README \ basic.c \ midi.c \ - ossinit.h \ - ossmidi.h + ossinit.h SE_DIRS+= sunrpc SE_SUNRPC= Makefile diff --git a/share/examples/sound/oss/midi.c b/share/examples/sound/oss/midi.c index 7149bcb31c82..5b001ba537e5 100644 --- a/share/examples/sound/oss/midi.c +++ b/share/examples/sound/oss/midi.c @@ -2,6 +2,10 @@ * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2022 Goran Mekić + * Copyright (c) 2024 The FreeBSD Foundation + * + * Portions of this software were developed by Christos Margiolis + * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -25,52 +29,61 @@ * SUCH DAMAGE. */ +#include +#include +#include +#include #include -#include "ossmidi.h" +#define CMD_MASK 0xF0 +#define CHANNEL_MASK 0x0F +#define NOTE_ON 0x90 +#define NOTE_OFF 0x80 +#define CTL_CHANGE 0xB0 int -main() +main(int argc, char *argv[]) { - midi_event_t event; - midi_config_t midi_config; - int l = -1; - unsigned char raw; + int fd; + unsigned char raw, type, channel, b1, b2; - midi_config.device = "/dev/umidi1.0"; - oss_midi_init(&midi_config); + if ((fd = open("/dev/umidi0.0", O_RDWR)) < 0) + err(1, "Error opening MIDI device"); - while ((l = read(midi_config.fd, &raw, sizeof(raw))) != -1) { - if (!(raw & 0x80)) { + for (;;) { + if (read(fd, &raw, sizeof(raw)) < sizeof(raw)) + err(1, "Error reading command byte"); + if (!(raw & 0x80)) continue; - } - event.type = raw & CMD_MASK; - event.channel = raw & CHANNEL_MASK; - switch (event.type) { + + type = raw & CMD_MASK; + channel = raw & CHANNEL_MASK; + + if (read(fd, &b1, sizeof(b1)) < sizeof(b1)) + err(1, "Error reading byte 1"); + if (read(fd, &b2, sizeof(b2)) < sizeof(b2)) + err(1, "Error reading byte 2"); + + switch (type) { case NOTE_ON: - case NOTE_OFF: - case CONTROLER_ON: - if ((l = read(midi_config.fd, &(event.note), sizeof(event.note))) == -1) { - perror("Error reading MIDI note"); - exit(1); - } - if ((l = read(midi_config.fd, &(event.velocity), sizeof(event.velocity))) == -1) { - perror("Error reading MIDI velocity"); - exit(1); - } + printf("Channel %d, note on %d, velocity %d\n", + channel, b1, b2); break; - } - switch (event.type) { - case NOTE_ON: case NOTE_OFF: - printf("Channel %d, note %d, velocity %d\n", event.channel, event.note, event.velocity); + printf("Channel %d, note off %d, velocity %d\n", + channel, b1, b2); break; - case CONTROLER_ON: - printf("Channel %d, controller %d, value %d\n", event.channel, event.controller, event.value); + case CTL_CHANGE: + printf("Channel %d, controller change %d, value %d\n", + channel, b1, b2); break; default: - printf("Unknown event type %d\n", event.type); + printf("Unknown event type %d\n", type); + break; } } - return 0; + + close(fd); + + return (0); } diff --git a/share/examples/sound/oss/ossmidi.h b/share/examples/sound/oss/ossmidi.h deleted file mode 100644 index 60bf5e41173e..000000000000 --- a/share/examples/sound/oss/ossmidi.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2022 Goran Mekić - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include - -#define CMD_MASK 0xF0 -#define NOTE_ON 0x90 -#define NOTE_OFF 0x80 -#define CHANNEL_MASK 0xF -#define CONTROLER_ON 0xB0 - -typedef struct midi_event { - unsigned char type; - unsigned char channel; - union { - unsigned char note; - unsigned controller; - }; - union { - unsigned char velocity; - unsigned char value; - }; -} midi_event_t; - -typedef struct midi_config { - char *device; - int fd; -} midi_config_t; - -void -oss_midi_init(midi_config_t *config) -{ - if ((config->fd = open(config->device, O_RDWR)) == -1) { - perror("Error opening MIDI device"); - exit(1); - } -}