Return to Main Index for the CDP System.

CDP circles logo

SAUSAGE – multi-function harmoniser/brassage

This is a Release 3 Update 4 program which is being retained in Release 4 for the sake of continuity. Although its functions are more than adequately included and extended in the Release 4 program set, it's a great program which I've always found to be very powerful and useful – existing users may be familiar with the way it works and like it to remain available. (Ed.)

How to make your sonic sausages
Usage Mix Sources Marker Speed Segment Length Spatial Distribution
Amplitude Variation Splice Length Search Range Pitch Variation Conclusion

Usage (concise)

sausage infilelist outfile speed [-udur [-vmaxdur]] [-c] [(-M | -m)[move] [-nmovelim]] [-a[amprange]] [-esplice] [-rrange] [(-p | -P)[pshift]] [-zarraysize]

In all cases where the parameter may be a breakpoint (breakpoint) file, the name of this file is placed immediately after the flag, e.g., -udurfile. In the breakpoint file, each pair or triple set of values is placed on a separate line. The values themselves are, as usual, separated by spaces or tabs. Note that times in the function files relate to the infile(s) and that the shortest soundfile in the list determines the maximum duration over which processing will take place. As usual, brackets in the usage indicate options which may be omitted in the command line. However, the brackets themselves are not used when the option is placed in the command line. See A Sausage Tutorial.

Parameters

infilelist – textfile list of source soundfiles (Mono or Stereo, all at the SAME SAMPLE RATE);
+weighting (optional) – an integer following the filename after a space (the '+' is not used): e.g., filename 2. There may be only one soundfile in the list.
outfile – output soundfile name
speed – scanning pointer: 1.0 (no change); > 1 (reads later in the infile: its movement is faster than the file read, output is shorter); < 1 (reads earlier in the infile: its movement is slower than the file read, output is longer)
-udur – single float value or time duration breakpoint file; length of segments to be cut, expressed in seconds. This parameter is now optional; it defaults to 0.05 sec.
    -vmaxdur – single float value or time duration breakpoint file; introduces random lengths between dur and maxdur
-c – use this option for cyclical sequence of source files. Default: source soundfiles are chosen in random order, but with the specified weighting.
-Mmove | -mmove – with M, move is a textfile list of position values, one per line; with -mmove, move is a time position breakpoint file; position values: 0 (L) <–> 1 (R); -M or -m on its own creates a random spatial placement (stereo input soundfiles will not be spatialised).
    -nmovelimmovelim is a time Left_limit Right_limit breakpoint file triple; NB – need a -M or -m option in the command line as well.
-aamprange-a used on its own gives random amplitude variation over the full amplitude range; the optional file for amprange (over which this scattering occurs) is a time minamp maxamp breakpoint file triple with amplitude values between 1.0 (max) and >0.0 (min)
-esplice – splice is the length of the splice window expressed in seconds (note this!). E.g., for a 20ms splice, enter 0.020. (Default, if not set, is 15 ms). Splice may be a single value or a time splice breakpoint file.
-rrangerange is a single float value or a time range breakpoint file; range is the time-range before 'now' in the input file from within which the current segment is selected. (Default = 0).
-ppshift – single float value or time value breakpoint file; value is transposition ratio; OR
-Ppshiftpshift is a textfile with list of float values (separated by spaces); the transpositions will cycle around this list
-zarraysize – single integer value: size of breakpoint table (Default: 100 pairs)

Return to Contents Buttons at top of this file

Parameters and options [-flags] with more complete explanations:

1) MIX SOURCE FILES (infilelist)

SAUSAGE will operate on one or several source files (Mono or Stereo, SAME SAMPLE RATE). The mixing together of segments from several different soundfiles is potentially a very powerful tool in the creation of sound collages.

To use several sources, list these in a text file, and flag the filename with infilelist where infilelist is the name of your file containing your list of one or more soundfiles to be used. Remember that the splice window parameter can help to control the sharpness or smoothness with which the segments are joined.

With several sources, the 'marker' moves through all the source files simultaneously and selects which source file to use for a particular segment in any of the following ways:

  1. at random (this is the default)
  2. weighted random selection. A source with greater 'weight' is more likely to be selected than one with less weight. To use such weightings, put a weighting value (an integer) after each filename in your infilelist – leave a space between the filename and the weighting number.
  3. cyclically, following the sequence in your input list. To turn on cyclic sequencing, use the flag -c.

SUMMARY:

infilelst – a textfile listing source-filenames, with or without weightings (leave a space).
-c – option to have a cyclical sequence of infiles (cycles around the list). If the parameter is not specified, the program defaults to a sequence randomly selected from the list (all source files are used).

Return to Contents Buttons at top of this file

2) CHOOSE MARKER SPEED (speed)

You may imagine a marker moving through the original file, selecting segments to cut at appropriate moments. Let us imagine the simplest case, in which all the segments are of the same length, 1 second. If this marker moves at speed '1', then it 'keeps up with' the original file, so that at time 2 seconds in the new file it selects a segment from time 2 seconds in the source file.

If the speed is > 1, then the marker is moving faster than the source and a segment for the 2 second slot in the new file will use a segment from later in the source file: because the marker is moving faster than the source, more of the source will have been scanned when the marker reaches its 2 second point. The marker will therefore reach the end of the source in a time shorter than the duration of the source, causing the resulting soundfile to be shorter than the original.

If the speed is < 1, the marker is moving slower than the source and a segment for the 2 second slot in the new file will use a segment from earlier in the source file: the marker is moving slower than the source, so less of the source will have been scanned by the time the marker reaches its 2 second point. The output file (relating as it does to the movement of the marker) will therefore be longer than the source.

If the segments are sufficiently short, SAUSAGE acts like a 'harmoniser', whereas, if the segments are longer, SAUSAGE forms a montage of the source file, as with BRASSAGE.

Speed may also be altered in a time-varying way. In this case, create a breakpoint file of time speed pairs, and use the name of your file as the parameter to -s instead of a numerical value.

SUMMARY:

speed – a single floating point value OR a breakpoint file in the form time speed. Filenames MUST NOT begin with a digit; speed is the speed of scanning the source file. (The range parameter also affects the results described below). Examples:
1.0 – the 'scanning pointer' will move at the same speed as the soundfile is read. Thus the scanning pointer will be located exactly at the end of the segment cut and the next segment will begin where the last one ended: ie no change!
> 1 – the 'scanning pointer' will move faster than the soundfile is being read, with the result that the new file created will be shorter than the source file.
< 1 – the 'scanning pointer' will move slower than the soundfile is being read, with the result that the new file created will be longer than the source file, meaning that some of the same data will be used more than once.
use of breakpoint file – again, this is a very important option because it allows the speed of scanning to be changed at specified time points in the file, for example, getting gradually faster or slower.

Return to Contents Buttons at top of this file

3) SPECIFY OR CHANGE SEGMENT LENGTH (-udur [-vmaxdur])

The length of segments cut from the sourcefile:

  1. may be specified (-udur) – dur is a floating point numeric value expressing length in seconds
  2. may be time-varied, using a breakpoint file. (-udur), where dur is a time duration breakpoint file; filenames MUST NOT begin with a digit. The breakpoint option is important: it makes possible changing the length of the segment cut over time as one moves through the soundfile. For example, moving from shorter to longer lengths means that one can move from a harmoniser type effect to a montage type effect as one passes through the soundfile(s)..
  3. may vary randomly between two specified limits. (-udur and -vmaxdur) – both dur and maxdur are single floating point values expressing length in seconds
  4. may vary randomly between two specified limits, with either or both limits time-varied (via brkpnt files): (-udur and -vmaxdur) can be single values or breakpoint files as above.

Return to Contents Buttons at top of this file

4) CREATE SPATIAL DISTRIBUTION (-Mmove | -mmove)

SAUSAGE will create a stereo output file with spatial movement of the sound-stream, if the appropriate parameters are specified. Spatial position is specified between 0 (Left) and 1 (Right). To do this, one of these three options must be present in the command line.

The spatial positioning may be:

  1. random – use -m (or -M) only.
  2. segments placed along a defined trajectory: -mmovemove is a breakpoint time value file which defines the motion over time; value is a float and indicates placement in the horizontal plane (0 <–> 1).
  3. segments cycle round a given set of spatial positions: -Mmovemove is a textfile list of float values representing the spatial positions.

    There is another option which may be used to fine-tune the motion:

  4. the spatial positions specified above may be further constrained to lie between a leftmost and rightmost limit, where both limits may vary in time: -nmovelimmovelim is a breakpoint file comprised of time left_limit right_limit triplets on separate lines. (The default is full stereo).

Return to Contents Buttons at top of this file

5) CREATE AMPLITUDE VARIATION (-aamprange)

The amplitude of segments may be varied between 1.0 (max) and (>) 0.0 (min), as follows:

  1. full range (ppp <–> fff) random variation of segment amplitude: use -a flag by itself. Using this option means that the amplitude will vary between its original volume (1) and 0, resulting in a more plastic and natural effect. The availability of the value triples time value value means that the amplitude range can be set differently during each time zone.
  2. random variation of amplitude between specified limits, where these limits may themselves vary over time: use -aamprange where amprange is breakpoint file comprised of time min_amp max_amp triples, each triple on a separate line. This means that the minimum & maximum possible amplitude of each segment during each specified time zone is going to vary according to an interpolation process (straight line graphs between the 2 limits: a given time will connect with 2 given points on the lines). The most the amplitude can be is the original volume, i.e. 1. (To increase the amplitude beyond the original value would risk causing unpredictable distortions).

Return to Contents Buttons at top of this file

6) SPECIFY OR VARY SPLICE LENGTH (-e splice)

The length of splices joining segments may be specified, in seconds. The default value is 15ms (entered as 0.015). Shorter values will give harder-edged splices, and longer values will give smoother transitions between the segments. The splice length may be specified as an absolute value (e.g., -e0.040 for a 40ms splice), or as a time-varying value, by creating a breakpoint file of time splice_length pairs, and giving the breakpoint filename as the parameter to -esplice where splice is the breakpoint filename.

The use of the breakpoint option can lead to very interesting and effective results. The value is the splice window length, and changing this over time, e.g., from a short to a very long splice window, will result in significant aural changes. For example, if the splice window is changed gradually from a short to a rather long window, the sound will become gradually smoother and fused because the mixing action which takes place in the splice window as the segments overlap gradually includes more and more of the given segments.

Return to Contents Buttons at top of this file

7) SPECIFY A TIME-RANGE FROM WHICH THE SEGMENT MAY BE SELECTED (-rrange)

In this case, the marker moves as normally, but when a segment start-point is chosen, it is selected at random from a time range prior to the current marker position. The range may be given as an absolute value, or as the name of a breakpoint file containing the pairs of values for time-in-source-file range-in-source-file. (NB – to force use of all of the existing file before 'now', make the range very large.)

-rrangerange is a single float value or a time_in_source_file range_in_source_file breakpoint file. The default is 0.0, leaving the positioning of the scanning pointer unaffected. As the range is increased, more of the source sound is used. If increased gradually in the breakpoint file, more and more of the source sound(s) will be heard: the segments will get longer.

Return to Contents Buttons at top of this file

8) CREATE PITCH VARIATION (-ppshift | -Ppshift)

The segments may be pitch-shifted by some factor, specified as a ratio of frequencies. This means that the value provided by the user is a ratio, i.e., a multiple. 1 = no change, 2 = twice as high = one octave higher, 0.5 = half as high = one octave lower. To find the precise value required for a specific transposition, especially if microtonal, use the program UNITS. The Default is no shift (1.0). Values <= 0.0 are not valid.

Pitch variations may be created as follows:

  1. pitch-shift by a fixed amount: use -ppshift where pshift is a single float value.
  2. pitch shift in a time-varying manner: use -ppshift where pshift is the name of a breakpoint file containing time pitch_shift pairs. When using the breakpoint file, the effect is continuous similar to MODIFY SPEED Mode 1 (transposition with a function, except that a glissando is not created; rather, the pitch of each segment is taken from the vector between the present and the previous value: the program interpolates (creates a continous vector) between the values at different times.
  3. cycle round a set of pitch-shift values: use -Ppshift where pshift is the name of a file containing a list of pitch-shift values. The program cycles round these values creating a pattern of stepwise pitch variations. The values can be on separate lines or on the same line, separated by spaces or tabs. Transposition downwards is achieved by values less than 1.0; do not use zero or negative values..

SUMMARY:

Return to Contents Buttons at top of this file

Description

We are familiar with brassage-like action from the use of a searchfield in LOOP. SAUSAGE extends the fine-tuning with which this can be done, is able to work on several files at once and to spatialise the resulting soundfile at the same time. SAUSAGE processes a file by chopping it up into (possibly overlapping) segments and mixing these segments back together into a new file. SAUSAGE is, however, a very flexible program, and the various possibilities are indicated above as headings for the various groups of parameters.

Note in particular that almost all parameters may be caused to vary through time. For a parameter with a fixed value, just enter a numeric value. For varying values, depending on the parameter in question, you must create one of the following files:

(1) a breakpoint file with time value pairs
(2) a breakpoint file with time value1 value2 triples
(3) a file with a list of values

and then give the name of the file as a parameter, instead of a single numeric value. (NB - Don't begin filenames with numbers!!).

Musical applications

Let's think about the fine-tuning. DUR is the length of the segment cut, and SPEED is another way of achieving a loopstep (determining where the next segment will begin). The addition of the MAXDUR value provides two values which serve as limits within which durations will be chosen at random. Thus the resulting montage will have segments of varying lengths; the 'delay line' effect caused by regularly spaced steps will be minimised and the montage will fuse into a more natural flow.

The ability to extract segments from several soundfiles means that the range of sonic variety in the mix can be extended, controlled by the selection of soundfiles.

The MOVE options add panning effects, and amplitude scatter means that the amplitude will vary flexibly, the range of amplitude possibly changing during different 'time zones' of the resulting soundfile.

Finally, transposition features can also be defined, whether as cyclically or continously changing values.

Fully exploring all these possibilities with different types of source material will undoubtedly be endlessly fascinating and has great potential to provide sonic passages of great variety and subtlety.

See A Sausage Tutorial by Archer Endrich and the programs BRASSAGE (Release 3 Update 4 version in the 'extras' programs set), as well as MODIFY BRASSAGE and its graphic version GrainMill in Release 4, and MODIFY SAUSAGE, which, in Release 4, is derived from MODIFY BRASSAGE.

As an overview of these immensely powerful tools, I would suggest that:

Return to Contents Buttons at top of this file
Return to Main Index for the CDP System.


Converted to HTML 26 July 2001

Last Updated: 22 February 2000
Documentation: Archer Endrich
All observations & ideas for improvement appreciated
Composers Desktop Project
12 Goodwood Way
Cepen Park South
Chippenham, Wiltshire
SN14 0SY ENGLAND
Tel. +44 (0)1249 461361
Email: archer@trans4um.demon.co.uk
© Copyright 1998-2000 Archer Endrich & CDP