Chris Robinson
2f2768e7c3
Make the fontsound's buffer and link fields atomic
2014-09-03 16:29:17 -07:00
Chris Robinson
0ff4a91442
Make some functions static
2014-07-20 01:27:33 -07:00
Chris Robinson
8dec92531b
Store 4 modulators per map entry
2014-07-06 09:06:35 -07:00
Chris Robinson
47f5e710c2
Make some more functions static
2014-07-05 01:23:06 -07:00
Chris Robinson
5afc29f65d
Use a helper function to check valid MIDI controller inputs
2014-07-04 22:08:24 -07:00
Chris Robinson
22982948cf
Standardize some New/Delete methods
2014-06-30 00:10:40 -07:00
Chris Robinson
8176d2c058
Load soundfont samples into an ALbuffer
...
Also remove ALsoundfont's now-unneeded sample storage functions and struct
fields.
2014-06-29 02:04:05 -07:00
Chris Robinson
389a2f7b4b
Store and use an ALbuffer for samples in an ALfontsound
...
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.
2014-06-29 00:47:29 -07:00
Chris Robinson
1d2504d12e
Make RefCount a non-integer type
...
It should only be accessed through the appropriate functions to ensure proper
atomicity.
2014-05-14 02:47:07 -07:00
Chris Robinson
08ba5d9dba
Use a proper struct for envelope properties
2014-01-17 00:36:33 -08:00
Chris Robinson
4079ee2200
Add methods to get and set modulator properties on fontsounds
2014-01-05 17:21:34 -08:00
Chris Robinson
5f961a392e
Move some soundfont methods to ALsoundfont
2014-01-05 05:11:07 -08:00
Chris Robinson
42a67731c4
Add storage for a default soundfont object
2014-01-03 20:21:12 -08:00
Chris Robinson
e6e7e461c0
Avoid using alFontsoundiSOFT when loading a soundfont
...
This should now make the soundfont loader thread-safe.
2014-01-03 18:52:17 -08:00
Chris Robinson
f790d0e91f
Use a uint map for modulators
2014-01-02 14:43:44 -08:00
Chris Robinson
49c17ad520
Mostly load into fontsound objects directly
...
This leaves only one unsafe alFontsoundiSOFT call.
2014-01-02 13:53:16 -08:00
Chris Robinson
01f547b93e
Move some preset alloc/dealloc code to separate functions
2014-01-02 10:39:21 -08:00
Chris Robinson
4e73b95fc0
Add the last remaining "real-time" properties
2013-12-29 05:09:50 -08:00
Chris Robinson
4c35f7c632
Add chorus and reverb send properties
2013-12-29 04:36:01 -08:00
Chris Robinson
699d84491f
Add pan and attenuation properties
2013-12-29 04:24:32 -08:00
Chris Robinson
d030e07879
Add tuning properties
2013-12-29 03:43:00 -08:00
Chris Robinson
1d41122372
Add filter properties
2013-12-29 03:18:31 -08:00
Chris Robinson
deecbbc55d
Add modulation envelope properties
2013-12-29 02:40:12 -08:00
Chris Robinson
d9aedc1416
Add a few more pitch properties
2013-12-29 02:25:40 -08:00
Chris Robinson
fc928bb75a
Add volume envelope properties
2013-12-29 02:14:10 -08:00
Chris Robinson
09665715ed
Add support for the fontsound loop mode
2013-12-29 00:34:58 -08:00
Chris Robinson
cc30c5754f
Remove the generator list
2013-12-26 22:10:41 -08:00
Chris Robinson
b5ae424dbd
Store a list of sounds in the preset
2013-12-25 19:50:46 -08:00
Chris Robinson
677b864565
Remove the zone, sample, and instrument object types
2013-12-25 19:35:43 -08:00
Chris Robinson
b650ecbc23
Add methods to add generators and modulators to fontsounds
2013-12-25 19:23:34 -08:00
Chris Robinson
94ddc5cb18
Add a new fontsound object type
...
This is basically a combined preset and intrument zone with sample header.
2013-12-25 19:13:59 -08:00
Chris Robinson
d7de86966d
Add methods to get and set a preset object's preset and bank numbers
2013-12-23 03:23:42 -08:00
Chris Robinson
5dc3f3626d
Better protect against improper alSoundfontSamplesSOFT calls
2013-12-20 00:50:43 -08:00
Chris Robinson
1bd828603e
Add functions to set a soundfont's sample data
2013-12-19 04:19:03 -08:00
Chris Robinson
99933fac49
Allow creating instrument objects
2013-12-19 00:57:07 -08:00
Chris Robinson
666acb314b
Rename some ALsoundfont fields
2013-12-19 00:37:56 -08:00
Chris Robinson
1b5c3495c9
Add methods to create and destroy presets
2013-12-19 00:09:55 -08:00
Chris Robinson
1e536cf7ca
Properly initialize and cleanup the soundfont map
2013-12-18 23:21:59 -08:00
Chris Robinson
8083fb5be7
Add a new ALsoundfont object type
...
Includes a basic hierarchy for presets, instruments, samples, zones,
generators, and modulators.
2013-12-18 22:51:53 -08:00
Chris Robinson
b9468dc917
Fix header guard and remove duplicate code
2013-12-18 19:17:03 -08:00
Chris Robinson
0095a59fc9
Move the dummy MIDI handler to a separate file
2013-12-17 22:43:10 -08:00
Chris Robinson
ee92b3142d
Move FluidSynth to its own file
2013-12-17 22:36:25 -08:00
Chris Robinson
ef0341c180
Make MidiSynth's methods non-static
2013-12-17 21:56:28 -08:00
Chris Robinson
a343d78724
Update behavior for alMidiStopSOFT
...
alMidiStopSOFT now has the following behavior:
* All pending MIDI events up to the current time are processed first, before
the queue is flushed.
* All channels then receive an All Notes Off event so that notes go through
their release phase. Controllers are *NOT* reset.
* Clock time is reset to 0, like before.
2013-12-13 13:40:53 -08:00
Chris Robinson
c834713526
Add methods to set and get the MIDI gain
2013-11-30 23:47:42 -08:00
Chris Robinson
2633fbfc4b
Add a method to check if a file is a soundfont
2013-11-30 20:37:37 -08:00
Chris Robinson
8615a109ce
Remove an unneeded MidiSynth field
2013-11-28 05:06:40 -08:00
Chris Robinson
f8c68291d3
Add a method to stop MIDI playback
...
Unlike pausing, this resets the MIDI clock time to 0, clears the existing event
queue, stops all MIDI sounds, and resets MIDI controllers.
2013-11-28 04:52:53 -08:00
Chris Robinson
7794e53667
Be a bit safer with MIDI state changes
2013-11-28 03:57:45 -08:00
Chris Robinson
bb0207d784
Add a method to load a soundfont
2013-11-28 03:38:17 -08:00