-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathRecentChanges.html
More file actions
329 lines (327 loc) · 32.6 KB
/
RecentChanges.html
File metadata and controls
329 lines (327 loc) · 32.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libfluidsynth: Recent Changes</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libfluidsynth
 <span id="projectnumber">2.5.4</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('RecentChanges.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">Recent Changes </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="NewIn2_6_0"></a>
What's new in 2.6.0?</h1>
<ul>
<li>A lookahead limiter has been added, see <a class="el" href="settings_synth.html#settings_synth_limiter_active">synth.limiter.active</a> and other related limiter settings</li>
<li>Support for 24bit and 32bit audio has been added, see <a class="el" href="group__audio__rendering.html#gafe93f25a4a6a479b5344c55fe1260281" title="Synthesize a block of 24 bit audio samples to audio buffers.">fluid_synth_write_s24()</a> and <a class="el" href="group__audio__rendering.html#ga7aa37d65824705dd3a13647f6bcb50fc" title="Synthesize a block of 32 bit audio samples to audio buffers.">fluid_synth_write_s32()</a></li>
</ul>
<h1><a class="anchor" id="NewIn2_5_4"></a>
What's new in 2.5.4?</h1>
<ul>
<li>By default, fluidsynth now auto selects the TCP port for the shell server, see <a class="el" href="settings_shell.html#settings_shell_port">shell.port</a></li>
</ul>
<h1><a class="anchor" id="NewIn2_5_0"></a>
What's new in 2.5.0?</h1>
<ul>
<li><a class="el" href="group__modulators.html#gga4b2419150b2a167df7807d5020a6e996a5ac8e594df1dff6c76d49c6258127d5a" title="Custom non-standard sinus mapping function.">FLUID_MOD_SIN</a> is now deprecated, use the newly added <a class="el" href="group__modulators.html#ga03a812331a53f1f6dadafba72b8bf80d" title="Set a user defined mapping function of type fluid_mod_mapping_t to mod.">fluid_mod_set_custom_mapping()</a></li>
<li>A new mode for the custom IIR filter has been added: <a class="el" href="group__iir__filter.html#gga1e682c5d6f22e13947cc07bcd92d7525a347c1326bd6f2ecca54ede27e2d170d5" title="Setting this flag causes the custom filter's cutoff frequency (fc) to dynamically adjust to the notes...">FLUID_IIR_BEANLAND</a></li>
<li><a class="el" href="group__modulators.html#gab7b1d3517480499d8524c89341609fc2" title="Get the transform type of a modulator.">fluid_mod_get_transform()</a> now receives a <code>const</code> argument</li>
<li><a class="el" href="group__misc.html#gae6e3539954eb487156cdeed328f931e5" title="Get FluidSynth runtime version as a string.">fluid_version_str()</a> now returns a <code>const</code> char array</li>
<li>An API for manipulating fluid_sfont_t specific default modulators has been added: <a class="el" href="group__soundfont__loader.html#gabc4be7689152f48ff4bbb0b48d687385" title="Retrieve a deep copy of all default modulators attached to the provided sfont instance.">fluid_sfont_get_default_mod()</a> and <a class="el" href="group__soundfont__loader.html#ga5a503b6f1f8854a6f9dcfbdc0106b442" title="Sets the default modulators of a SoundFont instance.">fluid_sfont_set_default_mod()</a></li>
<li>Support for specifying a synth-wide mode to interpret portamento time has been added, see <a class="el" href="group__channel__setup.html#ga1bb91603c39ef9bce39b9c09d0e0b704" title="Indicates the portamento time mode the synthesizer is set to.">fluid_portamento_time_mode</a>, <a class="el" href="group__channel__setup.html#ga42d94965941fcbdf719d988590edad85" title="Gets the global portamento time mode of the synthesizer.">fluid_synth_get_portamento_time_mode()</a>, <a class="el" href="group__channel__setup.html#ga67d1dca09832aba4c80313d32e94287f" title="Sets the global portamento time mode of the synthesizer.">fluid_synth_set_portamento_time_mode()</a> and setting <a class="el" href="settings_synth.html#settings_synth_portamento-time">synth.portamento-time</a></li>
<li>In all previous versions of fluidsynth, the synth's API mutex was unlocked too early when calls to <a class="el" href="group__midi__messages.html#ga832211b9b471b7ac140b934bd549b4cb" title="Set the preset of a MIDI channel to an unassigned state.">fluid_synth_unset_program()</a> and <a class="el" href="group__voice__control.html#ga9eb72dfa600b3e77fc31f71702fa1195" title="Allocate a synthesis voice.">fluid_synth_alloc_voice()</a> had been made; this race condition has been fixed</li>
</ul>
<h1><a class="anchor" id="NewIn2_4_5"></a>
What's new in 2.4.5?</h1>
<ul>
<li>In order to use the sdl3 audio driver, the downstream application is responsible for calling <code>SDL_Init()</code> and <code>SDL_Quit()</code>, just like it was practice for the sdl2 audio driver. Fluidsynth may raise a warning if this isn't done, see <a class="el" href="CreatingAudioDriver.html">Creating the audio driver</a></li>
</ul>
<h1><a class="anchor" id="NewIn2_4_3"></a>
What's new in 2.4.3?</h1>
<ul>
<li>synth.note-cut has been introduced</li>
</ul>
<h1><a class="anchor" id="NewIn2_4_0"></a>
What's new in 2.4.0?</h1>
<ul>
<li>synth.device-id now has a default value of 16</li>
<li>Default values of reverb and chorus settings have been tuned</li>
<li><a class="el" href="group__modulators.html#gab7b1d3517480499d8524c89341609fc2" title="Get the transform type of a modulator.">fluid_mod_get_transform()</a> and <a class="el" href="group__modulators.html#ga56e9f604c9d6a6f0c940a45baaff99a7" title="Set the transform type of a modulator.">fluid_mod_set_transform()</a> for SoundFont 2.04 compliant modulators</li>
</ul>
<h1><a class="anchor" id="NewIn2_3_2"></a>
What's new in 2.3.2?</h1>
<ul>
<li><a class="el" href="group__midi__player.html#gaea72b4f99ce60bdb3a5da1bb98570574" title="Get the division currently used by a MIDI player.">fluid_player_get_division()</a> has been added</li>
</ul>
<h1><a class="anchor" id="NewIn2_2_7"></a>
What's new in 2.2.7?</h1>
<ul>
<li>Most getter functions of the MIDI event API are now const correct</li>
<li><a class="el" href="group__sequencer__events.html#ga0802471833a4847c5e0467e658a904a4" title="Transforms an incoming MIDI event (from a MIDI driver or MIDI router) to a sequencer event.">fluid_event_from_midi_event()</a> has been added</li>
</ul>
<h1><a class="anchor" id="NewIn2_2_0"></a>
What's new in 2.2.0?</h1>
<ul>
<li><a class="el" href="group__Types.html#ga6a223e4b8d83753d95c87e1feed58227" title="Callback struct to perform custom file loading of soundfonts.">fluid_file_callbacks_t</a> <span style="color:red">now uses <code>long long</code> as file-offset type (see <a class="el" href="group__Types.html#ga5c188d5b1e95c245ff7f3b49a6b82ad9" title="A typedef for C99's type long long, which is at least 64-bit wide, as guaranteed by the C99.">fluid_long_long_t</a>).</span><span style="color:red;font-weight:bold">This is a breaking change</span>, which allows to load SoundFonts bigger than 2GiB on Windows. This change required to bump fluidsynth's SOVERSION.</li>
<li><span style="color:red">various fluid_event_*() functions that received a "value" argument of type <code>short</code> now receive an <code>int</code> argument</span> in preparation for MIDI 2.0 support</li>
<li>fluid_event_any_control_change() has been removed</li>
<li>the sequencer has received a major revisal. For you that means:<ul>
<li>the sequencer's queue no longer blocks the synthesizer thread, due to being busy arranging its events internally.</li>
<li>events that share the same tick was given a new, documented order, see <a class="el" href="group__sequencer.html#ga83314f4ad773979841afe50cc2efd83f" title="Schedule an event for sending at a later time.">fluid_sequencer_send_at()</a>.</li>
<li>the sequencer's scale can now be used for arbitrary tempo changes. Previously, the scale of the sequencer was limited to 1000. The only limitation now is >0.</li>
<li>there is now a dedicated event type for changing the sequencer's time scale, see <a class="el" href="group__sequencer__events.html#ga87e5cea03b6f90bb6354e8d5ed6abdcc" title="Set a sequencer event to be a scale change event.">fluid_event_scale()</a>.</li>
</ul>
</li>
<li>the dynamic-sample-loader has learned support to pin samples, see <a class="el" href="group__soundfonts.html#ga18c346f86663cda8bd159fec58670b3d" title="Pins all samples of the given preset.">fluid_synth_pin_preset()</a> and <a class="el" href="group__soundfonts.html#ga04731fab69f22de2d8bac75bea5b94ee" title="Unpin all samples of the given preset.">fluid_synth_unpin_preset()</a></li>
<li>added getter and setter functions for individual effect groups</li>
<li>support for UTF-8 filenames under Windows, see <a class="el" href="group__soundfont__management.html#ga0ba0bc9d4a19c789f9969cd22d22bf66" title="Load a SoundFont file.">fluid_synth_sfload()</a></li>
<li>MIDI Tempo of the fluid_player can now be overridden, see <a class="el" href="group__midi__player.html#gab99758ae72fc14dd149a64cb3520700a" title="Set the tempo of a MIDI player.">fluid_player_set_tempo()</a></li>
<li>a per-tick callback has been added to the MIDI player, see <a class="el" href="group__midi__player.html#gae21555363638ec6b83ec259d2e22daec" title="Add a listener function for every MIDI tick change.">fluid_player_set_tick_callback()</a></li>
<li>WASAPI audio driver is now available on Windows</li>
<li>the following drivers have gained support for <a class="el" href="group__audio__driver.html#gad36d048b94952b23f7b3971bea39519f" title="Create a new audio driver.">new_fluid_audio_driver2()</a>:<ul>
<li>DSound</li>
<li>WaveOut</li>
<li>WASAPI</li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="NewIn2_1_7"></a>
What's new in 2.1.7?</h1>
<ul>
<li>a regression introduced in 2.1.0 prevented chorus from being audible when <a class="el" href="group__audio__rendering.html#gaf41e26b153a095dbc4248e9df4f3ad46" title="Synthesize floating point audio to stereo audio channels (implements the default interface fluid_audi...">fluid_synth_process()</a> was used</li>
</ul>
<h1><a class="anchor" id="NewIn2_1_4"></a>
What's new in 2.1.4?</h1>
<ul>
<li>a regression introduced in 2.1.3 broke <a class="el" href="group__voice__control.html#ga96a99aae390b6fbe3e57ac53c998289e" title="Create and start voices using an arbitrary preset and a MIDI note on event.">fluid_synth_start()</a> for DLS presets</li>
</ul>
<h1><a class="anchor" id="NewIn2_1_1"></a>
What's new in 2.1.1?</h1>
<ul>
<li>requirements for explicit sequencer client unregistering have been relaxed: <a class="el" href="group__sequencer.html#gae9893f73ccea5deddb38cb235b29c6ac" title="Free a sequencer object.">delete_fluid_sequencer()</a> now correctly frees any registered sequencer clients (clients can still be explicitly unregistered)</li>
<li>using the sequencer with the system timer as timing source has been deprecated</li>
</ul>
<h1><a class="anchor" id="NewIn2_1_0"></a>
What's new in 2.1.0?</h1>
<ul>
<li><span style="color:red">refrain from using <a class="el" href="group__synthesis__params.html#ga58a436738d2a21b160b0732024bb4dbe" title="Set up an event to change the sample-rate of the synth during the next rendering call.">fluid_synth_set_sample_rate()</a></span></li>
<li><a class="el" href="settings_synth.html#settings_synth_sample-rate">synth.sample-rate</a> is no real-time setting anymore, see note about <a class="el" href="group__synthesis__params.html#ga58a436738d2a21b160b0732024bb4dbe" title="Set up an event to change the sample-rate of the synth during the next rendering call.">fluid_synth_set_sample_rate()</a></li>
<li>new reverb engine</li>
<li>chorus is now stereophonic</li>
<li>smallest allowed chorus speed is now 0.1 Hz (previously 0.29 Hz)</li>
<li>the following audio drivers were added:<ul>
<li>opensles</li>
<li>oboe</li>
<li>sdl2</li>
<li>waveout</li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="NewIn2_0_8"></a>
What's new in 2.0.8?</h1>
<ul>
<li><a class="el" href="group__soundfont__loader.html#ga1bbc774a7f461650696f17f12958d34a" title="Assign sample data to a SoundFont sample.">fluid_sample_set_sound_data()</a> caused broken sound when copying sample data</li>
</ul>
<h1><a class="anchor" id="NewIn2_0_7"></a>
What's new in 2.0.7?</h1>
<ul>
<li><a class="el" href="group__misc.html#ga6f11f4e3f8d4eacf38e7e3fe884f3d7b" title="Wrapper for free() that satisfies at least C90 requirements.">fluid_free()</a> has been added to allow proper deallocation by programming languages other than C/C++</li>
</ul>
<h1><a class="anchor" id="NewIn2_0_6"></a>
What's new in 2.0.6?</h1>
<ul>
<li>the MIDI player did not emit any audio when calling <a class="el" href="group__midi__player.html#ga80cc6b4c4a81696a2d07466f3da6d6b9" title="Activates play mode for a MIDI player if not already playing.">fluid_player_play()</a> after <a class="el" href="group__midi__player.html#gae630aa680bb891be30bffa3d6d5e1b21" title="Pauses the MIDI playback.">fluid_player_stop()</a></li>
</ul>
<h1><a class="anchor" id="NewIn2_0_5"></a>
What's new in 2.0.5?</h1>
<ul>
<li><a class="el" href="group__audio__rendering.html#gaf41e26b153a095dbc4248e9df4f3ad46" title="Synthesize floating point audio to stereo audio channels (implements the default interface fluid_audi...">fluid_synth_process()</a> omitted audio samples when called with arbitrary sample counts that were not a multiple of <a class="el" href="group__synthesis__params.html#gae6c73a6fa391c2e673ab0aef3a4cc944" title="Get the internal synthesis buffer size value.">fluid_synth_get_internal_bufsize()</a></li>
<li><a class="el" href="group__soundfont__management.html#ga586742c9ea4bbee80732881175db3393" title="Schedule a SoundFont for unloading.">fluid_synth_sfunload()</a> was not releasing sample buffers of SoundFont3 files if <a class="el" href="settings_synth.html#settings_synth_dynamic-sample-loading">synth.dynamic-sample-loading</a> was set to FALSE</li>
</ul>
<h1><a class="anchor" id="NewIn2_0_3"></a>
What's new in 2.0.3?</h1>
<ul>
<li>fix incorrect behaviour of <a class="el" href="group__soundfont__loader.html#ga1bbc774a7f461650696f17f12958d34a" title="Assign sample data to a SoundFont sample.">fluid_sample_set_sound_data()</a></li>
<li>add missing getters for midi events:<ul>
<li><a class="el" href="group__midi__events.html#ga650f90ef05dcb96e736de7c7a7b4d68f" title="Get the text of a MIDI event structure.">fluid_midi_event_get_text()</a></li>
<li><a class="el" href="group__midi__events.html#ga0192ed5d2158003b40573aa47a473f21" title="Get the lyric of a MIDI event structure.">fluid_midi_event_get_lyrics()</a></li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="NewIn2_0_2"></a>
What's new in 2.0.2?</h1>
<ul>
<li><a class="el" href="group__synth.html#gacabf16d26498830bb81d6130ef4df6e6" title="Get a textual representation of the last error.">fluid_synth_error()</a> has been deprecated, use <a class="el" href="group__logging.html#gaa282e667a0164bae3972bce0c21ed600" title="Installs a new log function for a specified log level.">fluid_set_log_function()</a> to interfere log messages</li>
</ul>
<h1><a class="anchor" id="NewIn2_0_0"></a>
What's new in 2.0.0?</h1>
<p>FluidSynths major version was bumped. The API was reworked, deprecated functions were removed.</p>
<p><b><span style="color:red">Important changes that may not result in a compilation error but may cause your app to misbehave:</span></b></p>
<ul>
<li>all public <code>fluid_settings_*</code> functions that return an integer which is not meant to be interpreted as bool consistently return either <a class="el" href="group__misc.html#gae4efb1c3ce0d550c922504adfb0fb886" title="Value that indicates success, used by most libfluidsynth functions.">FLUID_OK</a> or <a class="el" href="group__misc.html#ga90e8bdbc5a507bbfa5c45bac85a63a61" title="Value that indicates failure, used by most libfluidsynth functions.">FLUID_FAILED</a></li>
<li><a class="el" href="group__settings.html#ga58cbabbb8990c2934b3eeea925e01804" title="Set a string value for a named setting.">fluid_settings_setstr()</a> cannot be used to set integer (toggle) settings with "yes" or "no" values anymore. Use <a class="el" href="group__settings.html#gaec566c035617c2e12de85b82297ac90b" title="Set an integer value for a setting.">fluid_settings_setint()</a> instead, for example: <br />
<code>fluid_settings_setint(settings, "synth.reverb.active", 0)</code> instead of <code>fluid_settings_setstr(settings, "synth.reverb.active", "no")</code></li>
<li><span style="text-decoration:line-through;">explicit client unregistering is required for <a class="el" href="group__sequencer.html#ga1a2462a3d4e0dbd963044973ca276e9c" title="Register a sequencer client.">fluid_sequencer_register_client()</a> and <a class="el" href="group__sequencer.html#gaae466e7d4341c9e17bad52c636f1a46d" title="Registers a synthesizer as a destination client of the given sequencer.">fluid_sequencer_register_fluidsynth()</a></span> (since fluidsynth 2.1.1 not required anymore, but still recommend)</li>
<li>all public functions consistently receive signed integers for soundfont ids, bank and program numbers</li>
<li>use unique device names for the <a class="el" href="settings_audio.html#settings_audio_portaudio_device">audio.portaudio.device</a> setting</li>
<li><a class="el" href="group__audio__rendering.html#gaf41e26b153a095dbc4248e9df4f3ad46" title="Synthesize floating point audio to stereo audio channels (implements the default interface fluid_audi...">fluid_synth_process()</a> received a new more flexible implementation, but now requires zeroed-out sample buffers</li>
</ul>
<p><b>Other changes in FluidSynth 2.0.0 concerning developers:</b></p>
<ul>
<li>all public <code>delete_*</code> functions return void and are safe when called with NULL</li>
<li>the shell command handler was decoupled internally, as a consequence the param list of <a class="el" href="group__command__server.html#gae1f29eb341a14941ceb6e278aec6774c" title="Create a new TCP/IP command shell server.">new_fluid_server()</a> and <a class="el" href="group__command__handler.html#ga35b1495f8494d8cb1c1238b312d5bdc3" title="Create a new command handler.">new_fluid_cmd_handler()</a> was adapted</li>
<li><code>fluid_settings_set*</code> functions no longer silently register unknown settings but return an error instead</li>
<li>reverb: roomsize is now limited to an upper threshold of 1.0 to avoid exponential volume increase</li>
<li>rename <code>fluid_mod_new()</code> and <code>fluid_mod_delete()</code> to match naming conventions: <a class="el" href="group__modulators.html#ga3e9d7e9f7e32ae0e965d5b1b799c153d" title="Create a new uninitialized modulator structure.">new_fluid_mod()</a> and <a class="el" href="group__modulators.html#ga6e29359719f183f2c590015b325cada6" title="Free a modulator structure.">delete_fluid_mod()</a></li>
<li>rename chorus getters to match naming conventions: <a class="el" href="group__chorus__effect.html#ga5ecdcea370f50f8a343824b1c1ee450e" title="Get chorus speed in Hz of all fx groups.">fluid_synth_get_chorus_speed()</a> and <a class="el" href="group__chorus__effect.html#ga2ab4cf04b5b944c9bb3c999e2a117d51" title="Get chorus depth of all fx groups.">fluid_synth_get_chorus_depth()</a></li>
<li><a class="el" href="group__soundfont__management.html#ga4be7569d106eb3fe5fa38ff3e498e0aa" title="Remove a SoundFont from the SoundFont stack without deleting it.">fluid_synth_remove_sfont()</a> returns FLUID_OK or FLUID_FAILED</li>
<li>introduce a separate data type for sequencer client IDs: <a class="el" href="group__Types.html#ga69f729a00307f2b8ec1be0dba2203c12" title="Unique client IDs used by the sequencer and fluid_event_t, obtained by fluid_sequencer_register_clien...">fluid_seq_id_t</a></li>
<li><a class="el" href="group__command__interface.html#ga331346c938f00a657325f3a0b66f793f" title="Get the user specific FluidSynth command file name.">fluid_get_userconf()</a> has been implemented for Windows</li>
</ul>
<p><b>New Features and API additions:</b></p>
<ul>
<li>add <a class="el" href="settings_midi.html#settings_midi_autoconnect">midi.autoconnect</a> a setting for automatically connecting fluidsynth to available MIDI input ports</li>
<li>add <a class="el" href="settings_synth.html#settings_synth_overflow_important">synth.overflow.important</a> and <a class="el" href="settings_synth.html#settings_synth_overflow_important-channels">synth.overflow.important-channels</a> settings to take midi channels during overflow calculation into account that are considered to be "important"</li>
<li>add <a class="el" href="settings_synth.html#settings_synth_dynamic-sample-loading">synth.dynamic-sample-loading</a> a setting for enabling on demand sample loading</li>
<li>add support for polyphonic key pressure events, see <a class="el" href="group__sequencer__events.html#ga64863f0af62b64c7b64c138a519a99a7" title="Set a sequencer event to be a polyphonic aftertouch event.">fluid_event_key_pressure()</a> and <a class="el" href="group__midi__messages.html#gaa6c83174dc095d271faa95b97e151541" title="Set the MIDI polyphonic key pressure controller value.">fluid_synth_key_pressure()</a></li>
<li>add <a class="el" href="group__synthesis__params.html#gaa5b17b128a04237de73262a6e591be17" title="Adds the specified modulator mod as default modulator to the synth.">fluid_synth_add_default_mod()</a> and <a class="el" href="group__synthesis__params.html#ga750b72b812cee4562b1d48b320c35ec9" title="Removes the specified modulator mod from the synth's default modulator list.">fluid_synth_remove_default_mod()</a> for manipulating default modulators</li>
<li>add individual reverb setters: <a class="el" href="group__reverb__effect.html#gaeee2c7cb508818e3aa77acda849aeb61" title="Set reverb roomsize of all groups.">fluid_synth_set_reverb_roomsize()</a>, <a class="el" href="group__reverb__effect.html#ga376946e47b89beb62e7b0d02b024a9bf" title="Set reverb damping of all groups.">fluid_synth_set_reverb_damp()</a>, <a class="el" href="group__reverb__effect.html#ga9c3cc87d30975e00927883a5d202043b" title="Set reverb width of all groups.">fluid_synth_set_reverb_width()</a>, <a class="el" href="group__reverb__effect.html#gaa6325566d49dfc87cc7fd7d547c0b457" title="Set reverb level of all groups.">fluid_synth_set_reverb_level()</a></li>
<li>add individual chorus setters: <a class="el" href="group__chorus__effect.html#ga726360457c9e1cf3b4cf6c0b57ef073f" title="Set the chorus voice count of all groups.">fluid_synth_set_chorus_nr()</a>, <a class="el" href="group__chorus__effect.html#gaa5bfdbf4668a98998283301124639d76" title="Set the chorus level of all groups.">fluid_synth_set_chorus_level()</a>, <a class="el" href="group__chorus__effect.html#gaec681720b921f7ad0f7e90367506abff" title="Set the chorus speed of all groups.">fluid_synth_set_chorus_speed()</a>, <a class="el" href="group__chorus__effect.html#ga37d8a755f2675e5d5cffc07c463bd0fe" title="Set the chorus depth of all groups.">fluid_synth_set_chorus_depth()</a>, <a class="el" href="group__chorus__effect.html#ga18fd25d1431ae376cff94704ffa9eafd" title="Set the chorus type of all groups.">fluid_synth_set_chorus_type()</a></li>
<li>add realtime settings for <a class="el" href="settings_synth.html#settings_synth_reverb_damp">synth.reverb.damp</a> and <a class="el" href="settings_synth.html#settings_synth_chorus_depth">synth.chorus.depth</a> parameters</li>
<li>add seek support to midi-player, see <a class="el" href="group__midi__player.html#gaab5fe5b25ff513919b138d77e079c75a" title="Seek in the currently playing file.">fluid_player_seek()</a></li>
<li>expose functions to manipulate the ladspa effects unit (see ladspa.h)</li>
<li>add support for text and lyrics midi events, see <a class="el" href="group__midi__events.html#gac2521936c5bae0d35a8bf0b321fd223b" title="Assign lyric data to a MIDI event structure.">fluid_midi_event_set_lyrics()</a> and <a class="el" href="group__midi__events.html#ga338f9abb467d3c6a28623315922f8e79" title="Assign text data to a MIDI event structure.">fluid_midi_event_set_text()</a></li>
<li>complete rewrite of the soundfont loader API, settingsee sfont.h<ul>
<li>support for 24 bit audio samples, see <a class="el" href="group__soundfont__loader.html#ga1bbc774a7f461650696f17f12958d34a" title="Assign sample data to a SoundFont sample.">fluid_sample_set_sound_data()</a></li>
<li>expose <a class="el" href="group__soundfont__loader.html#ga35b21cdddb636023b34aa37012e66e0c" title="Creates a default soundfont2 loader that can be used with fluid_synth_add_sfloader().">new_fluid_defsfloader()</a> to support loading soundfonts from memory, see <a class="el" href="group__soundfont__loader.html#gaaae6deee082746661dea7266f170a8da" title="Set custom callbacks to be used upon soundfont loading.">fluid_sfloader_set_callbacks()</a> and <a href="fluidsynth_sfload_mem_8c-example.html">fluidsynth_sfload_mem.c</a></li>
<li>remove these structs from the public API and provide proper getter and setter functions instead:<ul>
<li>struct _fluid_sfloader_t</li>
<li>struct _fluid_sample_t</li>
<li>struct _fluid_sfont_t</li>
<li>struct _fluid_preset_t</li>
</ul>
</li>
</ul>
</li>
<li>add an additional general-purpose IIR filter, see <a class="el" href="group__iir__filter.html#gaaf4fda0f2b4e699fceed4b1202541f5f" title="Configure a general-purpose IIR biquad filter.">fluid_synth_set_custom_filter()</a></li>
<li>add a custom sinusoidal modulator mapping function, see <a class="el" href="group__modulators.html#gga4b2419150b2a167df7807d5020a6e996a5ac8e594df1dff6c76d49c6258127d5a" title="Custom non-standard sinus mapping function.">FLUID_MOD_SIN</a></li>
<li>implement polymono support according to MIDI specs:<ul>
<li>add basic channel support, see <a class="el" href="group__channel__setup.html#ga84d42e3cd77c7385db7ed7f1c0dcbf28" title="Disables and unassigns all channels from a basic channel group.">fluid_synth_reset_basic_channel()</a>, <a class="el" href="group__channel__setup.html#ga6683d9f71e1ba0342edaebd9b451c618" title="Sets a new basic channel group only.">fluid_synth_set_basic_channel()</a>, <a class="el" href="group__channel__setup.html#ga08883f291c77959de32529901df2014b" title="Returns poly mono mode information of any MIDI channel.">fluid_synth_get_basic_channel()</a></li>
<li>implement MIDI modes Omni On, Omni Off, Poly, Mono, see <a class="el" href="group__channel__setup.html#gaaf55486a4c745bf15d2cd275a4a90978" title="Indicates the mode a basic channel is set to.">fluid_basic_channel_modes</a></li>
<li>implement portamento control, see <a class="el" href="group__channel__setup.html#ga010a2d28392cf12cd126b01799676625" title="Sets the portamento mode of a channel.">fluid_synth_set_portamento_mode()</a>, <a class="el" href="group__channel__setup.html#ga6d10213e76010800c4f7224f84460179" title="Gets the portamento mode of a channel.">fluid_synth_get_portamento_mode()</a></li>
<li>implement legato control, see <a class="el" href="group__channel__setup.html#ga480f70ed2a454dd51953e48f70d60529" title="Sets the legato mode of a channel.">fluid_synth_set_legato_mode()</a>, <a class="el" href="group__channel__setup.html#ga85724d5ab8e18d9ab7818912308c61e2" title="Gets the legato mode of a channel.">fluid_synth_get_legato_mode()</a></li>
<li>implement breath control, see <a class="el" href="group__channel__setup.html#ga5d93c60554649a01a0402c78df0b3dfd" title="Sets the breath mode of a channel.">fluid_synth_set_breath_mode()</a>, <a class="el" href="group__channel__setup.html#ga92e300f8c24321a56d30f091f1e9cc8d" title="Gets the breath mode of a channel.">fluid_synth_get_breath_mode()</a></li>
</ul>
</li>
</ul>
<p><b>API cleanups:</b></p>
<ul>
<li>the ramsfont has been removed, because it is unmaintained and believed to be unused; please get in touch with the mailing list if you still need it</li>
<li>remove deprecated fluid_synth_get_channel_info() in favour of <a class="el" href="group__midi__messages.html#ga028ea45ffb73805b20be7270a840252c" title="Get current SoundFont ID, bank number and program number for a MIDI channel.">fluid_synth_get_program()</a> and <a class="el" href="group__soundfont__loader.html#ga1359b4643ce64e0c10e25bc64df7b85d" title="Get active preset on a MIDI channel.">fluid_synth_get_channel_preset()</a></li>
<li>remove deprecated fluid_settings_getstr()</li>
<li>remove deprecated fluid_synth_set_midi_router(), instead supply the midi-router instance when creating a command handler with <a class="el" href="group__command__handler.html#ga35b1495f8494d8cb1c1238b312d5bdc3" title="Create a new command handler.">new_fluid_cmd_handler()</a></li>
<li>remove deprecated fluid_get_hinstance() and fluid_set_hinstance() (dsound driver now uses the desktop window)</li>
<li>remove deprecated fluid_synth_create_key_tuning(), use fluid_synth_activate_key_tuning(synth, bank, prog, name, pitch, FALSE) instead</li>
<li>remove deprecated fluid_synth_create_octave_tuning(), use fluid_synth_activate_octave_tuning(synth, bank, prog, name, pitch, FALSE) instead</li>
<li>remove deprecated fluid_synth_select_tuning(), use fluid_synth_activate_tuning(synth, chan, bank, prog, FALSE) instead</li>
<li>remove deprecated fluid_synth_reset_tuning(), use fluid_synth_deactivate_tuning(synth, chan, FALSE) instead</li>
<li>remove deprecated FLUID_HINT_INTEGER</li>
<li>remove deprecated fluid_synth_set_gen2() as there doesn't seem to be a use case for absolute generator values</li>
<li>remove deprecated "synth.parallel-render" setting</li>
<li>remove obsolete "audio.[out|in]put-channels" settings</li>
<li>remove unimplemented "synth.dump" setting</li>
<li>remove fluid_cmd_handler_register() and fluid_cmd_handler_unregister() from public API, as they seem to be unused downstream</li>
<li>remove misspelled FLUID_SEQ_PITCHWHHELSENS macro</li>
<li>remove struct _fluid_mod_t from public API, use the getters and setters of mod.h instead</li>
<li>remove struct _fluid_gen_t, fluid_gen_set_default_values() and enum fluid_gen_flags from public API</li>
<li>remove macros <a class="el" href="group__soundfont__loader.html#gaa05e6d0958ddc1cad0567fb63419d5ef" title="Retrieve the unique ID of a SoundFont instance.">fluid_sfont_get_id()</a> and fluid_sample_refcount() from public API</li>
<li>remove FLUID_NUM_MOD macro from public API</li>
<li>remove the following deprecated enum values from public API:<ul>
<li>GEN_LAST</li>
<li>LAST_LOG_LEVEL</li>
<li>FLUID_SEQ_LASTEVENT</li>
<li>FLUID_MIDI_ROUTER_RULE_COUNT </li>
</ul>
</li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
</body>
</html>