comp.lang.ada
 help / color / mirror / Atom feed
* Thinking of using Ada for a job at home. Couple of questions first.
@ 2010-03-03 16:19 John McCabe
  2010-03-03 18:22 ` Jeffrey R. Carter
                   ` (3 more replies)
  0 siblings, 4 replies; 30+ messages in thread
From: John McCabe @ 2010-03-03 16:19 UTC (permalink / raw)


Guys

I was hoping you'd be able to help me. Some of this I could probably
find out by re-reading my books but I'm sure this is the sort of thing
some of you guys are doing every day so could probably give a clearer
answer. The other one, I just don't know and a search on Google was a
bit useless.

Basically I have a synthesizer that's not very well supported on the
software front, mainly because not many of them were sold and built.
I'd like to create an application that runs on MS Windows, probably
using Qt that will be able to manage, dump, load patches etc using
MIDI.

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.

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

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?

Any advice you've got the time to give on this would be very much
appreciated.

John



^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2010-03-10 21:00 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox