ags / Blog: Recent posts

Live DVD including Advanced Gtk+ Sequencer

I just built a live DVD for the use with Advanced Gtk+ Sequencer there some other projects included as well. Further it is shipped with drum sounds of hydrogen and Soundfont2 files of fluidsynth.

  • Advanced Gtk+ Sequencer
  • Swami
  • Mplayer
  • ffmpeg

The system is x86_64 using realtime patch for linux-3.14.25-rt22. WindowMaker is default window manager with openbox as alternative ...... read more

Posted by Joël Krähemann 2014-12-25 Labels: live iso minos-one


There's at least one more release planed to target crashes of Advanced Gtk+ Sequencer.

There currently known problems in ags_devout.c

  • type unsafe operations
  • some TODOs

Additionally run() is used instead of run_adding() of LadspaDescriptor.
Further opening files during playback crashes the engine, too.

Any patches against 0.4.2-19 are appreciated.

Posted by Joël Krähemann 2014-12-14

Separating into libraries

Advanced Gtk+ Sequencer is planed to be split into different libraries. I'm promising me more reliability with this change.

Due the fact of crashing the entire system, approximately after 30 minutes, this is considered to be critical. This crash is believed to have its root cause of exhausting memory.

Posted by Joël Krähemann 2014-12-06 Labels: memory library

Updated Documentation

The documentation was just updated and is available either as PDF or Docbook XML. You may also want to take a look at the wiki.

  • ags-developers-book.pdf
  • ags-users-book.pdf

Fixed some formating, updated images and completed some content.

Posted by Joël Krähemann 2014-11-30


... this is the location used to safe its preferences or autosave files.

Posted by Joël Krähemann 2014-10-30

Memory Leaks

The current memory leaks probably has to do with AgsThreadPool and related AgsReturnable thread. Since AgsTaskThread makes extensive use of it won't be easy to get a satisfiable solution at the time.

We could reuse threads :(

... Seems to May be a problem with Gtk+-2.0

Inspecting code thus to find memory leaks.

Got it :)

Posted by Joël Krähemann 2014-10-24

TODO: AgsSeekable

The AgsSeekable interface needs to be implemented.

Its signal ::seek should be called on the following actions of AgsNavigation:

  • prev
  • rewind
  • forward
  • next
  • loop

Further notes for AgsEditor and related. The scrolling is really anoying.

No need for this interface wheter notation or pattern both depend on ags-count-beats recall.

And itselves uses AgsTactable interface which shall suit.

Posted by Joël Krähemann 2014-10-16

API reference updated

Last days just invested some time in doing further documentation.
Please visit Advanced Gtk+ Sequencer API.

There is still a need doing more work on documenting

Me just successfully generated a complete API reference. The problem was of a missing parameter passing to gtkdoc-mkdb.

Here the basic steps to generate API:

cd doc/reference/ags
gtkdoc-scan --module=ags --source-dir=../../../src/ags --rebuild-sections --rebuild-types
cd ../../../
export CFLAGS=`pkg-config --cflags glib-2.0 gtk+-2.0 libxml-2.0 libinstpatch-1.0 ao alsa uuid`
export CFLAGS="-I./src -I/usr/include $CFLAGS"
export LDFLAGS=`pkg-config --libs glib-2.0 gtk+-2.0 libxml-2.0 libinstpatch-1.0 ao alsa uuid`
files=`ls *.o`
export LDFLAGS="$files -L./ $LDFLAGS"
gtkdoc-scangobj --module=ags --output-dir=doc/reference/ags
cd doc/reference/ags
gtkdoc-mkdb --source-dir=../../../src/ags --module=ags --xml-mode --output-format=xml
gtkdoc-mkhtml ags ags-docs.xml
Posted by Joël Krähemann 2014-10-11 Labels: API reference

0-4-2 release candidate #5

Lot's of thing's were clarified and modularized of the API. From code reduction to bugfixes and further functionality added. I just want to say it works great.

It's a kind of WYMIWYG (What You Mean Is What You Get) no magic has some caveates. Like latency of physics isn't clarified for now. May be some initial magic is needed and if you know Advanced Gtk+ Sequencer you know it's possible.

It's strict layering and distinction of GUI, audio and thread interoperationality and meshing in a object orientated manner is one of the greatest advantages.... read more

Posted by Joël Krähemann 2014-10-03 Labels: release notes

Export to WAV works

Since export to WAV works great I really know there's only one active output channel. Don't forget to mention the thread tree was fixed once more.

And the best of all is at all available in ags-0.4.2-rc4

Posted by Joël Krähemann 2014-10-01

More on memory leaks

Since I'm doing gtk+ for a very long time there some common problems like not freeing GList retrieved by gtk_container_get_children(). Next commit(s) is going to fix it.

Further some strings may not be freed correctly. AgsFile uses libxml2 and it's not evident if attribute values are freed correctly. To target string memory leaks would be next big thing.

API of Advanced Gtk+ Sequencer may adopt the behaviour of gtk_container_get_children() for retrival of any child objects.

Posted by Joël Krähemann 2014-09-24 Labels: GList memory leak string children xml free

Memory leak detected

This looks really mad:

23442 joel      20   0  255g 445m  12m S 384,3  5,7   2:46.58 ags

This looks a bit better

26151 joel      20   0 2473m 1,7g  11m S 331,5 22,5  10:25.62 ags

The time looks incorrect. Is mtrace an enthusiast and what's the difference to trace.log?... read more

Posted by Joël Krähemann 2014-09-23

Release candidate - RC1

In the next hours you get release candidate #1 of Advanced Gtk+ Sequencer. It fixes most of the beta versions faults. There still open issues like thread safety and if plugins are loaded correctly or crash ags.

There comes further improvements like unstable WAV export, thread safe volume meter or fixes to XML input/output.

Critical fixes to replacing deprecated note edit widgets and AgsDial.

Further some community work was done like updating wiki pages and API reference, as well the screenshorts.

Posted by Joël Krähemann 2014-09-22

Dear community ...

Just updated API reference on and created some new tickets in view of next release.

Posted by Joël Krähemann 2014-09-20 Labels: API reference

Feature review of 0.4.2

Advanced Gtk+ Sequencer 0.4.2 comes soon and it's a great release.
You'll benefit of following improvements:

  • Advanced Gtk+ Sequencer comes with a volume indicator widget for now. It is supported as line member and AgsDrum as well AgsMixer use it in their input line.
  • Exporting to WAV can be triggered from file menu and file length can be limited by tact within export window.
  • Many bugfixes were fulfilled like reading files and writing notation editor settings.... read more
Posted by Joël Krähemann 2014-09-18

Fixed XML in-/output and modified DTD

Recent subversion tree has fixed XML in-/output and modified DTD. Tactrate was completely removed and is implied. Further tact is the smallest note size and unit in position notation and setting loops.

Posted by Joël Krähemann 2014-09-11 Labels: tact

LADSPA support 0.4.2

Currently I'm working on LADSPA support of comming release 0.4.2

You may add or remove LADSPA effects by using machine properties editor by accessing context menu. It features as well a LADSPA browser. Within you may choose your prefered widget as port control. Currently supported are:

  • AgsDial
  • GtkSpinButton
  • GtkScale
  • GtkToggleButton

Future releases may bring more advantages of port controls.

Posted by Joël Krähemann 2014-09-05 Labels: LADSPA release 0.4.2

Minor fix to 0.4.1

Subversion tree has some fixes related to reading files. It's revision number is 1844.

to be continued ...

Posted by Joël Krähemann 2014-09-04 Labels: release fix

Oncomming release 0.4.1

Tomorrow is date for oncomming release 0.4.1 and comes mainly with fixes against 0.4.0. It brings the following advantages:

  • removed tact, meaning BPM is the only segmentation
  • fixed drum playback button
  • ability to stop sequencers by toggle play
  • enhanced notation editor, channel editing is turned on by default

There still some issues won't be fixed but is certainly a great step towards usability.

Posted by Joël Krähemann 2014-09-01

Normed BPM

AGS_DEVOUT_DEFAULT_SCALE was introduced to limit BPM in ags_devout.h


120 BPM equals 2 beats per second for now. Previously you had rather 16 beats per 2 seconds. There will be a need for further work on Advanced Gtk+ Sequencer to enhance its reliability.

Posted by Joël Krähemann 2014-08-25

BPM by relative pressure

BPM is probably wrong calculated since tact isn't used anymore.

Fixes are following.

Posted by Joël Krähemann 2014-08-20

Harmonic oscillation

According to following equations have some interesting values:

solve (i * 943 * (-1) * z)/ x - 944 * z + 440y
solve (i * 943 * (-1) * z)/ x - 944 * z + 1/45 * 440y

But what I really want to do is the optimal output rate for accoustics. It is between 943 and 944.

Further universe oscillates at 52 Hz or something alike.

Posted by Joël Krähemann 2014-08-18

BPM vs Tact

Tact will just disappear as control because it makes no sense to have these kind of segmentation.
Affected are the sequencers and notation editor.

This may be incompatible to prior versions.

Posted by Joël Krähemann 2014-08-17

Fixed and tested frequencies

I experienced a good flow while playing drum sequencer. Here are now the correct frequencies:

Thread Frequency
Audio Loop 1000 Hz
Devout Thread 47 Hz
Gui Thread 250 Hz
Task Thread 1000 Hz
Posted by Joël Krähemann 2014-08-16

GUI frequency at 250 Hz

After some probes I recognized that someone told me prior to use system clock as iteration counts per second. System clock usually opperates on 250 Hz.
Devout thread is planed to use at 22 Hz because of good experience with a buffer size of 940 frames.

Thread Frequency
Audio Loop 1000 Hz
Devout Thread 22 Hz
Gui Thread 250 Hz
Task Thread 1000 Hz... read more
Posted by Joël Krähemann 2014-08-16

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks