From alsa-devel-owner@alsa.jcu.cz  Sun Feb  7 01:19:55 1999
Received: from www.tomy.net (IDENT:root@www.tomy.net [209.186.149.104])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id BAA15514
	for <alsa-devel@alsa.jcu.cz>; Sun, 7 Feb 1999 01:17:35 +0100
Received: from cygnus.com (thudson@jimi.tomy.net [192.168.1.2])
	by www.tomy.net (8.8.7/8.8.7) with ESMTP id TAA10581
	for <alsa-devel@alsa.jcu.cz>; Sat, 6 Feb 1999 19:17:32 -0500
Message-ID: <36BCDB9C.E9CAE0EF@cygnus.com>
Date: Sun, 07 Feb 1999 00:17:32 +0000
From: Thomas Hudson <thudson@cygnus.com>
MIME-Version: 1.0
To: alsa-devel@alsa.jcu.cz
Subject: Re: Writing Article Re: Linux audio;  also have new hardware support
References: <199902052339.AAA16090@obelix.vande-pol.demon.nl>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

Frank van de Pol wrote:
> The channel / device management like on Apple Macs you mentioned in your
> example is indeed very important for pro work, especially if one has a
> complex or big MIDI configuration. This is application specific work, but
> some kind of standard or a library might help here. Unfortunate these kind
> of stuff is almost nonexisting for other platforms than Apple... For the
> time being a end-user application (like a sequencer app) wil have to provide
> facilities for that. Simply 'Naming" individual channels might already be
> enough for most users.
> 
I've been giving this a lot of thought lately. I think the ALSA sequencer 
is the right foundation for something more. I know that on Windows, sequencers
like Cakewalk let you define each channel in terms of what is listening on that
channel, let you define patch names, and even let you define note names for
drum patches. This IMHO is a bad approach, since I have to do it for every
app. My setup further complicates this in that I have a MIDI-controlled
patch bay w/ eight inputs and outputs. I plan to soon port software I've 
written that multiplexes two outputs from my computer to the eight outs
on the patch bay. Thus, my software has to "lie" about eight devices
connected, receive the events for the devices, and set up routing before
sending the message on to the appropriate device.

I've thought of writing a facility on top of ALSA similar to Opcode's 
OMS (Open MIDI System, what a misnomer). A facility to allow a user
to describe his setup. This can be automated somewhat for newer devices
using the Universal Non-realtime SysEx Device Inquiry. 

For a high level interface, I want to direct apps and applets to named
devices and other apps. I also want a facility for obtaining patch names.
Perhaps this naming facility runs as a port listener and when a request
for patch names is received it invokes the patch manager for that device.
This could also hide differences in bank switching. For example my
Ultraproteus has 4 banks of 128 programs. This should simply appear
as 512 available patches to another program. Requests would be made
for a patch name and not by sending program change requests. Older
devices don't always use the standard for bank switching.

All this of course could be user space. All easily done with the 
current sequencer design (which I find excellent, BTW).

Has anyone given these issues any thought? Could we get some ideas
and possibly start working toward a design. I had considered using
Orbit/Gnome (a CORBA orb), but I realize this may not be on every 
users machine and it may be overkill (and slow).

Thomas

