Only drawback seems to be it's gonna be difficult to get performance real-time enough to use as an actual musical instrument. Maybe when MiSTer cores show up for these synths, it'll change that.
Only drawback seems to be it's gonna be difficult to get performance real-time enough to use as an actual musical instrument. Maybe when MiSTer cores show up for these synths, it'll change that.
Is there something specific about the MAME codebase that makes this an issue? There are quite a few software emulations of classic synths, for example Arturia's V Collection or the Plogue's Chipsounds - and those work perfectly well in real time even on lower end machines. Roland's Virtual Analog (I hate that term) and Plug-Out also exists, though I really don't want their cloud subscription just so I can download an instrument into a physical synth. But I'm not familiar enough with the MAME codebase to know if there's something in there that could cause issues.
True, but simulating analog oscillators and filters well with little aliasing and good support for resonance is still quite hard. Current virtual analog synths sound good, but the first time I sat down with a real (but cheap and shitty!) analog synth, I was blown away.
> Especially if you do the signal processing on the GPU instead of the CPU (which is thankfully starting to happen as well).
There's some stuff you can do here, but my understanding is that it's pretty limited. GPUs are designed for wide parallel computation, which makes sense in graphics where pixels are relatively independent of each other. A GPU is trying to calculate many things at a single point in time in parallel.
Audio is about calculating a small number of things (just a few samples) but at a very high frame (sample) rate, and the things you're calculating often depend heavily on the results of previous points in time. There's a lot more fundamentally serial work to do, which makes it hard to map to GPUs.
Kinda depends on whether the "sound chip" is emulated. For example, the MOS6581 doesn't seem to be emulated here. You could emulate the UI and controls of an Elektron SIDStation, but you wouldn't be able to get the sounds to play unless you had a real SID chip in there. So in that sense, just running the UI and controls would be fine for an emulator if there was a real MOS chip somewhere to take in audio.
https://github.com/mamedev/mame/blob/master/src/devices/soun...
The MAME and MESS trees have been reorganized a few times so I can't just track one file back easily but so far I've chased SID entries in MAME back to at least 2006. It's one of the defining features of a very popular platform, of course it's going to have at least some level of support.
The MIDI protocol tops out at ~1000 message/sec and no real synth ever needed control message anywhere near that frequently. Why would you need an FPGA?
Even that is OK for serial/parallel and Ethernet comms with emulated machines, but MIDI is a special case where there's enough lag between pressing a key and hearing it that even crappy players like myself get completely discombobulated.
You can record what you want separately as a MIDI sequence and then play it through the synth in MAME to get a .WAV you can paste into a DAW, but MAME as a real-time workflow isn't there yet. Our basic plan is to increase the "frame rate" for synths significantly (to something like 240 Hz) but there are of course complications with that that we need to work through.
In the case of writing an audio synth, I think the usual approach is to "hurry to sleep", but synchronized with the audio device/OS mixer's 2-3 audio buffer periods/pages (rather than visual frames), and asynchronously update the UI. Are you planning to use wall-clock time, or the audio sample clock, as the source of truth for timing?