Hi,
in the schematics there are two very interesting connectors named "multiprocessor stream" and "multiprocessor sync".
I guess they exist to provide some form of connectivity between axoloti boards (am I wrong?).
If so, as I could not find any object that seem to be related to their use (but I'm fairly new to this beautiful platform), is this feature under development?
And what kind of throughput can we expect?
cheers
Multiprocessor stream and sync
I can't really predict when I will find time to implement this, it is a substantial effort, and not an advertised feature.
Some more techy details:
The processor on the Axoloti Core allows up to 22.5 Mbit/s both sending and receiving. A single digital audio channel at 48kHz/32bit takes 1.536 kbit/s, so that 'd allow 8 channels of digital audio in both directions plus more control rate channels. If there is a less speedy processor connected (Axoloti Control - in development), that 'd be max 16 Mbit/s (STM32L0).
This connector carries SPI and single-wire UART, the idea is that the UART connects all nodes in parallel for bookkeeping, and the SPI could connect in a ring network topology - every node sending to the next one, receiving from the previous.
Automatically partitioning a single generic patch over multiple nodes is a hard problem, so even when multiprocessor streaming is implemented it wont automatically spread synth voices over multiple nodes, each processor will run its own patch, where there would be an object to send/receive digital audio from the multiprocessor link.
While Axoloti Core is out of stock
Sounds cool. I had been wondering about the same thing. This would allow scalability and at the same time keep the axoloti a more future proof solution. I'm sure in a couple of years we will have objects that eat a lot more cpu, because people will build analog filter clones etc that eat more cpu.
i want this so bad.
i am currently looking into uart and other serial protocols anyways for axo>arduino communication, so since it was mentioned here, can anybody estimate how much work it would be to implement inter-axo-sync? i don't even need audio transfer or automatic partitioning, just spread several OSCs of a synth on 2-3 AXO boards and make sure they stay in phase when loading new patches on each..
if anybody has thoughts or hints on where to start with syncing two audio-axo-engines via these extra pin headers and SPI/UART i'd be really thankful
edit: if someone gives me the right push i might jump all in and create one of these long awaited spikes again:
taking care of mine is unfortunately intense enough already
Edit: I was thinking of doing a little crowdfunding for this. but even if all interested donate a bit it's propably not enough for someone to develop this and survive...
yeah but I can't code....neither do I have money...but I guess I could allocate like 50-100 bucks for this when I get my next big payment.
wait i just had a thought, someone help me out here: if all i need is sync the oscillators between 2 or 3 axo boards, i should be able to kinda easily do this with normal serial comm over the TX/RX ports, right? i declare one osc the master, and the other two retrigger/sync on every phase? what about syncing two table play pitch loop objects? or syncing a table play pitch to a VA osc? i probably have to program the sync myself for objects w/o sync inlet huh?
But the GPIO serial supports up to 250k baud - for simple sync as i need it even one little bit per audio cycle should be enough right? Or is one baud ie. one Symbol even 8bit?
i suspect that the reading and writing to the serial port does not happen at sample rate, but at k-rate (the most) maybe even slower. so that means you cannot get sample accurate syncing that easily.
I think that the SPI transmissions/receptions use direct memory access of bunches of data (DMA) like I2C. That allows the CPU to work while the data is transmitted/received.
Sample accurate synching is also tricky because the sample rates of two axoloties can slightly differ.
ugh you guys are crushing my hopes haha. i just realized all GPIO is only sampled at around 3khz?
what about the GPIO analog in/out - can i access that at s-rate?
any ideas for osc-phase-sync between 2 axos?
Yes 3kHz which is nice for control signals
No.
No but it should be possible to make some smart algorithm that should deal with the drift between the samples rates of two axoloties and avoid glitches.
ok thank you!
i guess i will just fire up the second axo and give it a try instead of overthinking everything in before. maybe i don't even need all OSCs to be perfectly in sync for my kind of synth...
one moer idea, someone please tell me why it won't work:
if i use one CONTROL axo (or other MCU) sending a control voltage in 48khz with the note's pitch, i could jsut use that axos output into all the OSC axo audio inputs and sync all OSCs to that same pretty sample accurate input. right?
edit. damn i guess while this might work for monophonic patches i am all fucked as soon as the seocnd poly note starts playing haha.