MIDI DIN Sync Box Or MIDI Out To Tape? - Part 1
My shoe is off, my foot is cold, I have an L-12 I like to record on. (Bygones.) So, MIDI has a Baud rate of 31250 bps, and my L-12 can record at 48000 sps and at 96000 sps. Not quite enough to keep Harry Nyquist and Claude Shannon happy, but I may just have to give it a try. I'm sure many have and failed, but I consider it worth an attempt, at least at 96k samplerate, which well may satisfy mssrs. N and S.
You see, I also have an Alesis SR18 drum machine and, rather than record the 4 output tracks, forever fixing them in stone as recordings, requireing a complete new take on every instrument to change the rhythms. Kind of locks in rhythm perfect first approaches, and I don't work that way. I'd like to record MIDI, or sync it, so that all that gets locked in are beats, and I do like to have my patterns right, if not my tones or mixes
The usual way to do this is DIN24 sync or DIN48 sync, which outputs a 48 pulse per quaternote square wave to the left channel of a stereo track and a tone-on for play, tone-off for stop on the right channel. A MIDI master clock (my drum machine) connects to a DIN sync box and converts 24 PPQN MIDI clock to a square frequency, and 1khz tone on the other channel when the MIDI system is playing. DIN24 on an L12, which has a minimum channel bandwidth of 20Hz to 20kHz (44k1 sample rate) or 24Khz (48k sample rate), allows a tempo range of 70 beats per minute to "kick drum can only be heard by bats," while DIN48 will allow 35bpm to half the frequency of "kick drum can only be heard by bats." The downside of DIN48 with MIDI is it requires frequency doubling for the striping tone, which makes the microcontroller code trickier. One has to take a timing between MIDI clock pulses, halve that timing and trigger logical 1 in sync with MIDI clock, but twice as often. So, you can see why I wonder if simply recording MIDI code might be better. Except, I know it won't, and while 70BPM might be OK for a lowest tempo for me, it doesn't make it useful for those who work in the crosstime realms.
So, DINsync is probably essential to sync, and allows for drum pattern changes, but 24ppqn or 48? I guess a prototype could do DIN24 and I could see how low I can go, tempo-wise. That 20Hz is the 3dB point, maybe I might get stripes down to 60bpm. Still not great, and I'd need to push levels out, yada yada. So that's a prototype.
Maybe I should devise a synchronised time presacaler in code first. Frequency division, 48 pulses per, played back at 24 pulses per, is easy enough. Detect the leading edge and change state at the output each leading edge divides by 2 for sending MIDI clock commands at 24ppqn. Divide by more? Count the edges, change output state every 3, 4, 5, etc, but that's digression. (Or 96ppqn.)
Recording drum machine audio requires 4 channels, kick, snare and a stereo channel for "overheads." Recording MIDI directly isn't really practical, even at 96k samples, as the desk loses its inboard effects at that rate, and still locks the patterns in stone, if not the sounds or mix but, with an external mixer, could bring the channel count down to 3, MIDI and a stereo for drum mix. DINsync comes back to 4 channels with a submix, stereo for DIN tempo and DIN start/stop, stereo for submix. Could DINsync be put on a single channel using a way higher start stop tone than say the 48ppqn sync tone at 300bpm (5hz or 240hz at 48ppqn) - say, 4800hz? A digital high pass filter algorithim at 4kHz to sense start/stop and send appropriate MIDI commands, while the low pass signal separates out the clock pulses. This gives back a stereo channel for synths submix as well as keeping the drums on a submix.
So, the above is the virtual signal path I have to code onto an Arduino. Watch this space.
And, I found this for a useful skeleton to fork... (Links out to Git Hub.)
Useful LinksLow Pass Filter
High Pass Filter
State Change Detection
Basic DINsync Sketch