Due to the need of AgsGuiTaskThread namely for GUI feedback especially interfacing AgsAudioLoop with AgsGuiThread, I've introduced AgsGuiTaskThread ...
soon, read more in the wiki
...
There were many crashes by doing some concurrent memory access without any mutex.
Further informations:
You may experience
Revision 1707 has for now support of Soundfont2 and can be played on the piano roll. That's a big step in usability towards release 0.4.0.
Release early and often is kept in mind of 0.4.0. May be it comes a bit earlier than the second deadline for 2014/31/05.
This man could explain me Soundfont2 in one sentence. The mailing list response was really helpful.
...
Keep in mind that the toplevel objects in a SoundFont are called presets. Presets contain zones which link to instruments and instruments contain zones which link to samples.
Deadlocks along the way and the most logic way is to introduce AgsThreadHangcheck to target the problem in a peformant and intuitive way.
May be the need for RX/TX gate control? By having validation of the gates state. And it could intercept in case.
Probably plenty of them in Advanced Gtk+ Sequencer. For today I gonna fix just the worst. Audio data consumes most memory ...
String properties and filenames probably affected, too. During runtime duplicated AgsRecall may be finalized, too.
The following macro clarifies much:
#define ipatch_sf2_get_samples(sfont) \
ipatch_container_get_children (IPATCH_CONTAINER (sfont), \
IPATCH_TYPE_SF2_SAMPLE)
Is getting samples so easy?
Latest subversion VCS includes a few fixes related to reading pattern or notation from XML. So we could say saving/opening files is fully implemented for version 0.4.0.
It works great!
Next issue to solve is playing soundfonts by notation. Additionally some memory leaks need to be fixed ...
Next release announcement seems not so far away.
Only 2 weeks towards release
Implemented all AgsPlugin related GUI file IO. These means your machines state should be restored when opening appropriate file.
Further AgsSynth was refactored. The unused ampliefier controls aren't there anymore. Additionally introduced AgsSynthInputPad and AgsSynthInputLine.
ATTENTION: the reading of files is still not bug free so you shouldn't rely on it.
Saving and parsing files works great. Last steps include implementing AgsPlugin related objects to do its job.
New deadline of next release is within 2 days. If nothings goes wrong there could be enough time to implement amplifier and echo effects.
There still some issues relating threading. Sometimes the thread tree hangs up.
As I'm writing this post there already two new important fixes. Race condition and missing machines after reading file.
Reading file is really slow, for now.
WARNING: still having problems saving files cause of broken references.
WARNING: ags-recall-container and audio/channel info missing in XML file.
This isn't really bad but Advanced Gtk+ Sequencer version 0.4.0 will have a stronger semantic.
Advanced Gtk+ Sequencer has a need for enhanced get/set abilities in regard of first stable pre release 0.4.0. The modularity of ags is one of its main goals.
Further there should be a fix for high resolution buffers. ags_devout.c and ags_audio_loop.c need to be fixed.
It follows the wanted changes to ags_file_gui.c as DTD:
<!ELEMENT ags-editor (ags-toolbar, ags-editor-pane, ags-notebook)>
<!ATTLIST ags-editor
id ID #REQUIRED
version CDATA #REQUIRED
build-id CDATA #REQUIRED
flags PCDATA #REQUIRED
>
<!ELEMENT ags-editor-pane (IDREF*)>
<!ATTLIST ags-editor-pane
id ID #REQUIRED
>
<!ELEMENT ags-toolbar EMPTY>
<!ATTLIST ags-toolbar
id ID #REQUIRED
edit-mode CDATA "edit"
tic CDATA "1/1"
zoom CDATA "1:4"
mode CDATA "multi-channel"
>
<!ELEMENT ags-notebook (ags-notebook-tab-list)>
<!ATTLIST ags-notebook
id ID #REQUIRED
>
<!ELEMENT ags-notebook-tab-list (ags-notebook-tab*)>
<!ATTLIST ags-notebook-tab-list
id ID #REQUIRED
>
<!ELEMENT ags-notebook-tab EMPTY>
<!ATTLIST ags-notebook-tab
id ID #REQUIRED
notation IDREF #IMPLIED
>
ags-buffer recall implemented in recent subversion tree. Additionaly extended AgsFFPlayer to play notation.
AgsEditor is not grained. Therefore an important update to make it more gained is comming soon.
additional goals
Due to some problems with thread syncing I changed AGS_DEVOUT_DEFAULT_TACT_JIFFIE. It was just reverted by now.
That means your sound was played to slow by beta release.
recent Realtime Kernel freezed with Advanced Gtk+ Sequencer.
0.4.0-beta was released early in hope to get feedbacks. The API shouldn't change anymore. Further the functionality of 0.4.0 is here but a lot of things are broken due some refactoring.
So as next especially fixes to the beta code base will follow.
The GUI feedback slows down the entire application and is therefore a bottle-neck. The thread pool is believed to give some performance boost.
The situation for now is that every tic of AgsDevout a task is executed. This task creates everytime a new thread. It's well known that creating threads is computing expensive work. That's why the task code should use the thread pool instead of instantiating every tic a new thread.... read more
With AgsRecyclingContainer the run order is reproducible that is why AgsRunOrder is deprecated and therefore removed.
ags_recycling_container_find_child(recycling_container->parent,
recycling_container);
is the commit's message namely 1507 where I had to recognize that refactoring is really working :)
Did you recognize that ags uses GtkExpander instead of GtkOptionMenu to layout AgsLine?
The new screenshot called ags-0_4_0-beta.png shows it. And will be the strategy for representing pads in Advanced Gtk+ Sequencer 0.4.0
I'll do some fixes of known issues and then will the first Beta released.
Soon come ...