|
Do not worry about the timing of the midi code, I control the program by ear and all works perfect (this is really the amazing part of the story, because I have a recording of the work, of the old Pascal version, of the Dutch radio which sounds very similar to the new JAVA version). There is a design problem of the program (norm and nick have pointed that out already). The principle of the midi sound tracks is basically this:
Loop
If (timex1), go midi data
If (timex2), go midi data
If (timex3), go midi data
etc
while (timex4)
Several professional programmers said the loop is no good: it will cook up the CPU. Because all these go´s go "simultaneously", should each one start a new thread? This program has only one single purpose; it should be used on a concert or rehearsal of the work Cités, for voice and cello, after apollinaire (even when you would have the FBO1 synthesizer (it will not run on any other) it makes no sense to listen to the tracks without the cello and the voice). When running the program no other thing should and can be done on the computer anyway. It makes no sense to simply record the tracks because they run on random stuff and are interactive with the cello player through a midi pedal. From a standpoint of a prof programmer all this is crazy. But I am very much afraid that when redesigning the whole program another result would come out.
Sure the loop above runs different on each platform and comp. But the all if statements are timed. Why is the result is similar on every mac but different on pc (the sound take twice as long) I do not understand?
|