Appendix

Example GEL Keywords

These keywords and interface definitions are put forward as a naming standard for services provided by virtual devices, which are universally used.

Musical

note(pitch, velocity, duration)

volume(integer)

patch(patch_number)
(i
nstrument)

pan(integer)

sustain(integer)

MIDI Controllers

mod_wheel(integer)

controller(control_number, integer)

effects_depth(integer)

all_sounds_off()

local(bool)

omni(bool)

System

connect(device_id, device_id)
(f
or use with a routing matrix)

get_volume():integer

get_patch():name

Misc

stop()

start()

load(filename)

 

Example Files

Input to output, with a transpose modifier

<HEADER>

block(1)= (null, gel, {(K2000, {})})

block(2)= (gel, gel, {(transpose, {value(12)})})

block(3)= (gel, audio, {(K2000, {patch("Grand Piano"), sustain(32)})})

dataflow={(1, {2}), (2, {3}), (3, {})}

</HEADER>

A user-controlled event modifier

<HEADER>

block(1)= (null, gel, {(event_list, {looped(true)})})

block(2)= (gel, gel, {(velocity_fix, {value(0)})})

block(3)= (gel, audio, {(K2000, {patch("Analogue Bass")})})

block(4)= (null, gel, {(main_slider, {value(0)})})

dataflow={(1, {2}), (2, {3}), (3, {}), (4, {2})}

</HEADER>

<DATA>

event_list(1)= ("Tweeting Bird", {(1:1:0, note("C3", 64, 12),

(1:1:47, note("C3", 64, 12),

(1:2:10, note("C3", 64, 12),

...

(7:4:78, note("C3", 64, 12)})

A sound which moves from left to right, controlled with an input slider.

<HEADER>

block(1)= (null, gel, {(event_list, {looped(8:1:0)})})

block(2)= (gel, audio, {(kurzveil_k2000, {patch("bird tweet"), mod_wheel(100)}),

(general_midi, {patch(123)})})

block(3)= (audio, audio, {(alesis_midiverb4, {patch("new"), reverb(67), time(23)}),

(alesis_midiverb, {patch="clean delay")})})

block(4)= (audio, speaker, {(right_king, {volume(64)})}

block(5)= (audio, speaker, {(left_king, {volume(64)})}

block(6)= (gel, gel, {(convert_keyword, {parameters("find=|"value|", replace=|"volume|")})}

block(7)= (gel, gel, {(convert_keyword, {parameters("find=|"value|", replace=|"volume|")})}

block(8)= (gel, gel, {(equate, {parameters("equ=|"127-[value]|"")})}

block(9)= (null, gel, {(main_mixer, {})})

dataflow= (1, {2}), (2, {3}), (3, {4, 5}), (4, {}), (5, {}), (6, {4}), (7, {5}), (8, {7}), (9, {6, 8})}

</HEADER>

<DATA>

event_list(1)= ("Tweeting Bird", {(1:1:0, note("C3", 64, 12),

(1:1:47, note("C3", 64, 12),

(1:2:10, note("C3", 64, 12),

...

(7:4:78, note("C3", 64, 12)})

</DATA>

An example filestore directory structure


This document composed by Adam Buckley (adambuckley@bigfoot.com), last edited on 16-May-2002.