Rune, it is good to hear from you :-)
That is excellent news about Linux WINE and ABox (sort of) working together.
A midi file player in ABox is a popular request. Would take quite a
bit of development work to implement a multi-track player. Maybe a
simple go/stop/pause input pin, then use a 'midi stream' for output.
Down-wind objects/groups could pick off what they want from the
stream. Having a player built in to ABox would get around the
otherwise intractable inter-process timing issues that plague us all.
... now that I think about it, an old-school (ver 1) VST could be
written that builds an ABox midi stream directly. The VST would do the
midi file parsing in C (or maybe even Python), then emit a midi
stream. Some advantages are 1) It could be written in C and ABox
wouldn't have to be rebuilt. 2) The 'midi stream' internal format
isn't that difficult -- I can yak about it in techy speak if anybody
is interested. 3) It might address other higher level processing
concepts that Keith has been working on. Two disadvantages are that
the plugin would work _only_ with ABox and I'd have to finally put
together that ABox/VST starter kit :-)
The csv reader/writer could indeed be used as a piano roll -- with all
the issues you've discussed. ... sometimes using two csv readers in
series (on the same file) can help (one tells the other when to
advance) ... but it's still difficult to nail down the counter
circuits. Are you taking advantage of the counter's 'reset' input ?
Seems like _somebody_ must have written a midi to csv ... try a google
on ".mid to .csv" -- I don't know if any of the apps would do what you
want ...
On the bright side, here is a hack that addresses the line feed issue
on Linux. The csv reader _should_ work OK as it exists now -- please
correct if I'm wrong. The csv writer, however, needs a couple of bytes
changed to make it issue 0xD alone (and not the 0xD 0xA it currently
does). One way to fix it is to change two lines of source code then
rebuild the program. (see
<
http://code.google.com/p/analog-box/source/browse/source/OBJECTS/File/csv_writer.asm#592>)
(592) pushd 0dh ;// change 0a0dh t0 0dh
(593) mov edx, esp ;// no change
(594) invoke WriteFile,[esi].file.csvwriter.hFile,edx,1,esp,0
;// change 2 to 1
The other way to fix it involves changing the .exe file directly with
a hex editor. I'll have to peruse the .map file on my other computer,
and will post the file positions tomarrow.
Happy weekend,
--A