From nobody Sat Aug 24 12:09:14 2024 X-Original-To: dev-commits-src-all@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 4WrbMb2W98z5T0mP; Sat, 24 Aug 2024 12:09:15 +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 4WrbMZ4vlnz5460; Sat, 24 Aug 2024 12:09:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1724501354; 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=umN6f1T5cut+p/7sXaW3ybZl3dzIxdBIiQSZGEzHdEw=; b=GqMpFJlKjMNJGixNsKmmTzWwgMd5SL+IFeF541G87lf+cTw+OUICtkrafmnvWfdb0QKQ0H 4D3xD7IRwMozdk08GYe8FDhCrZf+A/aac4/WUqiY+Xf1dXBQvCOdA89Py9D+xCqgscaI+D XVQqPlCYLEcaqM40nz3Ji1WFAruf9joS2lSh2M2+hAKk33ZzTOvz2KMeQJLNX/AdhHhkiP VE083MRhff0nthMPfUKfzhAXzDVzZ6XNOpW/bcWdBKJOh+jkQ9kod/PUivvZJ8PdsEq0dn VdEYNHrsOxKB0ZKhX8ihOCgTL0Uq5KDuKUNVugIE8Y41pFZfyNLmHzASysY9Kg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1724501354; a=rsa-sha256; cv=none; b=xgdR9APCnOW36f4LR2UNyRVX0O39nJx+12CqCtP2gvHIBQH2sJrLiaD2LsIMBxV6yvk4py v4/juZ24X5KqVyGQhTBTsIprGDdf+xz4KITSH0kXZjh7sAp4tdxkV0FJjb3v/jjoV4Io89 D24mGLd8EBlB9BJyFmtv58PMxU4L0V3n//sMR6Tio8/gxAPeOaFhD9tpHEZNhruf5leMG0 2FHejEp94hytzZL9MiUF/lnjTv8u1y9mdN2s39WUxGXV+Fn5hh33ao5d/m/LHds3wjzLa/ 5EyUdpq6gd3X9KXBKRau7qlIRaWcB2OctZWxMbwVbT4wMY0YsQYFZR94O3Xnng== 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=1724501354; 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=umN6f1T5cut+p/7sXaW3ybZl3dzIxdBIiQSZGEzHdEw=; b=MLdqgGmXTqG2AxPH77Xeit9hH8XUVDixWjoHPH42BrrFESdj5lV1tqHtQudWtUZPYLqLB4 V0WH4K18T01u0j8L/xnMeOC1i/aSUSmv5mm6mwcO+DfoVDfsykDHkdPxQeZtk48ewhijuU dA8TQba51mR2qmonQ5ChyfYWAwXCMhe8K2qh4rm2/HJ+VVt2v0p5K8MwjLsrjwwRQ/OgZx g+Bh9vTVLuBb/gM6pdUyzuqVqIjXVELOGWBEzTgHTjv9dzdATYlp4LzFvk/+h31LFitCug c/E19+CQxmbbTlYN1g6uWz6Xr4wTkrOaMmok2N2Ql0NYV/U2okzhvw8j9VwRkg== 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 4WrbMZ3fCwzvHH; Sat, 24 Aug 2024 12:09:14 +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 47OC9EvH048092; Sat, 24 Aug 2024 12:09:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 47OC9EIF048089; Sat, 24 Aug 2024 12:09:14 GMT (envelope-from git) Date: Sat, 24 Aug 2024 12:09:14 GMT Message-Id: <202408241209.47OC9EIF048089@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 0ca4d5d8209c - main - sound examples: Simplify MIDI example List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: 0ca4d5d8209cf4d2d0bb37d7f20d95ac3457026d Auto-Submitted: auto-generated The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=0ca4d5d8209cf4d2d0bb37d7f20d95ac3457026d commit 0ca4d5d8209cf4d2d0bb37d7f20d95ac3457026d Author: Christos Margiolis AuthorDate: 2024-08-24 12:07:40 +0000 Commit: Christos Margiolis CommitDate: 2024-08-24 12:07:40 +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 --- 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 211ec2272c05..d57416112226 100644 --- a/share/examples/Makefile +++ b/share/examples/Makefile @@ -322,8 +322,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 6d6ac9aa0fcd..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 CONTROLLER_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 CONTROLLER_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 99a6bacffe73..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 CONTROLLER_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); - } -}