Giter Site home page Giter Site logo

Comments (8)

mazmazz avatar mazmazz commented on June 13, 2024 1

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.

Wohlstand avatar Wohlstand commented on June 13, 2024 1

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.

Wohlstand avatar Wohlstand commented on June 13, 2024

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.

Wohlstand avatar Wohlstand commented on June 13, 2024

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.

Wohlstand avatar Wohlstand commented on June 13, 2024

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.

Wohlstand avatar Wohlstand commented on June 13, 2024

I'll close this issue as the question was solved. Any further comments are allowed here.

from sdl-mixer-x.

mazmazz avatar mazmazz commented on June 13, 2024

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.

Wohlstand avatar Wohlstand commented on June 13, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.