Bc2000 (for the BCF2000 & BCR2000) group photo

Yahoo Groups archive

Bc2000 (for the BCF2000 & BCR2000)

Index last updated: 2026-04-28 23:16 UTC

Message

Re: Snapshot capture to Midi file?

2008-07-11 by Mark van den Berg

First a few remarks about the MIDI file containing the BCF snapshot
you sent me:

It uses MIDI file format 0, i.e. it's a single track.
It also includes a track name: "2 2-MIDI". Does that mean anything to you?

The storage of the snapshot's MIDI messages isn't very efficient:
1. Per Controller there are 2 CC messages, first a useless one with a
value of zero (this may be what you were saying about Live's
initialization), then "the real one" with a non-zero value.
2. The file doesn't employ running status; i.e. it needlessly repeats
the same status byte ($B0) for every message. So effectively it uses 8
bytes for every CC message, whereas it could have been done using only
3 bytes!

All timestamps ("delta times", actually) in the file are zero. So if
the number of messages in a snapshot is high, this leads to a slightly
unrealistic MIDI file: MIDI is only capable of transmitting about 3000
bytes per second. So if you include such a MIDI file in a "real"
sequencer track (with notes etc.), there may well be a hiccup at the
start.

In testing my own BCF, I found that it actually may take something
like 30 msec to send a snapshot (of course this varies greatly).
However, MIDI files use "ticks" to indicate times, a tick being a
fraction of a beat, usually 1/96th (this is indeed used in your MIDI
file) or 1/120th. So it depends on the specified tempo (BPM) and
resolution (ticks per beat) to how many ticks a time value in msec
translates.

In the upcoming BC Manager 1.5.0, I've implemented a "Save to MIDI
file" option from the MIDI messages window: this saves all the
recorded messages to a MIDI file (in format 0, just like your Ableton
Live file). In the MIDI file the messages receive their original
recording times minus the first message's time. So the messages will
play back immediately, but they won't all have a timestamp of zero,
but will be spread out a bit over a few "ticks", at basically the same
speed at which the BCF originally sent them during the snapshot.

I can only hope the program you're using for playback is able to read
BC Manager's MIDI files: the MIDI file format is a bit messy:
different programs may expect different formats.

For instance, I've tried out BC Manager's MIDI files in Sonar 7: it
turns out that Sonar doesn't quite adhere to the official MIDI file
format specifications: at first Sonar STRETCHED the times, because I
had left out the (default) BPM spec of 120 (which the MIDI file format
spec says you CAN do), but apparently Sonar uses 100 BPM as default...
After I started including the actual 120 BPM in the MIDI files, Sonar
interpreted them correctly.
I also found another oddity in Sonar: one of my BCF-generated snapshot
MIDI files contained a Program Change message somewhere in the middle
(right between two CC messages!), but when I opened this file in
Sonar, this message didn't show up in Sonar's "event list": Sonar only
used this PC message to initialize the "program" (instrument) of the
MIDI track. This illustrates what I wrote in one of my earlier
replies: funny things in terms of sorting etc. may occur. E.g. I
suppose that the Program Change message would end up in a different
place if I save the MIDI file from Sonar again!

So I wouldn't be surprised if you still get problems with BC Manager's
MIDI files. E.g. these files contain "BC Manager 1.5.0" for the
"trackname" specification - this is just a courtesy, but your program
might balk at it (e.g. if it only accepts "2 2-MIDI" or so). The
potential for problems is pretty big, I'm afraid. But we'll get there
in the end...

Hopefully BC Manager 1.5.0 will be out in a few days' time. (I'm just
finalizing a completely unrelated new feature.)

Btw. I'll reply to your "toggle on" problem later, but thought I'd get
this out of the way first. I have so many things going on
simultaneously these days...

Mark.

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.