Advanced Gtk+ Sequencer - News
Advanced Gtk+ Sequencer version 7.0.x announcement
Item posted by Joël Krähemann <jkraehemann> on Sun 13 Oct 2024 09:43:06 AM UTC.
Highlights of the new major release of GSequencer are the use of AgsVector256Manager resulting in better optimized vector intrinsic operations and support for MIDI version 1 and 2 control change messages. Further MIDI version 2 record ability of ags-fx-notation and ags-fx-envelope with enable LFO port.
Some refactorings have taken place, too. Resulting in some ABI breakage.
The AgsVector256Manager provding prefaulted vector arrays
Following new functions are provided by this object:
- ags_vector_256_manager_get_type()
- ags_vector_arr_alloc()
- ags_vector_arr_free()
- ags_vector_256_manager_reserve_all()
- ags_vector_256_manager_try_acquire()
- ags_vector_256_manager_try_acquire_dual()
- ags_vector_256_manager_try_acquire_triple()
- ags_vector_256_manager_release()
- ags_vector_256_manager_get_instance()
- ags_vector_256_manager_new()
Usual use-case is you try acquire some buffers perform vector operations on prefaulted memory and then release the buffer, again.
AgsVector256Manager *vector_256_manager = ags_vector_256_manager_get_instance();
AgsVectorArr *buffer_arr;
guint j;
while((buffer_arr = ags_vector_256_manager_try_acquire(vector_256_manager,
AGS_VECTOR_256_SIGNED_16_BIT)) != NULL){
g_thread_yield();
}
// call audio buffer fill functions
// then perform vector operations
// and call audio buffer fetch functions
ags_vector_256_manager_release(vector_256_manager,
buffer_arr);
Improved MIDI version 1 and 2 support
AgsRecall has seen some updates and has got support to poll for MIDI control change messages. These are the new AgsRecallFlags introduced:
- AGS_RECALL_MIDI1
- AGS_RECALL_MIDI1_CONTROL_CHANGE
- AGS_RECALL_MIDI2
- AGS_RECALL_MIDI2_CONTROL_CHANGE
These new functions support hash tables mapping control change messages and to poll for those messages:
- ags_recall_get_midi1_cc_to_value()
- ags_recall_get_midi1_cc_to_port_specifier()
- ags_recall_get_midi2_cc_to_value()
- ags_recall_get_midi2_cc_to_port_specifier()
- ags_recall_midi1_control_change()
- ags_recall_midi2_control_change()
ags-fx-notation is now capable to consume MIDI version 2 key-on and key-off messages.
ags-fx-envelope with enable LFO port
AgsEnvelopeUtil supports now to apply a LFO resulting in smoother envelope, it is triggered by AgsFxEnvelopeAudio:enable-lfo property as AgsPort.
Deprecated functions
- deprecated ags_fx_notation_audio_processor_record() because of MIDI version 2 transition
- deprecated ags_audio_buffer_util_get_copy_mode() because of future naming conflict with getter of struct field
- deprecated ags_envelope_*_wah_wah_*() because not used
- deprecated ags_sf2_synth_util_boxed_copy() for uniform naming schema
- deprecated ags_sfz_synth_util_boxed_copy() for uniform naming schema
- deprecated ags_time_stretch_util_get_buffer_size() for uniform naming schema
- deprecated ags_time_stretch_util_set_buffer_size() for uniform naming schema
by Joël
Powered by Savane 3.14-8aba.
Corresponding source code