aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/midi/fluidsynth.c
Commit message (Collapse)AuthorAgeFilesLines
* Remove the MIDI codeChris Robinson2015-10-201-934/+0
| | | | | | | The extension's not going anywhere, and it can't do anything fluidsynth can't. The code maintenance and bloat is not worth keeping around, and ideally the AL API would be able to facilitate MIDI-like behavior anyway (envelopes, start-at- time, etc).
* Use NEW_OBJ in a few more placesChris Robinson2015-10-201-3/+1
|
* Allow for device-specific config valuesChris Robinson2015-08-281-1/+1
|
* Properly handle a mono output buffer with the MIDI synthsChris Robinson2015-02-091-6/+8
|
* Avoid unnecessary uses of ExchangeInt/PtrChris Robinson2015-02-041-2/+4
|
* Use a different method for HRTF mixingChris Robinson2014-11-221-4/+4
| | | | | | | | | | | | | | | | | | | | | | | This new method mixes sources normally into a 14-channel buffer with the channels placed all around the listener. HRTF is then applied to the channels given their positions and written to a 2-channel buffer, which gets written out to the device. This method has the benefit that HRTF processing becomes more scalable. The costly HRTF filters are applied to the 14-channel buffer after the mix is done, turning it into a post-process with a fixed overhead. Mixing sources is done with normal non-HRTF methods, so increasing the number of playing sources only incurs normal mixing costs. Another benefit is that it improves B-Format playback since the soundfield gets mixed into speakers covering all three dimensions, which then get filtered based on their locations. The main downside to this is that the spatial resolution of the HRTF dataset does not play a big role anymore. However, the hope is that with ambisonics- based panning, the perceptual position of panned sounds will still be good. It is also an option to increase the number of virtual channels for systems that can handle it, or maybe even decrease it for weaker systems.
* Make the fontsound's buffer and link fields atomicChris Robinson2014-09-031-2/+4
|
* Make the DYNLOAD LoadFSynth function non-inlineChris Robinson2014-08-051-1/+1
|
* Load fluidsynth dynamically when possibleChris Robinson2014-08-051-2/+107
|
* Rename some functionsChris Robinson2014-07-061-8/+8
|
* Store 4 modulators per map entryChris Robinson2014-07-061-16/+17
|
* Don't set modulators that have no destinationChris Robinson2014-07-051-8/+10
|
* Fix a couple checksChris Robinson2014-07-051-2/+2
|
* Set the 'valid' field when we have a valid buffer pointerChris Robinson2014-07-041-3/+1
|
* Load soundfont samples into an ALbufferChris Robinson2014-06-291-2/+2
| | | | | Also remove ALsoundfont's now-unneeded sample storage functions and struct fields.
* Store and use an ALbuffer for samples in an ALfontsoundChris Robinson2014-06-291-3/+5
| | | | | | | | The fontsound still maintains its own start, end, and loop offsets, so that the same buffer may be shared between multiple/all fontsounds. Ideally a single buffer should be used for all fontsounds to avoid memory fragmentation and help CPU caching, although higher quality soundfonts may need more memory than a single buffer can hold.
* Remove setState from the MidiSynth vtableChris Robinson2014-03-231-6/+0
|
* Use a void* for the MidiSynth Delete method paramChris Robinson2014-03-221-8/+3
|
* Slightly shorten a long lineChris Robinson2014-02-021-1/+1
|
* Rework MIDI clock timingChris Robinson2014-02-021-41/+31
| | | | | | It's best to avoid using doubles in the mixer since the FPU's set to single- precision mode. The new clock timing is similar to the device clock timing, and should hopefully be less prone to drift caused by fp rounding errors.
* Rename aftertouch to keypressureChris Robinson2014-01-171-2/+2
|
* Add a config option to specify the extra MIDI volume scalingChris Robinson2014-01-171-3/+17
| | | | The value specified is in decibels.
* Use a proper struct for envelope propertiesChris Robinson2014-01-171-2/+2
|
* Handle fontsound sample types using explicit enum valuesChris Robinson2014-01-151-1/+12
| | | | | | Uses AL_MONO_SOFT, AL_RIGHT_SOFT, and AL_LEFT_SOFT. "Linked" samples types aren't explicitly supported due to being under-defined in the SF2 spec, nor are ROM samples currently.
* Use ALfontsound_setPropi to set fontsound sample propertiesChris Robinson2014-01-151-1/+12
| | | | And make sure the loop mode is properly translated for FluidSynth.
* Don't reset presets when loading/unloading soundfontsChris Robinson2014-01-131-2/+2
|
* Use FluidSynth enums when handling generatorsChris Robinson2014-01-131-74/+78
|
* Load soundfont modulators into FluidSynthChris Robinson2014-01-061-1/+101
|
* Allow selecting the default soundfont using ID 0Chris Robinson2014-01-031-5/+5
|
* Force all FluidSynth sounds off when changing soundfontsChris Robinson2013-12-311-1/+6
| | | | | | | Selecting soundfonts should only happen when the MIDI engine is stopped or reset. When stopped some notes may be left in a release phase, but we need to ensure all fluid_sample_t objects are finished before unloading since the soundfont (and associated sample memory) may be deleted at any time afterward.
* Remove some unused MIDI backend methodsChris Robinson2013-12-291-42/+0
|
* Don't destroy the fluid_sfont_t if any of its samples are still playingChris Robinson2013-12-291-0/+20
| | | | | FluidSynth apparently doesn't check for this itself before calling the free callback.
* Add the last remaining "real-time" propertiesChris Robinson2013-12-291-0/+6
|
* Add chorus and reverb send propertiesChris Robinson2013-12-291-0/+2
|
* Check for negative soundfont indices getting passed to the loaderChris Robinson2013-12-291-1/+1
|
* Add pan and attenuation propertiesChris Robinson2013-12-291-0/+2
|
* Add tuning propertiesChris Robinson2013-12-291-0/+3
|
* Add filter propertiesChris Robinson2013-12-291-0/+4
|
* Add modulation envelope propertiesChris Robinson2013-12-291-0/+8
|
* Add a few more pitch propertiesChris Robinson2013-12-291-0/+3
|
* Add volume envelope propertiesChris Robinson2013-12-291-0/+8
|
* Add support for the fontsound loop modeChris Robinson2013-12-291-1/+1
|
* Allow loading multiple soundfonts with FluidSynthChris Robinson2013-12-271-21/+50
|
* Create a custom fluid_sfloader_t loaderChris Robinson2013-12-271-4/+299
| | | | | | | This allows us to load and use soundfont objects the app specifies (the first one, at least), rather than having to load from a file. It doesn't sound that good since modulators and most generators aren't yet available, but this will steadily improve.
* Add a method to set and get soundfontsChris Robinson2013-12-271-0/+1
| | | | | The main purpose of this is to select soundfonts for playback, eventually, instead of the existing method that takes a filename.
* Fix compiling without FluidSynthChris Robinson2013-12-191-5/+4
|
* Move the base MidiSynth to a separate fileChris Robinson2013-12-171-1/+2
|
* Move FluidSynth to its own fileChris Robinson2013-12-171-0/+359