From alsa-devel-owner@alsa.jcu.cz  Mon Feb  8 01:00:39 1999
Received: from post.mail.nl.demon.net (post-10.mail.nl.demon.net [194.159.73.20])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id AAA17970
	for <alsa-devel@alsa.jcu.cz>; Mon, 8 Feb 1999 00:58:42 +0100
Received: from [212.238.75.184] (helo=obelix.vande-pol.demon.nl)
	by post.mail.nl.demon.net with esmtp (Exim 2.02 #1)
	id 109e60-0001Xb-00
	for alsa-devel@alsa.jcu.cz; Sun, 7 Feb 1999 23:58:36 +0000
Received: (from frank@localhost)
	by obelix.vande-pol.demon.nl (8.8.7/8.8.7) id AAA31288
	for alsa-devel@alsa.jcu.cz; Mon, 8 Feb 1999 00:53:45 +0100
From: Frank van de Pol <frank@vande-pol.demon.nl>
Message-Id: <199902072353.AAA31288@obelix.vande-pol.demon.nl>
Subject: Re: Writing Article Re: Linux audio;  also have new hardware support
To: alsa-devel@alsa.jcu.cz
Date: Mon, 8 Feb 1999 00:52:29 +0100 (MET)
In-Reply-To: <36BCDB9C.E9CAE0EF@cygnus.com> from "Thomas Hudson" at Feb 7, 99 00:17:32 am
Content-Type: text
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

Thomas Hudson wrote:
> 
> 
> 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. 

Hmmm, can you give me a pointer to this SysEx dev inq. stuff? 

> 
> 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.

Named devices is not diffictult to realize - ALSA seq already provides a
name for each port, so instead of name the port just something like 'MPU
MIDI' it could be named "Ultraproteus". Bingo!

However obtaining patch names is a complete different ballgame....

> 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.

Some utility which can provide patch names (and provide info on what to do
to select this patch - ie. bank select, pgm change) is indeed very usefull,
but this would get very very very big as there are many synths around at
this planet. Some synth specific userland daemon or plugin code which is
accessible through the alsa-lib might be the way to go. 

Remember that besides synths that have their sounds in ROM there are also
more devices that are user programmable, so the available patches depend on
what kind of banks the user has loaded into that device (eg. Roland D10,
Kawai K1, Korg M1, various samplers..) If we have this "Synth specific
daemon" approach, this daemon can (and sometimes even _has_) to take care of
patch management (downloading patch data / samples to the instrument).

This 'daemon' approach might be the solution for handling patch loading on
onboard synths like GUS (and possibly many others) - for these kind of
devices some daemon is needed anyway (perhaps a userland daemon to support
the kernel client synth driver). 

Problem is that to get full support for a certain device we need something
specific (eg. a daemon program) for this device; there are VERY MANY
devices... So to do this good it would be an absurd amount of work! (Hmmm, I
get the feeling we are reinventing a wheel....)


> 
> 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).

I think some interface though alsa-lib is the best approach. 

+---- --- -- -  -   -    - 
|Frank van de Pol                  -o)
|Frank@vande-pol.demon.nl          /\\
|                                 _\_v
|Linux - Why use Windows, since there is a door?
|
|ALSA Sequencer: http://www.vande-pol.demon.nl/alsa/

