aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/midi
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* Use SZFMT for printing size_tChris Robinson2014-11-061-4/+4
|
* Use %zu (C99) for printing size_tChris Robinson2014-10-301-4/+4
|
* Use more appropriate size typesChris Robinson2014-10-131-5/+5
|
* Use VECTOR_FIND_IF instead of manual loopsChris Robinson2014-09-301-42/+38
|
* Use size_t for the vector size and capacityChris Robinson2014-09-301-4/+4
|
* 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
|
* Use the UNUSED macro instead of a void castChris Robinson2014-07-191-2/+1
|
* Stop trying to read samples if there was an errorChris Robinson2014-07-191-1/+1
|
* Trace when a soundfont buffer goes unusedChris Robinson2014-07-191-0/+3
|
* Keep existing presets when loading in a new soundfontChris Robinson2014-07-191-3/+5
| | | | | | Note that alLoadSoundfontSOFT doesn't currently allow using a soundfont with existing presets. This is for being able to load and stack multiple soundfonts for the default soundfont.
* Use a macro to specify the fourcc formattersChris Robinson2014-07-181-21/+22
|
* Rename some functionsChris Robinson2014-07-061-8/+8
|
* Store 4 modulators per map entryChris Robinson2014-07-061-16/+17
|
* Don't require pre-declaring vector typesChris Robinson2014-07-061-5/+2
|
* Don't set modulators that have no destinationChris Robinson2014-07-051-8/+10
|
* Fix a couple checksChris Robinson2014-07-051-2/+2
|
* Use a helper function to check valid MIDI controller inputsChris Robinson2014-07-042-5/+4
|
* Set the 'valid' field when we have a valid buffer pointerChris Robinson2014-07-041-3/+1
|
* Move an inline definition to a more appropriate sourceChris Robinson2014-07-042-2/+3
|
* Fix preset zone instrument header checkChris Robinson2014-07-011-2/+2
|
* Print SF2 text INFO chunksChris Robinson2014-07-012-51/+94
|
* Warn about all unhandled soundfont generatorsChris Robinson2014-06-301-4/+4
|
* Check the last preset and instrument properties within the loopChris Robinson2014-06-301-46/+10
|
* Standardize some New/Delete methodsChris Robinson2014-06-301-3/+3
|
* Load soundfont samples into an ALbufferChris Robinson2014-06-292-8/+21
| | | | | 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.
* Add a cast to silence an MSVC warningChris Robinson2014-05-041-2/+3
|
* Trace skipped info sub-chunksChris Robinson2014-05-041-0/+2
|
* Use ALuint for the amount to skipChris Robinson2014-05-041-1/+1
|
* Add a GCC-specific STATIC_UPCAST macro that checks the object typeChris Robinson2014-04-191-1/+1
| | | | | The check is compile time, and is functionally identical to the old/alternate version.
* Add a VECTOR_INSERT method to insert a range of elements at onceChris Robinson2014-04-091-10/+6
|
* Fix a NULL deref when cloning a 0-sized vectorChris Robinson2014-04-091-6/+11
|
* Remove setState from the MidiSynth vtableChris Robinson2014-03-234-11/+0
|
* Add some integer casts, and a range checkChris Robinson2014-03-231-1/+1
|
* Add a stub 'soft' MIDI synth handlerChris Robinson2014-03-222-0/+143
| | | | | Eventually this one will be used to handle MIDI internally, using our own mixers and resamplers.
* Use a void* for the MidiSynth Delete method paramChris Robinson2014-03-223-18/+9
|
* Avoid a size_t-to-ALuint conversion warningChris Robinson2014-03-211-1/+1
|
* Increase the vector reserve as needed when pushing in new itemsChris Robinson2014-03-211-19/+8
|
* Rename the vector's Max field to CapacityChris Robinson2014-03-211-8/+8
|
* Use vectors for the GenModListChris Robinson2014-03-211-166/+98
|
* Add an explicit cast to make Windows happyChris Robinson2014-02-261-2/+2
|
* Slightly shorten a long lineChris Robinson2014-02-021-1/+1
|
* Rework MIDI clock timingChris Robinson2014-02-024-123/+62
| | | | | | 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.
* Use nanosecond resolution for MIDIChris Robinson2014-02-011-2/+2
| | | | | This makes the MIDI clock use the same resolution as the device clock and source latency and the device clock.
* Properly fill the SF2 sample buffer on big endianChris Robinson2014-02-011-1/+1
|
* Fix an infinite loop when loading SF2 samples on big endian machinesChris Robinson2014-02-011-2/+5
|
* Check and trace INFO properties when reading themChris Robinson2014-01-191-3/+9
|