summaryrefslogtreecommitdiffstats
path: root/arts/examples
diff options
context:
space:
mode:
Diffstat (limited to 'arts/examples')
-rw-r--r--arts/examples/Makefile.am73
-rw-r--r--arts/examples/README256
-rw-r--r--arts/examples/TODO2
-rwxr-xr-xarts/examples/checknames.sh9
-rw-r--r--arts/examples/effect_delay.arts310
-rw-r--r--arts/examples/effect_delay_alone.arts310
-rw-r--r--arts/examples/effect_flanger_alone.arts285
-rw-r--r--arts/examples/example_adsr.arts137
-rw-r--r--arts/examples/example_atan_saturate.arts81
-rw-r--r--arts/examples/example_autopanner.arts117
-rw-r--r--arts/examples/example_brickwall.arts98
-rw-r--r--arts/examples/example_bus.arts44
-rw-r--r--arts/examples/example_capture_wav.arts50
-rw-r--r--arts/examples/example_cdelay.arts64
-rw-r--r--arts/examples/example_cflanger.arts127
-rw-r--r--arts/examples/example_data.arts39
-rw-r--r--arts/examples/example_delay.arts65
-rw-r--r--arts/examples/example_dtmf1.arts155
-rw-r--r--arts/examples/example_equalizer.arts84
-rw-r--r--arts/examples/example_fm.arts102
-rw-r--r--arts/examples/example_freeverb.arts99
-rw-r--r--arts/examples/example_moog.arts96
-rw-r--r--arts/examples/example_multi_add.arts83
-rw-r--r--arts/examples/example_noise.arts39
-rw-r--r--arts/examples/example_pitchshift.arts69
-rw-r--r--arts/examples/example_play_wave.arts57
-rw-r--r--arts/examples/example_pscale.arts112
-rw-r--r--arts/examples/example_pulse.arts66
-rw-r--r--arts/examples/example_rc.arts63
-rw-r--r--arts/examples/example_record.arts75
-rw-r--r--arts/examples/example_sequence.arts85
-rw-r--r--arts/examples/example_shelve_cutoff.arts61
-rw-r--r--arts/examples/example_sine.arts58
-rw-r--r--arts/examples/example_softsaw.arts61
-rw-r--r--arts/examples/example_square.arts61
-rw-r--r--arts/examples/example_stereobeep.arts91
-rw-r--r--arts/examples/example_tremolo.arts118
-rw-r--r--arts/examples/example_tri.arts61
-rw-r--r--arts/examples/example_xfade.arts120
-rw-r--r--arts/examples/instrument_arts_all.arts-map14
-rw-r--r--arts/examples/instrument_chirpdrum.arts260
-rw-r--r--arts/examples/instrument_deepdrum.arts255
-rw-r--r--arts/examples/instrument_flexible_slide.arts537
-rw-r--r--arts/examples/instrument_flexible_slide_GUI.arts481
-rw-r--r--arts/examples/instrument_fm_horn.arts301
-rw-r--r--arts/examples/instrument_full_square.arts422
-rw-r--r--arts/examples/instrument_hihat.arts235
-rw-r--r--arts/examples/instrument_moog_vcf_tune.arts341
-rw-r--r--arts/examples/instrument_moog_vcf_tune_GUI.arts331
-rw-r--r--arts/examples/instrument_neworgan.arts532
-rw-r--r--arts/examples/instrument_nokind.arts503
-rw-r--r--arts/examples/instrument_organ2.arts532
-rw-r--r--arts/examples/instrument_simple_sin.arts190
-rw-r--r--arts/examples/instrument_simple_square.arts190
-rw-r--r--arts/examples/instrument_simple_tri.arts304
-rw-r--r--arts/examples/instrument_slide.arts464
-rw-r--r--arts/examples/instrument_slide1.arts467
-rw-r--r--arts/examples/instrument_square.arts465
-rw-r--r--arts/examples/instrument_tri.arts348
-rw-r--r--arts/examples/mixer_element_eq.arts567
-rw-r--r--arts/examples/mixer_element_eqfx.arts740
-rw-r--r--arts/examples/mixer_element_simple.arts235
-rw-r--r--arts/examples/template_Empty_Structure.arts1
-rw-r--r--arts/examples/template_Instrument.arts103
-rw-r--r--arts/examples/template_Instrument_GUI.arts91
-rw-r--r--arts/examples/template_Mixer_Element.arts176
66 files changed, 12968 insertions, 0 deletions
diff --git a/arts/examples/Makefile.am b/arts/examples/Makefile.am
new file mode 100644
index 00000000..b39302ed
--- /dev/null
+++ b/arts/examples/Makefile.am
@@ -0,0 +1,73 @@
+arts_examples_DATA = \
+README \
+example_adsr.arts \
+example_atan_saturate.arts \
+example_autopanner.arts \
+example_brickwall.arts \
+example_bus.arts \
+example_capture_wav.arts \
+example_cdelay.arts \
+example_cflanger.arts \
+example_data.arts \
+example_delay.arts \
+example_dtmf1.arts \
+example_equalizer.arts \
+example_fm.arts \
+example_freeverb.arts \
+example_moog.arts \
+example_multi_add.arts \
+example_noise.arts \
+example_pitchshift.arts \
+example_play_wave.arts \
+example_pscale.arts \
+example_pulse.arts \
+example_rc.arts \
+example_record.arts \
+example_sequence.arts \
+example_shelve_cutoff.arts \
+example_sine.arts \
+example_softsaw.arts \
+example_square.arts \
+example_stereobeep.arts \
+example_tremolo.arts \
+example_tri.arts \
+example_xfade.arts \
+instrument_full_square.arts \
+instrument_hihat.arts \
+instrument_neworgan.arts \
+instrument_nokind.arts \
+instrument_organ2.arts \
+instrument_simple_sin.arts \
+instrument_simple_square.arts \
+instrument_simple_tri.arts \
+instrument_slide.arts \
+instrument_slide1.arts \
+instrument_square.arts \
+instrument_tri.arts \
+template_Empty_Structure.arts \
+template_Instrument.arts \
+instrument_arts_all.arts-map \
+instrument_chirpdrum.arts \
+instrument_deepdrum.arts
+
+arts_examplesdir = $(arts_datadir)/artsbuilder/examples
+
+todo_DATA = \
+instrument_flexible_slide.arts \
+instrument_flexible_slide_GUI.arts \
+instrument_moog_vcf_tune.arts \
+instrument_moog_vcf_tune_GUI.arts \
+instrument_fm_horn.arts \
+effect_delay.arts \
+effect_delay_alone.arts \
+effect_flanger_alone.arts \
+mixer_element_simple.arts \
+mixer_element_eq.arts \
+mixer_element_eqfx.arts \
+template_Instrument_GUI.arts \
+template_Mixer_Element.arts
+
+tododir = $(arts_datadir)/artsbuilder/examples/todo
+
+
+EXTRA_DIST = $(arts_examples_DATA)
diff --git a/arts/examples/README b/arts/examples/README
new file mode 100644
index 00000000..2132bfc3
--- /dev/null
+++ b/arts/examples/README
@@ -0,0 +1,256 @@
+Example Arts Modules
+--------------------
+
+This directory contains example arts modules. The examples fall into
+several categories:
+
+1. Effects which can be used as reusable building blocks (named
+ effect_*.arts)
+
+2. Standalone examples illustrating how to use each of the built-in
+ arts modules (named example_*.arts). These typically send some
+ output to a sound card.
+
+3. Instruments built from lower level arts modules (named
+ instrument_*.arts). These following a standard convention for
+ input and output ports so they can be used by a (future) instrument
+ manager.
+
+4. Mixer elements used for creating mixers, including graphical
+ controls (named mixer_element_*.arts).
+
+5. Templates for creating new modules (names template_*.arts).
+
+6. Miscellaneous modules that don't fit into any of the above
+ categories.
+
+Detailed Description Of Each Module
+-----------------------------------
+
+Examples
+--------
+
+example_stereo_beep.arts
+
+Generates a 440Hz sine wave tone in the left channel and an 880Hz sine
+wave tone in the right channel, and sends it to the sound card
+output. This is referenced in the aRts documentation.
+
+example_sine.arts
+
+Generates a 440 Hz sine wave.
+
+example_pulse.arts
+
+Generates a 440 Hz pulse wave with a 20% duty cycle.
+
+example_softsaw.arts
+
+Generates a 440 Hz sawtooth wave.
+
+example_square.arts
+
+Generates a 440 Hz square wave.
+
+example_tri.arts
+
+Generates a 440 Hz triangle wave.
+
+example_noise.arts
+
+Generates white noise.
+
+example_dtmf1.arts
+
+Generates a dual tone by producing 697 and 1209 Hz sine waves, scaling
+them by 0.5, and adding them together. This is the DTMF tone for the
+digit "1" on a telephone keypad.
+
+example_atan_saturate.arts
+
+Runs a triangle wave through the atan saturate filter.
+
+example_autopanner.arts
+
+Uses an autopanner to pan a 400 Hz sine wave between the left and
+right speakers at a 2 Hz rate.
+
+example_brickwall.arts
+
+Scales a sine wave by a factor of 5 and then runs it through a
+brickwall limiter.
+
+example_bus.arts
+
+Downlinks from a bus called "Bus" and uplinks to the bus
+"out_soundcard" with the left and right channels reversed.
+
+example_cdelay.arts
+
+Downlinks from a bus called "Delay", uplinks the right channel through
+a 0.5 second cdelay, and the left channel unchanged. You can use
+artscontrol to connect the effect to a sound player and observe the
+results.
+
+example_delay.arts
+
+This is the same as example_cdelay but used the delay effect.
+
+example_capture_wav.arts
+
+This uses the Synth_CAPTURE_WAV to save a 400 Hz sine wave as a wav
+file. Run the module for a few seconds, and then examine the file
+created in /tmp. You can play the file with a player such as kaiman.
+
+example_data.arts
+
+This uses the Data module to generate a constant stream of the value
+"3" and sends it to a Debug module to periodically display it. It
+also contains a Nil module, illustrating how it can be used to
+do nothing at all.
+
+example_adsr.arts
+
+Shows how to create a simple instrument sound using the Envelope Adsr
+module, repetitively triggered by a square wave.
+
+example_fm.arts
+
+This uses the FM Source module to generate a 440 Hz sine
+wave which is frequency modulated at a 5 Hz rate.
+
+example_freeverb.arts
+
+This connects the Freeverb effect from a bus downlink to a bus
+outlink. You can use artscontrol to connect the effect to a sound
+player and observe the results.
+
+example_flanger.arts
+
+This implements a simple flanger effect (it doesn't appear
+to work yet, though).
+
+example_moog.arts
+
+This structure combines the two channels from a bus into
+one, passes it though the Moog VCF filter, and sends
+it out the out_soundcard bus.
+
+example_pitch_shift.arts
+
+This structure passes the left channel of sound card data through the
+Pitch Shift effect. Adjust the speed parameter to vary the effect.
+
+example_rc.arts
+
+This structure passes a white noise generator though an RC filter and
+out to the sound card. By viewing the FFT Scope display in artscontrol
+you can see how this varies from an unfiltered noise waveform.
+
+example_sequence.arts
+
+This demonstrates the Sequence module by playing a sequence of notes.
+
+example_shelve_cutoff.arts
+
+This structure passes a white noise generator though a Shelve Cutoff
+filter and out to the sound card. By viewing the FFT Scope display in
+artscontrol you can see how this varies from an unfiltered noise
+waveform.
+
+example_equalizer.arts
+
+This demonstrates the Std_Equalizer module. It boosts the low and high
+frequencies by 6 dB.
+
+example_tremolo.arts
+
+This demonstrates the Tremolo effect. It modulates the left and right
+channels using a 10 Hz tremolo.
+
+example_xfade.arts
+
+This example mixes 440 and 880 Hz sine waves using a cross fader.
+Adjust the value of the cross fader's percentage input from -1 to 1 to
+control the mixing of the two signals.
+
+example_pscale.arts
+
+This illustrates the Pscale module (I'm not sure if this is a
+meaningful example).
+
+example_play_wav.arts
+
+This illustrates the Play Wave module. You will need to
+enter the full path to a .wav file as the filename
+parameter.
+
+example_multi_add.arts
+
+This shows the Multi Add module which accepts any number of inputs. It
+sums three Data modules which produce inputs of 1, 2, and 3, and
+displays the result 6.
+
+Instruments
+-----------
+
+instrument_flexible_slide.arts
+
+instrument_flexible_slide_GUI.arts
+
+instrument_fm_horn.arts
+
+instrument_full_square.arts
+
+instrument_moog_vcf_tune.arts
+
+instrument_moog_vcf_tune_GUI.arts
+
+instrument_neworgan.arts
+
+instrument_nokind.arts
+
+instrument_organ2.arts
+
+instrument_simple_sin.arts
+
+instrument_simple_square.arts
+
+instrument_simple_tri.arts
+
+instrument_slide.arts
+
+instrument_slide1.arts
+
+instrument_square.arts
+
+instrument_tri.arts
+
+Effects
+-------
+
+effect_delay.arts
+
+effect_delay_alone.arts
+
+effect_flanger_alone.arts
+
+Templates
+---------
+
+template_Empty_Structure.arts
+
+template_Instrument.arts
+
+template_Instrument_GUI.arts
+
+template_Mixer_Element.arts
+
+Mixer Elements
+--------------
+
+mixer_element_simple.arts
+
+mixer_element_eq.arts
+
+mixer_element_eqfx.arts
diff --git a/arts/examples/TODO b/arts/examples/TODO
new file mode 100644
index 00000000..cc886aff
--- /dev/null
+++ b/arts/examples/TODO
@@ -0,0 +1,2 @@
+- port the remaining aRts 0.3 examples
+- test the instruments (need more MIDI infrastructure to be implemented)
diff --git a/arts/examples/checknames.sh b/arts/examples/checknames.sh
new file mode 100755
index 00000000..8806a9fd
--- /dev/null
+++ b/arts/examples/checknames.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+echo "This script searches for improperly named .arts structures:" >&2
+
+for i in *.arts
+do
+ grep ^name=$(echo $i|sed s/.arts//g) $i >/dev/null || echo $i
+done
+
+echo "... done" >&2
diff --git a/arts/examples/effect_delay.arts b/arts/examples/effect_delay.arts
new file mode 100644
index 00000000..0dfff7fb
--- /dev/null
+++ b/arts/examples/effect_delay.arts
@@ -0,0 +1,310 @@
+name=effect_delay
+module=Synth_RC
+{
+ id=60
+ x=0
+ y=8
+ port=invalue
+ {
+ id=61
+ connect_to=100
+ }
+ port=b
+ {
+ id=62
+ connect_to=83
+ }
+ port=f
+ {
+ id=63
+ connect_to=83
+ }
+ port=outvalue
+ {
+ id=64
+ connect_to=71
+ }
+}
+module=Synth_RC
+{
+ id=65
+ x=4
+ y=8
+ port=invalue
+ {
+ id=66
+ connect_to=116
+ }
+ port=b
+ {
+ id=67
+ connect_to=84
+ }
+ port=f
+ {
+ id=68
+ connect_to=84
+ }
+ port=outvalue
+ {
+ id=69
+ connect_to=75
+ }
+}
+module=Synth_CDELAY
+{
+ id=70
+ x=1
+ y=9
+ port=invalue
+ {
+ id=71
+ connect_to=64
+ }
+ port=time
+ {
+ id=72
+ data=0.2
+ }
+ port=outvalue
+ {
+ id=73
+ connect_to=90
+ }
+}
+module=Synth_CDELAY
+{
+ id=74
+ x=5
+ y=9
+ port=invalue
+ {
+ id=75
+ connect_to=69
+ }
+ port=time
+ {
+ id=76
+ data=0.3
+ }
+ port=outvalue
+ {
+ id=77
+ connect_to=106
+ }
+}
+module=Synth_MUL
+{
+ id=89
+ x=2
+ y=11
+ port=invalue1
+ {
+ id=90
+ connect_to=73
+ }
+ port=invalue2
+ {
+ id=91
+ connect_to=82
+ }
+ port=outvalue
+ {
+ id=92
+ connect_to=115
+ }
+}
+module=Synth_ADD
+{
+ id=97
+ x=0
+ y=3
+ port=invalue
+ {
+ id=98
+ connect_to=78
+ }
+ port=addit
+ {
+ id=99
+ connect_to=108
+ }
+ port=outvalue
+ {
+ id=100
+ connect_to=80
+ connect_to=61
+ }
+}
+module=Synth_MUL
+{
+ id=105
+ x=6
+ y=11
+ port=invalue1
+ {
+ id=106
+ connect_to=77
+ }
+ port=invalue2
+ {
+ id=107
+ connect_to=82
+ }
+ port=outvalue
+ {
+ id=108
+ connect_to=99
+ }
+}
+module=Synth_ADD
+{
+ id=113
+ x=4
+ y=3
+ port=invalue
+ {
+ id=114
+ connect_to=79
+ }
+ port=addit
+ {
+ id=115
+ connect_to=92
+ }
+ port=outvalue
+ {
+ id=116
+ connect_to=66
+ connect_to=81
+ }
+}
+structureport
+{
+ name=inleft
+ x=1
+ y=1
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=78
+ connect_to=98
+ }
+}
+structureport
+{
+ name=inright
+ x=5
+ y=1
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=79
+ connect_to=114
+ }
+}
+structureport
+{
+ name=outleft
+ x=2
+ y=5
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=80
+ connect_to=100
+ }
+}
+structureport
+{
+ name=outright
+ x=6
+ y=5
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=81
+ connect_to=116
+ }
+}
+structureport
+{
+ name=level
+ x=4
+ y=9
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=82
+ connect_to=91
+ connect_to=107
+ }
+}
+structureport
+{
+ name=filter1
+ x=2
+ y=6
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=83
+ connect_to=63
+ connect_to=62
+ }
+}
+structureport
+{
+ name=filter2
+ x=6
+ y=6
+ position=4
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=84
+ connect_to=68
+ connect_to=67
+ }
+}
diff --git a/arts/examples/effect_delay_alone.arts b/arts/examples/effect_delay_alone.arts
new file mode 100644
index 00000000..fbc29b7e
--- /dev/null
+++ b/arts/examples/effect_delay_alone.arts
@@ -0,0 +1,310 @@
+name=effect_delay_alone
+module=Synth_RC
+{
+ id=59
+ x=0
+ y=8
+ port=invalue
+ {
+ id=60
+ connect_to=84
+ }
+ port=b
+ {
+ id=61
+ connect_to=98
+ }
+ port=f
+ {
+ id=62
+ connect_to=98
+ }
+ port=outvalue
+ {
+ id=63
+ connect_to=70
+ }
+}
+module=Synth_RC
+{
+ id=64
+ x=4
+ y=8
+ port=invalue
+ {
+ id=65
+ connect_to=92
+ }
+ port=b
+ {
+ id=66
+ connect_to=99
+ }
+ port=f
+ {
+ id=67
+ connect_to=99
+ }
+ port=outvalue
+ {
+ id=68
+ connect_to=74
+ }
+}
+module=Synth_CDELAY
+{
+ id=69
+ x=1
+ y=9
+ port=invalue
+ {
+ id=70
+ connect_to=63
+ }
+ port=time
+ {
+ id=71
+ data=0.2
+ }
+ port=outvalue
+ {
+ id=72
+ connect_to=78
+ connect_to=95
+ }
+}
+module=Synth_CDELAY
+{
+ id=73
+ x=5
+ y=9
+ port=invalue
+ {
+ id=74
+ connect_to=68
+ }
+ port=time
+ {
+ id=75
+ data=0.3
+ }
+ port=outvalue
+ {
+ id=76
+ connect_to=86
+ connect_to=96
+ }
+}
+module=Synth_MUL
+{
+ id=77
+ x=2
+ y=11
+ port=invalue1
+ {
+ id=78
+ connect_to=72
+ }
+ port=invalue2
+ {
+ id=79
+ connect_to=97
+ }
+ port=outvalue
+ {
+ id=80
+ connect_to=91
+ }
+}
+module=Synth_ADD
+{
+ id=81
+ x=0
+ y=3
+ port=invalue
+ {
+ id=82
+ connect_to=93
+ }
+ port=addit
+ {
+ id=83
+ connect_to=88
+ }
+ port=outvalue
+ {
+ id=84
+ connect_to=60
+ }
+}
+module=Synth_MUL
+{
+ id=85
+ x=6
+ y=11
+ port=invalue1
+ {
+ id=86
+ connect_to=76
+ }
+ port=invalue2
+ {
+ id=87
+ connect_to=97
+ }
+ port=outvalue
+ {
+ id=88
+ connect_to=83
+ }
+}
+module=Synth_ADD
+{
+ id=89
+ x=4
+ y=3
+ port=invalue
+ {
+ id=90
+ connect_to=94
+ }
+ port=addit
+ {
+ id=91
+ connect_to=80
+ }
+ port=outvalue
+ {
+ id=92
+ connect_to=65
+ }
+}
+structureport
+{
+ name=inleft
+ x=1
+ y=1
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=93
+ connect_to=82
+ }
+}
+structureport
+{
+ name=inright
+ x=5
+ y=1
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=94
+ connect_to=90
+ }
+}
+structureport
+{
+ name=outleft
+ x=1
+ y=11
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=95
+ connect_to=72
+ }
+}
+structureport
+{
+ name=outright
+ x=9
+ y=11
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=96
+ connect_to=76
+ }
+}
+structureport
+{
+ name=level
+ x=4
+ y=9
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=97
+ connect_to=79
+ connect_to=87
+ }
+}
+structureport
+{
+ name=filter1
+ x=2
+ y=6
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=98
+ connect_to=61
+ connect_to=62
+ }
+}
+structureport
+{
+ name=filter2
+ x=6
+ y=6
+ position=4
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=99
+ connect_to=66
+ connect_to=67
+ }
+}
diff --git a/arts/examples/effect_flanger_alone.arts b/arts/examples/effect_flanger_alone.arts
new file mode 100644
index 00000000..c3dc1a63
--- /dev/null
+++ b/arts/examples/effect_flanger_alone.arts
@@ -0,0 +1,285 @@
+name=effect_flanger_alone
+module=Synth_FX_CFLANGER
+{
+ id=0
+ x=0
+ y=7
+ port=invalue
+ {
+ id=1
+ connect_to=18
+ }
+ port=lfo
+ {
+ id=2
+ connect_to=17
+ }
+ port=mintime
+ {
+ id=3
+ connect_to=23
+ }
+ port=maxtime
+ {
+ id=4
+ connect_to=24
+ }
+ port=outvalue
+ {
+ id=5
+ connect_to=30
+ }
+}
+module=Synth_FX_CFLANGER
+{
+ id=6
+ x=6
+ y=7
+ port=invalue
+ {
+ id=7
+ connect_to=19
+ }
+ port=lfo
+ {
+ id=8
+ connect_to=17
+ }
+ port=mintime
+ {
+ id=9
+ connect_to=23
+ }
+ port=maxtime
+ {
+ id=10
+ connect_to=24
+ }
+ port=outvalue
+ {
+ id=11
+ connect_to=39
+ }
+}
+module=Synth_FREQUENCY
+{
+ id=12
+ x=5
+ y=3
+ port=frequency
+ {
+ id=13
+ connect_to=22
+ }
+ port=pos
+ {
+ id=14
+ connect_to=16
+ }
+}
+module=Synth_WAVE_SIN
+{
+ id=15
+ x=6
+ y=4
+ port=pos
+ {
+ id=16
+ connect_to=14
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=2
+ connect_to=8
+ }
+}
+module=Synth_MUL
+{
+ id=29
+ x=2
+ y=9
+ port=invalue1
+ {
+ id=30
+ connect_to=5
+ }
+ port=invalue2
+ {
+ id=31
+ connect_to=41
+ }
+ port=outvalue
+ {
+ id=32
+ connect_to=20
+ }
+}
+module=Synth_MUL
+{
+ id=37
+ x=5
+ y=9
+ port=invalue1
+ {
+ id=38
+ connect_to=41
+ }
+ port=invalue2
+ {
+ id=39
+ connect_to=11
+ }
+ port=outvalue
+ {
+ id=40
+ connect_to=21
+ }
+}
+structureport
+{
+ name=inleft
+ x=1
+ y=6
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=18
+ connect_to=1
+ }
+}
+structureport
+{
+ name=inright
+ x=7
+ y=6
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=19
+ connect_to=7
+ }
+}
+structureport
+{
+ name=outleft
+ x=4
+ y=10
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=20
+ connect_to=32
+ }
+}
+structureport
+{
+ name=outright
+ x=7
+ y=10
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=21
+ connect_to=40
+ }
+}
+structureport
+{
+ name=frequency
+ x=6
+ y=2
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=22
+ connect_to=13
+ }
+}
+structureport
+{
+ name=mintime
+ x=6
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=23
+ connect_to=3
+ connect_to=9
+ }
+}
+structureport
+{
+ name=maxtime
+ x=7
+ y=0
+ position=4
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=24
+ connect_to=4
+ connect_to=10
+ }
+}
+structureport
+{
+ name=level
+ x=6
+ y=8
+ position=5
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=41
+ connect_to=38
+ connect_to=31
+ }
+}
diff --git a/arts/examples/example_adsr.arts b/arts/examples/example_adsr.arts
new file mode 100644
index 00000000..b6a2cdff
--- /dev/null
+++ b/arts/examples/example_adsr.arts
@@ -0,0 +1,137 @@
+name=example_adsr
+module=Arts::Synth_AMAN_PLAY
+{
+ id=0
+ x=1
+ y=7
+ port=title
+ {
+ id=1
+ string_data=Adsr
+ }
+ port=autoRestoreID
+ {
+ id=2
+ string_data=Demo2
+ }
+ port=left
+ {
+ id=3
+ connect_to=21
+ }
+ port=right
+ {
+ id=4
+ connect_to=21
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=5
+ x=5
+ y=3
+ port=pos
+ {
+ id=6
+ connect_to=10
+ }
+ port=outvalue
+ {
+ id=7
+ connect_to=16
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=8
+ x=5
+ y=1
+ port=frequency
+ {
+ id=9
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=10
+ connect_to=6
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=11
+ x=1
+ y=1
+ port=frequency
+ {
+ id=12
+ audio_data=1.00000
+ }
+ port=pos
+ {
+ id=13
+ connect_to=24
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=14
+ x=2
+ y=5
+ port=active
+ {
+ id=15
+ connect_to=25
+ }
+ port=invalue
+ {
+ id=16
+ connect_to=7
+ }
+ port=attack
+ {
+ id=17
+ audio_data=0.10000
+ }
+ port=decay
+ {
+ id=18
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=19
+ audio_data=0.50000
+ }
+ port=release
+ {
+ id=20
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=21
+ connect_to=3
+ connect_to=4
+ }
+ port=done
+ {
+ id=22
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=23
+ x=1
+ y=3
+ port=pos
+ {
+ id=24
+ connect_to=13
+ }
+ port=outvalue
+ {
+ id=25
+ connect_to=15
+ }
+}
diff --git a/arts/examples/example_atan_saturate.arts b/arts/examples/example_atan_saturate.arts
new file mode 100644
index 00000000..c693b38b
--- /dev/null
+++ b/arts/examples/example_atan_saturate.arts
@@ -0,0 +1,81 @@
+name=example_atan_saturate
+module=Arts::Synth_FREQUENCY
+{
+ id=76
+ x=1
+ y=1
+ port=frequency
+ {
+ id=77
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=78
+ connect_to=89
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=79
+ x=1
+ y=7
+ port=title
+ {
+ id=80
+ string_data=Atan Saturate
+ }
+ port=autoRestoreID
+ {
+ id=81
+ string_data=Atan Saturate
+ }
+ port=left
+ {
+ id=82
+ connect_to=87
+ }
+ port=right
+ {
+ id=83
+ connect_to=87
+ }
+}
+module=Arts::Synth_ATAN_SATURATE
+{
+ id=84
+ x=2
+ y=5
+ port=inscale
+ {
+ id=85
+ audio_data=1.00000
+ }
+ port=invalue
+ {
+ id=86
+ connect_to=90
+ }
+ port=outvalue
+ {
+ id=87
+ connect_to=82
+ connect_to=83
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=88
+ x=2
+ y=3
+ port=pos
+ {
+ id=89
+ connect_to=78
+ }
+ port=outvalue
+ {
+ id=90
+ connect_to=86
+ }
+}
diff --git a/arts/examples/example_autopanner.arts b/arts/examples/example_autopanner.arts
new file mode 100644
index 00000000..0a11a2e7
--- /dev/null
+++ b/arts/examples/example_autopanner.arts
@@ -0,0 +1,117 @@
+name=example_autopanner
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=4
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=3
+ x=1
+ y=3
+ port=pos
+ {
+ id=4
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=5
+ connect_to=12
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=6
+ x=1
+ y=7
+ port=title
+ {
+ id=7
+ string_data=Autopanner
+ }
+ port=autoRestoreID
+ {
+ id=8
+ string_data=Autopanner
+ }
+ port=left
+ {
+ id=9
+ connect_to=14
+ }
+ port=right
+ {
+ id=10
+ connect_to=15
+ }
+}
+module=Arts::Synth_AUTOPANNER
+{
+ id=11
+ x=2
+ y=5
+ port=invalue
+ {
+ id=12
+ connect_to=5
+ }
+ port=inlfo
+ {
+ id=13
+ connect_to=18
+ }
+ port=outvalue1
+ {
+ id=14
+ connect_to=9
+ }
+ port=outvalue2
+ {
+ id=15
+ connect_to=10
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=16
+ x=5
+ y=3
+ port=pos
+ {
+ id=17
+ connect_to=21
+ }
+ port=outvalue
+ {
+ id=18
+ connect_to=13
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=19
+ x=5
+ y=1
+ port=frequency
+ {
+ id=20
+ audio_data=2.00000
+ }
+ port=pos
+ {
+ id=21
+ connect_to=17
+ }
+}
diff --git a/arts/examples/example_brickwall.arts b/arts/examples/example_brickwall.arts
new file mode 100644
index 00000000..546620e1
--- /dev/null
+++ b/arts/examples/example_brickwall.arts
@@ -0,0 +1,98 @@
+name=example_brickwall
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=13
+ connect_to=25
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=3
+ x=1
+ y=9
+ port=title
+ {
+ id=4
+ string_data=Brickwall
+ }
+ port=autoRestoreID
+ {
+ id=5
+ string_data=Brickwall
+ }
+ port=left
+ {
+ id=6
+ connect_to=20
+ }
+ port=right
+ {
+ id=7
+ connect_to=20
+ }
+}
+module=Arts::Synth_BRICKWALL_LIMITER
+{
+ id=18
+ x=2
+ y=7
+ port=invalue
+ {
+ id=19
+ connect_to=34
+ }
+ port=outvalue
+ {
+ id=20
+ connect_to=6
+ connect_to=7
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=24
+ x=1
+ y=3
+ port=pos
+ {
+ id=25
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=26
+ connect_to=33
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=31
+ x=1
+ y=5
+ port=invalue1
+ {
+ id=32
+ audio_data=5.00000
+ }
+ port=invalue2
+ {
+ id=33
+ connect_to=26
+ }
+ port=outvalue
+ {
+ id=34
+ connect_to=19
+ }
+}
diff --git a/arts/examples/example_bus.arts b/arts/examples/example_bus.arts
new file mode 100644
index 00000000..2a43e84a
--- /dev/null
+++ b/arts/examples/example_bus.arts
@@ -0,0 +1,44 @@
+name=example_bus
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=0
+ x=1
+ y=1
+ port=busname
+ {
+ id=1
+ string_data=Bus
+ }
+ port=left
+ {
+ id=2
+ connect_to=7
+ }
+ port=right
+ {
+ id=3
+ connect_to=10
+ connect_to=6
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=4
+ x=1
+ y=4
+ port=busname
+ {
+ id=5
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=6
+ connect_to=3
+ }
+ port=right
+ {
+ id=7
+ connect_to=2
+ }
+}
diff --git a/arts/examples/example_capture_wav.arts b/arts/examples/example_capture_wav.arts
new file mode 100644
index 00000000..0638e64a
--- /dev/null
+++ b/arts/examples/example_capture_wav.arts
@@ -0,0 +1,50 @@
+name=example_capture_wav
+module=Arts::Synth_CAPTURE_WAV
+{
+ id=3
+ x=1
+ y=5
+ port=left
+ {
+ id=4
+ connect_to=11
+ }
+ port=right
+ {
+ id=5
+ connect_to=11
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=9
+ x=1
+ y=3
+ port=pos
+ {
+ id=10
+ connect_to=17
+ }
+ port=outvalue
+ {
+ id=11
+ connect_to=4
+ connect_to=5
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=15
+ x=1
+ y=1
+ port=frequency
+ {
+ id=16
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=17
+ connect_to=10
+ }
+}
diff --git a/arts/examples/example_cdelay.arts b/arts/examples/example_cdelay.arts
new file mode 100644
index 00000000..211834b6
--- /dev/null
+++ b/arts/examples/example_cdelay.arts
@@ -0,0 +1,64 @@
+name=example_cdelay
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=0
+ x=1
+ y=1
+ port=busname
+ {
+ id=1
+ string_data=Delay
+ }
+ port=left
+ {
+ id=2
+ connect_to=6
+ }
+ port=right
+ {
+ id=3
+ connect_to=10
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=4
+ x=1
+ y=5
+ port=busname
+ {
+ id=5
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=6
+ connect_to=2
+ }
+ port=right
+ {
+ id=7
+ connect_to=11
+ }
+}
+module=Arts::Synth_CDELAY
+{
+ id=8
+ x=4
+ y=3
+ port=time
+ {
+ id=9
+ audio_data=0.50000
+ }
+ port=invalue
+ {
+ id=10
+ connect_to=3
+ }
+ port=outvalue
+ {
+ id=11
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_cflanger.arts b/arts/examples/example_cflanger.arts
new file mode 100644
index 00000000..7f8c2258
--- /dev/null
+++ b/arts/examples/example_cflanger.arts
@@ -0,0 +1,127 @@
+name=example_cflanger
+module=Arts::Synth_FX_CFLANGER
+{
+ id=11
+ x=1
+ y=5
+ port=mintime
+ {
+ id=12
+ audio_data=0.00100
+ }
+ port=maxtime
+ {
+ id=13
+ audio_data=0.00500
+ }
+ port=invalue
+ {
+ id=14
+ connect_to=29
+ }
+ port=lfo
+ {
+ id=15
+ connect_to=19
+ }
+ port=outvalue
+ {
+ id=16
+ connect_to=36
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=17
+ x=8
+ y=3
+ port=pos
+ {
+ id=18
+ connect_to=22
+ }
+ port=outvalue
+ {
+ id=19
+ connect_to=15
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=20
+ x=8
+ y=1
+ port=frequency
+ {
+ id=21
+ audio_data=1.00000
+ }
+ port=pos
+ {
+ id=22
+ connect_to=18
+ }
+}
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=27
+ x=1
+ y=1
+ port=busname
+ {
+ id=28
+ string_data=Flanger
+ }
+ port=left
+ {
+ id=29
+ connect_to=14
+ connect_to=37
+ }
+ port=right
+ {
+ id=30
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=35
+ x=5
+ y=7
+ port=invalue1
+ {
+ id=36
+ connect_to=16
+ }
+ port=invalue2
+ {
+ id=37
+ connect_to=29
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=9
+ connect_to=45
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=43
+ x=1
+ y=9
+ port=busname
+ {
+ id=44
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=45
+ connect_to=38
+ }
+ port=right
+ {
+ id=46
+ }
+}
diff --git a/arts/examples/example_data.arts b/arts/examples/example_data.arts
new file mode 100644
index 00000000..135c7778
--- /dev/null
+++ b/arts/examples/example_data.arts
@@ -0,0 +1,39 @@
+name=example_data
+module=Arts::Synth_DATA
+{
+ id=3
+ x=1
+ y=1
+ port=value
+ {
+ id=4
+ audio_data=3.00000
+ }
+ port=outvalue
+ {
+ id=5
+ connect_to=11
+ }
+}
+module=Arts::Synth_DEBUG
+{
+ id=9
+ x=1
+ y=3
+ port=comment
+ {
+ id=10
+ string_data=Data:
+ }
+ port=invalue
+ {
+ id=11
+ connect_to=5
+ }
+}
+module=Arts::Synth_NIL
+{
+ id=13
+ x=5
+ y=1
+}
diff --git a/arts/examples/example_delay.arts b/arts/examples/example_delay.arts
new file mode 100644
index 00000000..c7339a5c
--- /dev/null
+++ b/arts/examples/example_delay.arts
@@ -0,0 +1,65 @@
+name=example_delay
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=0
+ x=1
+ y=1
+ port=busname
+ {
+ id=1
+ string_data=Delay
+ }
+ port=left
+ {
+ id=2
+ connect_to=6
+ }
+ port=right
+ {
+ id=3
+ connect_to=10
+ connect_to=17
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=4
+ x=1
+ y=5
+ port=busname
+ {
+ id=5
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=6
+ connect_to=2
+ }
+ port=right
+ {
+ id=7
+ connect_to=19
+ }
+}
+module=Arts::Synth_DELAY
+{
+ id=16
+ x=4
+ y=3
+ port=invalue
+ {
+ id=17
+ connect_to=3
+ }
+ port=time
+ {
+ id=18
+ audio_data=0.50000
+ }
+ port=outvalue
+ {
+ id=19
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_dtmf1.arts b/arts/examples/example_dtmf1.arts
new file mode 100644
index 00000000..8adcb628
--- /dev/null
+++ b/arts/examples/example_dtmf1.arts
@@ -0,0 +1,155 @@
+name=example_dtmf1
+module=Arts::Synth_AMAN_PLAY
+{
+ id=0
+ x=2
+ y=8
+ port=title
+ {
+ id=1
+ string_data=Dtmf1
+ }
+ port=autoRestoreID
+ {
+ id=2
+ string_data=Dtmf1
+ }
+ port=left
+ {
+ id=3
+ connect_to=14
+ }
+ port=right
+ {
+ id=4
+ connect_to=14
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=5
+ x=1
+ y=2
+ port=pos
+ {
+ id=6
+ connect_to=10
+ }
+ port=outvalue
+ {
+ id=7
+ connect_to=23
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=8
+ x=1
+ y=0
+ port=frequency
+ {
+ id=9
+ audio_data=697.00000
+ }
+ port=pos
+ {
+ id=10
+ connect_to=6
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=11
+ x=3
+ y=6
+ port=invalue1
+ {
+ id=12
+ connect_to=24
+ }
+ port=invalue2
+ {
+ id=13
+ connect_to=28
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=3
+ connect_to=4
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=15
+ x=5
+ y=2
+ port=pos
+ {
+ id=16
+ connect_to=20
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=27
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=18
+ x=5
+ y=0
+ port=frequency
+ {
+ id=19
+ audio_data=1209.00000
+ }
+ port=pos
+ {
+ id=20
+ connect_to=16
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=21
+ x=1
+ y=4
+ port=invalue1
+ {
+ id=22
+ audio_data=0.50000
+ }
+ port=invalue2
+ {
+ id=23
+ connect_to=7
+ }
+ port=outvalue
+ {
+ id=24
+ connect_to=12
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=25
+ x=5
+ y=4
+ port=invalue1
+ {
+ id=26
+ audio_data=0.50000
+ }
+ port=invalue2
+ {
+ id=27
+ connect_to=17
+ }
+ port=outvalue
+ {
+ id=28
+ connect_to=13
+ }
+}
diff --git a/arts/examples/example_equalizer.arts b/arts/examples/example_equalizer.arts
new file mode 100644
index 00000000..fe89cea8
--- /dev/null
+++ b/arts/examples/example_equalizer.arts
@@ -0,0 +1,84 @@
+name=example_equalizer
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=0
+ x=1
+ y=1
+ port=busname
+ {
+ id=1
+ string_data=Equalizer
+ }
+ port=left
+ {
+ id=2
+ connect_to=14
+ }
+ port=right
+ {
+ id=3
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=4
+ x=1
+ y=5
+ port=busname
+ {
+ id=5
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=6
+ connect_to=15
+ }
+ port=right
+ {
+ id=7
+ connect_to=15
+ }
+}
+module=Arts::Synth_STD_EQUALIZER
+{
+ id=8
+ x=1
+ y=3
+ port=low
+ {
+ id=9
+ audio_data=6.00000
+ }
+ port=mid
+ {
+ id=10
+ audio_data=0.00000
+ }
+ port=high
+ {
+ id=11
+ audio_data=6.00000
+ }
+ port=frequency
+ {
+ id=12
+ audio_data=1000.00000
+ }
+ port=q
+ {
+ id=13
+ audio_data=1.00000
+ }
+ port=invalue
+ {
+ id=14
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=15
+ connect_to=6
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_fm.arts b/arts/examples/example_fm.arts
new file mode 100644
index 00000000..242519c0
--- /dev/null
+++ b/arts/examples/example_fm.arts
@@ -0,0 +1,102 @@
+name=example_fm
+module=Arts::Synth_AMAN_PLAY
+{
+ id=36
+ x=1
+ y=9
+ port=title
+ {
+ id=37
+ string_data=Demo1
+ }
+ port=autoRestoreID
+ {
+ id=38
+ string_data=Demo2
+ }
+ port=left
+ {
+ id=39
+ connect_to=43
+ }
+ port=right
+ {
+ id=40
+ connect_to=43
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=41
+ x=2
+ y=7
+ port=pos
+ {
+ id=42
+ connect_to=54
+ }
+ port=outvalue
+ {
+ id=43
+ connect_to=39
+ connect_to=40
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=44
+ x=1
+ y=3
+ port=pos
+ {
+ id=45
+ connect_to=49
+ }
+ port=outvalue
+ {
+ id=46
+ connect_to=52
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=47
+ x=1
+ y=1
+ port=frequency
+ {
+ id=48
+ audio_data=5.00000
+ }
+ port=pos
+ {
+ id=49
+ connect_to=45
+ }
+}
+module=Arts::Synth_FM_SOURCE
+{
+ id=50
+ x=1
+ y=5
+ port=frequency
+ {
+ id=51
+ audio_data=440.00000
+ }
+ port=modulator
+ {
+ id=52
+ connect_to=46
+ }
+ port=modlevel
+ {
+ id=53
+ audio_data=0.90000
+ }
+ port=pos
+ {
+ id=54
+ connect_to=42
+ }
+}
diff --git a/arts/examples/example_freeverb.arts b/arts/examples/example_freeverb.arts
new file mode 100644
index 00000000..b8d3a321
--- /dev/null
+++ b/arts/examples/example_freeverb.arts
@@ -0,0 +1,99 @@
+name=example_freeverb
+module=Arts::Synth_FREEVERB
+{
+ id=0
+ x=1
+ y=3
+ port=inleft
+ {
+ id=1
+ connect_to=13
+ }
+ port=inright
+ {
+ id=2
+ connect_to=14
+ }
+ port=outleft
+ {
+ id=3
+ connect_to=17
+ }
+ port=outright
+ {
+ id=4
+ connect_to=18
+ }
+ port=roomsize
+ {
+ id=5
+ audio_data=1.00000
+ }
+ port=damp
+ {
+ id=6
+ audio_data=0.20000
+ }
+ port=wet
+ {
+ id=7
+ audio_data=0.20000
+ }
+ port=dry
+ {
+ id=8
+ audio_data=0.20000
+ }
+ port=width
+ {
+ id=9
+ audio_data=1.00000
+ }
+ port=mode
+ {
+ id=10
+ audio_data=0.00000
+ }
+}
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=11
+ x=1
+ y=1
+ port=busname
+ {
+ id=12
+ string_data=Freeverb
+ }
+ port=left
+ {
+ id=13
+ connect_to=1
+ }
+ port=right
+ {
+ id=14
+ connect_to=2
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=15
+ x=1
+ y=5
+ port=busname
+ {
+ id=16
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=17
+ connect_to=3
+ }
+ port=right
+ {
+ id=18
+ connect_to=4
+ }
+}
diff --git a/arts/examples/example_moog.arts b/arts/examples/example_moog.arts
new file mode 100644
index 00000000..3a6a0586
--- /dev/null
+++ b/arts/examples/example_moog.arts
@@ -0,0 +1,96 @@
+name=example_moog
+module=Arts::Synth_MOOG_VCF
+{
+ id=17
+ x=3
+ y=4
+ port=frequency
+ {
+ id=18
+ audio_data=2000.00000
+ }
+ port=resonance
+ {
+ id=19
+ audio_data=3.00000
+ }
+ port=invalue
+ {
+ id=20
+ connect_to=47
+ }
+ port=outvalue
+ {
+ id=21
+ connect_to=36
+ connect_to=37
+ }
+}
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=26
+ x=3
+ y=0
+ port=busname
+ {
+ id=27
+ string_data=Moog VCF
+ }
+ port=left
+ {
+ id=28
+ connect_to=44
+ }
+ port=right
+ {
+ id=29
+ connect_to=45
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=34
+ x=3
+ y=6
+ port=busname
+ {
+ id=35
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=36
+ connect_to=21
+ }
+ port=right
+ {
+ id=37
+ connect_to=21
+ }
+}
+module=Arts::Synth_XFADE
+{
+ id=43
+ x=3
+ y=2
+ port=invalue1
+ {
+ id=44
+ connect_to=28
+ }
+ port=invalue2
+ {
+ id=45
+ connect_to=29
+ }
+ port=percentage
+ {
+ id=46
+ audio_data=0.00000
+ }
+ port=outvalue
+ {
+ id=47
+ connect_to=20
+ }
+}
diff --git a/arts/examples/example_multi_add.arts b/arts/examples/example_multi_add.arts
new file mode 100644
index 00000000..229033bc
--- /dev/null
+++ b/arts/examples/example_multi_add.arts
@@ -0,0 +1,83 @@
+name=example_multi_add
+module=Arts::Synth_MULTI_ADD
+{
+ id=3
+ x=2
+ y=3
+ port=invalue
+ {
+ id=4
+ connect_to=11
+ connect_to=17
+ connect_to=23
+ }
+ port=outvalue
+ {
+ id=5
+ connect_to=29
+ }
+}
+module=Arts::Synth_DATA
+{
+ id=9
+ x=1
+ y=1
+ port=value
+ {
+ id=10
+ audio_data=1.00000
+ }
+ port=outvalue
+ {
+ id=11
+ connect_to=4
+ }
+}
+module=Arts::Synth_DATA
+{
+ id=15
+ x=5
+ y=1
+ port=value
+ {
+ id=16
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=4
+ }
+}
+module=Arts::Synth_DATA
+{
+ id=21
+ x=9
+ y=1
+ port=value
+ {
+ id=22
+ audio_data=3.00000
+ }
+ port=outvalue
+ {
+ id=23
+ connect_to=4
+ }
+}
+module=Arts::Synth_DEBUG
+{
+ id=27
+ x=1
+ y=5
+ port=comment
+ {
+ id=28
+ string_data=Result
+ }
+ port=invalue
+ {
+ id=29
+ connect_to=5
+ }
+}
diff --git a/arts/examples/example_noise.arts b/arts/examples/example_noise.arts
new file mode 100644
index 00000000..60f6e2e3
--- /dev/null
+++ b/arts/examples/example_noise.arts
@@ -0,0 +1,39 @@
+name=example_noise
+module=Arts::Synth_AMAN_PLAY
+{
+ id=3
+ x=1
+ y=3
+ port=title
+ {
+ id=4
+ string_data=Noise
+ }
+ port=autoRestoreID
+ {
+ id=5
+ string_data=Noise
+ }
+ port=left
+ {
+ id=6
+ connect_to=15
+ }
+ port=right
+ {
+ id=7
+ connect_to=15
+ }
+}
+module=Arts::Synth_NOISE
+{
+ id=14
+ x=1
+ y=1
+ port=outvalue
+ {
+ id=15
+ connect_to=6
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_pitchshift.arts b/arts/examples/example_pitchshift.arts
new file mode 100644
index 00000000..5126e54b
--- /dev/null
+++ b/arts/examples/example_pitchshift.arts
@@ -0,0 +1,69 @@
+name=example_pitchshift
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=23
+ x=1
+ y=1
+ port=busname
+ {
+ id=24
+ string_data=Pitch Shift
+ }
+ port=left
+ {
+ id=25
+ connect_to=34
+ }
+ port=right
+ {
+ id=26
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=27
+ x=1
+ y=5
+ port=busname
+ {
+ id=28
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=29
+ connect_to=35
+ }
+ port=right
+ {
+ id=30
+ connect_to=35
+ }
+}
+module=Arts::Synth_PITCH_SHIFT
+{
+ id=31
+ x=1
+ y=3
+ port=speed
+ {
+ id=32
+ audio_data=0.75000
+ }
+ port=frequency
+ {
+ id=33
+ audio_data=10.00000
+ }
+ port=invalue
+ {
+ id=34
+ connect_to=25
+ }
+ port=outvalue
+ {
+ id=35
+ connect_to=29
+ connect_to=30
+ }
+}
diff --git a/arts/examples/example_play_wave.arts b/arts/examples/example_play_wave.arts
new file mode 100644
index 00000000..7a85423d
--- /dev/null
+++ b/arts/examples/example_play_wave.arts
@@ -0,0 +1,57 @@
+name=example_play_wave
+module=Arts::Synth_PLAY_WAV
+{
+ id=6
+ x=1
+ y=1
+ port=speed
+ {
+ id=7
+ audio_data=44100.00000
+ }
+ port=filename
+ {
+ id=8
+ string_data=/home/tranter/test.wav
+ }
+ port=finished
+ {
+ id=9
+ }
+ port=left
+ {
+ id=10
+ connect_to=20
+ }
+ port=right
+ {
+ id=11
+ connect_to=21
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=17
+ x=1
+ y=3
+ port=title
+ {
+ id=18
+ string_data=Wave
+ }
+ port=autoRestoreID
+ {
+ id=19
+ string_data=Wave
+ }
+ port=left
+ {
+ id=20
+ connect_to=10
+ }
+ port=right
+ {
+ id=21
+ connect_to=11
+ }
+}
diff --git a/arts/examples/example_pscale.arts b/arts/examples/example_pscale.arts
new file mode 100644
index 00000000..6f364135
--- /dev/null
+++ b/arts/examples/example_pscale.arts
@@ -0,0 +1,112 @@
+name=example_pscale
+module=Arts::Synth_SEQUENCE
+{
+ id=10
+ x=1
+ y=1
+ port=speed
+ {
+ id=11
+ audio_data=0.50000
+ }
+ port=seq
+ {
+ id=12
+ string_data=C-4;D-4;E-4;F-4;G-4;A-4;B-4;C-5;
+ }
+ port=frequency
+ {
+ id=13
+ connect_to=21
+ }
+ port=pos
+ {
+ id=14
+ connect_to=34
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=15
+ x=1
+ y=8
+ port=title
+ {
+ id=16
+ string_data=Pscale
+ }
+ port=autoRestoreID
+ {
+ id=17
+ string_data=Pscale
+ }
+ port=left
+ {
+ id=18
+ connect_to=35
+ }
+ port=right
+ {
+ id=19
+ connect_to=35
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=20
+ x=1
+ y=3
+ port=frequency
+ {
+ id=21
+ connect_to=13
+ }
+ port=pos
+ {
+ id=22
+ connect_to=24
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=23
+ x=1
+ y=5
+ port=pos
+ {
+ id=24
+ connect_to=22
+ }
+ port=outvalue
+ {
+ id=25
+ connect_to=33
+ }
+}
+module=Arts::Synth_PSCALE
+{
+ id=31
+ x=5
+ y=6
+ port=top
+ {
+ id=32
+ audio_data=0.50000
+ }
+ port=invalue
+ {
+ id=33
+ connect_to=25
+ }
+ port=pos
+ {
+ id=34
+ connect_to=14
+ }
+ port=outvalue
+ {
+ id=35
+ connect_to=18
+ connect_to=19
+ }
+}
diff --git a/arts/examples/example_pulse.arts b/arts/examples/example_pulse.arts
new file mode 100644
index 00000000..7da74675
--- /dev/null
+++ b/arts/examples/example_pulse.arts
@@ -0,0 +1,66 @@
+name=example_pulse
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=7
+ connect_to=23
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=12
+ x=1
+ y=5
+ port=title
+ {
+ id=13
+ string_data=Pulse
+ }
+ port=autoRestoreID
+ {
+ id=14
+ string_data=Pulse
+ }
+ port=left
+ {
+ id=15
+ connect_to=24
+ }
+ port=right
+ {
+ id=16
+ connect_to=24
+ }
+}
+module=Arts::Synth_WAVE_PULSE
+{
+ id=21
+ x=2
+ y=3
+ port=dutycycle
+ {
+ id=22
+ audio_data=0.20000
+ }
+ port=pos
+ {
+ id=23
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=24
+ connect_to=15
+ connect_to=16
+ }
+}
diff --git a/arts/examples/example_rc.arts b/arts/examples/example_rc.arts
new file mode 100644
index 00000000..bef5a662
--- /dev/null
+++ b/arts/examples/example_rc.arts
@@ -0,0 +1,63 @@
+name=example_rc
+module=Arts::Synth_NOISE
+{
+ id=45
+ x=4
+ y=1
+ port=outvalue
+ {
+ id=46
+ connect_to=60
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=47
+ x=2
+ y=5
+ port=title
+ {
+ id=48
+ }
+ port=autoRestoreID
+ {
+ id=49
+ }
+ port=left
+ {
+ id=50
+ connect_to=61
+ }
+ port=right
+ {
+ id=51
+ connect_to=61
+ }
+}
+module=Arts::Synth_RC
+{
+ id=57
+ x=3
+ y=3
+ port=b
+ {
+ id=58
+ audio_data=10.00000
+ }
+ port=f
+ {
+ id=59
+ audio_data=10.00000
+ }
+ port=invalue
+ {
+ id=60
+ connect_to=46
+ }
+ port=outvalue
+ {
+ id=61
+ connect_to=50
+ connect_to=51
+ }
+}
diff --git a/arts/examples/example_record.arts b/arts/examples/example_record.arts
new file mode 100644
index 00000000..62c365a9
--- /dev/null
+++ b/arts/examples/example_record.arts
@@ -0,0 +1,75 @@
+name=example_record
+module=Arts::Synth_DEBUG
+{
+ id=13
+ x=4
+ y=3
+ port=comment
+ {
+ id=14
+ string_data=Left
+ }
+ port=invalue
+ {
+ id=15
+ }
+}
+module=Arts::Synth_DEBUG
+{
+ id=19
+ x=8
+ y=3
+ port=comment
+ {
+ id=20
+ string_data=Right
+ }
+ port=invalue
+ {
+ id=21
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=27
+ x=1
+ y=5
+ port=title
+ {
+ id=28
+ }
+ port=autoRestoreID
+ {
+ id=29
+ }
+ port=left
+ {
+ id=30
+ }
+ port=right
+ {
+ id=31
+ }
+}
+module=Arts::Synth_AMAN_RECORD
+{
+ id=56
+ x=1
+ y=1
+ port=title
+ {
+ id=57
+ }
+ port=autoRestoreID
+ {
+ id=58
+ }
+ port=left
+ {
+ id=59
+ }
+ port=right
+ {
+ id=60
+ }
+}
diff --git a/arts/examples/example_sequence.arts b/arts/examples/example_sequence.arts
new file mode 100644
index 00000000..2840657e
--- /dev/null
+++ b/arts/examples/example_sequence.arts
@@ -0,0 +1,85 @@
+name=example_sequence
+module=Arts::Synth_SEQUENCE
+{
+ id=0
+ x=3
+ y=1
+ port=speed
+ {
+ id=1
+ audio_data=0.50000
+ }
+ port=seq
+ {
+ id=2
+ string_data=C-4;D-4;E-4;F-4;G-4;A-4;B-4;C-5;
+ }
+ port=frequency
+ {
+ id=3
+ connect_to=11
+ }
+ port=pos
+ {
+ id=4
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=5
+ x=2
+ y=7
+ port=title
+ {
+ id=6
+ string_data=Sequence
+ }
+ port=autoRestoreID
+ {
+ id=7
+ string_data=Sequence
+ }
+ port=left
+ {
+ id=8
+ connect_to=15
+ }
+ port=right
+ {
+ id=9
+ connect_to=15
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=10
+ x=4
+ y=3
+ port=frequency
+ {
+ id=11
+ connect_to=3
+ }
+ port=pos
+ {
+ id=12
+ connect_to=14
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=13
+ x=4
+ y=5
+ port=pos
+ {
+ id=14
+ connect_to=12
+ }
+ port=outvalue
+ {
+ id=15
+ connect_to=8
+ connect_to=9
+ }
+}
diff --git a/arts/examples/example_shelve_cutoff.arts b/arts/examples/example_shelve_cutoff.arts
new file mode 100644
index 00000000..788a6dd3
--- /dev/null
+++ b/arts/examples/example_shelve_cutoff.arts
@@ -0,0 +1,61 @@
+name=example_shelve_cutoff
+module=Arts::Synth_NOISE
+{
+ id=0
+ x=1
+ y=1
+ port=outvalue
+ {
+ id=1
+ connect_to=10
+ connect_to=17
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=2
+ x=1
+ y=5
+ port=title
+ {
+ id=3
+ string_data=Shelve Cutoff
+ }
+ port=autoRestoreID
+ {
+ id=4
+ string_data=Shelve Cutoff
+ }
+ port=left
+ {
+ id=5
+ connect_to=19
+ }
+ port=right
+ {
+ id=6
+ connect_to=19
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=16
+ x=1
+ y=3
+ port=invalue
+ {
+ id=17
+ connect_to=1
+ }
+ port=frequency
+ {
+ id=18
+ audio_data=3000.00000
+ }
+ port=outvalue
+ {
+ id=19
+ connect_to=5
+ connect_to=6
+ }
+}
diff --git a/arts/examples/example_sine.arts b/arts/examples/example_sine.arts
new file mode 100644
index 00000000..5810a23a
--- /dev/null
+++ b/arts/examples/example_sine.arts
@@ -0,0 +1,58 @@
+name=example_sine
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=7
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=6
+ x=2
+ y=3
+ port=pos
+ {
+ id=7
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=8
+ connect_to=15
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=12
+ x=1
+ y=5
+ port=title
+ {
+ id=13
+ string_data=Sine
+ }
+ port=autoRestoreID
+ {
+ id=14
+ string_data=Sine
+ }
+ port=left
+ {
+ id=15
+ connect_to=8
+ }
+ port=right
+ {
+ id=16
+ }
+}
diff --git a/arts/examples/example_softsaw.arts b/arts/examples/example_softsaw.arts
new file mode 100644
index 00000000..7ab5202c
--- /dev/null
+++ b/arts/examples/example_softsaw.arts
@@ -0,0 +1,61 @@
+name=example_softsaw
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=10
+ connect_to=16
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=3
+ x=1
+ y=5
+ port=title
+ {
+ id=4
+ string_data=SoftSaw
+ }
+ port=autoRestoreID
+ {
+ id=5
+ string_data=SoftSaw
+ }
+ port=left
+ {
+ id=6
+ connect_to=17
+ }
+ port=right
+ {
+ id=7
+ connect_to=17
+ }
+}
+module=Arts::Synth_WAVE_SOFTSAW
+{
+ id=15
+ x=2
+ y=3
+ port=pos
+ {
+ id=16
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=6
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_square.arts b/arts/examples/example_square.arts
new file mode 100644
index 00000000..1e0e1d5a
--- /dev/null
+++ b/arts/examples/example_square.arts
@@ -0,0 +1,61 @@
+name=example_square
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=10
+ connect_to=16
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=3
+ x=1
+ y=5
+ port=title
+ {
+ id=4
+ string_data=Square
+ }
+ port=autoRestoreID
+ {
+ id=5
+ string_data=Square
+ }
+ port=left
+ {
+ id=6
+ connect_to=17
+ }
+ port=right
+ {
+ id=7
+ connect_to=17
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=15
+ x=2
+ y=3
+ port=pos
+ {
+ id=16
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=6
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_stereobeep.arts b/arts/examples/example_stereobeep.arts
new file mode 100644
index 00000000..69c346e9
--- /dev/null
+++ b/arts/examples/example_stereobeep.arts
@@ -0,0 +1,91 @@
+name=example_stereobeep
+module=Arts::Synth_FREQUENCY
+{
+ id=29
+ x=1
+ y=1
+ port=frequency
+ {
+ id=30
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=31
+ connect_to=36
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=32
+ x=5
+ y=1
+ port=frequency
+ {
+ id=33
+ audio_data=880.00000
+ }
+ port=pos
+ {
+ id=34
+ connect_to=39
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=35
+ x=2
+ y=3
+ port=pos
+ {
+ id=36
+ connect_to=31
+ }
+ port=outvalue
+ {
+ id=37
+ connect_to=44
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=38
+ x=6
+ y=3
+ port=pos
+ {
+ id=39
+ connect_to=34
+ }
+ port=outvalue
+ {
+ id=40
+ connect_to=45
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=41
+ x=2
+ y=5
+ port=title
+ {
+ id=42
+ string_data=StereoBeep
+ }
+ port=autoRestoreID
+ {
+ id=43
+ string_data=StereoBeep
+ }
+ port=left
+ {
+ id=44
+ connect_to=37
+ }
+ port=right
+ {
+ id=45
+ connect_to=40
+ }
+}
diff --git a/arts/examples/example_tremolo.arts b/arts/examples/example_tremolo.arts
new file mode 100644
index 00000000..0a3130f3
--- /dev/null
+++ b/arts/examples/example_tremolo.arts
@@ -0,0 +1,118 @@
+name=example_tremolo
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=0
+ x=1
+ y=1
+ port=busname
+ {
+ id=1
+ string_data=Tremolo
+ }
+ port=left
+ {
+ id=2
+ connect_to=9
+ }
+ port=right
+ {
+ id=3
+ connect_to=13
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=4
+ x=1
+ y=7
+ port=busname
+ {
+ id=5
+ string_data=out_soundcard
+ }
+ port=left
+ {
+ id=6
+ connect_to=11
+ }
+ port=right
+ {
+ id=7
+ connect_to=15
+ }
+}
+module=Arts::Synth_TREMOLO
+{
+ id=8
+ x=1
+ y=5
+ port=invalue
+ {
+ id=9
+ connect_to=2
+ }
+ port=inlfo
+ {
+ id=10
+ connect_to=21
+ }
+ port=outvalue
+ {
+ id=11
+ connect_to=6
+ }
+}
+module=Arts::Synth_TREMOLO
+{
+ id=12
+ x=5
+ y=5
+ port=invalue
+ {
+ id=13
+ connect_to=3
+ }
+ port=inlfo
+ {
+ id=14
+ connect_to=21
+ }
+ port=outvalue
+ {
+ id=15
+ connect_to=7
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=16
+ x=6
+ y=1
+ port=frequency
+ {
+ id=17
+ audio_data=5.00000
+ }
+ port=pos
+ {
+ id=18
+ connect_to=20
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=19
+ x=6
+ y=3
+ port=pos
+ {
+ id=20
+ connect_to=18
+ }
+ port=outvalue
+ {
+ id=21
+ connect_to=10
+ connect_to=14
+ }
+}
diff --git a/arts/examples/example_tri.arts b/arts/examples/example_tri.arts
new file mode 100644
index 00000000..7c9e5673
--- /dev/null
+++ b/arts/examples/example_tri.arts
@@ -0,0 +1,61 @@
+name=example_tri
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=1
+ port=frequency
+ {
+ id=1
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=2
+ connect_to=10
+ connect_to=16
+ }
+}
+module=Arts::Synth_AMAN_PLAY
+{
+ id=3
+ x=1
+ y=5
+ port=title
+ {
+ id=4
+ string_data=Tri
+ }
+ port=autoRestoreID
+ {
+ id=5
+ string_data=Tri
+ }
+ port=left
+ {
+ id=6
+ connect_to=17
+ }
+ port=right
+ {
+ id=7
+ connect_to=17
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=15
+ x=2
+ y=3
+ port=pos
+ {
+ id=16
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=6
+ connect_to=7
+ }
+}
diff --git a/arts/examples/example_xfade.arts b/arts/examples/example_xfade.arts
new file mode 100644
index 00000000..60ed2022
--- /dev/null
+++ b/arts/examples/example_xfade.arts
@@ -0,0 +1,120 @@
+name=example_xfade
+module=Arts::Synth_AMAN_PLAY
+{
+ id=10
+ x=1
+ y=7
+ port=title
+ {
+ id=11
+ string_data=Crossfade
+ }
+ port=autoRestoreID
+ {
+ id=12
+ string_data=Crossfade
+ }
+ port=left
+ {
+ id=13
+ connect_to=48
+ }
+ port=right
+ {
+ id=14
+ connect_to=48
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=15
+ x=1
+ y=3
+ port=pos
+ {
+ id=16
+ connect_to=20
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=33
+ connect_to=45
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=18
+ x=1
+ y=1
+ port=frequency
+ {
+ id=19
+ audio_data=440.00000
+ }
+ port=pos
+ {
+ id=20
+ connect_to=16
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=25
+ x=5
+ y=3
+ port=pos
+ {
+ id=26
+ connect_to=30
+ }
+ port=outvalue
+ {
+ id=27
+ connect_to=37
+ connect_to=46
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=28
+ x=5
+ y=1
+ port=frequency
+ {
+ id=29
+ audio_data=880.00000
+ }
+ port=pos
+ {
+ id=30
+ connect_to=26
+ }
+}
+module=Arts::Synth_XFADE
+{
+ id=44
+ x=3
+ y=5
+ port=invalue1
+ {
+ id=45
+ connect_to=17
+ }
+ port=invalue2
+ {
+ id=46
+ connect_to=27
+ }
+ port=percentage
+ {
+ id=47
+ audio_data=0.00000
+ }
+ port=outvalue
+ {
+ id=48
+ connect_to=13
+ connect_to=14
+ }
+}
diff --git a/arts/examples/instrument_arts_all.arts-map b/arts/examples/instrument_arts_all.arts-map
new file mode 100644
index 00000000..0508f8d8
--- /dev/null
+++ b/arts/examples/instrument_arts_all.arts-map
@@ -0,0 +1,14 @@
+ON program=0 DO structure=instrument_tri.arts
+ON program=1 DO structure=instrument_organ2.arts
+ON program=2 DO structure=instrument_slide1.arts
+ON program=3 DO structure=instrument_square.arts
+ON program=4 DO structure=instrument_neworgan.arts
+ON program=5 DO structure=instrument_nokind.arts
+ON program=6 DO structure=instrument_full_square.arts
+ON program=7 DO structure=instrument_simple_sin.arts
+ON program=8 DO structure=instrument_simple_square.arts
+ON program=9 DO structure=instrument_simple_tri.arts
+ON program=10 DO structure=instrument_slide.arts
+ON program=11 pitch=60 DO structure=instrument_deepdrum.arts
+ON program=11 pitch=61 DO structure=instrument_chirpdrum.arts
+ON program=11 pitch=62 DO structure=instrument_hihat.arts
diff --git a/arts/examples/instrument_chirpdrum.arts b/arts/examples/instrument_chirpdrum.arts
new file mode 100644
index 00000000..8b8dcff7
--- /dev/null
+++ b/arts/examples/instrument_chirpdrum.arts
@@ -0,0 +1,260 @@
+name=instrument_chirpdrum
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=104
+ x=2
+ y=5
+ port=active
+ {
+ id=105
+ connect_to=130
+ }
+ port=invalue
+ {
+ id=106
+ connect_to=116
+ }
+ port=attack
+ {
+ id=107
+ audio_data=0.02000
+ }
+ port=decay
+ {
+ id=108
+ audio_data=0.01000
+ }
+ port=sustain
+ {
+ id=109
+ audio_data=0.00010
+ }
+ port=release
+ {
+ id=110
+ audio_data=0.00100
+ }
+ port=outvalue
+ {
+ id=111
+ connect_to=122
+ }
+ port=done
+ {
+ id=112
+ connect_to=133
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=113
+ x=2
+ y=3
+ port=invalue1
+ {
+ id=114
+ connect_to=118
+ }
+ port=invalue2
+ {
+ id=115
+ connect_to=129
+ }
+ port=outvalue
+ {
+ id=116
+ connect_to=106
+ }
+}
+module=Arts::Synth_NOISE
+{
+ id=117
+ x=1
+ y=2
+ port=outvalue
+ {
+ id=118
+ connect_to=114
+ }
+}
+module=Arts::Synth_MOOG_VCF
+{
+ id=119
+ x=1
+ y=6
+ port=frequency
+ {
+ id=120
+ audio_data=11000.00000
+ }
+ port=resonance
+ {
+ id=121
+ audio_data=1.90000
+ }
+ port=invalue
+ {
+ id=122
+ connect_to=111
+ }
+ port=outvalue
+ {
+ id=123
+ connect_to=126
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=124
+ x=1
+ y=7
+ port=invalue1
+ {
+ id=125
+ audio_data=15.00000
+ }
+ port=invalue2
+ {
+ id=126
+ connect_to=123
+ }
+ port=outvalue
+ {
+ id=127
+ connect_to=142
+ }
+}
+module=Arts::Synth_RC
+{
+ id=139
+ x=1
+ y=10
+ port=b
+ {
+ id=140
+ audio_data=5.00000
+ }
+ port=f
+ {
+ id=141
+ audio_data=5.00000
+ }
+ port=invalue
+ {
+ id=142
+ connect_to=127
+ }
+ port=outvalue
+ {
+ id=143
+ connect_to=132
+ connect_to=131
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=128
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=129
+ connect_to=115
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=130
+ connect_to=105
+ }
+}
+structureport
+{
+ name=left
+ x=2
+ y=13
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=131
+ connect_to=143
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=13
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=132
+ connect_to=143
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=8
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=133
+ connect_to=112
+ }
+}
diff --git a/arts/examples/instrument_deepdrum.arts b/arts/examples/instrument_deepdrum.arts
new file mode 100644
index 00000000..f6b1ebef
--- /dev/null
+++ b/arts/examples/instrument_deepdrum.arts
@@ -0,0 +1,255 @@
+name=instrument_deepdrum
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=144
+ x=2
+ y=5
+ port=active
+ {
+ id=145
+ connect_to=170
+ }
+ port=invalue
+ {
+ id=146
+ connect_to=156
+ }
+ port=attack
+ {
+ id=147
+ audio_data=0.02000
+ }
+ port=decay
+ {
+ id=148
+ audio_data=0.01000
+ }
+ port=sustain
+ {
+ id=149
+ audio_data=0.00100
+ }
+ port=release
+ {
+ id=150
+ audio_data=0.00100
+ }
+ port=outvalue
+ {
+ id=151
+ connect_to=162
+ }
+ port=done
+ {
+ id=152
+ connect_to=173
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=153
+ x=2
+ y=3
+ port=invalue1
+ {
+ id=154
+ connect_to=179
+ }
+ port=invalue2
+ {
+ id=155
+ connect_to=169
+ }
+ port=outvalue
+ {
+ id=156
+ connect_to=146
+ }
+}
+module=Arts::Synth_MOOG_VCF
+{
+ id=159
+ x=1
+ y=6
+ port=frequency
+ {
+ id=160
+ audio_data=400.00000
+ }
+ port=resonance
+ {
+ id=161
+ audio_data=2.90000
+ }
+ port=invalue
+ {
+ id=162
+ connect_to=151
+ }
+ port=outvalue
+ {
+ id=163
+ connect_to=166
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=164
+ x=1
+ y=7
+ port=invalue1
+ {
+ id=165
+ audio_data=150.00000
+ }
+ port=invalue2
+ {
+ id=166
+ connect_to=163
+ }
+ port=outvalue
+ {
+ id=167
+ connect_to=171
+ connect_to=172
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=177
+ x=1
+ y=2
+ port=pos
+ {
+ id=178
+ connect_to=185
+ }
+ port=outvalue
+ {
+ id=179
+ connect_to=154
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=183
+ x=0
+ y=1
+ port=frequency
+ {
+ id=184
+ audio_data=8000.00000
+ }
+ port=pos
+ {
+ id=185
+ connect_to=178
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=168
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=169
+ connect_to=155
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=170
+ connect_to=145
+ }
+}
+structureport
+{
+ name=left
+ x=2
+ y=9
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=171
+ connect_to=167
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=9
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=172
+ connect_to=167
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=8
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=173
+ connect_to=152
+ }
+}
diff --git a/arts/examples/instrument_flexible_slide.arts b/arts/examples/instrument_flexible_slide.arts
new file mode 100644
index 00000000..b1ff28d6
--- /dev/null
+++ b/arts/examples/instrument_flexible_slide.arts
@@ -0,0 +1,537 @@
+name=instrument_flexible_slide
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=4
+ y=3
+ port=frequency
+ {
+ id=5
+ connect_to=79
+ }
+ port=pos
+ {
+ id=6
+ connect_to=32
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=9
+ x=13
+ y=4
+ port=active
+ {
+ id=10
+ connect_to=81
+ }
+ port=invalue
+ {
+ id=11
+ connect_to=29
+ }
+ port=attack
+ {
+ id=12
+ connect_to=78
+ }
+ port=decay
+ {
+ id=13
+ connect_to=76
+ }
+ port=sustain
+ {
+ id=14
+ audio_data=0.70000
+ }
+ port=release
+ {
+ id=15
+ audio_data=0.05000
+ }
+ port=outvalue
+ {
+ id=16
+ connect_to=40
+ }
+ port=done
+ {
+ id=17
+ connect_to=8
+ connect_to=84
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=22
+ x=12
+ y=2
+ port=active
+ {
+ id=23
+ connect_to=81
+ }
+ port=invalue
+ {
+ id=24
+ connect_to=80
+ }
+ port=attack
+ {
+ id=25
+ connect_to=78
+ }
+ port=decay
+ {
+ id=26
+ connect_to=75
+ }
+ port=sustain
+ {
+ id=27
+ audio_data=0.00010
+ }
+ port=release
+ {
+ id=28
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=29
+ connect_to=11
+ connect_to=43
+ }
+ port=done
+ {
+ id=30
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=31
+ x=5
+ y=4
+ port=pos
+ {
+ id=32
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=33
+ connect_to=58
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=34
+ x=5
+ y=11
+ port=invalue
+ {
+ id=35
+ connect_to=60
+ }
+ port=frequency
+ {
+ id=36
+ connect_to=72
+ }
+ port=outvalue
+ {
+ id=37
+ connect_to=39
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=38
+ x=6
+ y=12
+ port=invalue1
+ {
+ id=39
+ connect_to=37
+ }
+ port=invalue2
+ {
+ id=40
+ connect_to=16
+ }
+ port=outvalue
+ {
+ id=41
+ connect_to=20
+ connect_to=21
+ connect_to=82
+ connect_to=83
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=42
+ x=11
+ y=6
+ port=invalue1
+ {
+ id=43
+ connect_to=29
+ }
+ port=invalue2
+ {
+ id=44
+ connect_to=74
+ }
+ port=outvalue
+ {
+ id=45
+ connect_to=71
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=46
+ x=1
+ y=3
+ port=invalue1
+ {
+ id=47
+ connect_to=79
+ }
+ port=invalue2
+ {
+ id=48
+ connect_to=73
+ }
+ port=outvalue
+ {
+ id=49
+ connect_to=51
+ connect_to=70
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=50
+ x=2
+ y=5
+ port=frequency
+ {
+ id=51
+ connect_to=49
+ }
+ port=pos
+ {
+ id=52
+ connect_to=54
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=53
+ x=3
+ y=6
+ port=pos
+ {
+ id=54
+ connect_to=52
+ }
+ port=outvalue
+ {
+ id=55
+ connect_to=57
+ }
+}
+module=Arts::Synth_XFADE
+{
+ id=56
+ x=4
+ y=7
+ port=invalue1
+ {
+ id=57
+ connect_to=55
+ }
+ port=invalue2
+ {
+ id=58
+ connect_to=33
+ }
+ port=percentage
+ {
+ id=59
+ connect_to=68
+ }
+ port=outvalue
+ {
+ id=60
+ connect_to=35
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=61
+ x=7
+ y=3
+ port=invalue1
+ {
+ id=62
+ connect_to=80
+ }
+ port=invalue2
+ {
+ id=63
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=64
+ connect_to=66
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=65
+ x=8
+ y=4
+ port=invalue1
+ {
+ id=66
+ connect_to=64
+ }
+ port=invalue2
+ {
+ id=67
+ audio_data=-1.00000
+ }
+ port=outvalue
+ {
+ id=68
+ connect_to=59
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=69
+ x=7
+ y=9
+ port=invalue1
+ {
+ id=70
+ connect_to=49
+ }
+ port=invalue2
+ {
+ id=71
+ connect_to=45
+ }
+ port=outvalue
+ {
+ id=72
+ connect_to=36
+ }
+}
+structureport
+{
+ name=detune
+ x=1
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=73
+ connect_to=48
+ }
+}
+structureport
+{
+ name=cutoff
+ x=13
+ y=5
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=74
+ connect_to=44
+ }
+}
+structureport
+{
+ name=decay
+ x=16
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=75
+ connect_to=26
+ }
+}
+structureport
+{
+ name=decay2
+ x=19
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=76
+ connect_to=13
+ }
+}
+structureport
+{
+ name=attack
+ x=17
+ y=0
+ position=5
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=78
+ connect_to=12
+ connect_to=25
+ }
+}
+structureport
+{
+ name=frequency
+ x=3
+ y=0
+ position=6
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=79
+ connect_to=5
+ connect_to=47
+ }
+}
+structureport
+{
+ name=velocity
+ x=5
+ y=0
+ position=7
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=80
+ connect_to=62
+ connect_to=24
+ }
+}
+structureport
+{
+ name=pressed
+ x=7
+ y=0
+ position=8
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=81
+ connect_to=23
+ connect_to=10
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=14
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=82
+ connect_to=41
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=14
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=83
+ connect_to=41
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=14
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=84
+ connect_to=17
+ }
+}
diff --git a/arts/examples/instrument_flexible_slide_GUI.arts b/arts/examples/instrument_flexible_slide_GUI.arts
new file mode 100644
index 00000000..3b0f0bca
--- /dev/null
+++ b/arts/examples/instrument_flexible_slide_GUI.arts
@@ -0,0 +1,481 @@
+name=instrument_flexible_slide_GUI
+module=Arts::Poti
+{
+ id=0
+ x=3
+ y=4
+ port=widgetID
+ {
+ id=1
+ }
+ port=parent
+ {
+ id=2
+ }
+ port=x
+ {
+ id=3
+ any_data=value:000000056c6f6e67000000000400000064
+ }
+ port=y
+ {
+ id=4
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=5
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=6
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=7
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=8
+ string_data=DETUNE
+ }
+ port=color
+ {
+ id=9
+ string_data=#ff8000
+ }
+ port=min
+ {
+ id=10
+ audio_data=2.00000
+ }
+ port=max
+ {
+ id=11
+ audio_data=2.03000
+ }
+ port=value
+ {
+ id=12
+ }
+}
+module=Arts::Widget
+{
+ id=13
+ x=1
+ y=2
+ port=widgetID
+ {
+ id=14
+ }
+ port=parent
+ {
+ id=15
+ }
+ port=x
+ {
+ id=16
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=y
+ {
+ id=17
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=18
+ any_data=value:000000056c6f6e67000000000400000032
+ }
+ port=height
+ {
+ id=19
+ any_data=value:000000056c6f6e67000000000400000032
+ }
+ port=visible
+ {
+ id=20
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+}
+module=Arts::Poti
+{
+ id=21
+ x=3
+ y=6
+ port=widgetID
+ {
+ id=22
+ }
+ port=parent
+ {
+ id=23
+ }
+ port=x
+ {
+ id=24
+ any_data=value:000000056c6f6e670000000004000000c8
+ }
+ port=y
+ {
+ id=25
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=26
+ }
+ port=height
+ {
+ id=27
+ }
+ port=visible
+ {
+ id=28
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=29
+ string_data=CUTOFF
+ }
+ port=color
+ {
+ id=30
+ string_data=red
+ }
+ port=min
+ {
+ id=31
+ }
+ port=max
+ {
+ id=32
+ }
+ port=value
+ {
+ id=33
+ }
+}
+module=Arts::Poti
+{
+ id=34
+ x=3
+ y=10
+ port=widgetID
+ {
+ id=35
+ }
+ port=parent
+ {
+ id=36
+ }
+ port=x
+ {
+ id=37
+ any_data=value:000000056c6f6e67000000000400000190
+ }
+ port=y
+ {
+ id=38
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=39
+ }
+ port=height
+ {
+ id=40
+ }
+ port=visible
+ {
+ id=41
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=42
+ string_data=DECAY
+ }
+ port=color
+ {
+ id=43
+ string_data=#00A000
+ }
+ port=min
+ {
+ id=44
+ audio_data=0.01000
+ }
+ port=max
+ {
+ id=45
+ audio_data=8.00000
+ }
+ port=value
+ {
+ id=46
+ }
+}
+module=Arts::Poti
+{
+ id=47
+ x=3
+ y=12
+ port=widgetID
+ {
+ id=48
+ }
+ port=parent
+ {
+ id=49
+ }
+ port=x
+ {
+ id=50
+ any_data=value:000000056c6f6e670000000004000001f4
+ }
+ port=y
+ {
+ id=51
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=52
+ }
+ port=height
+ {
+ id=53
+ }
+ port=visible
+ {
+ id=54
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=55
+ string_data=DECAY2
+ }
+ port=color
+ {
+ id=56
+ string_data=darkgrey
+ }
+ port=min
+ {
+ id=57
+ audio_data=0.00010
+ }
+ port=max
+ {
+ id=58
+ audio_data=2.00000
+ }
+ port=value
+ {
+ id=59
+ }
+}
+module=Arts::Poti
+{
+ id=60
+ x=3
+ y=8
+ port=widgetID
+ {
+ id=61
+ }
+ port=parent
+ {
+ id=62
+ }
+ port=x
+ {
+ id=63
+ any_data=value:000000056c6f6e6700000000040000012c
+ }
+ port=y
+ {
+ id=64
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=65
+ }
+ port=height
+ {
+ id=66
+ }
+ port=visible
+ {
+ id=67
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=68
+ string_data=ATTACK
+ }
+ port=color
+ {
+ id=69
+ string_data=#00A000
+ }
+ port=min
+ {
+ id=70
+ audio_data=0.01000
+ }
+ port=max
+ {
+ id=71
+ audio_data=0.90000
+ }
+ port=value
+ {
+ id=72
+ }
+}
+structureport
+{
+ name=parent
+ x=2
+ y=1
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=73
+ }
+}
+structureport
+{
+ name=x
+ x=3
+ y=1
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=property
+ }
+ data
+ {
+ id=74
+ }
+}
+structureport
+{
+ name=y
+ x=4
+ y=1
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=property
+ }
+ data
+ {
+ id=75
+ }
+}
+structureport
+{
+ name=detune
+ x=5
+ y=5
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=76
+ }
+}
+structureport
+{
+ name=cutoff
+ x=5
+ y=7
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=77
+ }
+}
+structureport
+{
+ name=decay
+ x=5
+ y=11
+ position=3
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=78
+ }
+}
+structureport
+{
+ name=decay2
+ x=5
+ y=13
+ position=4
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=79
+ }
+}
+structureport
+{
+ name=attack
+ x=5
+ y=9
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=80
+ }
+}
diff --git a/arts/examples/instrument_fm_horn.arts b/arts/examples/instrument_fm_horn.arts
new file mode 100644
index 00000000..698c7792
--- /dev/null
+++ b/arts/examples/instrument_fm_horn.arts
@@ -0,0 +1,301 @@
+name=instrument_fm_horn
+module=Arts::Synth_FM_SOURCE
+{
+ id=0
+ x=2
+ y=7
+ port=frequency
+ {
+ id=1
+ connect_to=47
+ }
+ port=modulator
+ {
+ id=2
+ connect_to=22
+ }
+ port=modlevel
+ {
+ id=3
+ audio_data=0.30000
+ }
+ port=pos
+ {
+ id=4
+ connect_to=6
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=5
+ x=3
+ y=8
+ port=pos
+ {
+ id=6
+ connect_to=4
+ }
+ port=outvalue
+ {
+ id=7
+ connect_to=16
+ connect_to=33
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=8
+ x=2
+ y=4
+ port=frequency
+ {
+ id=9
+ connect_to=45
+ }
+ port=pos
+ {
+ id=10
+ connect_to=12
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=11
+ x=3
+ y=5
+ port=pos
+ {
+ id=12
+ connect_to=10
+ }
+ port=outvalue
+ {
+ id=13
+ connect_to=19
+ }
+}
+module=Arts::Synth_CDELAY
+{
+ id=14
+ x=7
+ y=8
+ port=time
+ {
+ id=15
+ }
+ port=invalue
+ {
+ id=16
+ connect_to=7
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=20
+ }
+}
+module=Arts::Synth_XFADE
+{
+ id=18
+ x=7
+ y=6
+ port=invalue1
+ {
+ id=19
+ connect_to=13
+ }
+ port=invalue2
+ {
+ id=20
+ connect_to=17
+ }
+ port=percentage
+ {
+ id=21
+ audio_data=0.40000
+ }
+ port=outvalue
+ {
+ id=22
+ connect_to=2
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=31
+ x=3
+ y=11
+ port=active
+ {
+ id=32
+ connect_to=49
+ }
+ port=invalue
+ {
+ id=33
+ connect_to=7
+ }
+ port=attack
+ {
+ id=34
+ audio_data=0.10000
+ }
+ port=decay
+ {
+ id=35
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=36
+ audio_data=0.70000
+ }
+ port=release
+ {
+ id=37
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=29
+ connect_to=30
+ connect_to=50
+ connect_to=51
+ }
+ port=done
+ {
+ id=39
+ connect_to=41
+ connect_to=52
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=42
+ x=1
+ y=3
+ port=invalue1
+ {
+ id=43
+ connect_to=47
+ }
+ port=invalue2
+ {
+ id=44
+ audio_data=1.01000
+ }
+ port=outvalue
+ {
+ id=45
+ connect_to=9
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=47
+ connect_to=43
+ connect_to=1
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=48
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=49
+ connect_to=32
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=13
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=50
+ connect_to=38
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=13
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=51
+ connect_to=38
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=13
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=52
+ connect_to=39
+ }
+}
diff --git a/arts/examples/instrument_full_square.arts b/arts/examples/instrument_full_square.arts
new file mode 100644
index 00000000..2e562000
--- /dev/null
+++ b/arts/examples/instrument_full_square.arts
@@ -0,0 +1,422 @@
+name=instrument_full_square
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=2
+ port=frequency
+ {
+ id=1
+ connect_to=59
+ }
+ port=pos
+ {
+ id=2
+ connect_to=13
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=3
+ x=0
+ y=9
+ port=active
+ {
+ id=4
+ connect_to=61
+ }
+ port=invalue
+ {
+ id=5
+ connect_to=58
+ }
+ port=attack
+ {
+ id=6
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=7
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=8
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=9
+ audio_data=0.30000
+ }
+ port=outvalue
+ {
+ id=10
+ connect_to=62
+ connect_to=63
+ }
+ port=done
+ {
+ id=11
+ connect_to=64
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=12
+ x=1
+ y=4
+ port=pos
+ {
+ id=13
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=16
+ connect_to=21
+ connect_to=28
+ connect_to=52
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=15
+ x=6
+ y=6
+ port=invalue1
+ {
+ id=16
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=17
+ connect_to=38
+ }
+ port=outvalue
+ {
+ id=18
+ connect_to=24
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=19
+ x=15
+ y=6
+ port=invalue1
+ {
+ id=20
+ connect_to=26
+ }
+ port=invalue2
+ {
+ id=21
+ connect_to=14
+ }
+ port=outvalue
+ {
+ id=22
+ connect_to=48
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=23
+ x=10
+ y=6
+ port=invalue1
+ {
+ id=24
+ connect_to=18
+ }
+ port=invalue2
+ {
+ id=25
+ connect_to=42
+ }
+ port=outvalue
+ {
+ id=26
+ connect_to=20
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=27
+ x=6
+ y=2
+ port=invalue1
+ {
+ id=28
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=29
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=30
+ connect_to=32
+ connect_to=36
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=31
+ x=10
+ y=2
+ port=invalue1
+ {
+ id=32
+ connect_to=30
+ }
+ port=invalue2
+ {
+ id=33
+ audio_data=16.00000
+ }
+ port=outvalue
+ {
+ id=34
+ connect_to=40
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=35
+ x=6
+ y=4
+ port=invalue
+ {
+ id=36
+ connect_to=30
+ }
+ port=frequency
+ {
+ id=37
+ audio_data=6000.00000
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=17
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=39
+ x=10
+ y=4
+ port=invalue
+ {
+ id=40
+ connect_to=34
+ }
+ port=frequency
+ {
+ id=41
+ audio_data=2000.00000
+ }
+ port=outvalue
+ {
+ id=42
+ connect_to=25
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=43
+ x=12
+ y=9
+ port=invalue
+ {
+ id=44
+ connect_to=54
+ }
+ port=frequency
+ {
+ id=45
+ audio_data=8000.00000
+ }
+ port=outvalue
+ {
+ id=46
+ connect_to=57
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=47
+ x=16
+ y=7
+ port=invalue1
+ {
+ id=48
+ connect_to=22
+ }
+ port=invalue2
+ {
+ id=49
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=50
+ connect_to=53
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=51
+ x=16
+ y=9
+ port=invalue1
+ {
+ id=52
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=53
+ connect_to=50
+ }
+ port=outvalue
+ {
+ id=54
+ connect_to=44
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=55
+ x=8
+ y=9
+ port=invalue1
+ {
+ id=56
+ audio_data=0.20000
+ }
+ port=invalue2
+ {
+ id=57
+ connect_to=46
+ }
+ port=outvalue
+ {
+ id=58
+ connect_to=5
+ }
+}
+structureport
+{
+ name=frequency
+ x=2
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=59
+ connect_to=1
+ }
+}
+structureport
+{
+ name=velocity
+ x=4
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=60
+ }
+}
+structureport
+{
+ name=pressed
+ x=1
+ y=8
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=61
+ connect_to=4
+ }
+}
+structureport
+{
+ name=left
+ x=2
+ y=11
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=62
+ connect_to=10
+ }
+}
+structureport
+{
+ name=right
+ x=4
+ y=11
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=63
+ connect_to=10
+ }
+}
+structureport
+{
+ name=done
+ x=6
+ y=11
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=64
+ connect_to=11
+ }
+}
diff --git a/arts/examples/instrument_hihat.arts b/arts/examples/instrument_hihat.arts
new file mode 100644
index 00000000..68205093
--- /dev/null
+++ b/arts/examples/instrument_hihat.arts
@@ -0,0 +1,235 @@
+name=instrument_hihat
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=0
+ x=2
+ y=5
+ port=active
+ {
+ id=1
+ connect_to=31
+ }
+ port=invalue
+ {
+ id=2
+ connect_to=12
+ }
+ port=attack
+ {
+ id=3
+ audio_data=0.00010
+ }
+ port=decay
+ {
+ id=4
+ audio_data=0.04000
+ }
+ port=sustain
+ {
+ id=5
+ audio_data=0.00010
+ }
+ port=release
+ {
+ id=6
+ audio_data=0.00100
+ }
+ port=outvalue
+ {
+ id=7
+ connect_to=18
+ connect_to=22
+ }
+ port=done
+ {
+ id=8
+ connect_to=34
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=9
+ x=2
+ y=3
+ port=invalue1
+ {
+ id=10
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=11
+ connect_to=30
+ }
+ port=outvalue
+ {
+ id=12
+ connect_to=2
+ }
+}
+module=Arts::Synth_NOISE
+{
+ id=13
+ x=1
+ y=2
+ port=outvalue
+ {
+ id=14
+ connect_to=10
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=20
+ x=1
+ y=7
+ port=invalue1
+ {
+ id=21
+ audio_data=2.00000
+ }
+ port=invalue2
+ {
+ id=22
+ connect_to=7
+ }
+ port=outvalue
+ {
+ id=23
+ connect_to=27
+ }
+}
+module=Arts::Synth_RC
+{
+ id=24
+ x=1
+ y=10
+ port=b
+ {
+ id=25
+ audio_data=2.00000
+ }
+ port=f
+ {
+ id=26
+ audio_data=4.00000
+ }
+ port=invalue
+ {
+ id=27
+ connect_to=23
+ }
+ port=outvalue
+ {
+ id=28
+ connect_to=32
+ connect_to=33
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=29
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=30
+ connect_to=11
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=31
+ connect_to=1
+ }
+}
+structureport
+{
+ name=left
+ x=2
+ y=13
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=32
+ connect_to=28
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=13
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=33
+ connect_to=28
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=8
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=34
+ connect_to=8
+ }
+}
diff --git a/arts/examples/instrument_moog_vcf_tune.arts b/arts/examples/instrument_moog_vcf_tune.arts
new file mode 100644
index 00000000..51d057a7
--- /dev/null
+++ b/arts/examples/instrument_moog_vcf_tune.arts
@@ -0,0 +1,341 @@
+name=instrument_moog_vcf_tune
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=0
+ y=5
+ port=frequency
+ {
+ id=5
+ connect_to=48
+ }
+ port=pos
+ {
+ id=6
+ connect_to=23
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=7
+ x=5
+ y=13
+ port=active
+ {
+ id=8
+ connect_to=50
+ }
+ port=invalue
+ {
+ id=9
+ connect_to=43
+ }
+ port=attack
+ {
+ id=10
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=11
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=12
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=13
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=20
+ connect_to=21
+ connect_to=51
+ connect_to=52
+ }
+ port=done
+ {
+ id=15
+ connect_to=17
+ connect_to=53
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=22
+ x=1
+ y=6
+ port=pos
+ {
+ id=23
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=24
+ connect_to=32
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=25
+ x=5
+ y=7
+ port=pos
+ {
+ id=26
+ connect_to=30
+ }
+ port=outvalue
+ {
+ id=27
+ connect_to=33
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=28
+ x=4
+ y=6
+ port=frequency
+ {
+ id=29
+ connect_to=38
+ }
+ port=pos
+ {
+ id=30
+ connect_to=26
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=31
+ x=3
+ y=9
+ port=invalue1
+ {
+ id=32
+ connect_to=24
+ }
+ port=invalue2
+ {
+ id=33
+ connect_to=27
+ }
+ port=outvalue
+ {
+ id=34
+ connect_to=42
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=35
+ x=3
+ y=5
+ port=invalue1
+ {
+ id=36
+ connect_to=48
+ }
+ port=invalue2
+ {
+ id=37
+ connect_to=47
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=29
+ }
+}
+module=Arts::Synth_MOOG_VCF
+{
+ id=39
+ x=7
+ y=11
+ port=frequency
+ {
+ id=40
+ }
+ port=resonance
+ {
+ id=41
+ }
+ port=invalue
+ {
+ id=42
+ connect_to=34
+ }
+ port=outvalue
+ {
+ id=43
+ connect_to=9
+ }
+}
+structureport
+{
+ name=cutoff
+ x=9
+ y=10
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=45
+ }
+}
+structureport
+{
+ name=resonance
+ x=10
+ y=10
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=46
+ }
+}
+structureport
+{
+ name=detune
+ x=5
+ y=4
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=47
+ connect_to=37
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=4
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=48
+ connect_to=5
+ connect_to=36
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=5
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=49
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=6
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=50
+ connect_to=8
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=15
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=51
+ connect_to=14
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=15
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=52
+ connect_to=14
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=15
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=53
+ connect_to=15
+ }
+}
diff --git a/arts/examples/instrument_moog_vcf_tune_GUI.arts b/arts/examples/instrument_moog_vcf_tune_GUI.arts
new file mode 100644
index 00000000..6db62f60
--- /dev/null
+++ b/arts/examples/instrument_moog_vcf_tune_GUI.arts
@@ -0,0 +1,331 @@
+name=instrument_moog_vcf_tune_GUI
+module=Arts::Widget
+{
+ id=0
+ x=1
+ y=2
+ port=widgetID
+ {
+ id=1
+ }
+ port=parent
+ {
+ id=2
+ }
+ port=x
+ {
+ id=3
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=y
+ {
+ id=4
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=5
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=6
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=7
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+}
+module=Arts::Poti
+{
+ id=8
+ x=3
+ y=4
+ port=widgetID
+ {
+ id=9
+ }
+ port=parent
+ {
+ id=10
+ }
+ port=x
+ {
+ id=11
+ any_data=value:000000056c6f6e67000000000400000064
+ }
+ port=y
+ {
+ id=12
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=13
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=14
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=15
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=16
+ string_data= CUTOFF
+ }
+ port=color
+ {
+ id=17
+ string_data=red
+ }
+ port=min
+ {
+ id=18
+ audio_data=100.00000
+ }
+ port=max
+ {
+ id=19
+ audio_data=8000.00000
+ }
+ port=value
+ {
+ id=20
+ }
+}
+module=Arts::Poti
+{
+ id=21
+ x=3
+ y=7
+ port=widgetID
+ {
+ id=22
+ }
+ port=parent
+ {
+ id=23
+ }
+ port=x
+ {
+ id=24
+ any_data=value:000000056c6f6e670000000004000000c8
+ }
+ port=y
+ {
+ id=25
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=26
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=27
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=28
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=29
+ string_data= RESO
+ }
+ port=color
+ {
+ id=30
+ string_data=red
+ }
+ port=min
+ {
+ id=31
+ audio_data=0.00000
+ }
+ port=max
+ {
+ id=32
+ audio_data=3.95000
+ }
+ port=value
+ {
+ id=33
+ }
+}
+module=Arts::Poti
+{
+ id=34
+ x=3
+ y=10
+ port=widgetID
+ {
+ id=35
+ }
+ port=parent
+ {
+ id=36
+ }
+ port=x
+ {
+ id=37
+ any_data=value:000000056c6f6e6700000000040000012c
+ }
+ port=y
+ {
+ id=38
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=39
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=40
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=41
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=42
+ string_data=DETUNE
+ }
+ port=color
+ {
+ id=43
+ string_data=orange
+ }
+ port=min
+ {
+ id=44
+ audio_data=1.00000
+ }
+ port=max
+ {
+ id=45
+ audio_data=1.02000
+ }
+ port=value
+ {
+ id=46
+ }
+}
+structureport
+{
+ name=parent
+ x=2
+ y=1
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=47
+ }
+}
+structureport
+{
+ name=x
+ x=3
+ y=1
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=property
+ }
+ data
+ {
+ id=48
+ }
+}
+structureport
+{
+ name=y
+ x=4
+ y=1
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=property
+ }
+ data
+ {
+ id=49
+ }
+}
+structureport
+{
+ name=cutoff
+ x=5
+ y=5
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=50
+ }
+}
+structureport
+{
+ name=resonance
+ x=5
+ y=8
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=51
+ }
+}
+structureport
+{
+ name=detune
+ x=5
+ y=11
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=52
+ }
+}
diff --git a/arts/examples/instrument_neworgan.arts b/arts/examples/instrument_neworgan.arts
new file mode 100644
index 00000000..7bdbc316
--- /dev/null
+++ b/arts/examples/instrument_neworgan.arts
@@ -0,0 +1,532 @@
+name=instrument_neworgan
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=1
+ y=4
+ port=frequency
+ {
+ id=5
+ connect_to=93
+ }
+ port=pos
+ {
+ id=6
+ connect_to=23
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=7
+ x=3
+ y=14
+ port=active
+ {
+ id=8
+ connect_to=95
+ }
+ port=invalue
+ {
+ id=9
+ connect_to=70
+ }
+ port=attack
+ {
+ id=10
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=11
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=12
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=13
+ audio_data=0.30000
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=20
+ connect_to=21
+ connect_to=90
+ connect_to=91
+ }
+ port=done
+ {
+ id=15
+ connect_to=17
+ connect_to=92
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=22
+ x=1
+ y=6
+ port=pos
+ {
+ id=23
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=24
+ connect_to=64
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=25
+ x=5
+ y=2
+ port=invalue1
+ {
+ id=26
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=27
+ audio_data=1.00000
+ }
+ port=outvalue
+ {
+ id=28
+ connect_to=47
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=29
+ x=5
+ y=6
+ port=pos
+ {
+ id=30
+ connect_to=48
+ }
+ port=outvalue
+ {
+ id=31
+ connect_to=65
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=32
+ x=9
+ y=2
+ port=invalue1
+ {
+ id=33
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=34
+ audio_data=8.00000
+ }
+ port=outvalue
+ {
+ id=35
+ connect_to=50
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=36
+ x=9
+ y=6
+ port=pos
+ {
+ id=37
+ connect_to=51
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=57
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=39
+ x=13
+ y=6
+ port=pos
+ {
+ id=40
+ connect_to=54
+ }
+ port=outvalue
+ {
+ id=41
+ connect_to=61
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=42
+ x=13
+ y=2
+ port=invalue1
+ {
+ id=43
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=44
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=45
+ connect_to=53
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=46
+ x=5
+ y=4
+ port=frequency
+ {
+ id=47
+ connect_to=28
+ }
+ port=pos
+ {
+ id=48
+ connect_to=30
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=49
+ x=9
+ y=4
+ port=frequency
+ {
+ id=50
+ connect_to=35
+ }
+ port=pos
+ {
+ id=51
+ connect_to=37
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=52
+ x=13
+ y=4
+ port=frequency
+ {
+ id=53
+ connect_to=45
+ }
+ port=pos
+ {
+ id=54
+ connect_to=40
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=55
+ x=5
+ y=10
+ port=invalue1
+ {
+ id=56
+ connect_to=66
+ }
+ port=invalue2
+ {
+ id=57
+ connect_to=38
+ }
+ port=outvalue
+ {
+ id=58
+ connect_to=60
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=59
+ x=9
+ y=11
+ port=invalue1
+ {
+ id=60
+ connect_to=58
+ }
+ port=invalue2
+ {
+ id=61
+ connect_to=41
+ }
+ port=outvalue
+ {
+ id=62
+ connect_to=86
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=63
+ x=1
+ y=9
+ port=invalue1
+ {
+ id=64
+ connect_to=24
+ }
+ port=invalue2
+ {
+ id=65
+ connect_to=31
+ }
+ port=outvalue
+ {
+ id=66
+ connect_to=56
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=67
+ x=13
+ y=13
+ port=invalue1
+ {
+ id=68
+ connect_to=74
+ }
+ port=invalue2
+ {
+ id=69
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=70
+ connect_to=9
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=71
+ x=13
+ y=11
+ port=invalue
+ {
+ id=72
+ connect_to=88
+ }
+ port=frequency
+ {
+ id=73
+ audio_data=5000.00000
+ }
+ port=outvalue
+ {
+ id=74
+ connect_to=68
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=75
+ x=17
+ y=2
+ port=invalue1
+ {
+ id=76
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=77
+ audio_data=4.00000
+ }
+ port=outvalue
+ {
+ id=78
+ connect_to=80
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=79
+ x=17
+ y=4
+ port=frequency
+ {
+ id=80
+ connect_to=78
+ }
+ port=pos
+ {
+ id=81
+ connect_to=83
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=82
+ x=17
+ y=6
+ port=pos
+ {
+ id=83
+ connect_to=81
+ }
+ port=outvalue
+ {
+ id=84
+ connect_to=87
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=85
+ x=17
+ y=9
+ port=invalue1
+ {
+ id=86
+ connect_to=62
+ }
+ port=invalue2
+ {
+ id=87
+ connect_to=84
+ }
+ port=outvalue
+ {
+ id=88
+ connect_to=72
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=16
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=90
+ connect_to=14
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=16
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=91
+ connect_to=14
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=16
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=92
+ connect_to=15
+ }
+}
+structureport
+{
+ name=frequency
+ x=2
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=93
+ connect_to=5
+ connect_to=26
+ connect_to=33
+ connect_to=43
+ connect_to=76
+ }
+}
+structureport
+{
+ name=velocity
+ x=4
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=94
+ }
+}
+structureport
+{
+ name=pressed
+ x=6
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=95
+ connect_to=8
+ }
+}
diff --git a/arts/examples/instrument_nokind.arts b/arts/examples/instrument_nokind.arts
new file mode 100644
index 00000000..d0c78585
--- /dev/null
+++ b/arts/examples/instrument_nokind.arts
@@ -0,0 +1,503 @@
+name=instrument_nokind
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=2
+ port=frequency
+ {
+ id=1
+ connect_to=77
+ }
+ port=pos
+ {
+ id=2
+ connect_to=13
+ connect_to=64
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=3
+ x=3
+ y=9
+ port=active
+ {
+ id=4
+ connect_to=79
+ }
+ port=invalue
+ {
+ id=5
+ connect_to=73
+ }
+ port=attack
+ {
+ id=6
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=7
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=8
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=9
+ audio_data=0.30000
+ }
+ port=outvalue
+ {
+ id=10
+ connect_to=74
+ connect_to=75
+ }
+ port=done
+ {
+ id=11
+ connect_to=76
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=12
+ x=1
+ y=4
+ port=pos
+ {
+ id=13
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=16
+ connect_to=21
+ connect_to=28
+ connect_to=52
+ connect_to=56
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=15
+ x=6
+ y=6
+ port=invalue1
+ {
+ id=16
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=17
+ connect_to=38
+ }
+ port=outvalue
+ {
+ id=18
+ connect_to=24
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=19
+ x=14
+ y=6
+ port=invalue1
+ {
+ id=20
+ connect_to=26
+ }
+ port=invalue2
+ {
+ id=21
+ connect_to=14
+ }
+ port=outvalue
+ {
+ id=22
+ connect_to=48
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=23
+ x=10
+ y=6
+ port=invalue1
+ {
+ id=24
+ connect_to=18
+ }
+ port=invalue2
+ {
+ id=25
+ connect_to=42
+ }
+ port=outvalue
+ {
+ id=26
+ connect_to=20
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=27
+ x=6
+ y=2
+ port=invalue1
+ {
+ id=28
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=29
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=30
+ connect_to=32
+ connect_to=36
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=31
+ x=10
+ y=2
+ port=invalue1
+ {
+ id=32
+ connect_to=30
+ }
+ port=invalue2
+ {
+ id=33
+ audio_data=16.00000
+ }
+ port=outvalue
+ {
+ id=34
+ connect_to=40
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=35
+ x=6
+ y=4
+ port=invalue
+ {
+ id=36
+ connect_to=30
+ }
+ port=frequency
+ {
+ id=37
+ audio_data=6000.00000
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=17
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=39
+ x=10
+ y=4
+ port=invalue
+ {
+ id=40
+ connect_to=34
+ }
+ port=frequency
+ {
+ id=41
+ audio_data=7000.00000
+ }
+ port=outvalue
+ {
+ id=42
+ connect_to=25
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=43
+ x=15
+ y=11
+ port=invalue
+ {
+ id=44
+ connect_to=54
+ }
+ port=frequency
+ {
+ id=45
+ audio_data=8000.00000
+ }
+ port=outvalue
+ {
+ id=46
+ connect_to=60
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=47
+ x=15
+ y=7
+ port=invalue1
+ {
+ id=48
+ connect_to=22
+ }
+ port=invalue2
+ {
+ id=49
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=50
+ connect_to=53
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=51
+ x=15
+ y=9
+ port=invalue1
+ {
+ id=52
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=53
+ connect_to=50
+ }
+ port=outvalue
+ {
+ id=54
+ connect_to=44
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=55
+ x=11
+ y=13
+ port=invalue1
+ {
+ id=56
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=57
+ connect_to=62
+ }
+ port=outvalue
+ {
+ id=58
+ connect_to=68
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=59
+ x=15
+ y=13
+ port=invalue1
+ {
+ id=60
+ connect_to=46
+ }
+ port=invalue2
+ {
+ id=61
+ audio_data=0.50000
+ }
+ port=outvalue
+ {
+ id=62
+ connect_to=57
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=63
+ x=1
+ y=7
+ port=pos
+ {
+ id=64
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=65
+ connect_to=67
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=66
+ x=11
+ y=11
+ port=invalue1
+ {
+ id=67
+ connect_to=65
+ }
+ port=invalue2
+ {
+ id=68
+ connect_to=58
+ }
+ port=outvalue
+ {
+ id=69
+ connect_to=71
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=70
+ x=11
+ y=9
+ port=invalue1
+ {
+ id=71
+ connect_to=69
+ }
+ port=invalue2
+ {
+ id=72
+ audio_data=0.25000
+ }
+ port=outvalue
+ {
+ id=73
+ connect_to=5
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=13
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=74
+ connect_to=10
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=13
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=75
+ connect_to=10
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=13
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=76
+ connect_to=11
+ }
+}
+structureport
+{
+ name=frequency
+ x=2
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=77
+ connect_to=1
+ }
+}
+structureport
+{
+ name=velocity
+ x=4
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=78
+ }
+}
+structureport
+{
+ name=pressed
+ x=6
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=79
+ connect_to=4
+ }
+}
diff --git a/arts/examples/instrument_organ2.arts b/arts/examples/instrument_organ2.arts
new file mode 100644
index 00000000..85fb1271
--- /dev/null
+++ b/arts/examples/instrument_organ2.arts
@@ -0,0 +1,532 @@
+name=instrument_organ2
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=1
+ y=4
+ port=frequency
+ {
+ id=5
+ connect_to=93
+ }
+ port=pos
+ {
+ id=6
+ connect_to=23
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=7
+ x=3
+ y=14
+ port=active
+ {
+ id=8
+ connect_to=95
+ }
+ port=invalue
+ {
+ id=9
+ connect_to=70
+ }
+ port=attack
+ {
+ id=10
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=11
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=12
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=13
+ audio_data=0.30000
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=20
+ connect_to=21
+ connect_to=90
+ connect_to=91
+ }
+ port=done
+ {
+ id=15
+ connect_to=17
+ connect_to=92
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=22
+ x=1
+ y=6
+ port=pos
+ {
+ id=23
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=24
+ connect_to=64
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=25
+ x=5
+ y=2
+ port=invalue1
+ {
+ id=26
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=27
+ audio_data=1.00000
+ }
+ port=outvalue
+ {
+ id=28
+ connect_to=47
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=29
+ x=5
+ y=6
+ port=pos
+ {
+ id=30
+ connect_to=48
+ }
+ port=outvalue
+ {
+ id=31
+ connect_to=65
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=32
+ x=9
+ y=2
+ port=invalue1
+ {
+ id=33
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=34
+ audio_data=8.00000
+ }
+ port=outvalue
+ {
+ id=35
+ connect_to=50
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=36
+ x=9
+ y=6
+ port=pos
+ {
+ id=37
+ connect_to=51
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=57
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=39
+ x=13
+ y=6
+ port=pos
+ {
+ id=40
+ connect_to=54
+ }
+ port=outvalue
+ {
+ id=41
+ connect_to=61
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=42
+ x=13
+ y=2
+ port=invalue1
+ {
+ id=43
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=44
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=45
+ connect_to=53
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=46
+ x=5
+ y=4
+ port=frequency
+ {
+ id=47
+ connect_to=28
+ }
+ port=pos
+ {
+ id=48
+ connect_to=30
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=49
+ x=9
+ y=4
+ port=frequency
+ {
+ id=50
+ connect_to=35
+ }
+ port=pos
+ {
+ id=51
+ connect_to=37
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=52
+ x=13
+ y=4
+ port=frequency
+ {
+ id=53
+ connect_to=45
+ }
+ port=pos
+ {
+ id=54
+ connect_to=40
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=55
+ x=5
+ y=10
+ port=invalue1
+ {
+ id=56
+ connect_to=66
+ }
+ port=invalue2
+ {
+ id=57
+ connect_to=38
+ }
+ port=outvalue
+ {
+ id=58
+ connect_to=60
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=59
+ x=9
+ y=11
+ port=invalue1
+ {
+ id=60
+ connect_to=58
+ }
+ port=invalue2
+ {
+ id=61
+ connect_to=41
+ }
+ port=outvalue
+ {
+ id=62
+ connect_to=86
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=63
+ x=1
+ y=9
+ port=invalue1
+ {
+ id=64
+ connect_to=24
+ }
+ port=invalue2
+ {
+ id=65
+ connect_to=31
+ }
+ port=outvalue
+ {
+ id=66
+ connect_to=56
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=67
+ x=13
+ y=13
+ port=invalue1
+ {
+ id=68
+ connect_to=74
+ }
+ port=invalue2
+ {
+ id=69
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=70
+ connect_to=9
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=71
+ x=13
+ y=11
+ port=invalue
+ {
+ id=72
+ connect_to=88
+ }
+ port=frequency
+ {
+ id=73
+ audio_data=5000.00000
+ }
+ port=outvalue
+ {
+ id=74
+ connect_to=68
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=75
+ x=17
+ y=2
+ port=invalue1
+ {
+ id=76
+ connect_to=93
+ }
+ port=invalue2
+ {
+ id=77
+ audio_data=4.00000
+ }
+ port=outvalue
+ {
+ id=78
+ connect_to=80
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=79
+ x=17
+ y=4
+ port=frequency
+ {
+ id=80
+ connect_to=78
+ }
+ port=pos
+ {
+ id=81
+ connect_to=83
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=82
+ x=17
+ y=6
+ port=pos
+ {
+ id=83
+ connect_to=81
+ }
+ port=outvalue
+ {
+ id=84
+ connect_to=87
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=85
+ x=17
+ y=9
+ port=invalue1
+ {
+ id=86
+ connect_to=62
+ }
+ port=invalue2
+ {
+ id=87
+ connect_to=84
+ }
+ port=outvalue
+ {
+ id=88
+ connect_to=72
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=16
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=90
+ connect_to=14
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=16
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=91
+ connect_to=14
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=16
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=92
+ connect_to=15
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=93
+ connect_to=5
+ connect_to=26
+ connect_to=33
+ connect_to=43
+ connect_to=76
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=94
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=95
+ connect_to=8
+ }
+}
diff --git a/arts/examples/instrument_simple_sin.arts b/arts/examples/instrument_simple_sin.arts
new file mode 100644
index 00000000..e2725a8f
--- /dev/null
+++ b/arts/examples/instrument_simple_sin.arts
@@ -0,0 +1,190 @@
+name=instrument_simple_sin
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=1
+ y=2
+ port=frequency
+ {
+ id=5
+ connect_to=29
+ }
+ port=pos
+ {
+ id=6
+ connect_to=8
+ }
+}
+module=Arts::Synth_WAVE_SIN
+{
+ id=7
+ x=2
+ y=3
+ port=pos
+ {
+ id=8
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=9
+ connect_to=12
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=10
+ x=2
+ y=5
+ port=active
+ {
+ id=11
+ connect_to=31
+ }
+ port=invalue
+ {
+ id=12
+ connect_to=9
+ }
+ port=attack
+ {
+ id=13
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=14
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=15
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=16
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=17
+ connect_to=23
+ connect_to=24
+ connect_to=26
+ connect_to=27
+ }
+ port=done
+ {
+ id=18
+ connect_to=20
+ connect_to=28
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=7
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=26
+ connect_to=17
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=7
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=27
+ connect_to=17
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=7
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=28
+ connect_to=18
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=29
+ connect_to=5
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=30
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=31
+ connect_to=11
+ }
+}
diff --git a/arts/examples/instrument_simple_square.arts b/arts/examples/instrument_simple_square.arts
new file mode 100644
index 00000000..d82297e3
--- /dev/null
+++ b/arts/examples/instrument_simple_square.arts
@@ -0,0 +1,190 @@
+name=instrument_simple_square
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=1
+ y=2
+ port=frequency
+ {
+ id=5
+ connect_to=29
+ }
+ port=pos
+ {
+ id=6
+ connect_to=23
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=7
+ x=3
+ y=6
+ port=active
+ {
+ id=8
+ connect_to=31
+ }
+ port=invalue
+ {
+ id=9
+ connect_to=24
+ }
+ port=attack
+ {
+ id=10
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=11
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=12
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=13
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=20
+ connect_to=21
+ connect_to=26
+ connect_to=27
+ }
+ port=done
+ {
+ id=15
+ connect_to=17
+ connect_to=28
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=22
+ x=1
+ y=4
+ port=pos
+ {
+ id=23
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=24
+ connect_to=9
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=8
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=26
+ connect_to=14
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=8
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=27
+ connect_to=14
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=8
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=28
+ connect_to=15
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=29
+ connect_to=5
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=30
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=31
+ connect_to=8
+ }
+}
diff --git a/arts/examples/instrument_simple_tri.arts b/arts/examples/instrument_simple_tri.arts
new file mode 100644
index 00000000..05453b8b
--- /dev/null
+++ b/arts/examples/instrument_simple_tri.arts
@@ -0,0 +1,304 @@
+name=instrument_simple_tri
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=0
+ y=2
+ port=frequency
+ {
+ id=1
+ connect_to=36
+ }
+ port=pos
+ {
+ id=2
+ connect_to=13
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=3
+ x=4
+ y=9
+ port=active
+ {
+ id=4
+ connect_to=38
+ }
+ port=invalue
+ {
+ id=5
+ connect_to=46
+ }
+ port=attack
+ {
+ id=6
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=7
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=8
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=9
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=10
+ connect_to=33
+ connect_to=34
+ }
+ port=done
+ {
+ id=11
+ connect_to=35
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=12
+ x=1
+ y=3
+ port=pos
+ {
+ id=13
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=26
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=15
+ x=6
+ y=6
+ port=invalue
+ {
+ id=16
+ connect_to=28
+ }
+ port=frequency
+ {
+ id=17
+ audio_data=4000.00000
+ }
+ port=outvalue
+ {
+ id=18
+ connect_to=44
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=19
+ x=9
+ y=3
+ port=pos
+ {
+ id=20
+ connect_to=24
+ }
+ port=outvalue
+ {
+ id=21
+ connect_to=27
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=22
+ x=8
+ y=2
+ port=frequency
+ {
+ id=23
+ connect_to=32
+ }
+ port=pos
+ {
+ id=24
+ connect_to=20
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=25
+ x=5
+ y=5
+ port=invalue1
+ {
+ id=26
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=27
+ connect_to=21
+ }
+ port=outvalue
+ {
+ id=28
+ connect_to=16
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=29
+ x=7
+ y=1
+ port=invalue1
+ {
+ id=30
+ connect_to=36
+ }
+ port=invalue2
+ {
+ id=31
+ audio_data=1.01000
+ }
+ port=outvalue
+ {
+ id=32
+ connect_to=23
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=43
+ x=7
+ y=7
+ port=invalue1
+ {
+ id=44
+ connect_to=18
+ }
+ port=invalue2
+ {
+ id=45
+ audio_data=0.50000
+ }
+ port=outvalue
+ {
+ id=46
+ connect_to=5
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=12
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=33
+ connect_to=10
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=12
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=34
+ connect_to=10
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=12
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=35
+ connect_to=11
+ }
+}
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=36
+ connect_to=1
+ connect_to=30
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=37
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=38
+ connect_to=4
+ }
+}
diff --git a/arts/examples/instrument_slide.arts b/arts/examples/instrument_slide.arts
new file mode 100644
index 00000000..cb2949b0
--- /dev/null
+++ b/arts/examples/instrument_slide.arts
@@ -0,0 +1,464 @@
+name=instrument_slide
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=4
+ y=3
+ port=frequency
+ {
+ id=1
+ connect_to=67
+ }
+ port=pos
+ {
+ id=2
+ connect_to=22
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=3
+ x=12
+ y=3
+ port=active
+ {
+ id=4
+ connect_to=69
+ }
+ port=invalue
+ {
+ id=5
+ connect_to=19
+ }
+ port=attack
+ {
+ id=6
+ audio_data=0.00200
+ }
+ port=decay
+ {
+ id=7
+ audio_data=0.05000
+ }
+ port=sustain
+ {
+ id=8
+ audio_data=0.70000
+ }
+ port=release
+ {
+ id=9
+ audio_data=0.05000
+ }
+ port=outvalue
+ {
+ id=10
+ connect_to=33
+ connect_to=60
+ }
+ port=done
+ {
+ id=11
+ connect_to=70
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=12
+ x=12
+ y=1
+ port=active
+ {
+ id=13
+ connect_to=69
+ }
+ port=invalue
+ {
+ id=14
+ connect_to=68
+ }
+ port=attack
+ {
+ id=15
+ audio_data=0.00200
+ }
+ port=decay
+ {
+ id=16
+ audio_data=2.00000
+ }
+ port=sustain
+ {
+ id=17
+ audio_data=0.00010
+ }
+ port=release
+ {
+ id=18
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=19
+ connect_to=5
+ }
+ port=done
+ {
+ id=20
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=21
+ x=5
+ y=4
+ port=pos
+ {
+ id=22
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=23
+ connect_to=48
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=24
+ x=5
+ y=11
+ port=invalue
+ {
+ id=25
+ connect_to=50
+ }
+ port=frequency
+ {
+ id=26
+ connect_to=66
+ }
+ port=outvalue
+ {
+ id=27
+ connect_to=29
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=28
+ x=6
+ y=12
+ port=invalue1
+ {
+ id=29
+ connect_to=27
+ }
+ port=invalue2
+ {
+ id=30
+ connect_to=62
+ }
+ port=outvalue
+ {
+ id=31
+ connect_to=71
+ connect_to=72
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=32
+ x=11
+ y=5
+ port=invalue1
+ {
+ id=33
+ connect_to=10
+ }
+ port=invalue2
+ {
+ id=34
+ audio_data=2000.00000
+ }
+ port=outvalue
+ {
+ id=35
+ connect_to=65
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=36
+ x=1
+ y=3
+ port=invalue1
+ {
+ id=37
+ connect_to=67
+ }
+ port=invalue2
+ {
+ id=38
+ audio_data=2.01000
+ }
+ port=outvalue
+ {
+ id=39
+ connect_to=41
+ connect_to=64
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=40
+ x=2
+ y=5
+ port=frequency
+ {
+ id=41
+ connect_to=39
+ }
+ port=pos
+ {
+ id=42
+ connect_to=44
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=43
+ x=3
+ y=6
+ port=pos
+ {
+ id=44
+ connect_to=42
+ }
+ port=outvalue
+ {
+ id=45
+ connect_to=47
+ }
+}
+module=Arts::Synth_XFADE
+{
+ id=46
+ x=4
+ y=7
+ port=invalue1
+ {
+ id=47
+ connect_to=45
+ }
+ port=invalue2
+ {
+ id=48
+ connect_to=23
+ }
+ port=percentage
+ {
+ id=49
+ connect_to=58
+ }
+ port=outvalue
+ {
+ id=50
+ connect_to=25
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=51
+ x=7
+ y=3
+ port=invalue1
+ {
+ id=52
+ connect_to=68
+ }
+ port=invalue2
+ {
+ id=53
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=54
+ connect_to=56
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=55
+ x=8
+ y=4
+ port=invalue1
+ {
+ id=56
+ connect_to=54
+ }
+ port=invalue2
+ {
+ id=57
+ audio_data=-1.00000
+ }
+ port=outvalue
+ {
+ id=58
+ connect_to=49
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=59
+ x=11
+ y=7
+ port=invalue1
+ {
+ id=60
+ connect_to=10
+ }
+ port=invalue2
+ {
+ id=61
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=62
+ connect_to=30
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=63
+ x=7
+ y=9
+ port=invalue1
+ {
+ id=64
+ connect_to=39
+ }
+ port=invalue2
+ {
+ id=65
+ connect_to=35
+ }
+ port=outvalue
+ {
+ id=66
+ connect_to=26
+ }
+}
+structureport
+{
+ name=frequency
+ x=5
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=67
+ connect_to=1
+ connect_to=37
+ }
+}
+structureport
+{
+ name=velocity
+ x=6
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=68
+ connect_to=14
+ connect_to=52
+ }
+}
+structureport
+{
+ name=pressed
+ x=7
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=69
+ connect_to=4
+ connect_to=13
+ }
+}
+structureport
+{
+ name=done
+ x=15
+ y=14
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=70
+ connect_to=11
+ }
+}
+structureport
+{
+ name=left
+ x=6
+ y=14
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=71
+ connect_to=31
+ }
+}
+structureport
+{
+ name=right
+ x=8
+ y=14
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=72
+ connect_to=31
+ }
+}
diff --git a/arts/examples/instrument_slide1.arts b/arts/examples/instrument_slide1.arts
new file mode 100644
index 00000000..f540e3fa
--- /dev/null
+++ b/arts/examples/instrument_slide1.arts
@@ -0,0 +1,467 @@
+name=instrument_slide1
+module=Arts::Synth_FREQUENCY
+{
+ id=4
+ x=4
+ y=3
+ port=frequency
+ {
+ id=5
+ connect_to=81
+ }
+ port=pos
+ {
+ id=6
+ connect_to=32
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=9
+ x=12
+ y=3
+ port=active
+ {
+ id=10
+ connect_to=83
+ }
+ port=invalue
+ {
+ id=11
+ connect_to=29
+ }
+ port=attack
+ {
+ id=12
+ audio_data=0.00200
+ }
+ port=decay
+ {
+ id=13
+ audio_data=0.05000
+ }
+ port=sustain
+ {
+ id=14
+ audio_data=0.70000
+ }
+ port=release
+ {
+ id=15
+ audio_data=0.05000
+ }
+ port=outvalue
+ {
+ id=16
+ connect_to=43
+ connect_to=70
+ }
+ port=done
+ {
+ id=17
+ connect_to=8
+ connect_to=80
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=22
+ x=12
+ y=1
+ port=active
+ {
+ id=23
+ connect_to=83
+ }
+ port=invalue
+ {
+ id=24
+ connect_to=82
+ }
+ port=attack
+ {
+ id=25
+ audio_data=0.00200
+ }
+ port=decay
+ {
+ id=26
+ audio_data=2.00000
+ }
+ port=sustain
+ {
+ id=27
+ audio_data=0.00010
+ }
+ port=release
+ {
+ id=28
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=29
+ connect_to=11
+ }
+ port=done
+ {
+ id=30
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=31
+ x=5
+ y=4
+ port=pos
+ {
+ id=32
+ connect_to=6
+ }
+ port=outvalue
+ {
+ id=33
+ connect_to=58
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=34
+ x=5
+ y=11
+ port=invalue
+ {
+ id=35
+ connect_to=60
+ }
+ port=frequency
+ {
+ id=36
+ connect_to=76
+ }
+ port=outvalue
+ {
+ id=37
+ connect_to=39
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=38
+ x=6
+ y=12
+ port=invalue1
+ {
+ id=39
+ connect_to=37
+ }
+ port=invalue2
+ {
+ id=40
+ connect_to=72
+ }
+ port=outvalue
+ {
+ id=41
+ connect_to=20
+ connect_to=21
+ connect_to=78
+ connect_to=79
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=42
+ x=11
+ y=5
+ port=invalue1
+ {
+ id=43
+ connect_to=16
+ }
+ port=invalue2
+ {
+ id=44
+ audio_data=2000.00000
+ }
+ port=outvalue
+ {
+ id=45
+ connect_to=75
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=46
+ x=1
+ y=3
+ port=invalue1
+ {
+ id=47
+ connect_to=81
+ }
+ port=invalue2
+ {
+ id=48
+ audio_data=2.01000
+ }
+ port=outvalue
+ {
+ id=49
+ connect_to=51
+ connect_to=74
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=50
+ x=2
+ y=5
+ port=frequency
+ {
+ id=51
+ connect_to=49
+ }
+ port=pos
+ {
+ id=52
+ connect_to=54
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=53
+ x=3
+ y=6
+ port=pos
+ {
+ id=54
+ connect_to=52
+ }
+ port=outvalue
+ {
+ id=55
+ connect_to=57
+ }
+}
+module=Arts::Synth_XFADE
+{
+ id=56
+ x=4
+ y=7
+ port=invalue1
+ {
+ id=57
+ connect_to=55
+ }
+ port=invalue2
+ {
+ id=58
+ connect_to=33
+ }
+ port=percentage
+ {
+ id=59
+ connect_to=68
+ }
+ port=outvalue
+ {
+ id=60
+ connect_to=35
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=61
+ x=7
+ y=3
+ port=invalue1
+ {
+ id=62
+ connect_to=82
+ }
+ port=invalue2
+ {
+ id=63
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=64
+ connect_to=66
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=65
+ x=8
+ y=4
+ port=invalue1
+ {
+ id=66
+ connect_to=64
+ }
+ port=invalue2
+ {
+ id=67
+ audio_data=-1.00000
+ }
+ port=outvalue
+ {
+ id=68
+ connect_to=59
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=69
+ x=11
+ y=7
+ port=invalue1
+ {
+ id=70
+ connect_to=16
+ }
+ port=invalue2
+ {
+ id=71
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=72
+ connect_to=40
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=73
+ x=7
+ y=9
+ port=invalue1
+ {
+ id=74
+ connect_to=49
+ }
+ port=invalue2
+ {
+ id=75
+ connect_to=45
+ }
+ port=outvalue
+ {
+ id=76
+ connect_to=36
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=14
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=78
+ connect_to=41
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=14
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=79
+ connect_to=41
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=14
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=80
+ connect_to=17
+ }
+}
+structureport
+{
+ name=frequency
+ x=0
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=81
+ connect_to=47
+ connect_to=5
+ }
+}
+structureport
+{
+ name=velocity
+ x=2
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=82
+ connect_to=62
+ connect_to=24
+ }
+}
+structureport
+{
+ name=pressed
+ x=4
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=83
+ connect_to=23
+ connect_to=10
+ }
+}
diff --git a/arts/examples/instrument_square.arts b/arts/examples/instrument_square.arts
new file mode 100644
index 00000000..13d1e6ed
--- /dev/null
+++ b/arts/examples/instrument_square.arts
@@ -0,0 +1,465 @@
+name=instrument_square
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=2
+ port=frequency
+ {
+ id=1
+ connect_to=63
+ }
+ port=pos
+ {
+ id=2
+ connect_to=13
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=3
+ x=0
+ y=9
+ port=active
+ {
+ id=4
+ connect_to=65
+ }
+ port=invalue
+ {
+ id=5
+ connect_to=76
+ }
+ port=attack
+ {
+ id=6
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=7
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=8
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=9
+ audio_data=0.30000
+ }
+ port=outvalue
+ {
+ id=10
+ connect_to=66
+ connect_to=67
+ }
+ port=done
+ {
+ id=11
+ connect_to=68
+ }
+}
+module=Arts::Synth_WAVE_SQUARE
+{
+ id=12
+ x=1
+ y=4
+ port=pos
+ {
+ id=13
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=16
+ connect_to=21
+ connect_to=28
+ connect_to=52
+ connect_to=56
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=15
+ x=6
+ y=6
+ port=invalue1
+ {
+ id=16
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=17
+ connect_to=38
+ }
+ port=outvalue
+ {
+ id=18
+ connect_to=24
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=19
+ x=15
+ y=6
+ port=invalue1
+ {
+ id=20
+ connect_to=26
+ }
+ port=invalue2
+ {
+ id=21
+ connect_to=14
+ }
+ port=outvalue
+ {
+ id=22
+ connect_to=48
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=23
+ x=10
+ y=6
+ port=invalue1
+ {
+ id=24
+ connect_to=18
+ }
+ port=invalue2
+ {
+ id=25
+ connect_to=42
+ }
+ port=outvalue
+ {
+ id=26
+ connect_to=20
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=27
+ x=6
+ y=2
+ port=invalue1
+ {
+ id=28
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=29
+ audio_data=2.00000
+ }
+ port=outvalue
+ {
+ id=30
+ connect_to=32
+ connect_to=36
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=31
+ x=10
+ y=2
+ port=invalue1
+ {
+ id=32
+ connect_to=30
+ }
+ port=invalue2
+ {
+ id=33
+ audio_data=16.00000
+ }
+ port=outvalue
+ {
+ id=34
+ connect_to=40
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=35
+ x=6
+ y=4
+ port=invalue
+ {
+ id=36
+ connect_to=30
+ }
+ port=frequency
+ {
+ id=37
+ audio_data=6000.00000
+ }
+ port=outvalue
+ {
+ id=38
+ connect_to=17
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=39
+ x=10
+ y=4
+ port=invalue
+ {
+ id=40
+ connect_to=34
+ }
+ port=frequency
+ {
+ id=41
+ audio_data=2000.00000
+ }
+ port=outvalue
+ {
+ id=42
+ connect_to=25
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=43
+ x=12
+ y=9
+ port=invalue
+ {
+ id=44
+ connect_to=54
+ }
+ port=frequency
+ {
+ id=45
+ audio_data=8000.00000
+ }
+ port=outvalue
+ {
+ id=46
+ connect_to=60
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=47
+ x=16
+ y=7
+ port=invalue1
+ {
+ id=48
+ connect_to=22
+ }
+ port=invalue2
+ {
+ id=49
+ audio_data=0.10000
+ }
+ port=outvalue
+ {
+ id=50
+ connect_to=53
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=51
+ x=16
+ y=9
+ port=invalue1
+ {
+ id=52
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=53
+ connect_to=50
+ }
+ port=outvalue
+ {
+ id=54
+ connect_to=44
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=55
+ x=8
+ y=11
+ port=invalue1
+ {
+ id=56
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=57
+ connect_to=62
+ }
+ port=outvalue
+ {
+ id=58
+ connect_to=75
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=59
+ x=8
+ y=9
+ port=invalue1
+ {
+ id=60
+ connect_to=46
+ }
+ port=invalue2
+ {
+ id=61
+ audio_data=0.50000
+ }
+ port=outvalue
+ {
+ id=62
+ connect_to=57
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=73
+ x=0
+ y=7
+ port=invalue1
+ {
+ id=74
+ audio_data=0.30000
+ }
+ port=invalue2
+ {
+ id=75
+ connect_to=58
+ }
+ port=outvalue
+ {
+ id=76
+ connect_to=5
+ }
+}
+structureport
+{
+ name=frequency
+ x=2
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=63
+ connect_to=1
+ }
+}
+structureport
+{
+ name=velocity
+ x=4
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=64
+ }
+}
+structureport
+{
+ name=pressed
+ x=1
+ y=8
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=65
+ connect_to=4
+ }
+}
+structureport
+{
+ name=left
+ x=2
+ y=11
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=66
+ connect_to=10
+ }
+}
+structureport
+{
+ name=right
+ x=4
+ y=11
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=67
+ connect_to=10
+ }
+}
+structureport
+{
+ name=done
+ x=6
+ y=11
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=68
+ connect_to=11
+ }
+}
diff --git a/arts/examples/instrument_tri.arts b/arts/examples/instrument_tri.arts
new file mode 100644
index 00000000..2d5795a9
--- /dev/null
+++ b/arts/examples/instrument_tri.arts
@@ -0,0 +1,348 @@
+name=instrument_tri
+module=Arts::Synth_FREQUENCY
+{
+ id=0
+ x=1
+ y=2
+ port=frequency
+ {
+ id=1
+ connect_to=44
+ }
+ port=pos
+ {
+ id=2
+ connect_to=13
+ }
+}
+module=Arts::Synth_ENVELOPE_ADSR
+{
+ id=3
+ x=3
+ y=10
+ port=active
+ {
+ id=4
+ connect_to=46
+ }
+ port=invalue
+ {
+ id=5
+ connect_to=54
+ }
+ port=attack
+ {
+ id=6
+ audio_data=0.03000
+ }
+ port=decay
+ {
+ id=7
+ audio_data=0.10000
+ }
+ port=sustain
+ {
+ id=8
+ audio_data=0.60000
+ }
+ port=release
+ {
+ id=9
+ audio_data=0.20000
+ }
+ port=outvalue
+ {
+ id=10
+ connect_to=41
+ connect_to=42
+ }
+ port=done
+ {
+ id=11
+ connect_to=43
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=12
+ x=2
+ y=3
+ port=pos
+ {
+ id=13
+ connect_to=2
+ }
+ port=outvalue
+ {
+ id=14
+ connect_to=26
+ }
+}
+module=Arts::Synth_SHELVE_CUTOFF
+{
+ id=15
+ x=6
+ y=7
+ port=invalue
+ {
+ id=16
+ connect_to=28
+ }
+ port=frequency
+ {
+ id=17
+ connect_to=36
+ }
+ port=outvalue
+ {
+ id=18
+ connect_to=53
+ }
+}
+module=Arts::Synth_WAVE_TRI
+{
+ id=19
+ x=9
+ y=4
+ port=pos
+ {
+ id=20
+ connect_to=24
+ }
+ port=outvalue
+ {
+ id=21
+ connect_to=27
+ }
+}
+module=Arts::Synth_FREQUENCY
+{
+ id=22
+ x=8
+ y=3
+ port=frequency
+ {
+ id=23
+ connect_to=32
+ }
+ port=pos
+ {
+ id=24
+ connect_to=20
+ }
+}
+module=Arts::Synth_ADD
+{
+ id=25
+ x=6
+ y=5
+ port=invalue1
+ {
+ id=26
+ connect_to=14
+ }
+ port=invalue2
+ {
+ id=27
+ connect_to=21
+ }
+ port=outvalue
+ {
+ id=28
+ connect_to=16
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=29
+ x=7
+ y=1
+ port=invalue1
+ {
+ id=30
+ connect_to=44
+ }
+ port=invalue2
+ {
+ id=31
+ audio_data=1.01000
+ }
+ port=outvalue
+ {
+ id=32
+ connect_to=23
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=33
+ x=0
+ y=7
+ port=invalue1
+ {
+ id=34
+ connect_to=44
+ }
+ port=invalue2
+ {
+ id=35
+ connect_to=40
+ }
+ port=outvalue
+ {
+ id=36
+ connect_to=17
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=37
+ x=1
+ y=5
+ port=invalue1
+ {
+ id=38
+ audio_data=6.00000
+ }
+ port=invalue2
+ {
+ id=39
+ connect_to=45
+ }
+ port=outvalue
+ {
+ id=40
+ connect_to=35
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=51
+ x=6
+ y=8
+ port=invalue1
+ {
+ id=52
+ audio_data=0.50000
+ }
+ port=invalue2
+ {
+ id=53
+ connect_to=18
+ }
+ port=outvalue
+ {
+ id=54
+ connect_to=5
+ }
+}
+structureport
+{
+ name=left
+ x=2
+ y=12
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=41
+ connect_to=10
+ }
+}
+structureport
+{
+ name=right
+ x=4
+ y=12
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=42
+ connect_to=10
+ }
+}
+structureport
+{
+ name=done
+ x=6
+ y=12
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=43
+ connect_to=11
+ }
+}
+structureport
+{
+ name=frequency
+ x=2
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=44
+ connect_to=1
+ connect_to=30
+ connect_to=34
+ }
+}
+structureport
+{
+ name=velocity
+ x=4
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=45
+ connect_to=39
+ }
+}
+structureport
+{
+ name=pressed
+ x=6
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=46
+ connect_to=4
+ }
+}
diff --git a/arts/examples/mixer_element_eq.arts b/arts/examples/mixer_element_eq.arts
new file mode 100644
index 00000000..6123bb24
--- /dev/null
+++ b/arts/examples/mixer_element_eq.arts
@@ -0,0 +1,567 @@
+name=mixer_element_eq
+module=Arts::Widget
+{
+ id=0
+ x=6
+ y=1
+ port=widgetID
+ {
+ id=1
+ }
+ port=parent
+ {
+ id=2
+ }
+ port=x
+ {
+ id=3
+ }
+ port=y
+ {
+ id=4
+ }
+ port=width
+ {
+ id=5
+ }
+ port=height
+ {
+ id=6
+ }
+ port=visible
+ {
+ id=7
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+}
+module=Arts::Poti
+{
+ id=8
+ x=0
+ y=3
+ port=widgetID
+ {
+ id=9
+ }
+ port=x
+ {
+ id=11
+ }
+ port=y
+ {
+ id=12
+ }
+ port=width
+ {
+ id=13
+ }
+ port=height
+ {
+ id=14
+ }
+ port=visible
+ {
+ id=15
+ }
+ port=text
+ {
+ id=16
+ string_data=VOLUME
+ }
+ port=color
+ {
+ id=17
+ string_data=red
+ }
+ port=min
+ {
+ id=18
+ audio_data=0.00000
+ }
+ port=max
+ {
+ id=19
+ audio_data=1.00000
+ }
+ port=value
+ {
+ id=20
+ }
+}
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=21
+ x=8
+ y=4
+ port=busname
+ {
+ id=22
+ connect_to=119
+ }
+ port=left
+ {
+ id=23
+ connect_to=30
+ }
+ port=right
+ {
+ id=24
+ connect_to=34
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=25
+ x=1
+ y=21
+ port=busname
+ {
+ id=26
+ connect_to=118
+ }
+ port=left
+ {
+ id=27
+ connect_to=44
+ }
+ port=right
+ {
+ id=28
+ connect_to=52
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=29
+ x=0
+ y=7
+ port=invalue1
+ {
+ id=30
+ connect_to=23
+ }
+ port=invalue2
+ {
+ id=31
+ }
+ port=outvalue
+ {
+ id=32
+ connect_to=43
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=33
+ x=6
+ y=7
+ port=invalue1
+ {
+ id=34
+ connect_to=24
+ }
+ port=invalue2
+ {
+ id=35
+ }
+ port=outvalue
+ {
+ id=36
+ connect_to=51
+ }
+}
+module=Arts::Synth_STD_EQUALIZER
+{
+ id=37
+ x=0
+ y=17
+ port=low
+ {
+ id=38
+ }
+ port=mid
+ {
+ id=39
+ }
+ port=high
+ {
+ id=40
+ }
+ port=frequency
+ {
+ id=41
+ }
+ port=q
+ {
+ id=42
+ }
+ port=invalue
+ {
+ id=43
+ connect_to=32
+ }
+ port=outvalue
+ {
+ id=44
+ connect_to=27
+ }
+}
+module=Arts::Synth_STD_EQUALIZER
+{
+ id=45
+ x=7
+ y=17
+ port=low
+ {
+ id=46
+ }
+ port=mid
+ {
+ id=47
+ }
+ port=high
+ {
+ id=48
+ }
+ port=frequency
+ {
+ id=49
+ }
+ port=q
+ {
+ id=50
+ }
+ port=invalue
+ {
+ id=51
+ connect_to=36
+ }
+ port=outvalue
+ {
+ id=52
+ connect_to=28
+ }
+}
+module=Arts::Poti
+{
+ id=53
+ x=14
+ y=9
+ port=widgetID
+ {
+ id=54
+ }
+ port=x
+ {
+ id=56
+ }
+ port=y
+ {
+ id=57
+ }
+ port=width
+ {
+ id=58
+ }
+ port=height
+ {
+ id=59
+ }
+ port=visible
+ {
+ id=60
+ }
+ port=text
+ {
+ id=61
+ string_data=MID
+ }
+ port=color
+ {
+ id=62
+ string_data=darkblue
+ }
+ port=min
+ {
+ id=63
+ audio_data=-24.00000
+ }
+ port=max
+ {
+ id=64
+ audio_data=24.00000
+ }
+ port=value
+ {
+ id=65
+ }
+}
+module=Arts::Poti
+{
+ id=66
+ x=14
+ y=11
+ port=widgetID
+ {
+ id=67
+ }
+ port=x
+ {
+ id=69
+ }
+ port=y
+ {
+ id=70
+ }
+ port=width
+ {
+ id=71
+ }
+ port=height
+ {
+ id=72
+ }
+ port=visible
+ {
+ id=73
+ }
+ port=text
+ {
+ id=74
+ string_data=HIGH
+ }
+ port=color
+ {
+ id=75
+ string_data=darkblue
+ }
+ port=min
+ {
+ id=76
+ audio_data=-24.00000
+ }
+ port=max
+ {
+ id=77
+ audio_data=24.00000
+ }
+ port=value
+ {
+ id=78
+ }
+}
+module=Arts::Poti
+{
+ id=79
+ x=14
+ y=7
+ port=widgetID
+ {
+ id=80
+ }
+ port=x
+ {
+ id=82
+ }
+ port=y
+ {
+ id=83
+ }
+ port=width
+ {
+ id=84
+ }
+ port=height
+ {
+ id=85
+ }
+ port=visible
+ {
+ id=86
+ }
+ port=text
+ {
+ id=87
+ string_data=LOW
+ }
+ port=color
+ {
+ id=88
+ string_data=darkblue
+ }
+ port=min
+ {
+ id=89
+ audio_data=-24.00000
+ }
+ port=max
+ {
+ id=90
+ audio_data=24.00000
+ }
+ port=value
+ {
+ id=91
+ }
+}
+module=Arts::Poti
+{
+ id=92
+ x=14
+ y=13
+ port=widgetID
+ {
+ id=93
+ }
+ port=x
+ {
+ id=95
+ }
+ port=y
+ {
+ id=96
+ }
+ port=width
+ {
+ id=97
+ }
+ port=height
+ {
+ id=98
+ }
+ port=visible
+ {
+ id=99
+ }
+ port=text
+ {
+ id=100
+ string_data=FREQUENCY
+ }
+ port=color
+ {
+ id=101
+ string_data=darkgreen
+ }
+ port=min
+ {
+ id=102
+ audio_data=1.00000
+ }
+ port=max
+ {
+ id=103
+ audio_data=5000.00000
+ }
+ port=value
+ {
+ id=104
+ }
+}
+module=Arts::Poti
+{
+ id=105
+ x=14
+ y=15
+ port=widgetID
+ {
+ id=106
+ }
+ port=x
+ {
+ id=108
+ }
+ port=y
+ {
+ id=109
+ }
+ port=width
+ {
+ id=110
+ }
+ port=height
+ {
+ id=111
+ }
+ port=visible
+ {
+ id=112
+ }
+ port=text
+ {
+ id=113
+ string_data=Q
+ }
+ port=color
+ {
+ id=114
+ string_data=darkgreen
+ }
+ port=min
+ {
+ id=115
+ audio_data=0.10000
+ }
+ port=max
+ {
+ id=116
+ audio_data=2.00000
+ }
+ port=value
+ {
+ id=117
+ }
+}
+structureport
+{
+ name=output
+ x=4
+ y=20
+ position=2
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=118
+ connect_to=26
+ }
+}
+structureport
+{
+ name=input
+ x=13
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=119
+ connect_to=22
+ }
+}
+structureport
+{
+ name=parent
+ x=7
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=120
+ }
+}
diff --git a/arts/examples/mixer_element_eqfx.arts b/arts/examples/mixer_element_eqfx.arts
new file mode 100644
index 00000000..b7248fcb
--- /dev/null
+++ b/arts/examples/mixer_element_eqfx.arts
@@ -0,0 +1,740 @@
+name=mixer_element_eqfx
+module=Gui_SUB_PANEL
+{
+ id=147
+ x=6
+ y=1
+ port=parent
+ {
+ id=148
+ connect_to=279
+ }
+ port=x
+ {
+ id=149
+ audio_data=0.00000
+ }
+ port=y
+ {
+ id=150
+ audio_data=0.00000
+ }
+ port=width
+ {
+ id=151
+ audio_data=6.50000
+ }
+ port=height
+ {
+ id=152
+ audio_data=32.00000
+ }
+ port=pixmap
+ {
+ id=153
+ string_data=easyblue
+ }
+ port=id
+ {
+ id=154
+ connect_to=156
+ connect_to=183
+ connect_to=206
+ connect_to=216
+ connect_to=226
+ connect_to=236
+ connect_to=246
+ connect_to=256
+ }
+}
+module=Gui_POTI
+{
+ id=155
+ x=0
+ y=3
+ port=parent
+ {
+ id=156
+ connect_to=154
+ }
+ port=x
+ {
+ id=157
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=158
+ audio_data=2.00000
+ }
+ port=color
+ {
+ id=159
+ string_data=red
+ }
+ port=caption
+ {
+ id=160
+ string_data=VOLUME
+ }
+ port=min
+ {
+ id=161
+ audio_data=0.00000
+ }
+ port=max
+ {
+ id=162
+ audio_data=1.00000
+ }
+ port=initial
+ {
+ id=163
+ audio_data=1.00000
+ }
+ port=value
+ {
+ id=164
+ connect_to=176
+ connect_to=180
+ }
+}
+module=Synth_BUS_DOWNLINK
+{
+ id=165
+ x=8
+ y=4
+ port=clients
+ {
+ id=166
+ audio_data=1.00000
+ }
+ port=busname
+ {
+ id=167
+ connect_to=278
+ }
+ port=left
+ {
+ id=168
+ connect_to=175
+ }
+ port=right
+ {
+ id=169
+ connect_to=179
+ }
+}
+module=Synth_BUS_UPLINK
+{
+ id=170
+ x=1
+ y=21
+ port=left
+ {
+ id=171
+ connect_to=196
+ }
+ port=right
+ {
+ id=172
+ connect_to=204
+ }
+ port=busname
+ {
+ id=173
+ connect_to=277
+ }
+}
+module=Synth_MUL
+{
+ id=174
+ x=0
+ y=7
+ port=invalue
+ {
+ id=175
+ connect_to=168
+ }
+ port=faktor
+ {
+ id=176
+ connect_to=164
+ }
+ port=outvalue
+ {
+ id=177
+ connect_to=190
+ }
+}
+module=Synth_MUL
+{
+ id=178
+ x=6
+ y=7
+ port=invalue
+ {
+ id=179
+ connect_to=169
+ }
+ port=faktor
+ {
+ id=180
+ connect_to=164
+ }
+ port=outvalue
+ {
+ id=181
+ connect_to=198
+ }
+}
+module=Gui_LABEL
+{
+ id=182
+ x=13
+ y=4
+ port=parent
+ {
+ id=183
+ connect_to=154
+ }
+ port=x
+ {
+ id=184
+ audio_data=0.00000
+ }
+ port=y
+ {
+ id=185
+ audio_data=0.00000
+ }
+ port=color
+ {
+ id=186
+ string_data=#fff7a3
+ }
+ port=caption
+ {
+ id=187
+ connect_to=278
+ }
+ port=pixmap
+ {
+ id=188
+ string_data=easylabel
+ }
+}
+module=Synth_STD_EQUALIZER
+{
+ id=189
+ x=0
+ y=17
+ port=invalue
+ {
+ id=190
+ connect_to=177
+ }
+ port=low
+ {
+ id=191
+ connect_to=234
+ }
+ port=mid
+ {
+ id=192
+ connect_to=214
+ }
+ port=high
+ {
+ id=193
+ connect_to=224
+ }
+ port=frequency
+ {
+ id=194
+ connect_to=244
+ }
+ port=q
+ {
+ id=195
+ connect_to=254
+ }
+ port=outvalue
+ {
+ id=196
+ connect_to=171
+ connect_to=270
+ }
+}
+module=Synth_STD_EQUALIZER
+{
+ id=197
+ x=7
+ y=17
+ port=invalue
+ {
+ id=198
+ connect_to=181
+ }
+ port=low
+ {
+ id=199
+ connect_to=234
+ }
+ port=mid
+ {
+ id=200
+ connect_to=214
+ }
+ port=high
+ {
+ id=201
+ connect_to=224
+ }
+ port=frequency
+ {
+ id=202
+ connect_to=244
+ }
+ port=q
+ {
+ id=203
+ connect_to=254
+ }
+ port=outvalue
+ {
+ id=204
+ connect_to=172
+ connect_to=274
+ }
+}
+module=Gui_POTI
+{
+ id=205
+ x=14
+ y=9
+ port=parent
+ {
+ id=206
+ connect_to=154
+ }
+ port=x
+ {
+ id=207
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=208
+ audio_data=10.00000
+ }
+ port=color
+ {
+ id=209
+ string_data=darkblue
+ }
+ port=caption
+ {
+ id=210
+ string_data=MID
+ }
+ port=min
+ {
+ id=211
+ audio_data=-24.00000
+ }
+ port=max
+ {
+ id=212
+ audio_data=24.00000
+ }
+ port=initial
+ {
+ id=213
+ audio_data=0.00000
+ }
+ port=value
+ {
+ id=214
+ connect_to=192
+ connect_to=200
+ }
+}
+module=Gui_POTI
+{
+ id=215
+ x=14
+ y=11
+ port=parent
+ {
+ id=216
+ connect_to=154
+ }
+ port=x
+ {
+ id=217
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=218
+ audio_data=14.00000
+ }
+ port=color
+ {
+ id=219
+ string_data=darkblue
+ }
+ port=caption
+ {
+ id=220
+ string_data=HIGH
+ }
+ port=min
+ {
+ id=221
+ audio_data=-24.00000
+ }
+ port=max
+ {
+ id=222
+ audio_data=24.00000
+ }
+ port=initial
+ {
+ id=223
+ audio_data=0.00000
+ }
+ port=value
+ {
+ id=224
+ connect_to=193
+ connect_to=201
+ }
+}
+module=Gui_POTI
+{
+ id=225
+ x=14
+ y=7
+ port=parent
+ {
+ id=226
+ connect_to=154
+ }
+ port=x
+ {
+ id=227
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=228
+ audio_data=6.00000
+ }
+ port=color
+ {
+ id=229
+ string_data=darkblue
+ }
+ port=caption
+ {
+ id=230
+ string_data=LOW
+ }
+ port=min
+ {
+ id=231
+ audio_data=-24.00000
+ }
+ port=max
+ {
+ id=232
+ audio_data=24.00000
+ }
+ port=initial
+ {
+ id=233
+ audio_data=0.00000
+ }
+ port=value
+ {
+ id=234
+ connect_to=191
+ connect_to=199
+ }
+}
+module=Gui_POTI
+{
+ id=235
+ x=14
+ y=13
+ port=parent
+ {
+ id=236
+ connect_to=154
+ }
+ port=x
+ {
+ id=237
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=238
+ audio_data=18.00000
+ }
+ port=color
+ {
+ id=239
+ string_data=darkgreen
+ }
+ port=caption
+ {
+ id=240
+ string_data=FREQUENCY
+ }
+ port=min
+ {
+ id=241
+ audio_data=1.00000
+ }
+ port=max
+ {
+ id=242
+ audio_data=5000.00000
+ }
+ port=initial
+ {
+ id=243
+ audio_data=1000.00000
+ }
+ port=value
+ {
+ id=244
+ connect_to=194
+ connect_to=202
+ }
+}
+module=Gui_POTI
+{
+ id=245
+ x=14
+ y=15
+ port=parent
+ {
+ id=246
+ connect_to=154
+ }
+ port=x
+ {
+ id=247
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=248
+ audio_data=22.00000
+ }
+ port=color
+ {
+ id=249
+ string_data=darkgreen
+ }
+ port=caption
+ {
+ id=250
+ string_data=Q
+ }
+ port=min
+ {
+ id=251
+ audio_data=0.10000
+ }
+ port=max
+ {
+ id=252
+ audio_data=2.00000
+ }
+ port=initial
+ {
+ id=253
+ audio_data=1.00000
+ }
+ port=value
+ {
+ id=254
+ connect_to=195
+ connect_to=203
+ }
+}
+module=Gui_POTI
+{
+ id=255
+ x=14
+ y=17
+ port=parent
+ {
+ id=256
+ connect_to=154
+ }
+ port=x
+ {
+ id=257
+ audio_data=1.00000
+ }
+ port=y
+ {
+ id=258
+ audio_data=26.00000
+ }
+ port=color
+ {
+ id=259
+ string_data=grey
+ }
+ port=caption
+ {
+ id=260
+ string_data=EFFECT
+ }
+ port=min
+ {
+ id=261
+ audio_data=0.00000
+ }
+ port=max
+ {
+ id=262
+ audio_data=1.00000
+ }
+ port=initial
+ {
+ id=263
+ audio_data=0.00000
+ }
+ port=value
+ {
+ id=264
+ connect_to=271
+ connect_to=275
+ }
+}
+module=Synth_BUS_UPLINK
+{
+ id=265
+ x=12
+ y=22
+ port=left
+ {
+ id=266
+ connect_to=272
+ }
+ port=right
+ {
+ id=267
+ connect_to=276
+ }
+ port=busname
+ {
+ id=268
+ string_data=effect
+ }
+}
+module=Synth_MUL
+{
+ id=269
+ x=9
+ y=20
+ port=invalue
+ {
+ id=270
+ connect_to=196
+ }
+ port=faktor
+ {
+ id=271
+ connect_to=264
+ }
+ port=outvalue
+ {
+ id=272
+ connect_to=266
+ }
+}
+module=Synth_MUL
+{
+ id=273
+ x=12
+ y=20
+ port=invalue
+ {
+ id=274
+ connect_to=204
+ }
+ port=faktor
+ {
+ id=275
+ connect_to=264
+ }
+ port=outvalue
+ {
+ id=276
+ connect_to=267
+ }
+}
+structureport
+{
+ name=output
+ x=4
+ y=20
+ position=2
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=277
+ connect_to=173
+ }
+}
+structureport
+{
+ name=input
+ x=13
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=278
+ connect_to=167
+ connect_to=187
+ }
+}
+structureport
+{
+ name=parent
+ x=7
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=279
+ connect_to=148
+ }
+}
diff --git a/arts/examples/mixer_element_simple.arts b/arts/examples/mixer_element_simple.arts
new file mode 100644
index 00000000..01246090
--- /dev/null
+++ b/arts/examples/mixer_element_simple.arts
@@ -0,0 +1,235 @@
+name=mixer_element_simple
+module=Arts::Widget
+{
+ id=0
+ x=6
+ y=1
+ port=widgetID
+ {
+ id=1
+ }
+ port=parent
+ {
+ id=2
+ }
+ port=x
+ {
+ id=3
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=y
+ {
+ id=4
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=5
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=6
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=7
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+}
+module=Arts::Poti
+{
+ id=8
+ x=0
+ y=3
+ port=widgetID
+ {
+ id=9
+ }
+ port=parent
+ {
+ id=10
+ }
+ port=x
+ {
+ id=11
+ any_data=value:000000056c6f6e67000000000400000064
+ }
+ port=y
+ {
+ id=12
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=13
+ any_data=value:000000056c6f6e67000000000400000032
+ }
+ port=height
+ {
+ id=14
+ any_data=value:000000056c6f6e67000000000400000032
+ }
+ port=visible
+ {
+ id=15
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+ port=text
+ {
+ id=16
+ string_data=VOLUME
+ }
+ port=color
+ {
+ id=17
+ string_data=red
+ }
+ port=min
+ {
+ id=18
+ audio_data=0.00000
+ }
+ port=max
+ {
+ id=19
+ audio_data=1.00000
+ }
+ port=value
+ {
+ id=20
+ audio_data=0.50000
+ }
+}
+module=Arts::Synth_BUS_DOWNLINK
+{
+ id=21
+ x=8
+ y=4
+ port=busname
+ {
+ id=22
+ }
+ port=left
+ {
+ id=23
+ connect_to=30
+ }
+ port=right
+ {
+ id=24
+ connect_to=34
+ }
+}
+module=Arts::Synth_BUS_UPLINK
+{
+ id=25
+ x=1
+ y=10
+ port=busname
+ {
+ id=26
+ }
+ port=left
+ {
+ id=27
+ connect_to=32
+ }
+ port=right
+ {
+ id=28
+ connect_to=36
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=29
+ x=0
+ y=7
+ port=invalue1
+ {
+ id=30
+ connect_to=23
+ }
+ port=invalue2
+ {
+ id=31
+ }
+ port=outvalue
+ {
+ id=32
+ connect_to=27
+ }
+}
+module=Arts::Synth_MUL
+{
+ id=33
+ x=3
+ y=7
+ port=invalue1
+ {
+ id=34
+ connect_to=24
+ }
+ port=invalue2
+ {
+ id=35
+ }
+ port=outvalue
+ {
+ id=36
+ connect_to=28
+ }
+}
+structureport
+{
+ name=output
+ x=13
+ y=10
+ position=2
+ type
+ {
+ direction=input
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=37
+ }
+}
+structureport
+{
+ name=input
+ x=13
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=38
+ }
+}
+structureport
+{
+ name=parent
+ x=7
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=39
+ }
+}
diff --git a/arts/examples/template_Empty_Structure.arts b/arts/examples/template_Empty_Structure.arts
new file mode 100644
index 00000000..c8df90c3
--- /dev/null
+++ b/arts/examples/template_Empty_Structure.arts
@@ -0,0 +1 @@
+name=template_Empty_Structure
diff --git a/arts/examples/template_Instrument.arts b/arts/examples/template_Instrument.arts
new file mode 100644
index 00000000..e555e424
--- /dev/null
+++ b/arts/examples/template_Instrument.arts
@@ -0,0 +1,103 @@
+name=template_Instrument
+structureport
+{
+ name=frequency
+ x=1
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=11
+ }
+}
+structureport
+{
+ name=velocity
+ x=3
+ y=0
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=12
+ }
+}
+structureport
+{
+ name=pressed
+ x=5
+ y=0
+ position=3
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=13
+ }
+}
+structureport
+{
+ name=left
+ x=1
+ y=8
+ position=0
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=14
+ }
+}
+structureport
+{
+ name=right
+ x=3
+ y=8
+ position=1
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=15
+ }
+}
+structureport
+{
+ name=done
+ x=5
+ y=8
+ position=2
+ type
+ {
+ direction=input
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=16
+ }
+}
diff --git a/arts/examples/template_Instrument_GUI.arts b/arts/examples/template_Instrument_GUI.arts
new file mode 100644
index 00000000..67db385e
--- /dev/null
+++ b/arts/examples/template_Instrument_GUI.arts
@@ -0,0 +1,91 @@
+name=template_Instrument_GUI
+module=Arts::Widget
+{
+ id=0
+ x=1
+ y=2
+ port=widgetID
+ {
+ id=1
+ }
+ port=parent
+ {
+ id=2
+ }
+ port=x
+ {
+ id=3
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=y
+ {
+ id=4
+ any_data=value:000000056c6f6e67000000000400000000
+ }
+ port=width
+ {
+ id=5
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=height
+ {
+ id=6
+ any_data=value:000000056c6f6e6700000000040000000a
+ }
+ port=visible
+ {
+ id=7
+ any_data=value:00000008626f6f6c65616e000000000101
+ }
+}
+structureport
+{
+ name=parent
+ x=2
+ y=1
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=8
+ }
+}
+structureport
+{
+ name=x
+ x=3
+ y=1
+ position=1
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=property
+ }
+ data
+ {
+ id=9
+ }
+}
+structureport
+{
+ name=y
+ x=4
+ y=1
+ position=2
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=property
+ }
+ data
+ {
+ id=10
+ }
+}
diff --git a/arts/examples/template_Mixer_Element.arts b/arts/examples/template_Mixer_Element.arts
new file mode 100644
index 00000000..40c3e63c
--- /dev/null
+++ b/arts/examples/template_Mixer_Element.arts
@@ -0,0 +1,176 @@
+name=template_Mixer_Element
+module=Gui_SUB_PANEL
+{
+ id=0
+ x=0
+ y=1
+ port=parent
+ {
+ id=1
+ connect_to=26
+ }
+ port=x
+ {
+ id=2
+ audio_data=0.00000
+ }
+ port=y
+ {
+ id=3
+ audio_data=0.00000
+ }
+ port=width
+ {
+ id=4
+ audio_data=6.50000
+ }
+ port=height
+ {
+ id=5
+ audio_data=7.50000
+ }
+ port=pixmap
+ {
+ id=6
+ string_data=easyblue
+ }
+ port=id
+ {
+ id=7
+ connect_to=18
+ }
+}
+module=Synth_BUS_DOWNLINK
+{
+ id=8
+ x=2
+ y=4
+ port=clients
+ {
+ id=9
+ audio_data=1.00000
+ }
+ port=busname
+ {
+ id=10
+ connect_to=25
+ }
+ port=left
+ {
+ id=11
+ }
+ port=right
+ {
+ id=12
+ }
+}
+module=Synth_BUS_UPLINK
+{
+ id=13
+ x=3
+ y=8
+ port=left
+ {
+ id=14
+ }
+ port=right
+ {
+ id=15
+ }
+ port=busname
+ {
+ id=16
+ connect_to=24
+ }
+}
+module=Gui_LABEL
+{
+ id=17
+ x=6
+ y=4
+ port=parent
+ {
+ id=18
+ connect_to=7
+ }
+ port=x
+ {
+ id=19
+ audio_data=0.00000
+ }
+ port=y
+ {
+ id=20
+ audio_data=0.00000
+ }
+ port=color
+ {
+ id=21
+ string_data=#fff7a3
+ }
+ port=caption
+ {
+ id=22
+ connect_to=25
+ }
+ port=pixmap
+ {
+ id=23
+ string_data=easylabel
+ }
+}
+structureport
+{
+ name=output
+ x=6
+ y=7
+ position=2
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=24
+ connect_to=16
+ }
+}
+structureport
+{
+ name=input
+ x=7
+ y=0
+ position=1
+ type
+ {
+ direction=output
+ datatype=string
+ conntype=property
+ }
+ data
+ {
+ id=25
+ connect_to=10
+ connect_to=22
+ }
+}
+structureport
+{
+ name=parent
+ x=1
+ y=0
+ position=0
+ type
+ {
+ direction=output
+ datatype=audio
+ conntype=stream
+ }
+ data
+ {
+ id=26
+ connect_to=1
+ }
+}