hi,
as a small suggestion, what about using xml via libxml2 (www.libxml.org) for the
fileformat. This way, you don't
need to write a parser and furthermore you know that whats you read is indeed a
devicespec. Example
<device name="r0x0r tranc3m4chine">
<contection>
<interface>name of mididev"</interface>
<port>1</port>
</connection>
<banks>
<bank name="rezocool phasers" msb="31" lsb="22">
<patches>
<patch nr="1" name="super acid pad"/>
<patch nr="2" name="cool juicy 303 thing ">
<controller>...</controller>
</patch>
</patches>
</bank>
<bank>
...
</bank>
...
</banks>
</device>
Stefan
> -if the driver doesnt support this, (for example, an external midi uart)
> then it should be possible to create a STANDARD instrument definition file for this
>device, like for example:
>
> djleet@myworkstation:/etc/alsa/definitions$ vi my_trance_machine.def
>
> device {
>
> name = " r0x0r tranc3m4chine "
> port = "MIDI 0-1"
>
> }
>
> bank {
>
> name = "rezocool phasers"
>
> msb = 31
> lsb = 22
>
> patch_1 = " super acid pad "
> patch_2 = " cool juicy 303 thing "
> patch_2_control_default = 55,20
> patch_3 = " temple of doom "
>
> }
>
> bank {
>
> name "basses"
>
> msb = 32
> lsb = 22
>
> patch_1 = " super six poles filtered FM bass "
> patch 2 = " pick bass "
>
> }
>
> etc.
>
>
>
> ---
>
> This should basically avoid us users and programmers to do all this work from the
>sequencer program side.
>
> ----FAQ-----
>
> After some discussions on certain points with different people, i'm adding this faq
>with the hopes that can answer some questions or arguments about this:
>
> Question: What is the scope of this implementation?
> Answer: this is much simpler than what most think, mainly, retrieving
> names of patches, banks and controllers from a device. And retrieving only.
>
> Question: dont you think this is too complicated because of the amount of different
>synths/cards/programs around?
> Answer: No, since all this is standarized: banks are set using controllers 0/32.
>
> Question: wouldnt this break compatibility in alsa?
> Answer: technically, it shouldnt since this is purely extensions.
>
> Question: Why do you insist in modifying the api? cant this be done using MIDI SYSEX
>commands?
> Answer: This cant and shouldnt be done with sysex for a number of reasons, first
>because of uglyness (sysex is ugly;) and conflicts with the idea of device sharing,
>but the real reason is that midi is not a 2-way protocol, thus most devices,
>specially soundcard drivers for internal synths or sequencer clients only work 1-way
>and there's not an incoming midi connection from them. And creating one just for the
>sake of retrieving this information is just horrible. A simple api call should give
>you the data you want and will work in all cases.
>
> Question: Is this worth it? Is doing this useful?
> Answer: I think that definitively yes, since this has been one of the biggest
>problems with midi since we started using it for composing in computers. There is not
>any way to know the names of a device if it's not compilant with general midi. MIDI
>will never support this, and the only way to get around this limitation for us is
>from the OS api itself.
>
>
>
>
> Well, i'd like to hear what you people think.
>
> thanks for reading this!
>
--
\|/
<@ @> Stefan Kost private business
+-oOO-(_)-OOo------------------------------------------------------------- - - - - -
| __ Address Zwenkauer Str. 24 HTWK Leipzig, Fb IMN, Postfach 300066
| /// 04277 Leipzig 04277 Leipzig
| __ /// Germany Germany
| \\\/// Phone +49341 3910483 +49341 30766101
| \__/ EMail [EMAIL PROTECTED] [EMAIL PROTECTED]
| WWW http://www.sonicpulse.de
|http://www.imn.htwk-leipzig.de/~kost/about.html
===-=-=--=---=---------------------------------- - - - - -