Wanted to prompt a technical discussion on what’s physically possible.
Im a software engineer but Ive very little experience with hardware development so wanted to pose some questions to people smarter than me.
I’m not wanting to discuss what’s currently possible on current firmware. I’m trying to understand what is theoretically possible given the current hardware limitations.
I’m assuming there is no hard-line between the USB and OT, based on topics ive read here it seems like the USB is only for the card reader so I assumed it was architected with the CF card in between the PC and OT like
PC–usb–>CF---->OT. This means maybe using the CF card as the go between for the PC to talk to the OT
- Is a CF card capable of simultaneous read/write? TLDR: seems yes.
To my knowledge we can currently read 8 static machines from the CF card in “real time”.
Reading (to my knowledge) is just allocating a pointer to point at an array of addresses on the CF card and reading the values.
Could a PC write to a buffer/array to an address and then on the next cycle the OT reads?
Then for each track the PC would likely want to get the output of the OT track. So this would involve the OT writing to a different location and the PC reading from that.
I believe the OT can currently perform simultaneous read/write to the CF card. Since I can save a sample from a flex machine while the OT is playing from a static machine on another track.
- B) Is CF capable of simultaneous read/write from 2 locations?
TLDR; dont know
IE can a PC be reading and writing at the same time as the OT is reading writing?
Does the current implementation of compact flash prohibit this? Would it require custom CF drivers to allow simultaneous access from the OT and PC?
The fact we need to enter " USB host mode’ makes me think possibly the entire CF card is locked to access from only a single point, either the PC or the OT.
- Does USB/CF have enough bandwidth to support 8 stereo tracks simultaneous read/write at say 44.1khz? TLDR: seems likely
1 channel = 16bit*44100*2channels = ~1.4Mbps
8 channels = ~1.4MBps.
So PC writing OT reading needs ~3MBps.
Then for the PC to read the tracks output back in, then wed need an additional 3MBps.
So totaling roughly 6MBps for audio??
This doesn’t seem impossible from a bandwidth standpoint?
- Can you get around file read/write locks?
TLDR; seems possible.
Let’s assume you can access the CF card from PC and OT at same time but just cant access a single file from both PC and OT at same time. Perhaps instead you can write a buffer of audio to a “file” and then the next to a different file and alternate between read/write these 2
files. Each buffer file is a stereo file. Each track has its own file for audio PC->OT and another for OT->PC.
You write a buffer to one and close.
Then while the OT is reading that you write the next buffer to the other file.
Then once OT is done reading buffer 1 it moves to Buffer2, and meanwhile PC overwrites buffer 1 with the next buffer of audio.
This means each track has 4 files.
Eg
T1PCA - buffer a for audio from pc
T1PCB - buffer b for audio from pc
T1OTA - buffer a for audio from ot
T1OTB - buffer b for audio from ot
What then would it take to do something like this?
I assume custom drivers on the computer side and of course custom firmware on the OT side.
I realize that if it was easy to implement, elektron probs would have done it already. But I also know the realities of developing products is such that the resources may have been put on new products rather than trying to hack features into old ones. So I’m wondering if there is things I’m missing here that push this into true impossible territory, or if this is simply a case of "no one has the time to implement "
Thanks for taking the time to read!