Comments (8)
Thanks for the info; it seems I will have to accept the libstdc++, which is fine.
I enabled FluidSynth because I wanted to load SF2 sound fonts. It's easier to configure than Timidity, but yes, it's hard to build! It would be nice if your own solution could read SF2.
If you may be curious, here's what I'm using Mixer X for :)
from sdl-mixer-x.
The default config of OPNMIDI is MAME and 4 chips. Mixer has set of public functions you can use to manipulate setup of OPNMIDI, and even load custom sound bank files (WOPN format). The 4 chips is the default config of OPNMIDI at Mixer here. If your MIDI files aren't exceeding 12 voices polyphony, you're can set even 2 chips for economy. Also, alternative way to control OPNMIDI - path arguments, I made them to give an ability play each MIDI file with different synt, bank, or setup, individually (Mainly intended to use with ADLMIDI and OPNMIDI). I have the article that describes how to use them (for the case when you are using file paths; but for memory or RWops I have special function that accepts arguments string separately).
from sdl-mixer-x.
Hi!
Mainly I compiling the thing with -static-libstdc++
, but I didn't tried the -Bstatic -lstdc++
. The C++ STL linking is needed because of some C++-coded dependent libraries are linked to SDL Mixer X itself:
- libModPlug
- libADLMIDI
- libOPNMIDI
- libGME
All others are pure-C libraries and not needs for C++ runtime.
My official Windows builds are contain no FluidSynth enabled, but Timidity only.
P.S. For now the build on MinGW-w64 at me is broken because of update of libModPlug where is the bug that prevents me to compile it correctly.
from sdl-mixer-x.
About of FluidSynth, I gonna to provide some sort of FluidLite and own MIDI sequencer (that I have recently built for my libADLMIDI and libOPNMIDI) to let it easier to build (the full-featured FluidSynth is hard to bulid on Windows due DirectX dependency I wanna to avoid, as it also does build of built-in MIDI player that does using of audio output, but I don't wanna build that: only the synthesizer itself with no audio output support).
from sdl-mixer-x.
Timidity that is used here doesn't supports SoundFonts: it's not a Timidity++, it's an original Timidity that was modded by SDL folks (also by me in some parts). The Timidity++ is the extended variant of Timidity, and it's in use at GZDoom. π¦ π
Also, about the video: I don't recommend you to use OPNMIDI in single-chip mode (until you'll be sure your MIDI music is fit in 6 voices polyphony, include drums), as each OPN chip has too small polyphony (6 channels), therefore it does support the ability of multi-chip (run concurrent chip emulators to extend polyphony). It's not regular MIDI synthesizer, and it does the automatical arpeggio when polyphony limit was excited (It "compresses" chords into single channels and does loop between it's notes until necessary amount of channels will be available soon). To reduce CPU load you would use MAME emulator which is balanced choice (gives well-accurate YM2612 emulation and loyal CPU use, it usually works in OPNMIDI by default). The Nuked OPN2 is very accurate chip simulator, but it eats a lot of CPU, therefore it's not recommend to use more than 3 concurrent chips of it. The GENS emulator is fastest, but it's very inaccurate and faulty (in some cases may produce distorted or even damabed sound).
EDIT: Okay, after re-listening, I can hear, it's the choppy playback, possibly, caused by CPU overload. Did you changed the chip emulator or count of chips at OPNMIDI?
EDIT2: Anyway yeah, the real-time MIDI device switch is the one of key features of SDL Mixer X fork π¦ π
from sdl-mixer-x.
I'll close this issue as the question was solved. Any further comments are allowed here.
from sdl-mixer-x.
That makes sense, our game already uses a lot of CPU. I had not configured OPNMIDI beyond cmake's defaults. Do I set the number of chips and emulator only at build time, or can I change that on runtime?
from sdl-mixer-x.
Also, you're can provide to user an ability to setup ADLMIDI / OPNMIDI synths to let use choose necessary setup. Also, some neat xxxMIDI's functions aren't bound into Mixer (like, ability to toggle full-panning mode which a new feature), then I'll add them soon.
from sdl-mixer-x.
Related Issues (20)
- Disable GPL components by default HOT 3
- [Feature request] Support VGMStream format? HOT 3
- One GME issue on SPC HOT 13
- [BUG] Window freezes when playing via Native MIDI HOT 2
- Compatibility with Android? HOT 3
- Request to add wav gsm format support HOT 1
- "Gain / Volume Argument" for Tracker Music? HOT 1
- [MIDI] Ability to combine synthesizers on playback
- WAV File opens in SDL2_Mixer but not Mixer X HOT 31
- Cannot build `pxtone` due to invalid character when system codepage is 936 HOT 6
- Cannot compile under Archlinux. HOT 11
- /usr/bin/ldΒ : cannot found -lSDL2_mixer_ext_StaticΒ : File not found. HOT 5
- Error when attempting to play .WAV files exported with the popular PS2 audio extracting program MFAudio HOT 4
- Support More File Format HOT 2
- Issue compiling on Asahi Linux HOT 2
- MixerX returns cryptic error when SDL2 is already included in the library HOT 3
- music->interface->GetAudio null dereference exception HOT 7
- Effect handler which changes buffer length HOT 1
- Do you have a library that allows you to drive a bunch of different soft synths directly? HOT 1
- Gain (Volume) parameter for stream musics
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdl-mixer-x.