You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I’d like to propose a new feature for MAME that could greatly benefit users interested in retro sound synthesis and MIDI integration. The idea is to enable MAME’s synthesizer component to run as a headless Linux background service (e.g., a systemd service), capable of receiving MIDI input signals and outputting synthesized audio without requiring a graphical interface.
Why this matters
MAME’s accurate emulation of vintage sound chips (YM2612, SID, OPL, etc.) makes it a unique tool for retro music production. However, currently using MAME for MIDI-driven audio synthesis requires launching the full emulator with a visible window, which is impractical for headless setups, automation, or integration into MIDI workflows.
Proposed Functionality
Headless Mode:
Run MAME’s synthesizer core as a standalone Linux service (no GUI dependencies).
Configure via config files or CLI arguments (e.g., target sound chip, sample rate, audio backend).
MIDI Input Support:
Accept MIDI messages via ALSA/Jack MIDI or virtual MIDI ports (e.g., /dev/midi*).
Map MIDI channels/controls to emulated sound chip parameters (e.g., FM operator settings).
Audio Output:
Stream synthesized audio to PulseAudio, PipeWire, or directly to ALSA.
Optionally save output to a file (WAV/FLAC).
Service Integration:
Provide systemd/init scripts for easy management.
Allow control via D-Bus or UNIX sockets (start/stop, reload configs).
Use Cases
Retro chiptune production pipelines using modern DAWs (e.g., Ardour, Renoise).
Live performances with hardware MIDI controllers driving vintage synth emulation.
Automated testing/benchmarking of MIDI-to-audio workflows.
Technical Considerations
Reuse MAME’s existing sound core but decouple it from the emulator’s main loop.
Minimal resource usage for Raspberry Pi/embedded device compatibility.
Community Benefits
This would position MAME as not just an emulator, but a flexible tool for preserving and interacting with retro sound technology in modern contexts. Similar projects (e.g., Timidity++ for software MIDI) exist, but MAME’s accuracy and breadth of supported chips are unmatched.
I’d love to hear thoughts from the community:
Are there existing workarounds or forks that already enable this?
Would developers/maintainers support such a feature?
Could this be implemented as a plugin or separate binary to keep core MAME lightweight?
Thanks for considering this idea! Let’s discuss how to make it happen.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Hi MAME developers and community,
I’d like to propose a new feature for MAME that could greatly benefit users interested in retro sound synthesis and MIDI integration. The idea is to enable MAME’s synthesizer component to run as a headless Linux background service (e.g., a systemd service), capable of receiving MIDI input signals and outputting synthesized audio without requiring a graphical interface.
Why this matters
MAME’s accurate emulation of vintage sound chips (YM2612, SID, OPL, etc.) makes it a unique tool for retro music production. However, currently using MAME for MIDI-driven audio synthesis requires launching the full emulator with a visible window, which is impractical for headless setups, automation, or integration into MIDI workflows.
Proposed Functionality
Headless Mode:
MIDI Input Support:
/dev/midi*
).Audio Output:
Service Integration:
Use Cases
Technical Considerations
Community Benefits
This would position MAME as not just an emulator, but a flexible tool for preserving and interacting with retro sound technology in modern contexts. Similar projects (e.g., Timidity++ for software MIDI) exist, but MAME’s accuracy and breadth of supported chips are unmatched.
I’d love to hear thoughts from the community:
Thanks for considering this idea! Let’s discuss how to make it happen.
Beta Was this translation helpful? Give feedback.
All reactions