Memory access on the early Macs only runs at 2MHz, with the CPU using every second memory cycle and the unused one of the video cycle during blanking. Audio and floppy PWM also get one per display line during blanking. But the chipset must also have used some for memory refresh. I don't know yet, how many these were.
I thought it was roughly every 2ms, but a refresh cycle is only a /RAS isn't it? A Mac Plus has plenty of CPU for handling many MIDI channels.
Anyway, with the external 1Mhz clock and some small adjustments in SCC interrupt handing, this is now possible:
Excellent!
The device on the left is a SAM2695 dev board. But a commercial synth like the mt32 works equally well. I should actually try Space Quest 3 with my MT-32 one day.
I've just been watching a video on the SAM2695, interesting GM sound module with some synth features. I used to have an MT-32. I'd probably try and put
MT32-PI on one of my Raspberry PIs. However, at the moment it'd only work on my PI-3 unless I do something clever like figuring out how to make the underlying Munt MT-32 emulator work with multiple cores (it's a single-core implementation as far as I can see).
I was thinking of doing it at the partial level, but I'm not totally sure of the underlying software architecture. Munt allocates partials to Partial objects, but I don't yet know if each one then computes a single sample at a time, so that there's a superloop for each partial; or whether each partial computes multiple samples at a time (e.g. 1ms worth) and there's some other mechanism. The easiest way, IMHO would be to allocate the main app to a single core, e.g. core 0; then have core2 allocated to even partials and core2 allocated to odd partials (here, each core spin-waits on a trigger, then runs through all its allocated partials).
It wouldn't be optimal, but since a PI-2 runs at 900MHz, and a PI-3 runs at 1.4GHz a second core only has to take a 500MHz load off for it to perform as well and splitting the entire functionality between 3 cores should certainly achieve that. Additionally, given that the MT-32 only has one reverb, if the reverb emulation is applied after the values from all the active partials get summed, then perhaps Core 1 could be dedicated to reverb.