Advanced Gtk+ Sequencer

Advanced GTK+ Sequencer is intended to use for music composition. It features a piano roll, as well a synth, matrix editor, drum machine, soundfont2 player, mixer and an output panel. It's designed to be highly configurable, you may add effects to its effect chain, add or remove audio channels/pads. You may set up a fully functional network of engines, therefore exists a link editor for linking audio lines.

Install

The following command install's development dependencies on debian GNU/Linux and related.

apt-get install make gcc autoconf automake pkg-config libwebkit2gtk-4.0-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad libgtk-3-dev libinstpatch-dev libsndfile1-dev libsamplerate0-dev libxml2-dev ladspa-sdk dssi-dev lv2-dev libfftw3-dev libasound2-dev libjack-jackd2-dev libpulse-dev libsoup2.4-dev uuid-dev libcunit1-dev gtk-doc-tools pulseaudio cmt swh-lv2 invada-studio-plugins-lv2 calf-plugins fluid-soundfont-gm hydrogen-drumkits libxtst-dev

The following command install's development dependencies on openSUSE Linux Leap15.1.

zypper install gcc automake autoconf libtool glibc-devel pthread-stubs-devel pcre-devel libuuid-devel gettext-devel fftw3-devel libsndfile-devel libsamplerate-devel libinstpatch-devel alsa-devel libpulse-devel libjack-devel ladspa-devel dssi-devel lv2-devel gobject-introspection atk-devel gtk-doc glib2-devel cairo-devel  gdk-pixbuf-devel pango-devel gtk3-devel webkit2gtk3-devel cunit-devel 

To compile Advanced Gtk+ Sequencer issue the following in the source directory:

./configure --prefix=/usr
make
make install

The following command install's development dependencies on FreeBSD with binary package management.

pkg install dssi lv2 docbook-xsl desktop-file-utils gettext-tools gmake gtk-update-icon-cache libxslt pkgconf shared-mime-info gcc9 binutils libX11 alsa-lib fftw3 fontconfig freetype2 libinstpatch libsamplerate libsndfile libsoup e2fsprogs-libuuid webkit2-gtk3gettext-runtime cairo gdk-pixbuf2 glib gtk3 libxml2 pango

To compile Advanced Gtk+ Sequencer on FreeBSD issue the following in the source directory:

MAKE="gmake" LDFLAGS="-L/usr/lib -L/usr/local/lib" ./configure --prefix=/usr/local --disable-alsa --enable-oss --disable-pulse --disable-jack --disable-introspection
gmake
gmake install


Using with Systemd or PulseAudio

Most annoying is when don't get desired performance. To maximise throughput you might be interestend in running GSequencer using systemd-run and disable accounting:

systemd-run -p CPUAccounting=false -p MemoryAccounting=false -p TasksAccounting=false -p IOAccounting=false -p BlockIOAccounting=false --scope gsequencer

PulseAudio may have it's disadvantages, too. It's alsa emulation should work thought but to disable pulseaudio temporally invoke.

pasuspender -- gsequencer

Or stop PulseAudio completely.

systemctl --user stop pulseaudio	    
systemctl --user stop pulseaudio.socket
killall pulseaudio

ALSA issues

You probably want to modify preallocated buffer size of your audio device. Card0 is your very first soundcard within your system and pcm0p is first playback device. This one-liner modifies the preallocated buffer size by echoeing 8192 to the virtual file prealloc.

echo 8192 > /proc/asound/card0/pcm0p/sub0/prealloc

Realtime-Kernel with full dyn-ticks and performance governor

It is recommended to use a realtime kernel in order to get most out of GSequencer. Below I show you how to compile linux-4.6.5-rt10 from source code. But first install some build dependencies:

apt-get install cpio zlib1g-dev libssl-dev libncurses-dev

Now we are ready to download kernel source, patch it and run `make menuconfig` once.

cd /usr/src
wget -c http://www.nongnu.org/gsequencer/config-4.6.5-rt10      
wget -c https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.6.5.tar.gz
wget -c https://www.kernel.org/pub/linux/kernel/projects/rt/4.6/patch-4.6.5-rt10.patch.gz
gunzip patch-4.6.5-rt10.patch.gz
tar -xzf linux-4.6.5.tar.gz
cd linux-4.6.5
cat ../patch-4.6.5-rt10.patch | patch -p1
make mrproper

Copy the modular kernel configuration in place.

cp -v ../config-4.6.5-rt10 .config
make menuconfig

Alternatively you might want to get an optimized kernel configuration (recommended) instead above. Note you have to enable real-time configuration yourself.

make localmodconfig
make menuconfig

We have patched and a working kernel configuration so far. We are able to build the kernel, yet. Then we are ready build the debian package. Alternatively you may consider this build procedure using kernel-package to do a debian package.

The mkinitramfs script can be optained from beyond linux from scratch

export MAKEFLAGS="-j 5"
make
make modules_install
cp arch/x86_64/boot/bzImage /boot/vmlinuz-4.6.5-rt10
cp .config /boot/config-4.6.5-rt10
cp System.map /boot/System.map-4.6.5-rt10
cd /boot
mkinitramfs 4.6.5-rt10

Congratulations! You're done and ready to reboot. Note might be you have to update your bootloader.

AgsConfig

Here's an example how actual config might look like. Note it changes from time to time and should be manually updated. You may use the preferences dialog to do so.

This file is usually located in $HOME/.gsequencer/ags.conf or embedded in your XML project file.

[generic]
disable-feature=experimental
autosave-thread=false
segmentation=4/4
engine-mode=deterministic
rt-safe=false

[soundcard-0]
backend=alsa
capability=playback
buffer-size=1024
pcm-channels=2
format=16
samplerate=44100
device=default

[recall]
auto-sense=true

[thread]
model=super-threaded
super-threaded-scope=audio
lock-global=ags-thread
lock-parent=ags-recycling-thread
thread-pool-max-unused-threads=16
max-precision=125

[osc-server]
auto-start=false
any-address=false
enable-ip4=false
ip4-address=127.0.0.1
enable-ip6=false
ip6-address=::1
server-port=9000
monitor-timeout=0.033333

AgsPriority

Here's an example how actual priority config might look like. Note it changes from time to time and should be manually updated. This file applies to version 2.4.2 and later.

See `man -s2 sched_setscheduler` for further information. This file is usually located in $HOME/.gsequencer/priority.conf

The value 0 disables RT priorities set by the application.

[rt-thread]
libags=45
server-main-loop=45
audio-main-loop=45
audio=45
osc-server-main-loop=45
gui-main-loop=15

Last modified: Sat Mar 02:09:54 UTC 2021 by joelkraehemann