All Projects → superctr → QuattroPlay

superctr / QuattroPlay

Licence: GPL-2.0 license
Implementation of the Quattro sound driver used in 90s Namco arcade games

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to QuattroPlay

Akwf Free
Adventure Kid Wave Forms are a collection of sampled one cycle waveforms for use in synthesizers or similar sound generators.
Stars: ✭ 179 (+795%)
Mutual labels:  sound
Mimium
mimium (MInimal Musical medIUM) a programming language as an infrastructure for sound and music.
Stars: ✭ 212 (+960%)
Mutual labels:  sound
Godot Mixing Desk
A complete audio solution for Godot 3.2.x, making procedural sound and adaptive/procedural music possible with a few nodes and a couple lines of code.
Stars: ✭ 240 (+1100%)
Mutual labels:  sound
Libvlc Go
Go bindings for libVLC and high-level media player interface
Stars: ✭ 188 (+840%)
Mutual labels:  sound
Jekyll Spaceship
🚀 A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, mermaid, emoji, video, audio, youtube, vimeo, dailymotion, soundcloud, spotify, etc.
Stars: ✭ 196 (+880%)
Mutual labels:  sound
Mechvibes
Mechvibes
Stars: ✭ 226 (+1030%)
Mutual labels:  sound
Scalacollider
A Scala sound synthesis library based on SuperCollider. Mirror of https://git.iem.at/sciss/ScalaCollider
Stars: ✭ 174 (+770%)
Mutual labels:  sound
X11docker
Run GUI applications and desktops in docker and podman containers. Focus on security.
Stars: ✭ 3,797 (+18885%)
Mutual labels:  sound
Feedbackeffect
A library for playing sounds and providing haptic feedback with ease.
Stars: ✭ 208 (+940%)
Mutual labels:  sound
Tinysynth
A drums looper made with React and the WebAudio API
Stars: ✭ 238 (+1090%)
Mutual labels:  sound
X3daudio1 7 hrtf
HRTF for Arma 3, Skyrim, and other titles that use XAudio2 + X3DAudio
Stars: ✭ 192 (+860%)
Mutual labels:  sound
Ableton Live Tools
A collection of useful additions to @Ableton Live, including better @Git integration.
Stars: ✭ 198 (+890%)
Mutual labels:  sound
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (+1075%)
Mutual labels:  sound
Sof
Sound Open Firmware
Stars: ✭ 183 (+815%)
Mutual labels:  sound
Indicator Sound Switcher
Sound input/output selector indicator for Linux
Stars: ✭ 243 (+1115%)
Mutual labels:  sound
Aubio
a library for audio and music analysis
Stars: ✭ 2,601 (+12905%)
Mutual labels:  sound
Fdsoundactivatedrecorder
Start recording when the user speaks
Stars: ✭ 227 (+1035%)
Mutual labels:  sound
P5.js
p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processing. http://twitter.com/p5xjs —
Stars: ✭ 16,542 (+82610%)
Mutual labels:  sound
Pygame Menu
Menu for pygame. Simple, lightweight and easy to use
Stars: ✭ 244 (+1120%)
Mutual labels:  sound
Swift Radio Pro
Professional Radio Station App for iOS!
Stars: ✭ 2,644 (+13120%)
Mutual labels:  sound

QuattroPlay

About

This program implements the sound drivers used by Namco arcade games from the mid 80s to the late 90s. It can play music and sound effects from over 140 games, with a tracker-style pattern visualization, channel muting and more.

QuattroPlay is free software licensed under the GPL version 2.

Supported Sound Drivers

  • Thunder Ceptor (FM only)
  • System 86 (FM only)
  • System 1 (Except some games)
  • System 2/21 (all known games supported)
  • NA-1/2 (all known games supported)
  • Quattro (System 11/12/22/23/NB/FL, all known games supported)

Build instructions

The only dependency is SDL2 (sudo apt-get install libsdl2-dev). Ver 2.0.8 or above is required, 2.0.9 is recommended especially on Linux.

The makefile is tested on Arch Linux, Linux Mint, Ubuntu and Windows (using MSYS2).

The program works on macOS, but you might have to do modifications to the makefile. I can't help you there.

Usage

Currently zipped MAME ROMs are not supported, you will have to store them in a subdirectory under /roms.

Then run it from command line/terminal:

bin/QuattroPlay.exe <gamename>

or

./bin/QuattroPlay <gamename>

Running without the argument will allow you to select a game from a menu. It is also possible to load .ini files with associated data and wave files by drag and drop while the program is running.

GUI usage

The current user interface is a bit complicated... Currently it only uses the keyboard.

Use the arrow keys to move the selection and press Enter once to edit the value. Use the arrow keys to set the value and press Enter again to set it.

There are three groups of values. The first are Track slots. By entering a value here you can play music or sound effects. The second group control Registers. These are used to control various parameters of the song. The third group is not editable but used to display information on the 32 Voices (sound channels).

To simply play sounds, simply move the selection to the top left value (Track 0), and press I or D to modify the value. Press S to stop a sound or R to restart.

By highlighting one of the values in the last group you can mute or solo channels by highlighting them and pressing M or S.

Command line usage

./bin/QuattroPlay [options] <gamename> [<song ID>]

If Song ID is specified, the song will automatically start. If enabled with the -w or -v parameters, the filenames will also contain the game name and song ID.

  • -ini: Set game config path
  • -w: log to WAV.
  • -v: log to VGM.

Key bindings (a mess)

This might not be complete yet.

Global

  • Q: exit
  • P: pause
  • U: update tick (be sure to pause first)
  • Esc: Go to main screen
  • F1: Go to about screen. If no game is loaded, select audio device.
  • F3: Reset sound driver. If no game is loaded, refresh game definitions.
  • F5: toggle stereo/quad output
  • F6: unmute all voices
  • F7: decrease volume
  • F8: increase volume
  • F10: toggle fast forward
  • F11: log sound to file
    • Logs started from the GUI have filenames hardcoded to qp_log.wav. Don't log for too long; 30 seconds = 30 MB.
    • Format: 32-bit float, 4 channels, rate is either 85333 or 88200.
  • F12: display rendering stats
  • Space: Go to playlist screen
  • Arrow keys: move selection

Playlist screen

  • Enter: Play selected song
  • R: Restart current song
  • N: Play next song
  • B: Play previous song
  • 1: Make song selection follow the playlist (could be useful for videos)
  • L: Display keyboard, while active:
    • 8: Show pitch modulation
    • 9: Show volume modulation
    • I: Transpose one octave down (shift notes right)
    • D: Transpose one octave up (shift notes left)

Main screen

  • 0-9: Preset action (song triggers, etc)
    • These are configured in the game config files, check the /ini directory.

if Track selected

  • L: Change between display modes (e.g. pattern view)

if Track or Register selected

  • C: clear register/track
  • S: stop track
  • I: increase value
  • D: decrease value
  • Enter: enter edit mode, while in Edit mode:
    • Up/Down: add/remove 0x10
    • Left/Right: add/remove 0x01
    • Shift: Hold down to multiply increment with 0x100
    • Enter: play song/change register
    • Esc: exit edit mode

if Voice selected

  • M: Mute voice
  • S: Solo voice
  • R: Reset mute/solo for all voices. Same as F6.

Notes

  • Playlists are all defined in the .INI files. If you find any errors or have any suggestions, please create an issue in the github repository.
  • The C30 chip is not emulated, instead the C352 is used. This makes VGM logging possible.
  • The C140 chip is not emulated, instead the C352 is used. The compressed sample format differs, breaking VGM logs in a few games.
  • The C219 chip is not emulated, instead the C352 is used. This actually improves the sound quality of VGM logs, as the C219 chip is not accurately emulated in VGM players.
  • Position envelopes (used by a few songs in Cyber Commando) are not supported.

Copyright

© 2016-2017 Ian Karlsson

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].