Synth Emulation in MAME
gearspace.com
gearspace.com
https://github.com/aaronsgiles/ymfm
He pulled a lot of the ymfm chips out of MAME put it into that lib then put that lib back into MAME.
The analog chips are a bit more difficult as they in MAMEs case need a netlist made usually. Those can be tricky to get to have any sort of performance. They are fairly accurate though.
https://www.mameworld.info/ubbthreads/showthreaded.php?Cat=&...
And even if I don't agree with cuavas entirely, they aren't totally in the wrong here either IMHO and they do explain their positions. I happen to agree with their disdain and disingenuity of keeping hoarded roms "safe", Aaron's sanctimony does get annoying at times even if unintentional and I can see how it can rub someone the wrong way, especially with as much effort invested as cuavas. Seriously if MAME was really the shithole a number of (primarily American clique) loudmouths have been saying it is, they should just fork, talk is cheap though
This chip is particularly gritty and raw. Getting a DX27 instead of a DX100 will save you a lot of money. Really no clue why the DX100 is so expensive.
Id think it's the former users who give it a level of desirability which does it, looking at the Wikipedia page for the DX100...
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?
I mean, the reason we have so many different VSTs for the same devices is that emulating the digital components is the "easy", so to speak, part, while the truly complex and really differentiating part is the software modeling of the analog components - which also explains the difference in price between a free VST replica of the Yamaha DX7 and the circa 199€ Native Instruments and Arturia replicas.
Btw, some MAME components actually try to approximate the analog behavior, like for the CEM filter of the Ensoniq ESQ-1: https://github.com/mamedev/mame/blob/master/src/mame/ensoniq...
Obviously though it's a thing that takes a lot of work to get right though, so it's just a first approximation
https://www.youtube.com/watch?v=Q6fceLfjB4s&list=PL50UiFZSGF...
Yes, pirating video games is a common usecase of emulators, but it's not like the work preserving old computers is solely useful for games. A MOS 6502 is still a 6502 whether it's playing Mario or BASIC, and games turn out to just be a remarkably good (and fun) way to test accuracy of the emulation.
I think there are lots of unique computers made in the world of synthesizers and game consoles and the like, and I am glad that the MAME project is doing what it can to make sure that these are not forgotten.
DAW = digital audio workstation
Is there a list somewhere of what synths are already emulated or being worked on?