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

Reply via email to