From: John McCabe <john@nospam.assen.demon.co.uk.nospam>
Subject: Re: Thinking of using Ada for a job at home. Couple of questions first.
Date: Wed, 03 Mar 2010 20:17:12 +0000
Date: 2010-03-03T20:17:12+00:00 [thread overview]
Message-ID: <6ggto5p3g2p58839gdsut6idb2l621nv2c@4ax.com> (raw)
In-Reply-To: op.u8z9n0mavwnd5a@garhos
Hibou57 (Yannick Duch�ne) <yannick_duchene@yahoo.fr> wrote:
>Le Wed, 03 Mar 2010 17:19:31 +0100, John McCabe
><john@nospam.assen.demon.co.uk> a �crit:
>Hello,
>> So the first question is do any of you know of any bindings to MS
>> Windows MIDI (presumably the multimedia system) functions that already
>> exist and are open source or something like that? I searched on Google
>> for "ada midi" but it looks like there's a product called that so it
>> came up with loads of stuff. I'm aware there are some binding to Win32
>> from Ada but, as I've not been doing Ada in anger for a long time, I'm
>> not sure if there's something for Ada 2005.
>If there are possible funding, I would enjoy to re-organize my time to
>honor this target under whatever license you may request.
Unfortunately there's not funding available. I've found a library
called libjdkmidi that, if it would look easier to bind to than direct
to Win32's mmsystem functions, might be worth doing. I suspect though
that it encapsulates some of the functionality you mention later in
relation to tasking etc, although I haven't looked that closely yet.
>If you ever you are interested in another stuff in the same area, I've
>also started some times ago, but not terminated, an Ada binding to the VST
>architecture. I've temporarily dropped the project for an undetermined
>amount of time, because I need a project which could give me some earn. I
>can't give a date, however, I'm pretty sure I will come back to it in the
>future (at least, I hope I could)
Thanks, I'll bear that in mind.
>> The second question is related to the implementation of the System
>> Exclusive messages. Basically this is part of the reason I thought Ada
>> would be good for this task. The SysEx messages basically consist of a
>> smallish header and a variety of different structures that are
>> differentiated by the "Function" type in the header. Now I seem to
>> remember from when I did use Ada that it's possible to define the
>> record representation of a variant record such that the discriminant
>> is held within the body of the record. This would mean (I think) that
>> I could read a block of data from the synthesizer straight in to a
>> buffer that overlaid the variant record and essentially automatically
>> created a record that could be read as the particular variant related
>> to the incoming data. However I also seem to remember that's not quite
>> a 'recommended' way of doing that sort of thing.
>Excuse me, I'm not sure I've understood your words. Could you give a
>concrete example of a process ?
Well basically you define a variant record that contains variants that
apply to all the SysEx messages then (dodgily) locate a buffer (e.g.
of bytes, integers, whatever) in the same place and write the incoming
data in to the buffer. When you come to read it later as a record
object rather than just as bytes it's essentially a valid variant
record (at least, I believe from what I remember that it is!). I think
Jeff's Unchecked_Conversion is a more appropriate way to do it though.
>Just to tell about what immediately comes into my mind : I'm not sure
>variant record would be Ok for whole MIDI data sequences, as it comes into
>sequence and not as a single block. The content of some MIDI messages are
>splitted into multiple units which comes as a sequence. A variant record,
>to be coherent, must be a whole, you cannot have something related to a
>discriminant which remains dangling until some more data later arrives.
The application I'm trying to do is a patch editor so it will
essentially deal only with expected messages that are sent from the
synth in response to requests. I don't think the synth intersperses
any other midi data within those messages. It's a Kawai K1 by the way.
>All this comment provided I've understood a bit of what you were to mean
>(I apologize if I'm wrong).
No need to apologise; if it's not clear to you then I'm sure there are
others in the same position.
>> The other thing that
>> guided me in Ada's direction is that the structure of the SysEx
>> messages requires a lot of bit-fields and I'm well aware that Ada's
>> representation clauses are fantastic for that sort of thing.
>Another reason to use Ada : Ada is also a good choice in this area, due to
>its tasking capabilities. This kind of application typically heavily
>relies on multiple tasks (and even more heavily if you have to deal with
>multiple synthesizers, what is a common case)
I don't need to deal with multiple synthesizers but yes, the tasking
was another reason Ada sounded appropriate as the synth sends all
sorts of junk while it's idling that I need to be able to receive and
just dump, and I need a GUI as well.
>> So, in principle, would that be the way to do this, or would you be
>> able to suggest a better mechanism?
>>
>> Finally, is there a straightforward way to do that sort of thing using
>> tagged records? E.g. could I define a record which is the header
>> format, then extend that in a number of different tagged extensions to
>> create each individual message as a separate tagged record and use the
>> OO and dispatching facilities to work with them?
>I gonna go back to my docs to remind me about what's the layout of these
>messages exactly.
>
>> Any advice you've got the time to give on this would be very much
>> appreciated.
>You're welcome
Thanks for taking the time to respond. Hope I've made it a little
clearer but if not, just let me know.
next prev parent reply other threads:[~2010-03-03 20:17 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-03 16:19 Thinking of using Ada for a job at home. Couple of questions first John McCabe
2010-03-03 18:22 ` Jeffrey R. Carter
2010-03-03 20:09 ` John McCabe
2010-03-03 21:00 ` Simon Wright
2010-03-03 18:58 ` Hibou57 (Yannick Duchêne)
2010-03-03 20:17 ` John McCabe [this message]
2010-03-04 6:22 ` Hibou57 (Yannick Duchêne)
2010-03-04 11:39 ` John McCabe
2010-03-09 14:49 ` Warren Gay
2010-03-09 15:33 ` Jacob Sparre Andersen
2010-03-09 20:22 ` jonathan
2010-03-09 21:57 ` Charmed Snark
2010-03-09 22:54 ` jonathan
2010-03-10 17:46 ` Charmed Snark
2010-03-10 19:12 ` jonathan
2010-03-10 20:41 ` Simon Wright
2010-03-10 21:00 ` Pascal Obry
2010-03-09 20:32 ` Simon Wright
2010-03-10 6:42 ` J-P. Rosen
2010-03-03 19:17 ` Dmitry A. Kazakov
2010-03-03 20:38 ` John McCabe
2010-03-03 20:56 ` Simon Wright
2010-03-03 21:00 ` John McCabe
2010-03-03 21:10 ` John McCabe
2010-03-04 6:39 ` Hibou57 (Yannick Duchêne)
2010-03-03 21:35 ` tmoran
2010-03-04 6:43 ` Hibou57 (Yannick Duchêne)
2010-03-03 22:20 ` Dmitry A. Kazakov
2010-03-03 19:52 ` Gautier write-only
2010-03-03 20:57 ` John McCabe
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox