~ubuntu-branches/ubuntu/utopic/glame/utopic

« back to all changes in this revision

Viewing changes to doc/glame.info-2

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2002-04-09 17:14:12 UTC
  • Revision ID: james.westby@ubuntu.com-20020409171412-jzpnov7mbz2w6zsr
Tags: upstream-0.6.2
ImportĀ upstreamĀ versionĀ 0.6.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
This is glame.info, produced by makeinfo version 4.1 from glame.texi.
 
2
 
 
3
INFO-DIR-SECTION Sound
 
4
START-INFO-DIR-ENTRY
 
5
* GLAME: (glame).          GNU/Linux Audio Mechanics-A capable audio editor.
 
6
END-INFO-DIR-ENTRY
 
7
 
 
8
 
 
9
File: glame.info,  Node: Scheme Filter API,  Next: Scheme Swapfile API,  Up: Wrapped API
 
10
 
 
11
Scheme Filter API
 
12
-----------------
 
13
 
 
14
The basic filter subsystem types, `filter_t', `filter_port_t',
 
15
`filter_pipe_t' and `filter_param_t' exist as native scheme types and
 
16
such can be type checked.
 
17
 
 
18
 - Function: ( filter? obj )
 
19
 - Function: ( port? obj )
 
20
 - Function: ( pipe? obj )
 
21
 - Function: ( param? obj )
 
22
     These procedures check `obj' for being of the specified type and
 
23
     evaluate to `#t' if this is the case and `#f' otherwise.
 
24
 
 
25
Out of a filter object you can get information and subobjects using the
 
26
following procedures:
 
27
 
 
28
 - Function: ( filter-name filter )
 
29
 - Function: ( filter-nodes filter )
 
30
 - Function: ( filter-ports filter )
 
31
 - Function: ( filter-params filter )
 
32
     These procedures evaluate to a string containing the filters name
 
33
     or to lists of the specified object type representing the actual
 
34
     subobjects associated with the filter.
 
35
 
 
36
Out of a port object you can get information and subobjects using the
 
37
following procedures:
 
38
 
 
39
 - Function: ( port-label port )
 
40
 - Function: ( port-pipes port )
 
41
 - Function: ( port-params port )
 
42
     These procedures evaluate to a string containing the ports label or
 
43
     to lists of the specified object type representing the actual
 
44
     subobjects associated with the port.
 
45
 
 
46
Out of a param object you can get and modify information using the
 
47
following procedures:
 
48
 
 
49
 - Function: ( param-label param )
 
50
 - Function: ( param-value param )
 
51
 - Function: ( param-set! param value )
 
52
     These procedures evaluate to a string containing the label of the
 
53
     param object, the actual value of the param whose type depends on
 
54
     the param objects type or a boolean denoting the success of a param
 
55
     set command.
 
56
 
 
57
Out of a pipe object you can get information and subobjects using the
 
58
following procedures:
 
59
 
 
60
 - Function: ( pipe-samplerate pipe )
 
61
 - Function: ( pipe-position pipe )
 
62
 - Function: ( pipe-source-params pipe )
 
63
 - Function: ( pipe-dest-params pipe )
 
64
     These procedures evaluate to an exact number containing the
 
65
     samplerate of the data flowing through the pipe, a number
 
66
     containing the position of the audio stream or to lists of the
 
67
     specified object type representing the actual subobjects
 
68
     associated with the pipe.
 
69
 
 
70
Pipe objects can be queried for the actual protocol type using the
 
71
following procedures:
 
72
 
 
73
 - Function: ( pipe-sample? pipe )
 
74
 - Function: ( pipe-fft? pipe )
 
75
 - Function: ( pipe-ssp? pipe )
 
76
     These procedures check `pipe' for being of the specified protocol
 
77
     type and evaluate to `#t' if this is the case and `#f' otherwise.
 
78
 
 
79
Usually you can attach key/value pairs to a per object database. Those
 
80
object properties can be queried and modified using the following
 
81
generic interface:
 
82
 
 
83
 - Function: ( set-property! obj key value )
 
84
 - Function: ( get-property obj key )
 
85
     These procedures evaluate to `#unspecified' or a string object
 
86
     containing the value associated with the specified key or `#f' if
 
87
     this key has no associated value. Note that for both `key' and
 
88
     `value' only string objects are allowed.  Predefined key values
 
89
     are `FILTERPARAM_DESCRIPTION', `FILTERPARAM_GLADEXML' and
 
90
     `FILTERPORT_DESCRIPTION'.
 
91
 
 
92
The following procedures handle object serialization and creation and
 
93
destruction of objects.
 
94
 
 
95
 - Function: ( filter-new [filter|plugin] )
 
96
 - Function: ( filter-delete filter )
 
97
 - Function: ( port-delete port )
 
98
 - Function: ( param-delete param )
 
99
 - Function: ( pipe-delete pipe )
 
100
     `filter-new' constructs a new filter object by either cloning from
 
101
     a filter or a plugin object or creating an empty network from
 
102
     scratch. The delete procedures destruct the specified objects.
 
103
 
 
104
 - Function: ( filter->string filter )
 
105
 - Function: ( param->string param )
 
106
     While the first procedure returns a string containing a scheme
 
107
     expression being able to recreate the filter object, the second
 
108
     procedure just evaluates to a string containing the value of the
 
109
     specified param.
 
110
 
 
111
 - Function: ( filter-add-node filter filter node-name )
 
112
 - Function: ( filter-connect filter port-name filter port-name )
 
113
     `filter-add-node' adds the specified filter (second parameter) to
 
114
     the specified network (first parameter) using the identifier
 
115
     specified as third parameter.  `filter-connect' connects the two
 
116
     specified parameters via the specified ports identified by their
 
117
     port names. `filter-connect' evaluates to a pipe object.
 
118
 
 
119
 - Function: ( filternetwork-add-input filter filter port-name name
 
120
          description )
 
121
 - Function: ( filternetwork-add-output filter filter port-name name
 
122
          description )
 
123
 - Function: ( filternetwork-add-param filter filter param-name name
 
124
          description )
 
125
     Procedures to be used for exporting ports and params to the
 
126
     outside world in a macro filter. The first parameter is the actual
 
127
     network, the second parameter is the node that gets exported from.
 
128
     These procedures evaluate to a port or a param object.
 
129
 
 
130
 - Function: ( glame_create_plugin filter name )
 
131
 - Function: ( glame_plugin_define filter name )
 
132
     `glame_create_plugin' creates and registers a new plugin using the
 
133
     specified name and associate it with the provided filter.
 
134
     Evaluates to a plugin or to `#f' on error.  `glame_plugin_define'
 
135
     is used internally for transparently registering or filter loading.
 
136
 
 
137
 - Function: ( filter-launch filter )
 
138
 - Function: ( filter-start filter )
 
139
 - Function: ( filter-pause filter )
 
140
 - Function: ( filter-wait filter )
 
141
 - Function: ( filter-terminate filter )
 
142
     These procedures handle filter network execution.
 
143
 
 
144
 
 
145
File: glame.info,  Node: Scheme Swapfile API,  Next: Scheme Plugin API,  Prev: Scheme Filter API,  Up: Wrapped API
 
146
 
 
147
Scheme Swapfile API
 
148
-------------------
 
149
 
 
150
The swapfile is a container for data in its raw form. It is modeled
 
151
after a simple filesystem with a flat namespace (no directories) and
 
152
names being just cardinal numbers.
 
153
 
 
154
 - Function: ( swapfile-open path )
 
155
 - Function: ( swapfile-close )
 
156
 - Function: ( swapfile-creat path )
 
157
     These procedures control the swapfile subsystem. `swapfile-open'
 
158
     initializes the subsystem from the swapfile at the specified
 
159
     location.  `swapfile-creat' tries to create a new swapfile at the
 
160
     specified location, `swapfile-close' cleans up and closes the
 
161
     subsystem.
 
162
 
 
163
 - Function: ( swdir? dir )
 
164
 - Function: ( sw-opendir )
 
165
 - Function: ( sw-readdir dir )
 
166
 - Function: ( sw-closedir dir )
 
167
     These procedures can be used to traverse the swapfile files.
 
168
     Function is like the libc readdir routines, but as the swapfile
 
169
     has a flat namespace you dont specify a subdirectory for
 
170
     `sw-opendir'.  `sw-opendir' evaluates to a `swdir' object.
 
171
     `sw-readdir' returns swapfile filenames as long as they are
 
172
     available and `#f' upon directory end.
 
173
 
 
174
 - Function: ( sw-unlink name )
 
175
     Unlinks the specified file from the swapfile. You cannot recover
 
176
     unlinked swapfiles. Behavior is like unlink(2), i.e. if the file
 
177
     is still open the deletion of the data is postponed until close of
 
178
     the file.
 
179
 
 
180
 - Function: ( swfd? fd )
 
181
 - Function: ( sw-open name flags )
 
182
 - Function: ( sw-close fd )
 
183
     For working with a swapfile you need to obtain a handle to it.
 
184
     Use `sw-open' to open the swapfile with the specified name.  The
 
185
     flags argument is modeled after open(2), `O_CREAT', `O_EXCL',
 
186
     `O_TRUNC', `O_RDWR', `O_RDONLY' and `O_WRONLY' are available. Or
 
187
     them together like `(+ O_CREAT O_TRUNC O_RDWR)'. `sw-open'
 
188
     evaluates to a file descriptor which you can identify using the
 
189
     `swfd?' predicate. Use `sw-close' if you are finished with the
 
190
     file.
 
191
 
 
192
 - Function: ( sw-fstat fd )
 
193
     `sw-fstat' obtains information about an open filedescriptor.  It
 
194
     evaluates to a list of the form `( name size mode offset
 
195
     cluster-start cluster-end cluster-size )' where all entries are
 
196
     cardinals.
 
197
 
 
198
 - Function: ( sw-lseek fd offset whence )
 
199
     To seek inside a file use `sw-lseek' which works like lseek(2),
 
200
     i.e. it seeks relative to whence offset bytes. For whence
 
201
     `SEEK_CUR', `SEEK_SET' and `SEEK_END' are available. `sw-lseek'
 
202
     evaluates to the current file pointer position.
 
203
 
 
204
 - Function: ( sw-ftruncate fd size )
 
205
     `sw-ftruncate' truncates the specified file to the specified size
 
206
     appending zeroes in case of enlarging.
 
207
 
 
208
 - Function: ( sw-sendfile dest-fd source-fd size [flags] )
 
209
     `sw-sendfile' copies (by using copy on write) size bytes from the
 
210
     current filepointer position of the source-fd to the current
 
211
     filepointer position of the dest-fd. Via the optional flags
 
212
     argument you can specify the following
 
213
    `SWSENDFILE_INSERT'
 
214
          The data is inserted at the filepointer position of the
 
215
          dest-fd instead of overwriting and/or extending the file.
 
216
 
 
217
    `SWSENDFILE_CUT'
 
218
          The data is removed from the source-fd after writing to the
 
219
          dest-fd For both files you can specify `SW_NOFILE' if it
 
220
     makes sense (i.e. for just cutting out data specify `SW_NOFILE' as
 
221
     dest-fd and `SWSENDFILE_CUT' as flag).
 
222
 
 
223
 - Function: ( sw-read-floatvec fd size )
 
224
 - Function: ( sw-read-string fd size )
 
225
 - Function: ( sw-write fd data )
 
226
     Those are the basic read and write operations. Both strings and
 
227
     float vectors are supported by the scheme interface. For reading
 
228
     you need to specify the type via the procedure name, for writing
 
229
     the type is automatically determined. The read procedures read
 
230
     size number of objects from the current filepointer position.
 
231
     They evaluate to the number of objects read. `sw-write' writes the
 
232
     whole object to the current filepointer position and evaluates to
 
233
     the number of objects written.  All procedures increment the
 
234
     filepointer position by the number of bytes read/written.
 
235
 
 
236
 
 
237
File: glame.info,  Node: Scheme Plugin API,  Next: Scheme GPSM API,  Prev: Scheme Swapfile API,  Up: Wrapped API
 
238
 
 
239
Scheme Plugin API
 
240
-----------------
 
241
 
 
242
The glame plugin midlayer API is wrapped with the following procedures:
 
243
 
 
244
 - Function: ( plugin? plugin )
 
245
     This procedure checks, if the specified object represents a plugin
 
246
     and evaluates to `#t' in this case, else `#f'.
 
247
 
 
248
 - Function: ( plugin-add-path path )
 
249
     This procedure adds the specified path to the plugin shared object
 
250
     search path that is used by the `plugin-get' procedure.
 
251
 
 
252
 - Function: ( plugin-get name )
 
253
     Queries a plugin with the specified name out of the plugin
 
254
     database.  Evaluates to a plugin or `#f' if a plugin with the
 
255
     specified name cannot be found.
 
256
 
 
257
 - Function: ( plugin-name plugin )
 
258
 - Function: ( plugin-query plugin key )
 
259
 - Function: ( plugin-set! plugin key value )
 
260
     Queries the name or custom properties out of a plugin. Those
 
261
     procedures evaluate to a string, `plugin-set!' sets the specified
 
262
     property to the specified string. Predefined property keys are
 
263
     `PLUGIN_DESCRIPTION', `PLUGIN_PIXMAP', `PLUGIN_CATEGORY',
 
264
     `PLUGIN_GUI_HELP_PATH' and `PLUGIN_LABEL'.
 
265
 
 
266
 
 
267
File: glame.info,  Node: Scheme GPSM API,  Next: Scheme GUI interaction,  Prev: Scheme Plugin API,  Up: Wrapped API
 
268
 
 
269
Scheme GPSM API
 
270
---------------
 
271
 
 
272
The glame gpsm midlayer API is used to represent metadata associated
 
273
with wave data, i.e. samplerate and positional information. The gpsm
 
274
API also wraps swapfile modification of wave data.
 
275
 
 
276
For global control and initialization the following procedures are
 
277
available:
 
278
 
 
279
 - Function: ( gpsm-init path )
 
280
 - Function: ( gpsm-sync )
 
281
 - Function: ( gpsm-close )
 
282
     These procedures handle initialization and cleanup of the gpsm and
 
283
     the swapfile subsystem. As path you need to specify the path to
 
284
     the to be used swapfile. `gpsm-sync' syncs all gpsm metadata to
 
285
     disk.
 
286
 
 
287
The gpsm subsystem builds on a tree of gpsm items which are derived
 
288
from a generic item type. Available item types are the gpsm group which
 
289
just contains a list of children, and the gpsm swapfile which
 
290
represents a wave with its metadata and swapfile representation.
 
291
 
 
292
 - Function: ( gpsm-item? item )
 
293
 - Function: ( gpsm-grp? item )
 
294
 - Function: ( gpsm-swfile? item )
 
295
     These predicates check if the provided object is an gpsm item, or
 
296
     one of the derived types, a gpsm group or a gpsm swapfile.
 
297
 
 
298
 - Function: ( gpsm-item-parent item )
 
299
 - Function: ( gpsm-item-label item )
 
300
 - Function: ( gpsm-item-hposition item )
 
301
 - Function: ( gpsm-item-vposition item )
 
302
 - Function: ( gpsm-item-hsize item )
 
303
 - Function: ( gpsm-item-vsize item )
 
304
     These procedures give access to the basic gpsm type, the gpsm item.
 
305
     They evaluate to the items parent item, to its label or its
 
306
     position and extension.
 
307
 
 
308
 - Function: ( gpsm-grp-items item )
 
309
     `gpsm-grp-items' evaluates to the list of childs of the group.
 
310
 
 
311
 - Function: ( gpsm-swfile-filename item )
 
312
 - Function: ( gpsm-swfile-samplerate item )
 
313
 - Function: ( gpsm-swfile-position item )
 
314
     These procedures give access to the gpsm swapfile type. They
 
315
     evaluate to the wave swapfile metadata, respective the swapfile
 
316
     filename, its samplerate and position in the stereo field.
 
317
 
 
318
 - Function: ( gpsm-item-set-label! item label )
 
319
 - Function: ( gpsm-swfile-set-samplerate! item rate )
 
320
 - Function: ( gpsm-swfile-set-position! item position )
 
321
     These procedues modify one of the gpsm type properties.
 
322
 
 
323
For creating, copying, linking and destroying of items the following
 
324
procedures are available:
 
325
 
 
326
 - Function: ( gpsm-newswfile label )
 
327
 - Function: ( gpsm-swfile-cow swfile )
 
328
 - Function: ( gpsm-swfile-link swfile )
 
329
 
 
330
 - Function: ( gpsm-newgrp label )
 
331
 
 
332
 - Function: ( gpsm-item-destroy item )
 
333
 
 
334
For structuring, modifying and traversing of the gpsm tree the
 
335
following procedures are available:
 
336
 
 
337
 - Function: ( gpsm-root )
 
338
     Evaluates to the gpsm tree root item.
 
339
 
 
340
 - Function: ( gpsm-grp-hbox? grp )
 
341
 - Function: ( gpsm-grp-vbox? grp )
 
342
     Predicates that check, if the specified group is a hbox (a set of
 
343
     horizontally sorted, non-overlapping items), or a vbox (a set of
 
344
     vertically sorted, non-overlapping items).
 
345
 
 
346
 - Function: ( gpsm-item-can-place? grp item hposition vposition )
 
347
 - Function: ( gpsm-item-place grp item hposition vposition )
 
348
     Placing happens without moving unaffected items. Placing needs to
 
349
     happen at a position where the needed space is already available.
 
350
 
 
351
 - Function: ( gpsm-item-remove item )
 
352
     Removing happens without moving unaffected items and reverses a
 
353
     previous `gpsm-item-place' operation.
 
354
 
 
355
 - Function: ( gpsm-hbox-can-insert? grp item hposition vposition )
 
356
 - Function: ( gpsm-hbox-insert grp item hposition vposition )
 
357
     Insertion moves adjacend items horizontally by the size of the
 
358
     inserted item. Only the starting position needs to be unoccupied.
 
359
 
 
360
 - Function: ( gpsm-vbox-can-insert? grp item hposition vposition )
 
361
 - Function: ( gpsm-vbox-insert grp item hposition vposition )
 
362
     Insertion moves adjacend items vertically by the size of the
 
363
     inserted item. Only the starting position needs to be unoccupied.
 
364
 
 
365
 - Function: ( gpsm-hbox-cut item )
 
366
     Cutting moves adjacend items horizontally by the size of the cutted
 
367
     item, reversing a previous `gpsm-hbox-insert' operation.
 
368
 
 
369
 - Function: ( gpsm-vbox-cut item )
 
370
     Cutting moves adjacend items vertically by the size of the cutted
 
371
     item, reversing a previous `gpsm-vbox-insert' operation.
 
372
 
 
373
For the provided notification facility of changes to the underlying
 
374
wave object (the swapfile file), the following procedures need to be
 
375
called, whenever a change is made bypassing the gpsm subsystem.  They
 
376
all take a swapfile filename instead of a gpsm object.
 
377
 
 
378
 - Function: ( gpsm-notify-swapfile-change name position size )
 
379
 - Function: ( gpsm-notify-swapfile-cut name position size )
 
380
 - Function: ( gpsm-notify-swapfile-insert name position size )
 
381
 - Function: ( gpsm-invalidate-swapfile name )
 
382
     Via these procedures you signal a change within the specified
 
383
     region of the swapfile with the specified name. Either just data
 
384
     modification or insertion or deletion of the region. Via
 
385
     `gpsm-invalidate-swapfile' you tell the gpsm subsystem to drop all
 
386
     its knowledge of the data of the swapfile, including its current
 
387
     size.
 
388
 
 
389
The gpsm subsystem transparently provides undo and redo operations for
 
390
swapfiles via the following procedures:
 
391
 
 
392
 - Function: ( gpsm-op-prepare item )
 
393
     Prepares the subtree specified by the provided item for later undo,
 
394
     i.e. restoring of the current state.
 
395
 
 
396
 - Function: ( gpsm-op-forget item )
 
397
     Forgets the most recent stored state of the subtree specified by
 
398
     the provided item.
 
399
 
 
400
 - Function: ( gpsm-op-can-undo? item )
 
401
 - Function: ( gpsm-op-undo item )
 
402
 - Function: ( gpsm-op-undo-and-forget item )
 
403
     `gpsm-op-can-undo?' evaluates to `#t' if there is a previous state
 
404
     available that can be restored now for the subtree specified by
 
405
     the provided item. `gpsm-op-undo' restores this state and remembers
 
406
     the current one for later redo. `gpsm-op-undo-and-forget' does not
 
407
     remember the current state for later redo.
 
408
 
 
409
 - Function: ( gpsm-op-can-redo? item )
 
410
 - Function: ( gpsm-op-redo item )
 
411
 - Function: ( gpsm-op-redo-and-forget item )
 
412
     `gpsm-op-can-redo?' evaluates to `#t' if there is a previous state
 
413
     available created by an `gpsm-op-undo' operation for the subtree
 
414
     specified by the provided item. `gpsm-op-redo' restores this state
 
415
     and remembers the current one for later undo.
 
416
     `gpsm-op-redo-and-forget' does not remember the current state for
 
417
     later undo.
 
418
 
 
419
 
 
420
File: glame.info,  Node: Scheme GUI interaction,  Prev: Scheme GPSM API,  Up: Wrapped API
 
421
 
 
422
Scheme GUI interaction
 
423
----------------------
 
424
 
 
425
FIXME. See various files in `src/gui'.
 
426
 
 
427
 
 
428
File: glame.info,  Node: cglame Convenience,  Prev: Wrapped API,  Up: Console Frontend
 
429
 
 
430
cglame Convenience
 
431
==================
 
432
 
 
433
For the convenience procedures online help is (maybe) available via
 
434
`(help command)' or `(help)'.
 
435
 
 
436
* Menu:
 
437
 
 
438
* Network setup::
 
439
* Cooked operations::
 
440
 
 
441
 
 
442
File: glame.info,  Node: Network setup,  Next: Cooked operations,  Up: cglame Convenience
 
443
 
 
444
Network setup
 
445
-------------
 
446
 
 
447
 - Function: ( net-new )
 
448
     Creates a new filternetwork. `net-new' evaluates to a filter.
 
449
 
 
450
 - Function: ( net-add-node filter node '("label" value) ... )
 
451
 - Function: ( net-add-nodes filter node '(node '("label" value) ...)
 
452
          ... )
 
453
 - Function: ( nodes-delete filter ... )
 
454
     `net-add-node' adds a single node with optional parameters to the
 
455
     network specified by FILTER. `net-add-nodes' adds a set of nodes
 
456
     with optional parameters to the network.  `net-add-node' evaluates
 
457
     to a `filter', `net-add-nodes' to a list of `filter's. Using
 
458
     `nodes-delete' you can delete nodes from a network.
 
459
 
 
460
 - Function: ( nodes-connect nodes ... )
 
461
     `nodes-connect' linearily connects the specified lists of
 
462
     `filter's.
 
463
 
 
464
 - Function: ( node-set-params filter '("label" value) ... )
 
465
     Using `node-set-params' you can set the parameters of the
 
466
     specified FILTER.
 
467
 
 
468
 - Function: ( net-run filter )
 
469
 - Function: ( net-run-bg filter )
 
470
     `net-run' starts processing of the network and waits until
 
471
     completion.  `net-run-bg' starts processing of the network and
 
472
     returns immediately.
 
473
 
 
474
 
 
475
File: glame.info,  Node: Cooked operations,  Prev: Network setup,  Up: cglame Convenience
 
476
 
 
477
Cooked operations
 
478
-----------------
 
479
 
 
480
The following procedures can be customised by setting `audio-out',
 
481
`read-file' or `write-file' to other filters than their default ones
 
482
like `(set! read-file "read-mp3")'.
 
483
 
 
484
 - Function: ( play filename )
 
485
     Plays the specified file.
 
486
 
 
487
 - Function: ( play-eff filename '(effect ("label" value) ...) ... )
 
488
 - Function: ( save-eff infile outfile '(effect ("label" value) ...)
 
489
          ... )
 
490
     Plays or saves the specified file after applying the specified
 
491
     chain of effects with parameters.
 
492
 
 
493
 
 
494
File: glame.info,  Node: Plugin Collection,  Next: Function and Type Index,  Prev: Console Frontend,  Up: Top
 
495
 
 
496
Plugin Collection
 
497
*****************
 
498
 
 
499
Available GLAME plugins are listed here with a short description about
 
500
what they are able to do, their input and output ports, and the
 
501
parameters they understand. Some ports allow more than one so-called
 
502
pipe to be connected. Those restrictions will be listed in the port
 
503
description.  Some parameters can be set per plugin, some per pipe.
 
504
Pipe parameters are listed with the name of the pipe preceeding the
 
505
parameter name, separated by a double colon, like `out::position' for
 
506
parameter `position' on pipe `out'. Each parameter is followed by its
 
507
type-e.g. integer, float, or string-in parentheses.
 
508
 
 
509
* Menu:
 
510
 
 
511
* In- and Output::
 
512
* Elementary Plugins::
 
513
* Effects::
 
514
* FFT Plugins::
 
515
* Operations::
 
516
 
 
517
 
 
518
File: glame.info,  Node: In- and Output,  Next: Elementary Plugins,  Up: Plugin Collection
 
519
 
 
520
In- and Output
 
521
==============
 
522
 
 
523
GLAME has several ways of importing and exporting audio data: via the
 
524
sound card, an external file, or an external program. Furthermore, GLAME
 
525
has its own so-called swapfile that is used as a large internal cache
 
526
for audio data.
 
527
 
 
528
* Menu:
 
529
 
 
530
* Audio I/O::
 
531
* File I/O::
 
532
* Swapfile I/O::
 
533
* Abusing External Apps::
 
534
 
 
535
 
 
536
File: glame.info,  Node: Audio I/O,  Next: File I/O,  Up: In- and Output
 
537
 
 
538
Audio I/O
 
539
---------
 
540
 
 
541
The `audio-in' and `audio-out' plugins handle communication between
 
542
GLAME and the sound hardware. `audio-in' is for recording, `audio-out'
 
543
does the playback.  Actually, there are several instances of those
 
544
plugins for different sound systems like ESD, ALSA, OSS, and native
 
545
SGI. If available on the system, they can be accessed directly via
 
546
`oss-audio-out', `esd-audio-in' and the like, using the same sets of
 
547
parameters. Think of `audio-in' and `audio-out' as sane default methods
 
548
dependent on the system's capabilities.  Those defaults can be
 
549
configured via the GUIs preferences dialog, too.
 
550
 
 
551
Common parameters
 
552
.................
 
553
 
 
554
`device (string)'
 
555
     Sound device to be used. Note: While audio-in and audio-out are
 
556
     generic plugins, interpretation of the device parameter is
 
557
     dependent on the underlying sound system which the value is passed
 
558
     to unmodified. For example, OSS takes devices parameters like
 
559
     `/dev/dsp' where ALSA would like `0:0'. If `device' is not set,
 
560
     the sound system's default device is used.
 
561
 
 
562
`audio-in' ports
 
563
................
 
564
 
 
565
`out (output)'
 
566
     Recorded stream of sample data. Maximum number of allowed
 
567
     out-connections depends on hardware capabilities.
 
568
 
 
569
`audio-in' parameters
 
570
.....................
 
571
 
 
572
`rate (integer)'
 
573
     The sample rate in Hertz.
 
574
 
 
575
`duration (float)'
 
576
     Recording time in seconds. Defaults to no limit.
 
577
 
 
578
`out::position (float)'
 
579
     Horizontal placement of sample stream in radians from -pi to pi.
 
580
 
 
581
`audio-out' ports
 
582
.................
 
583
 
 
584
`in (input)'
 
585
     Sample stream to play back. Maximum number of allowed
 
586
     in-connections depends on hardware capabilities.
 
587
 
 
588
`audio-out' has no further specific parameters.
 
589
 
 
590
 
 
591
File: glame.info,  Node: File I/O,  Next: Swapfile I/O,  Prev: Audio I/O,  Up: In- and Output
 
592
 
 
593
File I/O
 
594
--------
 
595
 
 
596
Transactions from and to files are handled by the plugins `read-file'
 
597
and `write-file'. `read-file' is guaranteed to be able to read WAV
 
598
files. Anything else is up to helper libraries that may or may not be
 
599
installed on a system. `write-file' so far only second guesses the
 
600
desired output format from the suffix of the given filename.
 
601
 
 
602
Common parameters
 
603
.................
 
604
 
 
605
`filename (string)'
 
606
     Name of the file to be read from or written to. The writer takes
 
607
     the filename suffix as a hint to the desired type of output. The
 
608
     `filename' parameter has no default and is required to be set.
 
609
 
 
610
`read-file' ports
 
611
.................
 
612
 
 
613
`out (output)'
 
614
     Sample data read in from a sound file. The number of allowed
 
615
     out-connections varies from file to file.
 
616
 
 
617
`read-file' parameters
 
618
......................
 
619
 
 
620
`out::position (float)'
 
621
     Horizontal placement of sample stream in radians from -pi to pi.
 
622
 
 
623
`write-file' ports
 
624
..................
 
625
 
 
626
`in (input)'
 
627
     Sample stream to store to a sound file. Maximum number of allowed
 
628
     in-connections depends on the desired sound format.
 
629
 
 
630
`write-file' parameters
 
631
.......................
 
632
 
 
633
`filetype (int)'
 
634
     Type of the file to write. This is a libaudiofile `AF_FILE_*'
 
635
     constant.  People who have libxml installed will see a option menu
 
636
     for the available types. If nothing is given, the type will be
 
637
     deduced from the filename extension.
 
638
 
 
639
`sampleformat (int)'
 
640
     Sampleformat of the file, as defined by libaudiofiles
 
641
     `AF_SAMPFMT_*'.  Default is signed.
 
642
 
 
643
`samplewidth (int)'
 
644
     Sample width in bits. 16 is default.
 
645
 
 
646
`compression (int)'
 
647
     Compression type, as defined by libaudiofiles `AF_COMPRESSION_*'.
 
648
     Default is no compression.
 
649
 
 
650
 
 
651
File: glame.info,  Node: Swapfile I/O,  Next: Abusing External Apps,  Prev: File I/O,  Up: In- and Output
 
652
 
 
653
Swapfile I/O
 
654
------------
 
655
 
 
656
The two plugins `swapfile-in' and `swapfile-out' are for streaming a
 
657
swapfile into the network and storing a stream into the swapfile
 
658
respectively. Both refer to tracks via swapfile filenames which are
 
659
integer numbers.
 
660
 
 
661
Common parameters
 
662
.................
 
663
 
 
664
`filename (int)'
 
665
     Swapfile filename. This parameter is required to be set and there
 
666
     is no default value.
 
667
 
 
668
`offset (int)'
 
669
     This parameter denotes the offset inside the file to start
 
670
     reading/writing from. The default is 0 which denotes the start of
 
671
     the file. Setting offset to a negative value will throw away
 
672
     samples for swapfile_out and feed in zeroes for swapfile_in.
 
673
 
 
674
`size (int)'
 
675
     This parameter denotes the number of samples to read/write. The
 
676
     default is -1 which means to read the whole file / write all data.
 
677
     For sizes that in conjunction with offset exceed the file size,
 
678
     zeroes will be streamed in for swapfile_in, for swapfile_out the
 
679
     file will be extended.
 
680
 
 
681
`swapfile-in' ports
 
682
...................
 
683
 
 
684
`out (output)'
 
685
     Sample stream coming out of the swapfile.
 
686
 
 
687
`swapfile-in' parameters
 
688
........................
 
689
 
 
690
`rate (int)'
 
691
     The samplerate the data has.
 
692
 
 
693
`position (float)'
 
694
     The position of the data in the stereo field.
 
695
 
 
696
`flags (int)'
 
697
     Flags are 1 to endless stream data by looping the file.
 
698
 
 
699
`swapfile-out' ports
 
700
....................
 
701
 
 
702
`in (input)'
 
703
     Sample stream to be stored in the swapfile.
 
704
 
 
705
`swapfile-out' parameters
 
706
.........................
 
707
 
 
708
`flags (int)'
 
709
     Flags are 1 to create the file, if it does not exist, 2 to truncate
 
710
     it before writing, 3 for both.
 
711
 
 
712
 
 
713
File: glame.info,  Node: Abusing External Apps,  Prev: Swapfile I/O,  Up: In- and Output
 
714
 
 
715
Abusing External Apps
 
716
---------------------
 
717
 
 
718
This hackish filter allows to stream data coming from an external
 
719
program that communicates through unix pipes. Note that at the moment
 
720
neither `pipe-in' nor `pipe-out' seem to work reliably, but fail inside
 
721
libc.
 
722
 
 
723
Common parameters
 
724
.................
 
725
 
 
726
`cmd (string)'
 
727
     Command string of the program which should be launched. This
 
728
     parameter is required to be set and there is no default value.
 
729
 
 
730
`tail (string)'
 
731
     Extra tail to be appended to the command string, usually a
 
732
     filename. It defaults to an empty string.
 
733
 
 
734
`pipe-in' ports
 
735
...............
 
736
 
 
737
`out'
 
738
     Streams created out of the (possible interleaved) data coming from
 
739
     the external program. You have to ensure to connect two pipes if
 
740
     the external program generates stereo output. Dataformat is signed
 
741
     16 bit in native endianness only.
 
742
 
 
743
`pipe-in' parameters
 
744
....................
 
745
 
 
746
`rate'
 
747
     Sample rate of the data coming from the external program. Defaults
 
748
     to the compile-time setting of `GLAME_DEFAULT_SAMPLERATE' which is
 
749
     usually 44100 Hz.
 
750
 
 
751
`pipe-out' ports
 
752
................
 
753
 
 
754
`out'
 
755
     Streams created out of the (possible interleaved) data coming from
 
756
     the external program. You have to ensure to connect two pipes if
 
757
     the external program generates stereo output. Dataformat is signed
 
758
     16 bit in native endianness only.
 
759
 
 
760
 
 
761
File: glame.info,  Node: Elementary Plugins,  Next: Effects,  Prev: In- and Output,  Up: Plugin Collection
 
762
 
 
763
Elementary Plugins
 
764
==================
 
765
 
 
766
* Menu:
 
767
 
 
768
* Generating Waves::            Sound out of Nowhere
 
769
* Junctions and Dead Ends::     Splitting, mixing, merging and buffering
 
770
* Mangling Data Streams::       Shifting and rescaling
 
771
* Orientation::                 Panning and rendering
 
772
* Arithmetics::                 Adding and multiplying streams
 
773
* The Sample Analyst::          Sample statistics
 
774
* Catching Bugs::               Sending network pings
 
775
* How to Code::                 Useless plugins
 
776
 
 
777
 
 
778
File: glame.info,  Node: Generating Waves,  Next: Junctions and Dead Ends,  Up: Elementary Plugins
 
779
 
 
780
Generating Waves
 
781
----------------
 
782
 
 
783
GLAME comes with a number of plugins to generate waveforms within a
 
784
filter network. They can be useful as a debugging aid, but also as
 
785
control input to other plugins. Imagine a sine wave generator hooked up
 
786
to the position port of a panning filter... So far there is a `sine'
 
787
plugin for generating sine waves, a `const' plugin yielding a block of
 
788
constant data, a `rect' plugin creating a stream of steep pulses, a
 
789
`saw' plugin for generating saw waves and a `ramp' plugin for
 
790
generating saw waves. `pulse' generates a single pulse, steepness of
 
791
the edges can be adjusted. `noise' generates white noise. `wave' emits
 
792
a user editable chunk of wave. All plugins emit but a short chunk of
 
793
data. For a continuous stream they have to be connected to a `repeat'
 
794
node.
 
795
 
 
796
Common ports
 
797
............
 
798
 
 
799
`out (output)'
 
800
     Generated data stream. Only one connection is allowed.
 
801
 
 
802
Common parameters
 
803
.................
 
804
 
 
805
`position (float)'
 
806
     Horizontal placement of sample stream in radians from -pi to pi.
 
807
 
 
808
`rate (int)'
 
809
     Samplerate of generated data stream. Defaults to compile-time
 
810
     setting of GLAME_DEFAULT_SAMPLERATE, usually 44100 Hz.
 
811
 
 
812
`const' ports
 
813
.............
 
814
 
 
815
`const' has no further specific ports.
 
816
 
 
817
`const' parameters
 
818
..................
 
819
 
 
820
`value (sample)'
 
821
     Constant signal value. Defaults to 0.
 
822
 
 
823
`sine' ports
 
824
............
 
825
 
 
826
`sine' has no further specific ports.
 
827
 
 
828
`sine' parameters
 
829
.................
 
830
 
 
831
`amplitude (sample)'
 
832
     Amplitude of generated sine wave. Allowed value range is from 0 to
 
833
     1.  Defaults to 0.5.
 
834
 
 
835
`frequency (float)'
 
836
     Frequency of generated sine wave in Hz. Defaults to 441 Hz.
 
837
 
 
838
`rect' ports
 
839
............
 
840
 
 
841
`rect' has no further specific ports.
 
842
 
 
843
`rect' parameters
 
844
.................
 
845
 
 
846
`amplitude (sample)'
 
847
     Amplitude of generated rectangular wave. Allowed value range is
 
848
     from 0 to 1.  Defaults to 1.0.
 
849
 
 
850
`frequency (float)'
 
851
     Frequency of generated rectangular wave in Hz. Defaults to 440 Hz.
 
852
 
 
853
`saw' ports
 
854
...........
 
855
 
 
856
`saw' has no further specific ports.
 
857
 
 
858
`saw' parameters
 
859
................
 
860
 
 
861
`amplitude (sample)'
 
862
     Amplitude of generated saw wave. Allowed value range is from 0 to
 
863
     1.  Defaults to 1.0.
 
864
 
 
865
`frequency (float)'
 
866
     Frequency of generated saw wave in Hz. Defaults to 440 Hz.
 
867
 
 
868
`pulse' ports
 
869
.............
 
870
 
 
871
`pluse' has no further specific ports.
 
872
 
 
873
`pulse' parameters
 
874
..................
 
875
 
 
876
`time_on (time)'
 
877
     Time to start switching from neutral to on state. Ignored if zero.
 
878
 
 
879
`time_off (time)'
 
880
     Time to start switching from on to neutral state. Ignored if zero.
 
881
 
 
882
`duration (time)'
 
883
     Length of complete output in milliseconds.
 
884
 
 
885
`attack (time)'
 
886
     Time in milliseconds to switch from neutral to on state.
 
887
 
 
888
`release (time)'
 
889
     Time in milliseconds to switch from on to neutral state.
 
890
 
 
891
`ramp' ports
 
892
............
 
893
 
 
894
`ramp' has no further specific ports.
 
895
 
 
896
`ramp' parameters
 
897
.................
 
898
 
 
899
`amplitude (sample)'
 
900
     Amplitude of generated ramp wave. Allowed value range is from 0 to
 
901
     1.  Defaults to 1.0.
 
902
 
 
903
`frequency (float)'
 
904
     Frequency of generated ramp wave in Hz. Defaults to 440 Hz.
 
905
 
 
906
`noise' ports
 
907
.............
 
908
 
 
909
`noise' has no further specific ports.
 
910
 
 
911
`noise' parameters
 
912
..................
 
913
 
 
914
`amplitude (sample)'
 
915
     Amplitude of generated noise. Allowed value range is from 0 to 1.
 
916
     Defaults to 1.0.
 
917
 
 
918
`wave' ports
 
919
............
 
920
 
 
921
`wave' has no further specific ports.
 
922
 
 
923
`wave' parameters
 
924
.................
 
925
 
 
926
`wave (sample array)'
 
927
     The to be generated wave.
 
928
 
 
929
 
 
930
File: glame.info,  Node: Junctions and Dead Ends,  Next: Mangling Data Streams,  Prev: Generating Waves,  Up: Elementary Plugins
 
931
 
 
932
Junctions and Dead Ends
 
933
-----------------------
 
934
 
 
935
In a filter network, data streams don't get created from nowhere,
 
936
neither do they disappear into a big black void: there must be a plugin
 
937
at each endpoint of a connection. These Plugins in turn are allowed to
 
938
dump data or create new streams.
 
939
 
 
940
The `drop' plugin is used as a sink for data that is no longer needed
 
941
within the network. Any incoming data is simply discarded. It's the dead
 
942
end of a network.
 
943
 
 
944
If the same stream of data is needed more than once, it cannot simply be
 
945
applied several times to different ports, it has to be duplicated first.
 
946
`one2n' is the plugin to perform this task, it forks the network, so to
 
947
speak.
 
948
 
 
949
`mix' on the other hand acts as a junction and merges several data
 
950
streams into one, just like an ordinary mixing desk.  `mix' drops all
 
951
input data after all non-feedback input streams have terminated.
 
952
 
 
953
For some networks you may need intermediate buffering of data to prevent
 
954
deadlocks. The `buffer' filter is the one you should consider using.
 
955
 
 
956
`drop' ports
 
957
............
 
958
 
 
959
`in (input)'
 
960
     Data to be dropped. Any number of input connections is allowed.
 
961
 
 
962
`drop' has no parameters.
 
963
 
 
964
`one2n' ports
 
965
.............
 
966
 
 
967
`in (input)'
 
968
     Stream to be replicated.
 
969
 
 
970
`out (output)'
 
971
     Replicated stream. Any number of output connections is allowed.
 
972
 
 
973
`one2n' has no parameters.
 
974
 
 
975
`mix' ports
 
976
...........
 
977
 
 
978
`in (input)'
 
979
     Audio streams to be mixed. Any number of input connections is
 
980
     allowed.
 
981
 
 
982
`out (output)'
 
983
     Mixed audio stream.
 
984
 
 
985
`mix' parameters
 
986
................
 
987
 
 
988
`in::gain (float)'
 
989
     Gain of the input. Defaults to 1.
 
990
 
 
991
`in::offset (time)'
 
992
     Start mixing in input stream after relative time offset (in
 
993
     seconds).  Defaults to 0.
 
994
 
 
995
`gain (float)'
 
996
     Gain of the output stream. Defaults to 1.
 
997
 
 
998
`position (float)'
 
999
     Horizontal placement of sample stream in radians from -pi to pi.
 
1000
 
 
1001
`buffer' ports
 
1002
..............
 
1003
 
 
1004
`in (input)'
 
1005
     Data stream to be buffered. Exactly one connection is allowed.
 
1006
 
 
1007
`out (output)'
 
1008
     Buffered data stream. Exactly one connection is allowed.
 
1009
 
 
1010
`buffer' parameters
 
1011
...................
 
1012
 
 
1013
`size (int)'
 
1014
     Size in bytes of the buffer.
 
1015
 
 
1016
`time (float)'
 
1017
     Size in seconds of the buffer. Can be used only for SAMPLE streams.
 
1018
 
 
1019
 
 
1020
File: glame.info,  Node: Mangling Data Streams,  Next: Orientation,  Prev: Junctions and Dead Ends,  Up: Elementary Plugins
 
1021
 
 
1022
Mangling Data Streams
 
1023
---------------------
 
1024
 
 
1025
All the plugins described in this section operate on a single input
 
1026
stream and transform it into a slightly mangled single output stream.
 
1027
`volume-adjust' scales the amplitude of a data stream.  `delay' and
 
1028
`extend' prepend and append zero samples to a data stream respectively.
 
1029
`repeat' resends an input sequence over and over for a fixed time or
 
1030
for ever. `invert' inverts all data of the input stream, i.e.  each
 
1031
sample A is replaced by -A.
 
1032
 
 
1033
Common ports
 
1034
............
 
1035
 
 
1036
`in (input)'
 
1037
     Stream of input sample data.
 
1038
 
 
1039
`out (output)'
 
1040
     Stream of transformed output sample data.
 
1041
 
 
1042
`invert' parameters
 
1043
...................
 
1044
 
 
1045
`invert' has no parameters.
 
1046
 
 
1047
`volume-adjust' parameters
 
1048
..........................
 
1049
 
 
1050
`factor (float)'
 
1051
     Value to scale input stream's amplitude with.
 
1052
 
 
1053
`delay' parameters
 
1054
..................
 
1055
 
 
1056
`delay (time)'
 
1057
     Input data stream is prepended with zero samples for delay
 
1058
     milliseconds.  Defaults to 0ms.
 
1059
 
 
1060
`extend' parameters
 
1061
...................
 
1062
 
 
1063
`time (time)'
 
1064
     Zero samples are appended to input stream for delay milliseconds.
 
1065
     Defaults to 0ms.
 
1066
 
 
1067
`repeat' parameters
 
1068
...................
 
1069
 
 
1070
`duration (time)'
 
1071
     The input pattern is repeated until a total time of duration
 
1072
     seconds is reached. Defaults to 0s which is endless repetition.
 
1073
 
 
1074
 
 
1075
File: glame.info,  Node: Orientation,  Next: Arithmetics,  Prev: Mangling Data Streams,  Up: Elementary Plugins
 
1076
 
 
1077
Orientation
 
1078
-----------
 
1079
 
 
1080
The `pan' plugin distributes a mono sample stream to two stereo
 
1081
(left/right) output streams.
 
1082
 
 
1083
`pan' ports
 
1084
...........
 
1085
 
 
1086
`in (input)'
 
1087
     Mono stream to pan. Only a single connection allowed.
 
1088
 
 
1089
`left-out (output)'
 
1090
 
 
1091
`right-out (output)'
 
1092
     Left/right stereo output stream. Only one connection per port is
 
1093
     allowed.
 
1094
 
 
1095
`pan' parameters
 
1096
................
 
1097
 
 
1098
`pan (float)'
 
1099
     Pan value (virtual direction) of mono input stream. By default,
 
1100
     `pan' uses the input pipe's position property as pan value. It is
 
1101
     overridden if the `pan' parameter is set. Allowed values range
 
1102
     from -pi/2 to pi/2.  As the position property ranges from -pi to
 
1103
     pi, values with magnitude larger than pi/2 (i.e. positions in the
 
1104
     'back') are mirrored to the front.
 
1105
 
 
1106
The `render' plugin renders any number of input streams with respect to
 
1107
their position inside the stereo field to any number of output streams
 
1108
with respect of their positions given by the pipe source position
 
1109
parameter of the connections. You can render your multi-track song to a
 
1110
stereo setup for example.
 
1111
 
 
1112
`render' ports
 
1113
..............
 
1114
 
 
1115
`in (input)'
 
1116
     Stream(s) to render. Any number of connections allowed.
 
1117
 
 
1118
`out (output)'
 
1119
     Output stream(s). Any number of connections allowed.
 
1120
 
 
1121
`render' parameters
 
1122
...................
 
1123
 
 
1124
`out::position (float)'
 
1125
     Parameter controlling the position of the output stream inside the
 
1126
     stereo field. By default 0.0 is assumed (which is forward, or
 
1127
     mono). The position property ranges from -pi to pi. To render
 
1128
     multiple tracks to a stereo speaker setup provide -1.57 (left) and
 
1129
     1.57 (right) to two connected output pipes.
 
1130
 
 
1131
 
 
1132
File: glame.info,  Node: Arithmetics,  Next: The Sample Analyst,  Prev: Orientation,  Up: Elementary Plugins
 
1133
 
 
1134
Arithmetics
 
1135
-----------
 
1136
 
 
1137
The plugins `mul' and `add' perform a simple arithmetic operations on
 
1138
several input streams. Basically, `mul' multiplies and `add' sums up
 
1139
any number of input sample streams. Operations are performed sample by
 
1140
sample-no check is performed whether sample rates match!  If a stream
 
1141
is shorter than others, it is zero- (add) or one-padded (mul)
 
1142
internally.
 
1143
 
 
1144
Each plugin allows one multiplicative and one additive constant to be
 
1145
set. They are interpreted differently for each plugin however,
 
1146
reflecting the different algorithms:
 
1147
 
 
1148
`mul' calculates each output sample by taking one sample from each
 
1149
input pipe, adding `add' to it, multiplying the results, and finally
 
1150
multiplying the result by `factor'.
 
1151
 
 
1152
`add' calculates each output sample by taking one sample from each
 
1153
input pipe, summing them all up, adding the `add' parameter, and
 
1154
multiplying the result by `factor'.
 
1155
 
 
1156
Common ports
 
1157
............
 
1158
 
 
1159
`in (input)'
 
1160
     Input sample stream. Any number of input connections is allowed.
 
1161
 
 
1162
`out (out)'
 
1163
     Output sample stream of computed data. Only one connection is
 
1164
     allowed.
 
1165
 
 
1166
Common parameters
 
1167
.................
 
1168
 
 
1169
`add (float)'
 
1170
     Additive constant, see above. Defaults to zero.
 
1171
 
 
1172
`factor (float)'
 
1173
     Multiplicative constant, see above. Defaults to one.
 
1174
 
 
1175
There are neither further specific ports, nor further specific
 
1176
parameters.
 
1177
 
 
1178
 
 
1179
File: glame.info,  Node: The Sample Analyst,  Next: Catching Bugs,  Prev: Arithmetics,  Up: Elementary Plugins
 
1180
 
 
1181
The Sample Analyst
 
1182
------------------
 
1183
 
 
1184
The `ssp_streamer' plugin offers a gateway between sample and rms data.
 
1185
Streamed rms data can be used later for analyzing via the `maxrms'
 
1186
plugin. Unfortunately, RMS work within GLAME is still in its early
 
1187
stages, so its not that useful at the moment.
 
1188
 
 
1189
`ssp_streamer' ports
 
1190
....................
 
1191
 
 
1192
`in (input)'
 
1193
     Input sample stream to be converted.
 
1194
 
 
1195
`out (output)'
 
1196
     RMS data stream generated out of the sample input stream.
 
1197
 
 
1198
`ssp_streamer' parameters
 
1199
.........................
 
1200
 
 
1201
`bsize (samples)'
 
1202
     Window size for computing the running average.
 
1203
 
 
1204
`maxrms' ports
 
1205
..............
 
1206
 
 
1207
`in (input)'
 
1208
     Input stream of RMS data.
 
1209
 
 
1210
`maxrms' parameters.
 
1211
....................
 
1212
 
 
1213
`maxrms (output)'
 
1214
     The maximum rms value found in the stream (sofar).
 
1215
 
 
1216
 
 
1217
File: glame.info,  Node: Catching Bugs,  Next: How to Code,  Prev: The Sample Analyst,  Up: Elementary Plugins
 
1218
 
 
1219
Catching Bugs
 
1220
-------------
 
1221
 
 
1222
Ping is a tool familiar to admins to test integrity and latency of a
 
1223
network connection. The `ping' plugin does the same within a GLAME
 
1224
filter network. It sends out a data packet from its output port and
 
1225
measures the time until the packet arrives at its input port. Obviously,
 
1226
the filter network should have a loop structure or ping will wait
 
1227
endlessly for an input. Debugging output goes to the console.
 
1228
 
 
1229
`ping' ports
 
1230
............
 
1231
 
 
1232
`in (input)'
 
1233
     Input port packets are received at.
 
1234
 
 
1235
`out (output)'
 
1236
     Output port packets are sent from.
 
1237
 
 
1238
`ping' parameters
 
1239
.................
 
1240
 
 
1241
`cnt (integer)'
 
1242
     Number of packets to send. Defaults to 10.
 
1243
 
 
1244
`dt (integer)'
 
1245
     Time in microseconds between successive packets. Defaults to 250000
 
1246
     microseconds (1/4 second).
 
1247
 
 
1248
`size (int)'
 
1249
     Number of samples in a test packet. Defaults to 128 samples.
 
1250
 
 
1251
 
 
1252
File: glame.info,  Node: How to Code,  Prev: Catching Bugs,  Up: Elementary Plugins
 
1253
 
 
1254
How to Code
 
1255
-----------
 
1256
 
 
1257
The `null' and `dup' plugins aren't really meant to be used, they are
 
1258
simple reference implementations for developers looking for a quick
 
1259
introduction to plugin programming. `null' passes an input stream
 
1260
unmodified to its output, `dup' duplicates an input stream to two
 
1261
output streams. In real life, the more complex `one2n' plugin can be
 
1262
used to achieve the same results. So use the source, not these plugins.
 
1263
 
 
1264
 
 
1265
File: glame.info,  Node: Effects,  Next: FFT Plugins,  Prev: Elementary Plugins,  Up: Plugin Collection
 
1266
 
 
1267
Effects
 
1268
=======
 
1269
 
 
1270
* Menu:
 
1271
 
 
1272
* Echo::
 
1273
* Noisegate::
 
1274
* Spectrum::
 
1275
* Flanger::
 
1276
* Distortion::
 
1277
 
 
1278
 
 
1279
File: glame.info,  Node: Echo,  Next: Noisegate,  Up: Effects
 
1280
 
 
1281
Echo
 
1282
----
 
1283
 
 
1284
Guess what! The `echo' plugin adds an echo to an input stream.
 
1285
 
 
1286
`echo' ports
 
1287
............
 
1288
 
 
1289
`in (input)'
 
1290
     Stream of input sample data. Only one connection is allowed.
 
1291
 
 
1292
`out (output)'
 
1293
     Mixed stream of input and echoed data. Only one connection is
 
1294
     allowed.
 
1295
 
 
1296
`echo' parameters
 
1297
.................
 
1298
 
 
1299
`time (time)'
 
1300
     Delay time for echo in milliseconds. Defaults to 100 milliseconds.
 
1301
 
 
1302
`mix (float)'
 
1303
     Mix ratio of echoed to original stream. Defaults to 0.7.
 
1304
 
 
1305
 
 
1306
File: glame.info,  Node: Noisegate,  Next: Spectrum,  Prev: Echo,  Up: Effects
 
1307
 
 
1308
Noisegate
 
1309
---------
 
1310
 
 
1311
A noisegate is used to suppress signals below a certain threshold from
 
1312
an input stream. Its operation can be tuned by a number of parameters.
 
1313
When the input signal (its absolute value actually) falls below
 
1314
`threshold_on' for more than `hold' time, `noisegate' suppresses output
 
1315
until the signal goes back up and above threshold_off.  Switching from
 
1316
and to zero output is usually not done instantaneously as this would
 
1317
lead to distorted sound. Instead, a fading time can be given by
 
1318
`attack' and `release' respectively.
 
1319
 
 
1320
`noisegate' ports
 
1321
.................
 
1322
 
 
1323
`in (input)'
 
1324
 
 
1325
`out (output)'
 
1326
`noisegate' parameters
 
1327
......................
 
1328
 
 
1329
`threshold_on (float)'
 
1330
 
 
1331
`threshold_off (float)'
 
1332
     On and off threshold for sample data between 0 and 1, see above.
 
1333
     Default to 0.  A noisegating effect is only achieved if
 
1334
     `threshold_on' is equal or less than `threshold_off'.
 
1335
 
 
1336
`hold (time)'
 
1337
     Hold time in milliseconds, see above. Defaults to 0.
 
1338
 
 
1339
`attack (time)'
 
1340
     Attack time in milliseconds, see above. Defaults to 0.
 
1341
 
 
1342
`release (time)'
 
1343
     Release time in milliseconds, see above. Defaults to 0.
 
1344
 
 
1345
 
 
1346
File: glame.info,  Node: Spectrum,  Next: Flanger,  Prev: Noisegate,  Up: Effects
 
1347
 
 
1348
Spectrum
 
1349
========
 
1350
 
 
1351
In the Spectrum category you'll find a collection of filters that alter
 
1352
the spectral composition of a sound. Currently included are a bandpass
 
1353
filter composed of chained Chebyshev lowpass/highpass stages, a one
 
1354
stage bandpass filter and a Chebyshev lowpass/highpass filter.
 
1355
 
 
1356
* Menu:
 
1357
 
 
1358
* bandpass::
 
1359
* bandpass_a::
 
1360
* lowpass::
 
1361
* highpass::
 
1362
 
 
1363
 
 
1364
File: glame.info,  Node: bandpass,  Next: bandpass_a,  Up: Spectrum
 
1365
 
 
1366
bandpass
 
1367
--------
 
1368
 
 
1369
`bandpass' ports
 
1370
................
 
1371
 
 
1372
`in (input)'
 
1373
     Input stream of sample data. Only one connection is allowed.
 
1374
 
 
1375
`out (output)'
 
1376
     Output stream of filtered sample data. Only one connection is
 
1377
     allowed.
 
1378
 
 
1379
`bandpass' parameters
 
1380
.....................
 
1381
 
 
1382
`stages (integer)'
 
1383
     defines the number of stages used for the low/highpass filter. The
 
1384
     more stages you add, the more accurate is the impulse of the
 
1385
     filter. Defaults to 1.
 
1386
 
 
1387
`center (float)'
 
1388
     Defines the center frequency of the passband. Defaults to 1000 Hz.
 
1389
 
 
1390
`width (float)'
 
1391
     Defines the width of the passband. Defaults to 500 Hz.
 
1392
 
 
1393
`ripple (float)'
 
1394
     `ripple' defines the percentage of ripple in the pass band. It
 
1395
     defaults to 0.5, and it is best to leave it alone unless you know
 
1396
     what you're doing.
 
1397
 
 
1398
 
 
1399
File: glame.info,  Node: bandpass_a,  Next: lowpass,  Prev: bandpass,  Up: Spectrum
 
1400
 
 
1401
bandpass_a
 
1402
----------
 
1403
 
 
1404
`bandpass_a' ports
 
1405
..................
 
1406
 
 
1407
`in (input)'
 
1408
     Input stream of sample data. Only one connection is allowed.
 
1409
 
 
1410
`out (output)'
 
1411
     Output stream of filtered sample data. Only one connection is
 
1412
     allowed.
 
1413
 
 
1414
`bandpass_a' parameters
 
1415
.......................
 
1416
 
 
1417
`center (float)'
 
1418
     Defines the center frequency of the passband. Defaults to 1000 Hz.
 
1419
 
 
1420
`width (float)'
 
1421
     Defines the width of the passband. Defaults to 500 Hz.
 
1422
 
 
1423
 
 
1424
File: glame.info,  Node: lowpass,  Next: highpass,  Prev: bandpass_a,  Up: Spectrum
 
1425
 
 
1426
lowpass
 
1427
-------
 
1428
 
 
1429
`lowpass' ports
 
1430
...............
 
1431
 
 
1432
`in (input)'
 
1433
     Input stream of sample data. Only one connection is allowed.
 
1434
 
 
1435
`out (output)'
 
1436
     Output stream of filtered sample data. Only one connection is
 
1437
     allowed.
 
1438
 
 
1439
`lowpass' parameters
 
1440
....................
 
1441
 
 
1442
`stages (integer)'
 
1443
     defines the number of stages used for the filter. The more stages
 
1444
     you add, the more accurate is the impulse of the filter. Defaults
 
1445
     to 1.
 
1446
 
 
1447
`cutoff (float)'
 
1448
     defines the cutoff frequency. Defaults to 1000 Hz.
 
1449
 
 
1450
`ripple (float)'
 
1451
     `ripple' defines the percentage of ripple in the pass band. It
 
1452
     defaults to 0.5, and it is best to leave it alone unless you know
 
1453
     what you're doing.
 
1454
 
 
1455
 
 
1456
File: glame.info,  Node: highpass,  Prev: lowpass,  Up: Spectrum
 
1457
 
 
1458
highpass
 
1459
--------
 
1460
 
 
1461
`highpass' ports
 
1462
................
 
1463
 
 
1464
`in (input)'
 
1465
     Input stream of sample data. Only one connection is allowed.
 
1466
 
 
1467
`out (output)'
 
1468
     Output stream of filtered sample data. Only one connection is
 
1469
     allowed.
 
1470
 
 
1471
`highpass' parameters
 
1472
.....................
 
1473
 
 
1474
`stages (integer)'
 
1475
     defines the number of stages used for the filter. The more stages
 
1476
     you add, the more accurate is the impulse of the filter. Defaults
 
1477
     to 1.
 
1478
 
 
1479
`cutoff (float)'
 
1480
     defines the cutoff frequency. Defaults to 1000 Hz.
 
1481
 
 
1482
`ripple (float)'
 
1483
     `ripple' defines the percentage of ripple in the pass band. It
 
1484
     defaults to 0.5, and it is best to leave it alone unless you know
 
1485
     what you're doing.
 
1486
 
 
1487
 
 
1488
File: glame.info,  Node: Flanger,  Next: Distortion,  Prev: Spectrum,  Up: Effects
 
1489
 
 
1490
Flanger
 
1491
-------
 
1492
 
 
1493
The flanger effect is essentially a variable delay, that operates on a
 
1494
comb filtered signal. The variation of the delay is given by a low
 
1495
frequency oscillation (LFO). Dependent on the type of LFO you get
 
1496
different effects. The flanger is especially useful for guitar and
 
1497
voice sounds. With the right settings this implementation of the
 
1498
flanger can be used as a detune effect using a ramp up/down LFO and
 
1499
setting dry gain to zero.
 
1500
 
 
1501
`flanger' ports
 
1502
...............
 
1503
 
 
1504
`in (input)'
 
1505
     Input stream of sample data. Only one connection is allowed.
 
1506
 
 
1507
`out (output)'
 
1508
     Output stream of processed sample data. Only one connection is
 
1509
     allowed.
 
1510
 
 
1511
`flanger' parameters
 
1512
....................
 
1513
 
 
1514
`effect depth (float)'
 
1515
     Size of delay buffer in ms. A larger depth allows for a larger
 
1516
     sweep depth and more dramatic effects.
 
1517
 
 
1518
`detune range (float)'
 
1519
     The detune range defines the maximum oscillation amplitude of the
 
1520
     LFO in ms and thereby modifies the intensity of the effect. The
 
1521
     maximum value it can take is effect depth/2.
 
1522
 
 
1523
`LFO Speed (float)'
 
1524
     Specifies the oscillation frequency for the LFO. Good values are
 
1525
     between 0.5 and 10 Hz. Higher frequencies generate rather weird
 
1526
     sounds.
 
1527
 
 
1528
`Dry/Wet Balance (float)'
 
1529
     This parameter defines the ration of the dry signal to the
 
1530
     effect(wet) signal, e.g.  setting it to 0.0 you you only hear the
 
1531
     wet signal, setting it to 1.0 you don't hear any effect.
 
1532
 
 
1533
`feedback gain (float)'
 
1534
     The feedback gain speficies the amount of the mixed dry/wet signal
 
1535
     that is mixed to the input signal.  Mixing is done according to:
 
1536
     (inputsignal + feedbackgain * drywetsignal)
 
1537
 
 
1538
`Gain (float)'
 
1539
     Defines the amount of preamplification in the input stage of the
 
1540
     flanger.
 
1541
 
 
1542
`LFO type (int)'
 
1543
     At the present time you can choose between three different LFO
 
1544
     types:
 
1545
    `0'
 
1546
          A sine shaped LFO, which generates a sound sweeping up and
 
1547
          down.  Use for genuine flanger sound.
 
1548
 
 
1549
    `1'
 
1550
          ramp up, generate a signal with higher frequency.
 
1551
 
 
1552
    `2'
 
1553
          ramp down, generate a signal with lower frequency.
 
1554
 
 
1555
    `3'
 
1556
          A fractal shaped LFO (more or less a random curve) creating a
 
1557
          multichorus effect.
 
1558