Dear all,
I completed the Timebase interface and uploaded its PHP code to
https://leti.lt/bolprocessor/
Now it is possible to load a MIDIfile (e.g. a file created by BP2.9.8)
and play it in superposition with the tick cycle.
Indeed, this only makes sense when beat patterns are identical. For
instance, if you load "this_song.mid" you need to set the metronome to
1000 beats in 444.444 seconds (meaning mm = 135 beats/min). How to guess
it? I am working on an automatic setting as the MIDI file indicates
"tempo = 444 444", i.e. the duration of a quarternote in microseconds.
Still, more adjustment may be required, for instance with
"Visser.Waves.mid" which was produced at tempo 0.8 by
"-gr.Visser.Waves". In this case, the metronome should be set to 8 beats
in 10 seconds. The machine cannot guess it and it is not recorded in the
MIDI file. (The pattern for this piece is a 5-beat cycle, which is not
evident because of its complex polymetric structure!)
I have clarified the signification and effects of parameters "division"
and "tempo" in MIDI files. All downloaded files are "normalized" such
that division = 1000 and tempo = 1000 000 µs. The reason is that we want
time signatures to indicate milliseconds rather than ticks of various
durations. The result of this adjustement can be verified by looking at
MF2T code files on the interface.
The combination works well. It is safe to use channels different than
the ones of the tune to avoid jammed NoteOn/NoteOffs yiedling
undesirable effects.
The combination uses a "lazy" method: adding a track to the MIDI file.
This is not the way the console would deal with it. We will rather send
a sequence of time-stamped MIDI bytes that will be inserted into the
output stream of MIDI events. The console will be instructed to play
this sequence in a continous loop, which is not very complicated.
The accuracy is very good and independent of the duration of the piece.
I will be busy for a couple of days, but don't hesitate to post comments
and suggestions!
Bernard
|