Snd Quick Overview


related documentation: snd.html extsnd.html grfsnd.html clm.html sndlib.html sndscm.html libxm.html index.html

Colors

Other color-related stuff:
X/Motif color resources: Snd Resources
Color names: rgb.scm, rgb.rb
colors in the file dialogs: install-searcher-with-colors in snd-motif.scm
color-dialog: color-dialog
colored samples: display-colored-samples and others in draw.scm
colored edits: display-previous-edits in draw.scm
colored marks: mark-sync-color in snd-motif.scm
colors in rxvt: red-text et al in examp.scm
flashing colors: flash-selected-data in examp.scm
openGL: snd-gl.scm, Snd and OpenGL
fancy widget backgrounds: new-backgrounds.scm in the tutorial
root window color: set-root-window-color in snd-motif.scm
color hook: color-hook
Snd graphics contexts: snd-gcs


Conversions

array->file
channel->vct
color->list
db->linear
degrees->radians
edit-list->function
file->array
file->frame
file->sample
file->sound-data
file->vct
frame->file
frame->list

frame->sample
frame->sound
frame->sound-data
frame->vct
gl-graph->ps
graph->ps
hz->radians
linear->db
list->vct
mix->vct
mono->stereo
partials->polynomial
polar->rectangular

radians->degrees
radians->hz
rectangular->polar
region->frame
region->sound-data
region->vct
samples->seconds
seconds->samples
sound->frame
sound->sound-data
sound-data->file
sound-data->frame
sound-data->sound

sound-data->vct
strero->mono
transform->vct
vct->file
vct->frame
vct->list
vct->sound-data
vct->string
vct->vector
vector->vct

Copying

copy file: in Guile: copy-file, in Ruby: File.copy or File.syscopy
copy string: in Guile: string-copy
copy list: in Guile: list-copy or copy-tree
copy vct: vct-copy, vct->vector, vct->frame
copy mix: mix->vct
copy sample reader: copy-sample-reader
copy (clone) current sound edit state: clone-sound-as
copy channel data: channel->vct, or save-sound-as
copy selection data: selection->vct or save-selection
copy region data: region->vct, region->vct, save-region, or region->sound-data
copy transform data: transform->vct
copy sound-data: sound-data->vct
copy a frame: frame-copy, frame->vct
copy vector: vector->vct
copy random state: Guile: copy-random-state, or use mus-rand-seed


Cursor

Tracking cursor: with-tracking-cursor
Change cursor shape or size: cursor-style, cursor-size
Cursor moving keys: Moving the Cursor
Display data about sample under cursor: with-verbose cursor
play from the current cursor position with a tracking cursor: pfc
display tracking cursor as a full height vertical line: tracking-cursor-style
track play once: control-click 'play'. (You can add a mark at the current tracking cursor location during the play with C-m)
leave the cursor at the final position after tracking play: if-cursor-follows-play-it-stays-where-play-stopped in examp.scm
tracking cursor accuracy: cursor-location-offset
tracking cursor updating: cursor-update-interval


Deletions
delete a file: use the Guile function delete-file or Ruby's File.delete
delete a region: forget-region
delete the currently selected samples: delete-selection
delete the selection and smooth the splice: delete-selection-and-smooth
delete a mark or all marks: delete-mark
delete a colormap: delete-colormap
delete samples: delete-samples
remove a file from the sound cache: mus-sound-forget
remove a menu item: remove-from-menu or remove-main-menu in snd-motif.scm
delete a mix or all mixes: silence-mixes
add a 'delete' option to the file selection dialog: add-delete-option
Scheme delete funcs: remove-if assoc-remove! hash-remove! delete-if! delete! string-delete


Envelopes

envelope sound: env-channel, env-sound
other enveloping functions: ramp-channel, xramp-channel, smooth-channel
The CLM env generator: env, many examples in examp.scm, new-effects.scm, etc
Various operations on envelopes: env.scm
Peak env files: peak-env.scm
The envelope editor: Edit or View and Envelope
Panning: place-sound in examp.scm
Envelope over mix: enveloped-mix
Local envelope editor: enved.scm, xm-enved.scm
Read sound indexed through envelope: env-sound-interp
Cosine as envelope: cosine-channel, cosine-channel-via-ptree, bell-curve
envelope with sinusoidal connections between points: sine-env-channel
envelope with separate base for each segment: powenv-channel
envelope with x^2 connections: env-squared-channel
envelope with x^n connections: env-expt-channel
envelope with sum-of-cosines connections: blackman4-env-channel
Customizing the envelope editor: enved-hook
peak amp follower: moving-max


FFTs
Snd fft function: fft
CLM fft function: mus-fft
CLM spectrum: spectrum
Snd spectrum: snd-spectrum
Cross Correlation: correlate
FFT window: make-fft-window
Dolph-Chebyshev window in Scheme: dolph
Hartley transform in Scheme: dht
Spectral edit dialog: Envelope Editor

fft-based filter: fft-edit, fft-env-edit, fft-env-interp, fft-squelch, fft-cancel
phase-vocoder: phase-vocoder. pvoc
transposition via fft: down-oct
phase rotation via fft: zero-phase, rotate-phase
duration change via autocorrelation: rubber-sound
smoothing via fft: fft-smoother
cross-synthesis: cross-synthesis
voiced->unvoiced effect: voiced->unvoiced
noise reduction: Noise Reduction, clean-channel, anoi
spectral modeling: pins
polynomial approach to spectral multiplies (convolution): spectral-polynomial

Superimpose ffts: superimpose-ffts
Waterfall real-time spectrograph: start-waterfall
Simple rt spectrum: show-input-fft, show-draggable-input-fft
More transforms: fractional-fourier-transform, z-transform in dsp.scm
3D (single) fft display: complexify
bark, mel, erb scale display: display-bark-fft
apply function to spectrum, inverse fft: filter-fft

Filters

filter a sound: filter-sound, filter-channel, and clm-channel
CLM filter generators: filter, one-pole, formant, comb, notch, all-pass, etc
lowpass filter: make-lowpass in dsp.scm
highpass filter: make-highpass in dsp.scm
bandpass filter: make-bandpass in dsp.scm
bandstop filter: make-bandstop in dsp.scm
the usual analog filters (Butterworth, Chebyshev, Bessel, Elliptic): analog-filter.scm
Butterworth filters: make-butter-high-pass, make-butter-low etc in dsp.scm, used in new-effects.scm
IIR filters of various orders/kinds: dsp.scm
Hilbert transform: make-hilbert-transform in dsp.scm
differentiator: make-differentiator in dsp.scm
block DC: see example above, dc-block in prc95.scm, or stereo-flute in clm-ins.scm
hum elimination: see eliminate-hum and notch-channel in dsp.scm
hiss elimination: notch-out-rumble-and-hiss
notch-filters: notch-channel and notch-selection
arbitrary spectrum via FIR filter: spectrum->coeffs in dsp.scm
invert an FIR filter: invert-filter in dsp.scm
filtered echo sound effect: flecho in examp.scm
time varying filter: fltit in examp.scm
draw frequency response: use envelope editor or filter control in control panel
Moog filter: moog.scm
Click reduction: remove-clicks, clean-channel
LADSPA-based filter effects: see ladspa.scm
Max Mathews resonator: maxf.scm, maxf.rb, mfilter
Spectral edit dialog: Envelope Editor
graphical equalizer filter bank: graphEq
nonlinear (Volterra) filter: volterra-filter
Kalman filter: kalman-filter-channel
see also convolution, physical modeling, reverb, and fft-based filtering
Guile built-in filter function: %filter.


Insertions
insert some portion of a channel: insert-channel
insert a silence: pad-channel, insert-silence, pad-sound
insert a region: insert-region
insert the selection: insert-selection
insert a vct of samples: insert-samples, insert-vct
insert a sound: insert-sound
append a sound and silence: append-sound
insert a frame: insert-frame
insert sound-data: insert-sound-data

Marks

global find-mark: mark-name->id
mark history: describe-mark
synchronize marks by inserting silences: syncup
squeeze selection between marks: fit-selection-between-marks
insert silence before marks: pad-marks
move syncd marks: move-syncd-marks
play starting from syncd marks: play-syncd-marks
evaluate function between marks: eval-between-marks
place marks at selection start and end: snap-marks
define selection via marks: define-selection-via-marks
force dragged mark to land on a beat: snap-mark-to-beat
loop continuously between the two specified marks: loop-between-marks
split sound into separate files based on mark placement: mark-explode
mark property lists: mark-property
save mark properties in saved state file: save-mark-properties
show mark properties upon click: mark-click-info


Maxamps

Sound file maxamp: mus-sound-maxamp
Region maxamp: region-maxamp
Selection maxamp: selection-maxamp
Sound data object maxamp: sound-data-maxamp
Vct maxamp: vct-peak
CLM's sound maxamp: sound-maxamp (same as mus-sound-maxamp)
To set the y axis bounds to reflect the channel's maxamp: y-bounds
Mix maxamp: mix-maxamp
maxamp locations: maxamp-position, region-maxamp-position, selection-maxamp-position


Mixing

mix sound file: mix or drag-and-drop it where you want it mixed
mix channel: see mix-channel in extensions.scm
mix region: mix-region
mix selection: mix-selection
mix vct: mix-vct
mix sound-data: mix-sound-data
mix a frame: mix-frame
enveloped mix: see enveloped-mix in extensions.scm
read mix samples: make-mix-sample-reader
mix data maxamp: mix-maxamp
mix data to vct: mix->vct
save mix data in file: save-mix
mix property list: mix-property in mix.scm
pan mono sound into stereo: see place-sound in examp.scm
move a mixed sound via dlocsig: mix-move-sound
the mix dialog: Mix Dialog
cross-fade in frequency: cross-fade and dissolve-fade in fade.scm
zipper cross-fade: zipper.scm
snap mix to beat after drag: snap-mix-to-beat
delete all mixes: silence-all-mixes


Play
play one channel: play-channel, play button in control panel or files dialog
play from cursor: C-q and example above
play from cursor with tracking cursor: pfc above
play the selection: play-selection, C-x p
play a region: play-region, C-x p, play button in Region dialog
play a mix: play-mix, play button in Mix dialog
play a sequence of mixes: play-mixes
play from mark: click or drag triangle (control-click for all chans)
play continuously between two marks: loop-it
stop playing: C-g, C-t, stop-playing, set playing to #f
pause or resume playback: space, set pausing
play repeatedly: play-often
play repeatedly until C-g: play-until-c-g
play region repeatedly: play-region-forever
play a file upon a keystroke: bind-key
play using an external program: (shell "sndplay wood16.wav")
play a sine-wave or spectrum: play-sine and play-sines
play arbitrary mixtures of things: make-player and related functions, play-syncd-marks
send arbitrary data to the DAC: mus-audio-write, start-dac
play after sending the data through some function: play-sound
play with applied amplitude envelope: play-with-envs, play-panned
play an external file: (play "file")


Random numbers

generators, arbitrary distributions, fractals, 1/f: rand and rand-interp
dithering: dither-channel, dither-sound
noise-making instrument: noise.scm, noise.rb
physical modeling of noisy instruments: maraca.scm
arbitrary distribution via rejection method: any-random
CL: random, *random-state*, make-random-state*: random number between 0 and arg, arg can't be 0!
Guile: random, *random-state*, seed->random-state: random number between 0 and arg, arg can't be 0!
Ruby: kernel_rand (alias for Ruby's rand), srand: random integer between 0 and arg, or float between 0 and 1
CLM (all versions): mus-random, mus_random: random float between -arg and arg
CLM (CL): clm-random: random float between 0.0 and arg
CLM (C): mus_irandom: random int between 0 and arg
CLM (C): mus_frandom: random float between 0.0 and arg
CLM (CL): mus-set-rand-seed
CLM (Scheme): mus-rand-seed (settable)
bounded brownian noise: green.scm


Regions
Max length of region list: max-regions
Whether selection creates a region: selection-creates-region
To play region repeatedly: play-region-forever
Start region browser from Scheme: view-regions-dialog
All about regions: regions
The region dialog: region browser
Region rms amp: region-rms
region-play-list and region-play-sequence in examp.scm
region->frame
region->sound-data
make-region-frame-reader


Resampling
resample channel: src-channel
resample all chans: src-sound
resample selection: src-selection
resample mix: speed control in Mix dialog (also apply-controls)
resample via drawn envelope: srate in Envelope editor
resample via CLM gen: src
resample with independent time control (ssb-am): ssb-bank in dsp.scm
resample with independent time control (granulate): expand in control panel, expsrc and expsnd
resample with independent time control (vocoder): phase-vocoder (this never works)
another time stretcher (autocorrelation):rubber-sound (this takes forever and rarely works)
resampling-based sound effects: hello-dentist, fp, flange and chorus in dsp.scm and new-effects.scm
the digital zipper: zipper
resample via FFT: down-oct
resample through env: sound-interp and env-sound-interp
resample through list: scratch
resample step-size through a function: step-src
predict duration of resampled sound: src-duration
linear src: linear-src-channel in dsp.scm


Reverbs

freeverb: freeverb.scm, freeverb.rb
jc-reverb: jcrev.scm
jl-reverb: clm-ins.scm
nrev: clm-ins.scm
control panel reverb: Reverb, control variables
convolution reverb: conrev
plate-reverb: ladspa.scm (a LADSPA effect)
*reverb*: with-sound


Reversing

reverse channel: reverse-channel, reverse-sound
reverse selected portion: reverse-selection
read samples in reverse: use make-sample-reader with direction -1
reverse at new sampling rate: use src-channel with a negative ratio
Reverse in control panel: control panel and speed-control variable
reverse an envelope: reverse-envelope
reverse block-wise: reverse-by-blocks and reverse-within-blocks
reverse via FFT: silly-reverse
reverse order of channels: reverse-channels
reverse a list: reverse and reverse!
reverse a string: in Guile: string-reverse, in Ruby: reverse
reverse vct: vct-reverse!
reverse a frame: frame-reverse


Saving
save sound: save-sound
save all sounds: (for-each save-sound (sounds))
save a sound under a different name: save-sound-as
extract one channel from a sound: extract-channel
extract a set of channels from a sound: extract-channels
save a sound in a different format or header: save-sound-as
backup edits automatically: autosave
check first for unsaved edits: check-for-unsaved-edits
save Snd's complete state (unsaved edits and all): save-state, save-dir, save-state-hook, save-state-file
save the selection: save-selection
save a region: save-region
save a mix: save-mix
save the control panel state: save-controls
save currently defined envelopes (envelope editor): save-envelopes
start the file save dialog: save-sound-dialog
start the selection save dialog: save-selection-dialog
start the region save dialog: save-region-dialog
save the current listener text: save-listener
save keyboard macros: save-macros
save marks: save-marks
save just the edit history: save-edit-history
save the peak-env data: save-peak-env-info
take some action upon a window manager save-yourself signal: upon-save-yourself
save the current sound setup for a later reopen: remember-sound-state
save the current fft peak info: peaks

Searches

find a mark: find-mark
find a mix: find-mix
find a sound: find-sound
Example find procedures: search-for-click, zero+, next-peak, find-pitch
find in reverse: find-channel-in-reverse
Search via continuation: scan-again
Explicit access to search procedures: search-procedure
The Find dialog: Find or find-dialog
find silence: map-silence, scramble-channel in examp.scm
find zero crossing: find-zero
find any difference between two chans: channels-equal
see also count-matches and scan-channel
search a multichannel sound: scan-sound
find a widget: find-child in snd-motif.scm
add C-s and C-r to the listener key bindings: add-find-to-listener in snd-motif.scm
Guile find: find-if


Selections
show the current selection: show-selection
color of selected portion: selection-color
set whether creating a selection creates a region: selection-creates-region
fft graph refers to the selection: show-selection-transform
hook called when selection stops playing: stop-playing-selection-hook
swap chans in selected portion: swap-selection-channels
replace portion with selection: replace-with-selection
select portion via function: make-selection
evaluate func on each sample of selection: eval-over-selection (map-selection in effect)
selection members as list of lists of sound indices and channels: selection-members
rms of selection data: selection-rms
delete selection and smooth the splice: delete-selection-and-smooth
select portion between two marks: define-selection-via-marks
place marks at selection start and end: snap-marks
squeeze selection between marks: fit-selection-between-marks
add context-sensitive popup menu specific to selection: add-selection-popup
delete selection and write it to a file: cut-selection->new
append selection: append-selection
write selection to a file: selection->new
notch filter selection: notch-selection
undo select-all.: deselect-all


Smoothing
smooth channel: smooth-channel
smooth all channels: smooth-sound
smooth selection: smooth-selection
delete the selection and smooth the splice: delete-selection-and-smooth
smoothing as virtual op: smooth-channel-via-ptree in examp.scm
smoothing via fft: fft-smoother
smooth via low-pass filter
smooth over click: remove-clicks in examp.scm

Time Domain Display

Built-in keyboard commands: Moving the Window
Specialized keyboard commands: bind-key
Window size: x-zoom-slider, zoom-one-pixel,
Window position: x-position-slider, move-one-pixel
Window left edge: left-sample
Window right edge: right-sample

fft window:
window size: drag x axis, spectro-cutoff
window start: spectro-start
relation to time domain: before-transform-hook
selection fft: show-selection-transform

general info:
Axis description: axis-info


Undo
undo edit: undo and undo-channel
undo all edits: revert-sound
specialize undo: undo-hook
protect against undo: edit-hook
redo edit: redo and redo-channel
move around in edit list: edit-position and current-edit-position
About edit lists: Edit lists