~ The Texture Pack contains batch and data files for all the
examples ~
NB: See Special Background
Information
Names in brackets mean that these are separate programs. The others are sub-modules of TEXTURE.
Author's Note
This is an extraordinary program set devised and written by Trevor Wishart. It enables you to build and shape multi-event textures of varying complexity by semi-algorithmic mixing processes. My work on the CDP HTML Reference Documentation took several months, spread out over 2 years, and was followed by writing the supplementary Texture Workshop to provide a more step-by-step introduction to the musical potential of the Texture programs. There is also a section in the 12-Step Tutorial that summarises the key musical possibilities of the TEXTURE programs. I hope you enjoy using them as much as I do. Archer Endrich, May 2005.
Given the complexity of these programs, you are recommended to take advantage of the Presets in Soundshaper, or the Patches function in Sound Loom, or the batch file mechanism when using command lines. All the relevant files are in the \txpack folder. Once set up, they can be varied without too much difficulty.
The Texture Pack contains Sound Loom Patches, or batch and text file versions of all the parameter settings used in the examples, along with the supporting node data and breakpoint files. The batch files can be used with the CDP executables, as well as with the Sound Loom batchfile mechanism but it is easier to use the Presets / Patches. Soundshaper has presets for all the Texture Pack examples. Readtxtu.txt summarises all the files in the Texture Pack so you know what is what.
The Texture Pack focuses on pitch-oriented applications of the TEXTURE programs, as these nicely demonstrate the many options available. Bear in mind, however:
- There are many spatialisation possibilities. All the examples here scatter the output across the stereo field. But it is possible to generate sound output at a specific location, as a moving stream, as a gradually spreading event, and so on, using the spatial position and spread parameters.
- Motifs, and harmonic fields can be tuned to any scale or system you want. If you need 500 irregularly spaced notes per octave, that's fine. Fractional MIDI values can be used to specify any tuning.
- Textures can be as dense as you want, and the variation of density can be used to obscure or unveil recognition of the source, the source pitch, and so on.
In the examples below, the pitches of motifs, ornaments and harmonic fields, specified in the note data file, are taken from the standard 12-note tempered scale (by using whole number MIDI values), but this is not essential. You may choose any tuning system you wish, simply by using fractional MIDI values for the note specifications. Ornaments and the line they ornament could be in different tuning systems. And you may define any number of notes (e.g. 500) within an octave.
In neutral modes, no tuning system at all is imposed on the notes, which are taken from the whole pitch continuum.
In all cases except 0, the pitch range of decorations are shifted to tally with line pitch.
Return to list of Special Information Topics.
Notedata is a textfile containing:
Each Notelist is specified as follows:
#N
time instr_no pitch amplitude duration
time instr_no pitch amplitude duration
time instr_no pitch amplitude duration
time instr_no pitch amplitude duration
etc.
N = the number of notes in this notelist, and is followed by N lines as above
time the start time of that note in seconds
instr_no CURRENTLY INACTIVE IN ALL CASES; to be either implemented or removed. It is intended to provide a means of associating a specific note-event with a specified infile, but may be overridden by other parameters. Always give '1' as the instrument number until a future update changes this situation.
pitch within the MIDI range of 1 to 127
amplitude within the MIDI range of 1 to 127; this field is inactive except for motifs and ornaments
duration duration (sustain-time) of that note in seconds; this field is inactive except for motifs and ornaments
In the following example, the 1st line provides the 'assumed' (i.e., possibly arbitrary) pitch level of the input soundfile. If there is more than one input soundfile, a pitch level must be provided for each one, separated by spaces. The 2nd line indicates how many notes are in the notelist, and then the following lines define each note in turn. In the example file below, all the times in the note data file are given as zero. The timing between events (and therefore the number of events) is in this case controlled by the packing parameter. All durations (sustain-times) in the note data file are zero in this case, and the duration of any given note event is selected at random from within the duration range in the command parameters. In this example events of various durations are placed randomly on the lattice of a C-minor 7th chord. Durations must, however, be specified in the note data file for motifs and ornaments. Durations are also referred to as 'sustain-times' because they refer to the amount of time that the input soundfile is 'sustained': i.e., how much of it is used. Each note event in the texture begins at the beginning of the input soundfile and continues is sustained for the amount of time specified. This makes the nature of the attack portion of the input soundfile particularly important when creating textures.
The note data file is a text file which may be written with a text editor, with an editing facility within a graphic interface. There are newlines at the end of each line and spaces (or tabs) between the data items for each note. The following illustrates the format of a typical note data file.
60
#4
0 1 60 0 0
0 1 63 0 0
0 1 67 0 0
0 1 70 0 0
Notelists represent in this order:
Not all of these lists are used for the various TEXTURE functions, and the order may vary. The note data files shown in each function are more specific regarding their contents. Also see the Note Data File Chart and 2 additional reference charts for overviews of key information. You can print these out (and laminate them) for easy reference. Also useful is the Chart of Equivalent Pitch Notatations a special version named notechpr.htm has been created for printing neatly on two sheets, single or double-sided.
Also note:
Return to list of Special InformationTopics
Return to list of TEXTURE
functions at top of this file
Parameters | Notedata File | Understanding | Two fields/sets | Applications |
TEXMCHAN Special Notes on differences in Multichannel version |
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None (Neutral)
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line. In Mode 5 this is all that is needed.
- In Modes 1 - 4 there is also a NOTELIST to define a Harmonic Field/Set, specified thus:
- #N (where N is the number of pitches in the notelist).
- This is followed by N lines in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs)- Amp and dur are inactive.
- Any times within the field must increase (or remain the same, during chords)
outdur minimum duration of the outfile
Form: MPV/// Form: MPV/HF-S// Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow time instr pitch amp dur List of Harmonic Field/Set
packing (average) time in seconds between event onsets
scatter randomisation in seconds of event onsets (Range: 0 to 10)
tgrid minimum step in milliseconds or quantised timegrid (for group start times) (Range: 0 to 10000; Default: 0)
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds). Note that this is a time-varying parameter:mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
- Enter 1 for both sndfirst and sndlast to use just one input soundfile.
- When you use more than one sound, the names of these input soundfiles are given to the program. The note data file must provide a reference pitch level for each of these sounds. If you just enter, e.g., 1 for sndfirst and 3 for sndlast, the program will select one of the three input soundfiles at random for each event in the texture.
- To specify when each soundfile is to be used in creating the output texture, a text file is needed to provide a time sound_number pair of values, the numbers corresponding to the order in which the soundfiles have been submitted to the program.
- For one file at a time changing at different times in the output (the times given are as in the output soundfile), use the same file for both sndfirst and sndlast, e.g.,
sndfirst sndlast 0.0 1 0.0 1 10.0 2 10.0 2 18.8 3 18.8 3- For a changing number of files, such as expanding the number of files being used at any one time (illustrated below), use a lower number at a given time for sndfirst, and a higher number at the same time (or an overlapping time) for sndlast.
sndfirst sndlast 0.0 1 0.0 1 10.0 1 10.0 2 18.8 1 18.8 3Note that the rate at which each soundfile is employed will slow down as more are invoked over the same time period.
mindur, maxdur minimum and maximum duration of events in texture
minpich, maxpich minimum and maximum pitch (MIDI note value)
omit 1 in "omit" events are silent: there are fewer silent events as the parameter value increases. (Range: 0 to 64)
Value 0 or 64: no events are silent.
N.B.: this parameter has been introduced in CDP8 (2023)
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-c choose input files cyclically in listed order, ignoring sndfirst and sndlast
-p randomly permute each cycle: use only when -c flag also set.
All parameters except notedata, outdur and seed may vary over time.
Getting started
Please make sure you have gone through the
background information before continuing.
This Reference Document for the TEXTURE suite contains numerous worked examples which you can hear directly from this manual. They are stored in \txsnds. You can also go to the \txpack folder, where you will find all the files you need run to create the sound examples yourselves. There are two versions: one for the Command Line and Soundshaper environments and one for the Sound Loom environment.
What you need from the txpack are the note data and breakpoint files, as well as the two source sounds, horn.wav and marimba.wav, or source sounds of your choice. The parameter information is stored in Presets supplied with Soundshaper and Patches supplied with Sound Loom. In a Command Line environment, you can run the batch (.bat) files supplied in txpack.
Compatibility with omit parameter
The worked examples currently do not include the compulsory omit parameter, introduced in CDP Release 8.
To run the examples on the Command Line, you will have to add this parameter to the script, using the value 0 (or 64).
Omit is the 13th parameter after notedata, and the last before any optional (flagged) parameters, such as atten.The tutorial presets in Soundshaper have been updated to include omit.
Location of the source sounds and other files:
- Soundshaper In OPTIONS > SETTINGS go to File in the top left corner and open txpack.cfg. This Will take you to \txpack, which contains the source sounds, note data and other files needed to run the examples. Also load the Presets file Presets.dat, which is the default file supplied with the Program).
- Sound Loom select txpack as your working directory, Grab everything and place the files on the Workspace. Now use Choose Files to select the appropriate sooundfile(s) for processing. The Patches go in the _cdpatch folder, and should be there already in your distribution.
- Command line environment 'change directory' to \txpack and run the various batch files, e.g., simplexs.bat for the TEXTURE SIMPLE examples.
The complete list of files is given in Readtxtu.txt. The list at the date of this file is as follows:
Note data files:
ndfsiml.txt ndfsim2.txt ndfsim3a.txt ndfsim3b.txt ndfsim4a.txt ndfsim4b.txt ndfsim5.txt ndfsim6.txt ndfdec1.txt ndfdec2a.txt ndfdec2b.txt ndfdec3.txt ndfmot1.txt ndfmot2.txt ndfmot3.txt ndfmot4.txt ndforn1.txt ndforn2.txt ndforn3.txt ndforn4.txt ndforn5.txt ndftim1.txt ndftim12.txt ndftim3.txt ndftgr2.txt ndftmo1.txt ndftmo2.txt
Breakpoint files:
packchng.brk simplpak.brk grppack.brk gprlo.brk gprhi.brk dm5gprhi.brk dx3gprhi.brk Names for extra breakpoint files for ORNATE examples, to make yourself. These are described in ORNATE section: oex3mulo.brk oex3muhi.brk oex3mulb.brk oex3muhb.brk oex3skip.brk oex3skpa.brk oex3skpb.brk
Please check your Soundshaper and/or Sound Loom reference manuals on handling Presets and Patches. If you are a Sound Loom user, for your convenience, we also supply ctextusl.htm, a version of this document which is Sound Loom specific, with all parameters as named in Sound Loom. Also note that Sound Loom Version 5.6 and above can run batch files.
First example
Mode 5 is a good place to begin. In this Mode, the note data file
contains only one value: the (real or arbitrary) MIDI pitch of the input
soundfile. There is no further data because there is no list of
notes. All the note events are generated from the information of
the command parameters.
To get a feel for the 'lie of the land', we can run TEXTURE SIMPLE in
Mode 5 with the following parameters (ndfsim1.txt
has only the number 60 in it). The infile is the horn.wav sound
used in the GrainMill Tutorial (2.9 sec). The 'b' example has
time varying packing, as defined in packchng.brk:
0 0.025
3 0.1
6 0.05
9 0.25
12 0.025
SIMPLE Examples 1a/b (Presets/Patches simplex1a and simplex1b):You will hear a regularly occuring randomised selection of mostly overlapping note events, some longer and some shorter, repeating the pitch Middle C (randomly) in both channels note the Left-Right movement between speakers. Try making maxpich 61, and then 64. With maxpich still at 64, try reducing the packing to 0.025.
outdur (12) packing (0.25) scatter (0) tgrid (0) sndfirst (1) sndlast (1) mingain (36) maxgain (84) mindur (0.2) maxdur (1.5) minpich (60) maxpich (60) in command line format:
texture simple 5 horn simplex1a ndfsim1.txt 12 0.25 0 0 1 1 36 84 0.2 1.5 60 60
texture simple 5 horn simplex1b ndfsim1.txt 12 packchng.txt 0 0 1 1 36 84 0.2 1.5 60 60
All the examples for TEXTURE SIMPLE can be made at once by running simplexs.bat from the DOS prompt. The soundfiles produced can be deleted with simpldel.bat.
Now let's start to look more closely at the salient parameters:
Running some changes on the initial example | ||||
outdur | packing | scatter | tgrid | Result |
---|---|---|---|---|
12 | 0.25 | 0 | 0 | 48 events will occur regularly on the ¼ second |
12 | 0.25 | 0.07 | 0 | 48 event onsets will be displaced, becoming a little uneven rhythmically |
12 | 0.25 | 0.07 | 330 | 48 events somewhat irregularly placed will gather at the 3rd of a second quantisation time grid points but some will be doubled. |
12 | 0.25 | 0 | 330 | 48 events will gather at the the 3rd of a second quantisation time grid points |
Some other generic illustrations | ||||
outdur | packing | scatter | tgrid | Result |
12 | 1 | 0 | 500 | 12 events will occur on the second: quantisation is 'pulled' to the 1 second 'boundary' |
12 | 1 | 1 | 500 | 12 events on the second or half-second: e.g., 1, 2, 2.5, 4 etc. |
12 | 1 | 0 | 2000 | 6 double events every 2 seconds: packing demands 12 events: tgrid forces them to a 2 sec grid |
12 | 0.5 | 0 | 330 | 24 events will occur. They will be shifted to the 3rd of a second grid. |
12 | 0.1 | 0 | 330 | The many events will group at the 3rd of a second grid. |
12 | 0.1 | 0 | 150 | The slighter quantisation here will reduce the bunching of the previous example |
You are recommended to experiment with TEXTURE SIMPLE Mode 5 for a while to see how easy it is to create random textures of varying density, and then to get a firm grasp of how packing, scatter and tgrid affect each other. This will provide you with a firm foundation with which to make full use of the more complex facilities which the TEXTURE Group provides.
Harmonic fields or sets handling the pitches
TEXTURE SIMPLE can also deal with harmonic fields or sets. Fields
transpose the specified pitch set into all (MIDI) octaves. Sets use
only the specified pitches. These form pitch lattices onto which the
various note events are placed. The first thing to understand here is
how the pitches specified in the command parameters relate to those
specified in the note data file.
But first, try this example of a fixed pitch set (Mode 3). The note data file ndfsim2.txt has two pitches, both starting at time 0: 60 and 67.
60
#2
0 1 60 0 0
0 1 67 0 0
You will hear, due to the rapid repetitions, a textured interval of a
perfect 5th.
SIMPLE Example 2 (Preset/Patch simplex2):
outdur (12) packing (0.025) scatter (0) tgrid (0) sndfirst (1) sndlast (1) mingain (36) maxgain (84) mindur (0.2) maxdur (1.5) minpich (60) maxpich (67) in command line format:
texture simple 3 horn simplex2 ndfsim2.txt 12 0.025 0 0 1 1 36 84 0.2 1.5 60 67
Harmonic fields or sets handling the durations
We have already seen how the timing of the events is random within
constraints, with the density (and number of events) controlled by
the packing parameter, while scatter can somewhat
randomise the time onsets of these events.
In TEXTURE SIMPLE, the duration parameter in the note data file is inactive and may be zero (or any other value it is ignored.) When this parameter is active, the interaction between the command and note event durations listed in the note data file works in a similar way as that for pitch.
The following example illustrates Mode 3. The notelist uses the pitches 60-67-72-76 (i.e., C-G-C-E': root-fifth-octave-tenth). The parameter pitch range is set as 60 to 76 to encompass the range in the note data file. Because Mode 3 is for pitch sets, we will hear only the 4 pitches listed in the note data file, spread out in a randomised order over the specified output duration. Here is the note data file for this (ndfsim3a.txt):
60
#4
0 1 60 0 0
0 1 67 0 0
0 1 72 0 0
0 1 76 0 0
Ndfsim3b.txt is the same, except the times (first column) are 0 4 7
and 11. You can run these notedata files with the following command lines:
SIMPLE Examples 3a/b/c(Presets/Patches simplex3a,b &c):Let's look at what the various parameter options chosen mean reminder: the parameters after the notedata file are (EX 3a):
outdur (12) packing (0.25) scatter (0) tgrid (0) sndfirst (1) sndlast (1) mingain (36) maxgain (84) mindur (0.2) maxdur (1.5) minpich (60) maxpich (76) in command line format:
texture simple 3 horn simplex3a ndfsim3a.txt 12 0.25 0 0 1 1 36 84 0.2 1.5 60 76
texture simple 2 horn simplex3b ndfsim3b.txt 12 0.25 0 0 1 1 36 84 0.2 1.5 60 76
texture simple 2 horn simplex3c ndfsim3b.txt 12 0.25 0 0 1 1 36 84 0.2 1.5 36 96
You should now be able to experiment successfully with TEXTURE SIMPLE.
[ndfsim4a.txt ndfsim4b.txt]
60 60
#8 #8
0 1 60 0 0 0 1 60 0 0
0 1 67 0 0 0 1 67 0 0
0 1 72 0 0 0 1 72 0 0
0 1 76 0 0 0 1 76 0 0
6 1 60 0 0 6 1 60 0 0
6 1 67 0 0 8 1 67 0 0
6 1 72 0 0 10 1 72 0 0
6 1 75 0 0 10 1 75 0 0
SIMPLE Examples 4a/b/c (Presets/Patches simplex4a,b, &c):
outdur (12) packing (0.25) scatter (0) tgrid (0) sndfirst (1) sndlast (1) mingain (36) maxgain (84) mindur (0.2) maxdur (1.5) minpich (60) maxpich (76) in command line format:
texture simple 4 horn simplex4a ndfsim4a.txt 12 0.25 0 0 1 1 36 84 0.2 1.5 60 76
texture simple 4 horn simplex4b ndfsim4a.txt 12 0.025 0 0 1 1 36 84 0.2 1.5 60 76
texture simple 4 horn simplex4c ndfsim4b.txt 12 0.025 0 0 1 1 36 84 0.2 1.5 60 76
The 'c' example tells us more about how the timing works by staggering the times of the 2nd four note events in ndfsim4a.txt: i.e., starting at times 6, 8, 10 and 10 seconds respectively, to create ndfsim4b.txt. To do this, we again need to invoke Mode 4 (changing harmonic sets). Now we hear the first four notes, the notes of the 1st set, playing in random order for the first 6 seconds. Then, at time 6 seconds, we hear mainly the 5th note event (with some overlaps from the previous set), at time 8 seconds, the 6th note event, and at time 10 seconds, we hear the 7th and 8th notes in rapid succession, sounding a minor third except that we will hear multiple iterations of those notes according to the setting of the packing parameter. Again the close packing at 0.025 sec creates a highly textured surface.
Were we to use Mode 3 with ndfsim4b.txt, the different start times would be disregarded and all the note events would play in random order throughout.
The above information tells us that we can create a single melodic line by using Mode 4 and setting a different start time for a series of note events. Some overlapping will occur if the notes are of different durations. Packing of onsets closer than the duration of any of the note events will texture the lines, while packing of onsets spaced wider than the duration of any of the note events will produce gaps.
So try this 'melodic' example for TEXTURE SIMPLE. The note data file ndfsim5.txt contains:
60
#10
0.0 1 60 0 0
1.0 1 67 0 0
3.0 1 66 0 0
3.5 1 62 0 0
4.5 1 64 0 0
6.0 1 69 0 0
7.5 1 66 0 0
8.5 1 60 0 0
9.5 1 62 0 0
10.0 1 67 0 0
SIMPLE Example 5 (Preset/Patch simplex5):Note that the packing is set to be just under the shortest time between two note events, so the melodic notes come through without too much texturing, following the note sequence in ndfsim5.txt: C-G-F#-D-E-A-F#-C-D-G. The -w flag makes the note duration range redundant, because when this is set the whole duration of the infile is used i.e., the whole length of the horn sound for each note of the outfile. In this case, this produces a great deal of overlapping notes hence the 'resonance'.
outdur (12) packing (0.4) scatter (0.3) tgrid (0) sndfirst (1) sndlast (1) mingain (36) maxgain (84) mindur (0.2) maxdur (1.5) minpich (60) maxpich (69) in command line format:
texture simple 4 horn simplex5 ndfsim5.txt 12 0.4 0.3 0 1 1 36 84 0.2 1.5 60 69 -w
Our final topic is time-varying texture shapes i.e., envelope
shapes with sloping edges. Example 6 creates two of these with
the files gprlo.brk and gprhi.brk. The first begins at
C-60 and expands up to 70 and down to 49 at 5 seconds, returning to
C-60 at 10 sec. Then the second shape starts at 10.01 seconds at
78 high and 58 low and compressing towards the centre G-67 by 18.0
sec. The last portion repeats the G. I've added time-varying packing
to create more density where the texture shapes are widest. These
are the files:
[ndfsim6.txt simplpak.brk gprlo.brk gprhi.brk]
60 0 0.25 0 60 0 60
#22 5 0.1 5 49 5 70
0.0 1 49 0 0 10 0.3 10 60 10 60
0.0 1 52 0 0 10.01 0.05 10.01 58 10.01 78
0.0 1 54 0 0 18 0.15 18 67 18 67
0.0 1 55 0 0 20 0.25 20 67 20 67
0.0 1 58 0 0
0.0 1 60 0 0
0.0 1 61 0 0
0.0 1 64 0 0
0.0 1 66 0 0
0.0 1 67 0 0
0.0 1 70 0 0
10.0 1 58 0 0
10.0 1 60 0 0
10.0 1 61 0 0
10.0 1 64 0 0
10.0 1 66 0 0
10.0 1 67 0 0
10.0 1 70 0 0
10.0 1 72 0 0
10.0 1 73 0 0
10.0 1 76 0 0
10.0 1 78 0 0
And the parameters are set as follows:
SIMPLE Example 6 (Preset/Patch simplex6):
outdur (12) packing (simplpak.txt) scatter (0) tgrid (0) sndfirst (1) sndlast (1) mingain (36) maxgain (84) mindur (0.2) maxdur (1.5) minpich (gprlo.brk) maxpich (gprhi.brk) in command line format:
texture simple 3 horn simplex6 ndfsim6.txt 21 simplpak.brk 0 0 1 1 36 84 0.2 1.5 gprlo.brk gprhi.brk
Return to list of TEXTURE functions at top
of this file
We can already see that this is an extremely powerful set of programs, which can undoubtedly be used in endlessly imaginative ways. For the moment, let us simply outline what we have learned so far. With the TEXTURE program group, we can create:
METHOD: use Mode 4, specify specific start times for each note event in the ndata file, and set the packing to be about the same as the shortest time between notes. Note durations in the note data file can be zero (they are disregarded with harmonic fields or sets); note overlaps result from making the successive start times shorter than at least some of the note durations set with the parameter duration range. With the -w flag set, there may be even more overlapping if the sound's duration is longer than the packing setting, with possibilities for resonances and harmonies emerging from the melody.
METHOD: use Mode 4 and specify specific start times in the ndata file and set packing to be very short, certainly much shorter than the time between note events. A very close packing (e.g., 0.01) may cause amplitude overload. You can apply the gain reduction recommended by the program, or perhaps reduce the maxdur value to lessen the amount of note overlap.
METHOD: use Mode 3, set all start times in the ndata file to 0 and specify pitches as desired. A mindur maxdur range will produce note overlaps (unless maxdur is less than the time gap between events).
METHOD: in the ndata file, start all note events of the first set at one time, and all note events of the second set at another, later, time.
METHOD: define harmonic sets, which may differ at different times. Then create time-varying group pitch range files to define the envelope shapes.
End of TEXTURE SIMPLE
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line. In Mode 5 this is all that is needed.
- In Modes 1 - 4 there is also a NOTELIST to define a Harmonic Field/Set, specified thus:
- #N (where N is the number of pitches in the notelist).
- This is followed by N lines in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs)- Amp and dur are inactive.
- Any times within the field must increase (or remain the same, during chords)
outdur minimum duration of the outfile
Form: MPV/// Form: MPV/HF-S// Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow time instr pitch amp dur List of Harmonic Field/Set
packing (average) time in seconds between group onsets
scatter randomisation of group onsets (Range: 0 to 10)
tgrid minimum step in milliseconds for quantised timegrid (for group start times) (Default: 0)
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
mindur, maxdur minimum and maximum duration of events in texture
minpich, maxpich minimum and maximum pitch (MIDI note value)
phgrid a timegrid in milliseconds applying WITHIN the groups (Range: 0.0 to 1000.0)
gpspace spatialisation of event-groups (Range: 0 to 5; Default: 1)
0 no changegpsprange spatial range of event-groups (Range: 0 to 1; Default: 1)
1 scattered (Default)
2 decorations will move towards where the event is
3 decorations move away from where the event is
4 decorations follow the texture motion from Left to Right
5 decorations follow the texture motion from Right to Left
amprise amplitude change within groups (Range: 0 to 127; Default: 0)
contour amplitude contour of groups (Range: 0 to 6; Default: 0)0 mixture of the other types (Default)gpsizelo, gpsizehi smallest & largest number of events in any given group
1 crescendo
2 flat (no change)
3 decrescendo
4 crescendo or flat
5 crescendo or decrescendo
6 decrescendo or flat
gppaklo, gppakhi shortest & longest time between event-onsets within a group (Range in milliseconds: 0.023 to 60000.0 i.e., 1 minute)
gpranglo, gpranghi minimum & maximum pitch range for the note events in any given group
OR, for harmonic fields, the number of notes in the range of the harmonic field
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-d fixed timestep between groupnotes
-i each group not confined to a fixed instrument (Default: fixed)
All parameters except notedata, outdur and seed may vary over time.
Please refer to TEXTURE SIMPLE if you are not already familiar with the Texture functions, and also make sure you have gone through the background information before continuing. The following text will focus on what is specific to TEXTURE GROUPED.
The idea behind TEXTURE GROUPED is easily grasped by imagining several quick bursts of note events separated by silence. A 'group' is a 'burst of notes', and the program handles creating silences inbetween bursts. The program is, however, more flexible than that because:
When using a command line rather than a graphic interface, to help with remembering all the parameters, I find it helpful to use a batch file which starts with 'rem' lines which list the parameters in groups:
rem minoutdur pack scat tgrid
rem sndf sndl ming maxg mind maxd minp maxp
rem phgrid gpspace gpsprange amprise contour
rem gpsizelo gpsizehi gppaklo gppakhi gpranglo gpranghi
rem -aatten -ppos -ssprd -rseed -w -d -i
Unfortunately, Carriage Returns are not acceptable in the command line
itself, so this memory aid is still not as helpful as one might wish.
Also, when exploring a program of this complexity, it can be helpful
to make use of the CDP environment variable which enables you to
overwrite a soundfile of a specific name: set CDP_OVERWRITE_FILE=
aname. Then you can do several of versions without having to rename
them, and when you find one that you want to keep, just save it to a new name.
As before, let's start with an example we can hear. Example 1
produces separated groups of rapid-fire note events; the groups start
two seconds apart. We are using Mode 3 ('on a given harmonic set'),
with the note data file ndfgrp1.txt, which is:
60
#4
0 1 62 0 0
0 1 64 0 0
0 1 66 0 0
0 1 67 0 0
GROUPED Example 1 (Preset/Patch grouped1/groupex1):
... minoutdur (10) packing (2) scatter (0) tgrid (0)
sndf (1) sndl (1) ming (30) maxg (64) mind (0.25) maxd (1.25) minp (36) maxp (84)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (10) gpsizehi (20) gppaklo (25) gppakhi (50) gpranglo (4) gpranghi (4)
texture grouped 3 horn groupex1 ndfgrp1.txt 10 2 0 0 1 1 30 64 0.25 1.2 36 84 0 1 1 0 0 10 20 25 50 4 4
All the examples for TEXTURE GROUPED can be made by running groupexs.bat from the DOS prompt. The soundfiles produced can be deleted with groupdel.bat.
Timing from group to group
TEXTURE GROUPED builds on TEXTURE SIMPLE by dealing with groups of
notes where formerly there would have been only one. Packing
determines the amount of time from the onset of one group to the onset
of the next group, scatter randomises this timing, and tgrid
quantises it, i.e, introduces regularity. In the above example, there
are 2 seconds between the onsets of each group. Note that in the note
data file, the start times, velocities and durations are set to zero. The
start times become relevant when using changing harmonic fields
or sets.
Shaping each group number of events & pitch range
The number of events allowed in any given group is set with the
gpsizelo & gpsizehi parameters, 10 20 in the
above example.
Note that these can both be set to 1 so that there will only be one event in each group. This can be a useful way to observe the time gaps between groups, and the effect that scatter and tgrid have on this timing.
Similarly, the size of the pitch range allowed in any given group is set with gpranglo & gpranghi. In the above example, each group will remain within a range of only 4 notes (matching the note data file).
The pitch start point of a group is selected from within minpich & maxpich. Thus, the overall pitch range, set by minpich & maxpich may, for example, be an 8ve; but the pitch range in any given group, set by gpranglo & gpranghi, could be a minor 3rd.
Shaping each group durations
Since we are dealing with groups, however, the next salient question is how
do we control the timing of events within the groups? Let's look at
the following parameters:
Here are some suggestions for different types of texture that can be created with TEXTURE GROUPED.
rem minoutdur (10) packing (2) scatter (0) tgrid (0)
rem sndf (1) sndl (1) ming (30) maxg (64) mind (0.25) maxd (1.25) minp (36) maxp (84)
rem phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
rem gpsizelo (10) gpsizehi (20) gppaklo (25) gppakhi (50) gpranglo (4) gpranghi (4)
texture grouped 3 horn groupex1 ndfgrp1.txt 10 2 0 0 1 1 30 64 0.25 1.2 36 84 0 1 1 0 0 10 20 25 50 4 4
texture grouped 3 horn groupex2
ndfgrp1.txt 10 grppack.brk 0 0 1 1 30 64 0.25 1.2 36 84 0 1 1 0 0 10 20 25 50 4 4
texture grouped 3 horn groupex3
ndfgrp1.txt 10 2 0 0 1 1 30 64 0.25 1.2 36 84 200 1 1 0 0 10 20 25 200 4 4
texture grouped 3 horn groupsex4
ndfgrp1.txt 10 2 0 0 1 1 30 64 0.75 1.2 36 84 200 1 1 0 0 10 20 25 200 4 4
texture grouped 3 horn groupsex5
ndfgrp1.txt 10 2 0 0 1 1 30 64 0.1 0.2 36 84 200 1 1 0 0 10 20 25 300 4 4
texture grouped 3 horn groupex6
ndfgrp1.txt 10 0.5 0 0 1 1 30 64 0.2 0.3 36 84 0 1 1 0 0 10 20 25 50 4 4
End of TEXTURE GROUPED
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line
- followed by a 'line' substructure NOTELIST, specified thus:
- #N (where N is the number of pitches in the notelist).
- This is followed by N lines in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs); amp and dur are inactive fields in TEXTURE DECORATED.- different times must be given, and they must must increase; all 0's for chords are not allowed.
- this is all that is needed for Mode 5.
- in Modes 1 to 4, you need an additional set of lines for the decoration definition; these are also introduced by the number of lines (#N, which acts as a separator). The decoration is 'tied into' the above 'line' substructure set by providing the same start time (may be several decoration notes at the same time) and by duplicating the MIDI note value for one of the decoration notes. (See illustrations below.)
outdur minimum duration of the outfile
Form: MPV/NS// Form: MPV/NS/HF-S/ Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of 'line' (Nodal Substructure) time instr pitch amp dur List of 'line' (Nodal Substructure) #N No. of lines to follow time instr pitch amp dur List of Harmonic Field/Set
skiptime time between repeats of motif-to-decorate in notedata, i.e., between runs of the 'line' substructure notelist
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
mindur, maxdur minimum and maximum duration of events in texture
phgrid a timegrid in milliseconds applying WITHIN the decorations (Range: 0.0 to 1000.0)
gpspace spatialisation of decoration-groups (Range: 0 to 5; Default: 1)0 no changegpsprange spatial range of decoration-groups (Range: 0 to 1; Default: 1)
1 scattered (Default)
2 decorations will move towards where the event is
3 decorations move away from where the event is
4 decorations follow the texture motion from Left to Right
5 decorations follow the texture motion from Right to Left
amprise amplitude change within decorations (Range: 0 to 127; Default: 0)
contour amplitude contour of decorations (Range: 0 to 6; Default: 0)0 mixture of the other types (Default)gpsizelo, gpsizehi smallest & largest number of events in the decorations
1 crescendo
2 flat (no change)
3 decrescendo
4 crescendo or flat
5 crescendo or decrescendo
6 decrescendo or flat
gppaklo, gppakhi shortest & longest time between event-onsets in the decorations (Range in milliseconds: 0.023 to 60000.0 i.e., 1 minute)
gpranglo, gpranghi minimum & maximum pitch range of the decorations, given not in MIDI note values but as the number of adjacent tones to be used: from the full chromatic field in Mode 5, OR from the members of the harmonic field/set defined in the other Modes)
centring how the decoration pitches centre on line pitches (Range: 0 to 7; Default: 0)0 centred (default)-aatten overall attenuation of the output
1 above
2 below
3 centred and above
4 centered and below
5 above and below
6 centred and above and below
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-d fixed timestep between groupnotes
-i each group not confined to a fixed instrument (Default: fixed)
-h decorate topnote of chord (Default: decorate first note listed)
-e decorate all the notes of chords
-k discard original line, after decoration
All parameters except notedata, outdur, skiptime and seed may vary over time.
The key to TEXTURE DECORATED is that the (ascending) start times defining the the 'line' of nodes to be decorated are important. The decorations are connected to the line centred (DECORATED), before and ending on (PREDECOR), and starting precisely on (POSTDECOR), these time points. Breakpoint times also have to tie in with these times or nothing will happen. Musically, this means that the decorations on a series of nodes can be varyingly constructed. Remember that a 'decoration' consists of notes chosen randomly from the decoration field, which can be more or less harmonic. This randomness is what differentiates DECOR and ORNATE. In ORNATE, there can be figures with internal rhythm and velocity fully defined and also attached to nodes. In MOTIFS, fully defined figures are used, but not a defined nodal substructure.
The TEXTURE DECORATED node data file, then, uses two groups of data:
The decorations are by default located around (centred on) the 'line' substructure nodes. The centring parameter setting enables the decorations to be located above, below etc. the 'line' substructure nodes.
Similarly, with TEXTURE DECORATED the decorations are centered on the start times listed for the main substructure nodes, i.e., they will tend to come in a little before the node start time and finish a little after this time. When TEXTURE PREDECOR is invoked, the decorations happen before the main substructure nodes, ending at the node start time. The decorations start precisely on the node start time and therefore come after the node with TEXTURE POSTDECOR. Larger group packing times will spread out the decoration, however, and may cause it to overlap (still be unfolding) when the next node begins. By having a lower group size or shorter durations for the group packing, it is possible to have the decoration end before the next node begins, in which case there will be a silence until the time for that node is reached.
In the introductory notes about the note data file, the order of placement of the data was mentioned. First is the line, then the data for harmonic fields/sets which is also the data used for decorations. Thus, this second set of data can be any group of notes: it doesn't have to be 'harmonic'. Thirdly, there is the data for ornaments/motifs, which we shall cover in TEXTURE ORNATE etc.
Basically, what happens in the note data file for TEXTURE DECORATED is this:
This list is required in ALL modes of TEXTURE DECORATED, with start times which must increase from note to note. In Mode 5 it is the only field that is needed.
What happens is this: gpranglo/hi define how many notes of this field to use for any given decoration. It then draws that number of notes from this field (and no other notes), with each node note of the substructure list as the time and pitch point of reference, and plays them in random order ('random assembly'). Note that the overall pitch range as well as the top of the field itself must be able to must accommodate gpranglo/hi number of field notes around, above, or below the lowest/ highest node in the substructure, according to the centring parameter.
This third list is not required by / used in TEXTURE DECORATED.
While similar to TEXTURE GROUPED, we notice that TEXTURE DECORATED lacks the trio of parameters which defined the timing between groups (packing scatter tgrid). Rather, we find the new parameters skiptime and centring. This is because it is building its texture on a linear substructure, which is what is first defined in the note data file. So let us focus our attention on these parameters.
We are now ready to look at some examples and will do so directly in the 'Musical Applications' section below.
All the examples for TEXTURE DECORATED can be made by running decorexs.bat from the DOS prompt. The soundfiles produced can be deleted with decordel.bat.
See decorexs.bat for a listing of the examples in the TEXTURE DECORATED section. You can run this batch file to create the examples. You will find it and the various note data and breakpoint files in your Texture Pack. (NB - command line use only, though it is a useful reference for all systems).
Example 1a
Our first example for TEXTURE DECORATED uses Mode 5, where
only the 'line' substructure note list is needed. We shall create
4 nodes and place a decoration consisting of 5 repeating notes on
each of these nodes. In Mode 5 we don't have to specify
the decoration as the information required is supplied by the
parameters. Here is a note data file which specifies these
four 'line' substructure nodes, ndfdec1.txt:
60
#4
0.0 1 60 0 0
2.0 1 67 0 0
4.0 1 63 0 0
6.0 1 62 0 0
This will create a line of substructure nodes C-G-Eb-D, where C is Middle C,
at 0, 2, 4 and 6 seconds respectively. With an outdur of 20
seconds, this 4-node musical unit will repeat after 2 skiptime
seconds. Skiptime begins at the start time of the last
substructure node. As the time between nodes is a regular two seconds,
the node sequence will repeat without breaking that regularity.
The decoration of 5 micro-trills (which may sound like just notes which repeat) is set by making both gpsizelo and gpsizehi equal to 5, and we'll have a reasonably quick, but not too fast, and regular, note speed within the decoration by making both gppaklo and gppakhi equal to 60 ms. The trills are very small (equal to or less than a semitone) because gpranglo/hi are both set to 1.
Here is the command line which summarises this data:
DECORATED Example 1a (Preset/Patch decor1a/decorex1a):
... minoutdur (20) skiptime (2.0)
sndf (1) sndl (1) ming (36) maxg (64) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (5) gpsizehi (5) gppaklo (60) gppakhi (60) gpranglo (1) gpranghi (1) centring (0)
texture decorated 5 horn decorex1a ndfdec1.txt 20 2.0 1 1 36 64 1.0 1.0 0 1 1 0 0 5 5 60 60 1 1 0
The role of the group pitch range gpranglo/hi is instructive:
Example 1b
Still in Mode 5 and using the same note data file as in Example 1a
(ndfdec1.txt), Example 1b also employs the breakpoint file
dm5gprhi.brk for the parameter gpranghi:
0 1
2 8
4 1
6 6
8 1
10 10
12 1
14 7
16 1
18 9
20 1
POST-DECORATED Example 1b (Preset/Patch decor1b/ decorex1b):POSTDECOR is used so that the decorations will begin precisely on the node start time: because in POSTDECOR the decorations come after the node. We hear little burbles on every other node because in dm5gprhi.brk every other node has a pitch range greater than 1.
... minoutdur (20) skiptime (2.0)
sndf (1) sndl (1) ming (36) maxg (64) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (5) gpsizehi (5) gppaklo (60) gppakhi (60) gpranglo (1) gpranghi (dm5gprhi.brk) centring (0)
texture postdecor 5 horn decorex1b ndfdec1.txt 20 2.0 1 1 36 64 1.0 1.0 0 1 1 0 0 5 5 60 60 1 dm5gprhi.brk 0
Example 2a
If we now move on to the harmonic set/field modes, we will see
how the 'random assembly' feature is still present, but tied into
specifically named pitches. We start with Mode 3 and here we need
to define the pitches from which the decoration will be formed, so a
second note list is needed in the note data file. In the following
example, the substructure nodes form a rising G-minor shape: G4-Bb4-D5-G5,
where C5 is Middle C. Each note of this shape is then decorated with a
whole tone trill. Gpranglo/hi is set to 2, meaning in this
case how many notes from the decoration field to use at any one time
and only these notes are used, not any of the inbetween ones as in
Mode 5. Note that all the times of the decoration field are set
to 0. Here is the note data file for this example,
ndfdec2a.txt:
60
#4
0.0 1 60 0 0
2.0 1 67 0 0
4.0 1 63 0 0
6.0 1 60 0 0
#3
0.0 1 60 0 0
0.0 1 64 0 0
0.0 1 67 0 0
POST-DECORATED Example 2a (Preset/Patch decor2a/ decorex2a):Note that gpranglo/hi is set to 3, to use all three notes in the decoration field. The same three decoration notes decorate each of the substructure nodes. In this case, all the notes match except for the Eb/E-natural. Thus only the third node sounds different. Using the '1' option for centring did NOT result in the notes of the decoration being transposed to build on (above) each of the substructure nodes. All the nodes are decorated with the same chord because those are the only (3) notes given in the decoration field in Mode 3 in which only the notes in the defined harmonic set are used. If we provide more notes, in fact the pitches needed to place a triad on each node, we find that this is indeed what happens. Thus we can hear that TEXTURE DECORATED does use each node as a tonal centre for each decoration on it.
... minoutdur (12) skiptime (2.0)
sndf (1) sndl (1) ming (36) maxg (64) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (5) gpsizehi (9) gppaklo (60) gppakhi (60) gpranglo (3) gpranghi (3) centring (1)
texture postdecor 3 horn decorex2a ndfdec2a.txt 20 2.0 1 1 36 64 1.0 1.0 0 1 1 0 0 5 9 60 60 3 3 1
Example 2b
Example 2b illustrates constructing a decoration field that will
enable building different triads on the substructure nodes. The
note data file ndfdec2b.txt is as follows. Note that all
start times are still 0 the decoration start times come from
the node itself.
60
#8
0.0 1 60 0 0
2.0 1 63 0 0
4.0 1 67 0 0
6.0 1 70 0 0
8.0 1 74 0 0
10.0 1 70 0 0
12.0 1 67 0 0
14.0 1 63 0 0
#7
0.0 1 60 0 0
0.0 1 63 0 0
0.0 1 67 0 0
0.0 1 70 0 0
0.0 1 74 0 0
0.0 1 77 0 0
0.0 1 81 0 0
POST-DECORATED Example 2b (Preset/Patch decor2b/ decorex2b):Now we have different decorations (all of which are triads) coming in on each time-specified node. We have also used centring = 1 so that the node is the root (bottom note) of each decoration.
... minoutdur (28) skiptime (2.0)
sndf (1) sndl (1) ming (36) maxg (64) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (5) gpsizehi (9) gppaklo (60) gppakhi (60) gpranglo (3) gpranghi (3) centring (1)
texture postdecor 3 horn decorex2b ndfdec2b.txt 20 2.0 1 1 36 64 1.0 1.0 0 1 1 0 0 5 9 60 60 3 3 1
The key to achieving decorations restricted to triadic formations on the various nodes lies in the design of the harmonic field/set. The set used here moves up steadily in 3rds so that all adjacent members of the set remain a 3rd apart (major or minor): C - Eb - G - Bb - D' - F' - A'. The highest node is D' (74) so that the F' and A' are available to form the triad. Thus, when the triads are built on each of the nodes, we get the following triads: Cm, Ebmaj, Gm, Bbmaj, and Dm.
Note that if we tried to have major and minor versions of the same triad, this would introduce adjacent semitones into the field, e.g., C - Eb - E-natural - G. The program can only select grprange adjacent events, so in this case the first group would use C - Eb - E-natural and not form a triad.
Mode 4 used with this note data file produces the same results because no times are specified in the harmonic field/set. It is quite possible to have changing fields, in which case the grprange adjacent notes would change their harmonic character each time a new field came in. Modes 1 and 2 introduce note-events at different octaves, as permitted by the overall pitch range.
Example 2c
The next example illustrates the same process, this time with a note
data file designed to produce dyads (pairs of notes around a single
interval). Here the pitches in the decoration field are selected so
that they will harmonise with the nodal tones. Then they are all set
to begin at time zero, and we rely on gpranglo/hi (set to
2) to select pairs of notes from this field.
The idea of the example is to build dyads on each of the
substructure nodes. We use centring = 1 to get the decoration
to start on and lie above the substructure node. This time all the
nodes of the substructure are decorated. Ndfdec2c.txt follows,
and we are running it first in Mode 3.
60
#4
0.0 1 55 0 0
2.0 1 58 0 0
4.0 1 62 0 0
6.0 1 65 0 0
#8
0.0 1 55 0 0
0.0 1 58 0 0
0.0 1 62 0 0
0.0 1 65 0 0
0.0 1 67 0 0
0.0 1 70 0 0
0.0 1 74 0 0
0.0 1 77 0 0
POST-DECORATED Example 2c (Preset/Patch decor2c/ decorex2c):Now this is important: We set gpranglo/hi to 2 to specify that we should use pairs of notes from the decoration field. What we hear, then, are the notes of the dyads selected from the decoration field and only these notes played in random order above each of the respective nodes. The decoration field has to be carefully constructed so that the desired harmonic effect is achieved.
... minoutdur (20) skiptime (2.0)
sndf (1) sndl (1) ming (36) maxg (64) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (5) gpsizehi (5) gppaklo (60) gppakhi (60) gpranglo (2) gpranghi (2) centring (1)
texture postdecor 3 horn decorex2c ndfdec2c.txt 20 2.0 1 1 36 64 1.0 1.0 0 1 1 0 0 5 5 60 60 2 2 1
Mode 4 used with the same data produces the same results. Modes 1 and 2 introduce octave notes, as permitted by the overall pitch range.
Building on these foundations, we can achieve more varied and 'plastic' results by employing ranges and time-varying breakpoint files for the various parameters. But recall what was observed above, that the effect of the times in breakpoint files seems constrained by the start times of the nodes: pending further experimentation, it appears that the parameter value in force when a node begins is what is used: the breakpoint times do not override the node times and therefore cannot bring the parameter value in at a breakpoint time which differs from a node time.
Example 3
Example 3 illustrates a more flexible use of TEXTURE DECORATED. The
note data file ndfdec3.txt defines five nodes each 5 seconds
apart. These are then decorated from a field of 15 notes, with a
time-varying set of values for gprangehi.
[ndfdec3.txt]
60
#5
0 1 60 0 0
5 1 64 0 0
10 1 67 0 0
15 1 70 0 0
20 1 60 0 0
#15
0 1 49 0 0
0 1 52 0 0
0 1 54 0 0
0 1 55 0 0
0 1 58 0 0
0 1 60 0 0
0 1 61 0 0
0 1 64 0 0
0 1 66 0 0
0 1 67 0 0
0 1 70 0 0
0 1 72 0 0
0 1 73 0 0
0 1 76 0 0
0 1 78 0 0
The breakpoint file for gprangehi is dx3gprhi.brk:
0 8
5 10
10 15
15 12
20 11
Note that the times match those for the 'line' nodes in the note data
file. When we hear the resultant sound, we can also observe that each
decoration is centred on the node pitch i.e., they move up and
down in pitch according to the underlying node. The group pitch range
low is set at a constant 2, so the range of decoration field notes used
in each burst will vary between 2 and 8, 2 and 10, 2 and 15, etc.
The gpsize is set to give a relatively low number of events: from 10 to 25. The gppak range is fast, but varied: between 40 and 125 ms. The overall effect is little bursts of note events, with gaps inbetween. These gaps are those between the end of the decoration and the start of the next node not skiptime, which occurs at the end of the whole sequence. We are using POSTDECOR so that the decorations begin with the node.
POST-DECORATED Example 3 (Preset/Patch decor3/ decorex3):In Example 3, skiptime is in fact never used because the node times are spread out to fill the whole outdur, so the node sequence doesn't get a chance to repeat.
... minoutdur (20) skiptime (1)
sndf (1) sndl (1) ming (36) maxg (64) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (10) gpsizehi (25) gppaklo (40) gppakhi (125) gpranglo (2) gpranghi (dx3gprhi.brk) centring (0)
texture postdecor 3 horn decorex3 ndfdec3.txt 20 1 1 1 36 64 1.0 1.0 0 1 1 0 0 10 25 40 125 2 dx3gprhi.brk 0
End of TEXTURE DECORATED / PREDECOR / POSTDECOR
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None [not used by MOTIFSIN]
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line; a pitch value must be given for each infile (separated by a space).
- In Mode 5 this is followed by a NOTELIST defining a motif, specified like this:
- #N (where N is the number of pitches in the motif).
- a motif specified thus: time (secs) infile_no pitch (MIDI) amp (MIDI) sustain (secs).
Different start times must be given, and they must must increase; all 0's for chords are not allowed.
This is all that is needed in Mode 5. There may be more than one motif defined in this way.- ALTERNATIVELY: In Modes 1 4, a harmonic field/set notelist must be defined BEFORE the motifs are listed. This is in the format:
- #N (where N is the number of pitches in the notelist).
- a harmonic field specified thus: time (secs) infile_no pitch (MIDI) amp (MIDI) sustain (secs).
In the harmonic set/field(s) amp and sustain are inactive fields. Also, in the harmonic field/set definition, time can be all zeros in Modes 1 and 3, whereas in Modes 2 and 4 different times are given when the field's pitch contents change at specified times.- The motif(s) themselves must now be defined, exactly as above.
- In the motifs, time, amp and sustain and all active fields. Thus the motif is able to be very precisely defined.
- Any number of motifs may be defined in this way, which is also true in Mode 5.
outdur minimum duration of the outfile
Form: MPV/M// Form: MPV/HF-S/M/ Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of Motifs time instr pitch amp dur List of Harmonic Field/Set #N No. of lines to follow time instr pitch amp dur List of Motifs
packing (average) time between motif onsets
scatter randomisation of event onsets (Range: 0 to 10)
tgrid minimum step in milliseconds for a quantised time grid for motif start times (Default: 0)
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
minpich, maxpich minimum and maximum pitch (MIDI note value)
phgrid a timegrid in milliseconds applying WITHIN the motifs (Range: 0.0 to 1000.0)
gpspace spatialisation of event-groups (Range: 0 to 5; Default: 1)0 no changegpsprange spatial range of event-groups (Range: 0 to 1; Default: 1)
1 scattered (Default)
2 motifs will move towards where the event is
3 motifs move away from where the event is
4 motifs follow the texture motion from Left to Right
5 motifs follow the texture motion from Right to Left
amprise amplitude change within motifs (Range: 0 to 127; Default: 0)
contour amplitude contour of groups (Range: 0 to 6; Default: 0)0 mixture of the other types (Default)multlo, multhi smallest & largest multiplier of total input duration of motif
1 crescendo
2 flat (no change)
3 decrescendo
4 crescendo or flat
5 crescendo or decrescendo
6 decrescendo or flat
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-d motif notes all have the same duration as the ornamented note
-i motifs are not confined to the instrument of the ornamented note (Default: same note)
All parameters except notedata, outdur and seed may vary over time.
TEXTURE MOTIFS creates fully defined figures like the ornaments of TEXTURE ORNATE, but does not attach them to a user-defined Nodal Substructure. It attaches them either to pitches randomly selected from a pitch range, or from the pitches defined in a Harmonic Field/Set, again making a random selection of which pitches to use. There are interesting and useful differences between Mode 5 and Modes 1-4 and between MOTIFS and MOTIFSIN.
The note data file
In Mode 5 there is no Harmonic Field/Set, and so the first section of the note data file is used for the motif itself, in which all fields are active. There can be more than one motif by adding another #N and the motif note events. The pitches for each note event are selected at random from the range defined by minpich - maxpich (the pitch range parameters).
In the other Modes, the Harmonic Field/Set comes first, followed by the motif(s). In the Harmonic Field/Set, the time field uses zeros for Modes 1 and 3 (the motif, with its own internal timing, repeats after skiptime seconds, and the pitches are selected at random from the field). Changing times (ascending) are used for Modes 2 and 4 (only the pitches given for a certain time will be used during that time period Example 4 illustrates this).
The difference in how the motif notes are attached by MOTIFS and MOTIFSIN
MOTIFS Only the first note of the motif is 'forced onto the harmonic Field/Set'. This means that only the first note of the motif need be specified in the field all the other notes of the motif are accurately transposed to follow on from there. You hear the first note of the motifs moving about in the field, and the rest of the motif flowing nicely from it, with nothing missed out. This feature can be musically useful when intense repetitions of a (whole) motif are desired. This was not the case with DECORATED or ORNATE, where the Harmonic Field/Set had to contain all the notes which might be used when the decoration or ornament was transposed.
MOTIFSIN In this case, all the notes of the motif are 'forced' onto the field (MOTIFSIN does not have a Mode 5). The result of this is that all the other notes in the motif will come from the field. The software is very clever about this, and nothing is left out when a transposed motif calls for a pitch which isn't in the field but the motif is altered in the process. What happens is that there are transpositions and repetitions of the motif pitches in order to recast the motif to use exclusively the pitches of the field. This muddles the shape of the motif quite a bit, which can be musically useful when you want to develop a texture using a motif which transforms in unpredictable ways.
All the examples for TEXTURE MOTIFS can be made by running motifexs.bat from the DOS prompt. The soundfiles produced can be deleted with motifdel.bat.
EXAMPLE 1
Our first example illustrates Mode 5 by playing a defined motif on pitches randomly selected from a pitch range. There is therefore no Harmonic Field/Set, so the note data file ndfmot1.txt gets straight to the definition of the motif itself:
60 #10 (10-event motif) 0.0 1 60 70 0.3 0.1 1 61 50 0.3 0.2 1 66 50 0.3 0.3 1 67 50 0.3 0.4 1 66 70 0.3 0.5 1 67 60 0.3 0.6 1 70 60 0.3 0.7 1 66 60 0.3 0.8 1 72 80 0.3 0.9 1 66 50 0.3
MOTIFS Example 1 (Preset/Patch motif1/motifex1):What we hear is the defined motif repeating every second, beginning on different pitches selected from the pitch range 48 to 84 (3 octaves). By using the seed option, you can produce different but reproduceable outputs each time, if you want to explore different random selections from the pitch range. You can add more motifs in the note data file, and the program will select among them as it builds the output soundfile.
... outdur (12) packing (1) scatter (0) tgrid (0)
snd1st (1) sndlast (1) ming (30) maxg (90)
minp (48) maxp (84) phgrid (0) grpspace (1) gpsprange (1)
amprise (0) contour (0) multlo (1) multhi (1)
[-aatten -pposition -sspread -rseed -w -d -i]
texture motifs 5 marimba motifex1 ndfmot1.txt 12 1 0 0 1 1 30 90 48 84 0 1 1 0 0 1 1
EXAMPLES 2a/b/c
These three examples make use of Mode 3. The note data file ndfmot2.txt starts by defining a Harmonic Field/Set and then defines a quick-note motif which lasts for 1 second. Skiptime is set to 1 second, so the repeats (at different transpositions) follow on without a break.
60 #9 (Harmonic Field/Set) 0.0 1 60 0 0 0.0 1 61 0 0 0.0 1 63 0 0 0.0 1 64 0 0 0.0 1 66 0 0 0.0 1 67 0 0 0.0 1 68 0 0 0.0 1 70 0 0 0.0 1 72 0 0 #10 (10-event motif) 0.0 1 60 70 0.3 0.1 1 61 50 0.3 0.2 1 66 50 0.3 0.3 1 67 50 0.3 0.4 1 66 50 0.3 0.5 1 67 70 0.3 0.6 1 70 50 0.3 0.7 1 66 50 0.3 0.8 1 72 80 0.3 0.9 1 66 60 0.3
MOTIFS Examples 2a/b/c (Preset/Patch motif2a, b, &c /motifex2a, b, &c 2b uses MOTIFSIN: harmonic):What we hear:
... outdur (12) packing (1) scatter (0) tgrid (0)
snd1st (1) sndlast (1) ming (30) maxg (90)
minp (48) maxp (84) phgrid (0) grpspace (1) gpsprange (1)
amprise (0) contour (0) multlo (0.5) multhi (2)
[-aatten -pposition -sspread -rseed -w -d -i]
texture motifs 3 marimba motifex2a ndfmot2.txt 12 1 0 0 1 1 30 90 48 84 0 1 1 0 0 0.5 2
texture motifsin 3 marimba motifex2b ndfmot2.txt 12 1 0 0 1 1 30 90 48 84 0 1 1 0 0 0.5 2
texture motifs 3 marimba motifex2c ndfmot2.txt 12 0.25 0 0 1 1 30 90 48 84 0 1 1 0 0 0.5 2
- We hear a defined motif play, at varying tempos, on a random selection from the notes of a defined harmonic set. The first note of the motif is taken (at random) from the field, and (all) the rest of the motif follows on as is expected (i.e., transposed).
- The 'b' version uses MOTIFSIN with the same parameters, and we hear the motif being warped as it is recast to use only the pitches of the defined harmonic set. Some pitches may be omitted or repeated as a result of the warping. Note how this differs from the use of Mode 3 in MOTIFS.
- The 'c' version creates overlaps with a skiptime of 0.25.
Further work done in 2001 sheds a little more light on the above examples. It is important to realise that in both the 'a' and the 'b' versions, the start note is drawn at random from the harmonic field or set: that is, the motifs will repeat with transpositions. If there are overlaps, the motif and field/set need to be coordinated so that desired results are obtained.
I was seeking to have the motif repeat, always beginning on the same pitch, the pitch defined as the start-pitch of the motif itself, with or without overlaps. This can be done, I found, by defining the harmonic set, defining the motif with pitch and velocity (important to bring out rhythmic groups), and then giving the start pitch of the motif as both the lower and upper pitch range values. I expected it to play the motif by repeating only one pitch, but in fact all the pitches of the motif are used.
TMOTIFS Preset Examples 2a and 2b appear to be doing this (starting on the same pitch), but this is not in fact happening. It appears to be happening because both the harmonic set and the motif are constructed with intervals of a minor-3rd, so it all harmonises no matter which start pitch of the harmonic set is used. One must use the same technique described above (both low and high pitch range = the start pitch of the motif) for the motif to repeat starting each time on the same pitch. A motif structured with different intervals would reveal this. (AE)
EXAMPLES 3a/b/c
We now introduce two inputs (marimba & horn) and two motifs. The second motif uses longer note values than the first. The marimba is slightly lower than the horn in pitch, so we lower its reference MIDI note value to 59. The note data file ndfmot3.txt below defines the Harmonic Field/Set first, and then the two motifs. Again the times in the field are all zero for use with Mode 3 and skiptime determines the time between repetitions of the motif.
59 60 #9 (Harmonic Field/Set) 0.0 1 60 0 0 0.0 1 61 0 0 0.0 1 63 0 0 0.0 1 64 0 0 0.0 1 66 0 0 0.0 1 67 0 0 0.0 1 68 0 0 0.0 1 70 0 0 0.0 1 72 0 0 #10 (motif 1) 0.0 1 60 70 0.3 0.1 1 61 50 0.3 0.2 1 66 50 0.3 0.3 1 67 50 0.3 0.4 1 66 50 0.3 0.5 1 67 70 0.3 0.6 1 70 50 0.3 0.7 1 66 50 0.3 0.8 1 72 80 0.3 0.9 1 66 60 0.3 #3 (motif 2) 0.0 1 60 40 1.5 0.34 1 67 45 1.5 0.67 1 72 50 1.5
MOTIFS Examples 3a/b/c (Preset/Patch motif3a, b, &c /motifex3a, b, &c)We hear:
... outdur (12) packing (1) scatter (0) tgrid (0)
snd1st (1) sndlast (1) ming (30) maxg (90)
minp (48) maxp (84) phgrid (0) grpspace (1) gpsprange (1)
amprise (0) contour (0) multlo (0.5) multhi (2)
[-aatten -pposition -sspread -rseed -w -d -i]
texture motifs 3 marimba horn motifex3a ndfmot3.txt 12 1.0 0 0 1 2 30 90 48 84 0 1 1 0 0 0.5 2
texture motifs 3 marimba horn motifex3b ndfmot3.txt 12 0.5 0 0 1 2 30 90 48 84 0 1 1 0 0 1 1
texture motifs 1 marimba horn motifex3c ndfmot3.txt 12 0.5 0 0 1 2 30 90 48 84 0 1 1 0 0 1 1
- Our 'a' version plays the two motifs in varying orders and tempos, with the instrument playing each motif selected at random. The duration field of the second motif specifies 1.5 sec., which doesn't have any audible effect on the marimba sound, but when the horn plays, the sound continues. overlapping the entry of the next motif, even though each motif starts regularly at the start of each second (skiptime) is one, and each motif is 1 second long.
- The 'b' version takes away the tempo change (multlo and multhi are restored to 1) and introduces a 1/2 sec overlap. We begin to hear a bit of counterpoint as the two different rhythms overlap each other, sometimes with the same and sometimes with different instruments.
- The 'c' version repeats the previous command with Mode 1, which opens up different octaves, further enriching the texture in a way which seems to allow more motivic repetitions.
EXAMPLE 4
The final example for MOTIFS calls upon Mode 4 to illustrate how the start pitches of the motifs can be controlled by timing information in the Harmonic Field/Set. Only C-60 is allowed for the first two seconds, then only pitches C-61 and C-62 can be used (to attach the motifs to) during the next two seconds, etc. Ndfmot4.txt contains these alteraions. The tempo is increased (0.75) and a little overlap put in (skiptime = 0.5) to allow more entries/repetitions of the motifs within each time period.
59 60 #9 (Harmonic Field/Set changing times) 0.0 1 60 0 0 2.0 1 61 0 0 2.0 1 63 0 0 4.0 1 64 0 0 4.0 1 66 0 0 4.0 1 67 0 0 6.0 1 68 0 0 6.0 1 70 0 0 6.0 1 72 0 0 #10 (motif 1) 0.0 1 60 70 0.3 0.1 1 61 50 0.3 0.2 1 66 50 0.3 0.3 1 67 50 0.3 0.4 1 66 50 0.3 0.5 1 67 70 0.3 0.6 1 70 50 0.3 0.7 1 66 50 0.3 0.8 1 72 80 0.3 0.9 1 66 60 0.3 #3 (motif 2) 0.0 1 60 40 1.5 0.34 1 67 45 1.5 0.67 1 72 50 1.5
MOTIFS Example 4 (Preset/Patch motif4/motifex4):We hear a fast moving texture of motifs with a lot of repetition on the same or nearby pitches, the whole texture moving upwards in pitch every two seconds. This provides a mechanism for designing overall pitch movement in a motif-based texture.
... outdur (12) packing (0.5) scatter (0) tgrid (0)
snd1st (1) sndlast (2) ming (30) maxg (90)
minp (48) maxp (84) phgrid (0) grpspace (1) gpsprange (1)
amprise (0) contour (0) multlo (0.75) multhi (0.75)
[-aatten -pposition -sspread -rseed -w -d -i]
texture motifs 4 marimba horn motifex4 ndfmot4.txt 12 0.5 0 0 1 2 30 90 60 72 0 1 1 0 0 0.75 0.75
End of TEXTURE MOTIFS / MOTIFSIN
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line; a pitch value must be given for each infile (separated by a space).
- followed by a 'line' substructure NOTELIST, specified thus:
- #N (where N is the number of pitches in the notelist).
- In all Modes, this is followed by N lines to define the nodal substructure on which the ornaments will be placed. These are in the format time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs). Amp and dur are inactive fields in TEXTURE ORNATE in the node substructure section.
- different start times must be given, and they must must increase; all 0's for chords are not allowed.
- In Modes 14 this is followed by N lines to define the harmonic field/set in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs). Starttime, Amp and dur are inactive fields in TEXTURE ORNATE in the harmonic field/set section. This section is omitted for Mode 5.- Now the ornament itself must be defined. Again, this is in the form time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs) in which time, amp and dur and all active fields. Thus the ornament is able to be very precisely defined.
outdur minimum duration of the outfile
Form: MPV/NS/O/ Form: MPV/NS/HF-S/O Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of 'line' (Nodal Substructure) time instr pitch amp dur List of 'line' (Nodal Substructure) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of Ornaments time instr pitch amp dur List of Harmonic Field/Set #N No. of lines to follow time instr pitch amp dur List of Ornaments
skiptime time between repeats of motif-to-ornament in notedata, i.e., between runs of the 'line' substructure notelist
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
mindur, maxdur minimum and maximum duration of events in texture
phgrid a timegrid in milliseconds applying WITHIN the ornaments (Range: 0.0 to 1000.0)
gpspace spatialisation of event-groups (Range: 0 to 5; Default: 1)0 no changegpsprange spatial range of event-groups (Range: 0 to 1; Default: 1)
1 scattered (Default)
2 ornaments will move towards where the event is
3 ornaments move away from where the event is
4 ornaments follow the texture motion from Left to Right
5 ornaments follow the texture motion from Right to Left
amprise amplitude change within ornaments (Range: 0 to 127; Default: 0)
contour amplitude contour of groups (Range: 0 to 6; Default: 0)0 mixture of the other types (Default)multlo, multhi smallest & largest multiplier of total input duration of motif
1 crescendo
2 flat (no change)
3 decrescendo
4 crescendo or flat
5 crescendo or decrescendo
6 decrescendo or flat
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-d ornament notes all have the same duration as the ornamented note
-i ornaments are not confined to the instrument of the ornamented note (Default: same note)
-h ornaments on highest note of any chord (Default: on first note listed)
-e ornaments on all the notes of any chord
All parameters except notedata, outdur, skiptime and seed may vary over time.
The salient feature in TEXTURE ORNATE is that an ornament is attached to an underlying substructure node. The ornament is a precisely defined musical figure: the start time, amplitude and duration fields in the ornament definition part of the note data file are all active. Individual ornament note durations may be longer than the time until the next ornament note start time, which makes fades and legato effects possible. Amplitude values will be important to shape the ornament rhythmically in an audible way.
All the examples for TEXTURE ORNATE can be made by running ornatexs.bat from the DOS prompt. The soundfiles produced can be deleted with ornatdel.bat.
MODE 5
The ornament has specified start times, amplitude and durations for each of its notes. A 'turn' (upper and lower neighbors around a centre) could look like this, a quintuplet over the time of a crotchet:
In Mode 5 this is all that is needed. This ornament will be automatically transposed in both time and pitch so that it begins on each of the nodes of the substructure melody line defined in the first part of the note data file. Because no harmonic field is defined, the full chromatic set is used by default. Thus the complete file ndforn1.txt could look like this:#5 0.0 1 60 84 0.3 0.2 1 62 64 0.3 0.4 1 60 68 0.3 0.5 1 58 72 0.3 0.8 1 60 76 0.3
60 #4 (node substructure) 0.0 1 60 0 0 2.0 1 67 0 0 4.0 1 65 0 0 6.0 1 62 0 0 #5 (ornament definition) 0.0 1 60 84 0.3 0.2 1 62 64 0.3 0.4 1 60 68 0.3 0.5 1 58 72 0.3 0.8 1 60 76 0.3
ORNATE Example 1 (Preset/Patch ornate1/ornatex1):
... minoutdur (12) skiptime (2)
sndf (1) sndl (2) ming (30) maxg (90) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
multlo (1) multhi (1)
texture postornate 5 marimba ornatex1 ndforn1.txt 12 2 1 1 30 90 1.0 1.0 0 1 1 0 0 1 1
The tempo and time-relationship between repeats of the ornament offers many possibilities. In the above file, the ornament lasts 1 second, and there are 2 seconds between substructure nodes. Thus there will be gap of 1 second before the next ornamented node. The speed (tempo) of the ornaments can be altered with multlo/hi: 1 is no change (e.g., crotchet/quarter-note = 60), 0.5 doubles the speed (e.g., crotchet/quarter-note = 120) etc. However, this does not change the time between the ornaments.
Although you can enter ornament timings with any values, I (AE) find it useful to use 1 second (crotchet/quarter-note = 60) as a reference. Then standard values for durations, such as 0.5 for ½ sec (quaver/ eighth-note), can be used, maintaining a conventional musical understanding of beats. This is normally how it is done in Csound, for example, with a tempo control to alter the actual rate of flow. And here in TEXTURE, the formula to calculate a tempo ratio (multiplier) for the ornaments will be 60 divided by the desired tempo. E.g.,
- 60/72 = 5/6 = 0.833
- 60/120 = 1/2 = 0.5
- 60/90 = 2/3 = 0.667
- 60/84 = 5/7 = 0.714
- 60/76 = 15/19 = 0.789
- etc.
Skiptime is the time between runs of the whole node substructure. It begins at the start time of the last substructure node. For no overlap, the rule of thumb is:
'the last ornament start time plus the length of time after this until the next ornament is to begin'.The actual duration of this note (in the duration field of the note data file) may be longer/shorter than this to achieve a legato/staccato effect.In the above example the total ornament time would be 0.8 + 0.2 to make 1 full second so that it will stay 'on the beat'. Thus, for the whole sequence to repeat seamlessly without a break (or an overlap), skiptime would be 1, 1 being the full time we want for the ornament. You can specify any outdur, so the sequence repeats until outdur is reached. Skiptimes less than 1 will, therefore, cause overlaps. We shall explore this in greater detail in Example 3 below.
Modes 1 to 4
You therefore have a great deal of control over the design of your ornaments. In these Modes, you can define a harmonic field or set so that only these pitches will be used. Note that you have to take care that all the pitches are available to enable the ornament to transpose to all nodes. If you hear any missing or incorrectly repeated ornament notes, the cause is usually a pitch missing in the harmonic field/set. The transposition within the program is done by simple addition, not by indexing, which accounts for this restriction.
It is possible to have more than one ornament. These are defined in the same way (starting with the #N separator). The start time of each ornament in the note data file will be zero. They are then attached to nodes at the times when the nodes are set to begin. The program will select from the list of ornaments in random order. If you want this random order to vary on different runs of the program, but be reproduceable, use the seed flag [-r] with specific values greater than 1.
More than one input sound file may be used. Provide a MIDI pitch for each of them in the note data file and adjust last snd-in-list to use accordingly. You can, in all the Texture programs, make the value of the first- and last-sound-to-use vary over time (using a breakpoint file) so you can sweep through a list of input sound files as the texture progresses. Different ornaments will use different sounds. If you specify the Scatter decor instrs flag [-i], the various notes within an ornament will randomly use different sounds. (Specifying specific instruments for specific ornament notes in the note data file has no effect, and specifying instruments for substructure nodes badly confuses the program, although it doesn't complain).
Remember that it will often be very important to shape the ornament with the amplitude field. The notes will just run on together without any aural definition unless accents, crescendos and decrescendos are introduced.
We shall present three examples here, all of which use Mode 3 so that the full note data file is used (all three sections).
ORNATE Example 2
ORNATE Example 2 defines a harmonic set which enables a little figure to be accurately transposed onto two substructure nodes: C-60 and G-67. The note data file is ndforn2.txt as follows:
Two input soundfiles are used.60 59 #2 (the nodal substructure) 0.0 1 60 0 0 2.0 1 67 0 0 #8 (the harmonic set definition) 0.0 1 60 0 0 0.0 1 62 0 0 0.0 1 63 0 0 0.0 1 65 0 0 0.0 1 67 0 0 0.0 1 69 0 0 0.0 1 70 0 0 0.0 1 72 0 0 #8 (the ornament definition) 0.0 1 60 30 0.5 0.25 1 62 30 0.5 0.5 1 63 30 0.5 0.8333 1 62 30 0.5 1.0 1 63 30 0.5 1.25 1 65 30 0.5 1.5 1 63 30 0.5 1.75 1 62 30 0.5
ORNATE Example 2 (Preset/Patch ornate2/ornatex2):What we hear is a series of repetitions of the same ornament, placed alternately on the C and the G nodes. Sometimes the whole ornament is played by the horn and sometimes by the marimba a random selection of the instrument is being made, but once made, it plays the whole ornament. Were we to use the -i flag, this random selection of instrument would be made for each note of the ornament, an altogether different result not unlike a Medieval hocket. If instr_no is specified for the various ornament notes, this has no effect on these results, with or without the -i flag.
... minoutdur (12) skiptime (2)
sndf (1) sndl (2) ming (30) maxg (90) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
multlo (1) multhi (1)
texture postornate 3 marimba horn ornatex2 ndforn2.txt 12 2 1 2 30 90 1.0 1.0 0 1 1 0 0 1 1
The actual pitch level of the ornaments could be inaccurate if the two source sounds were actually at different pitches and the same MIDI pitches in the note data file were given for each of them. If accuracy is important, you might be able to adjust one of the the MIDI pitch values given in the note data file (remember, you don't have to use whole numbers), or you could retune one of the source sounds.We should also observe that the various repetitions follow on at regular intervals. The nodes are spaced at two seconds, the ornament takes 2 seconds, and skiptime is set at two seconds, which relates to the period between runs of the whole sequence of the nodal substructure. If we made skiptime 3 seconds, we would hear two ornaments, one on C and one on G, and then a pause of 1 second. Why 1 second? This is important: because the skiptime begins at the start time of the last node of the substructure. The ornament lasts 2 seconds, so there will be one more second of silence before the sequence repeats.
ORNATE Example 3
This example creates several different ornaments and attaches them to a stepwise rising nodal substructure. Again, the ornaments are selected in random order. Again, the harmonic set definition has to have all the notes it needs to play all the ornaments transposed to each of the nodes. This implies a compositional task to consider how to create ornaments which will follow one another in the manner you wish when they occur in various orders at various transposition levels.
The now much longer note data file ndforn3.txt is as follows:
60 #5 (node substructure) 0.0 1 60 0 0 3.0 1 62 0 0 6.0 1 63 0 0 9.0 1 65 0 0 12.0 1 67 0 0 #17 (harmonic set definition) 0.0 1 60 0 0 0.0 1 62 0 0 0.0 1 63 0 0 0.0 1 64 0 0 0.0 1 65 0 0 0.0 1 66 0 0 0.0 1 67 0 0 0.0 1 68 0 0 0.0 1 69 0 0 0.0 1 70 0 0 0.0 1 71 0 0 0.0 1 72 0 0 0.0 1 73 0 0 0.0 1 74 0 0 0.0 1 75 0 0 0.0 1 76 0 0 0.0 1 77 0 0 #8 (ornament 1) 0.0 1 60 60 0.5 0.25 1 62 55 0.5 0.5 1 63 65 0.5 0.8333 1 62 55 0.5 1.0 1 63 70 0.5 1.25 1 65 65 0.5 1.5 1 63 60 0.5 1.75 1 62 55 0.5 #8 (ornament 2) 0.0 1 60 70 0.5 0.2 1 63 72 0.5 0.4 1 62 74 0.5 0.6 1 65 76 0.5 0.8 1 63 78 0.5 1.0 1 66 90 0.5 1.5 1 67 85 0.5 1.75 1 66 85 0.5 #6 (ornament 3) 0.0 1 60 60 0.5 0.34 1 63 50 0.5 0.67 1 67 50 0.5 1.00 1 62 60 0.5 1.25 1 62 45 0.5 1.50 1 66 50 0.5 #6 (ornament 4) 0.0 1 60 50 0.5 0.25 1 67 60 0.5 0.75 1 60 40 0.5 1.00 1 65 70 0.5 1.50 1 65 70 0.5 1.75 1 62 65 0.5 #14 (ornament 5) 0.0 1 60 40 0.5 0.125 1 62 45 0.5 0.25 1 63 50 0.5 0.375 1 65 55 0.5 0.5 1 67 60 0.5 0.625 1 65 55 0.5 0.75 1 63 50 0.5 0.875 1 62 45 0.5 1.0 1 63 70 0.5 1.17 1 65 65 0.5 1.33 1 67 70 0.5 1.5 1 65 65 0.5 1.66 1 63 70 0.5 1.83 1 62 70 0.5
To help read it and write out the ornaments in musical notation, here's a quick review of key duration values (and Note Chart lists MIDI note vales):
Note that all the ornaments start at time zero. They take their actual start time from the node to which they become attached. Note that they are also transposed to that node. These are all the parameters in command line format:
- 1.0 = 1 crotchet (quarter note)
- 0.75 = a dotted quaver (dotted eighth note)
- 0.5 = 1 quaver (eighth note)
- 0.25 = 1 semiquaver (16th note)
- 0.125 = 1 demisemiquaver (32nd note)
- 0.33 = 1 quaver in a triplet (.33 + .33 + .34 in any order)
- 0.166 = 1 semiquaver in a triplet (.167 + .167 + .166 in any order)
- 0.66 = 1 crotchet in a triplet (.67 + .67 + .66 in any order)
ORNATE Example 3 (Preset/Patch ornate3/ornatex3):What we hear is a sequence of different ornaments, probably not in the order in which the appear in they note data file. You will also notice that each ornament is at a slightly different tempo. This is because the mult parameter has been given a range from less than 1 (0.5) to greater than 1 (1.2).
... minoutdur (21) skiptime (4)
sndf (1) sndl () ming (30) maxg (90) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
multlo (0.5) multhi (1.2)
texture postornate 3 marimba ornatex3 ndforn3.txt 21 4 1 1 30 90 1 1 0 1 1 0 0 0.5 1.2
ORNATE Example 4
This example plays with phasing the same ornament with precise rhythmic control, which enables us to create specific interval relationships in the overlapping figures. To do this, we design a single ornament for the purpose, in this case a rising and falling scale. This is note data file ndforn4.txt with one node, a harmonic set and the scale ornament:
60 #1 (single node) 0.0 1 60 0 0 #8 (scale as harmonic set) 0.0 1 60 0 0 0.0 1 62 0 0 0.0 1 63 0 0 0.0 1 65 0 0 0.0 1 67 0 0 0.0 1 69 0 0 0.0 1 70 0 0 0.0 1 72 0 0 #16 (ornament: rising and falling scale) 0.0 1 60 50 0.3 0.25 1 62 55 0.3 0.5 1 63 60 0.3 0.75 1 65 65 0.3 1.0 1 67 70 0.3 1.25 1 69 75 0.3 1.5 1 70 80 0.3 1.75 1 72 85 0.3 2.0 1 72 85 0.3 2.25 1 70 85 0.3 2.5 1 69 85 0.3 2.75 1 67 85 0.3 3.0 1 65 85 0.3 3.25 1 63 85 0.3 3.5 1 62 85 0.3 3.75 1 60 85 0.5
ORNATE Example 4 (Preset/Patch ornate4/ornatex4):What we hear is a dense texture of rising and falling scale pattern spaced at the interval of a third. The density of overlap has led to overload, so the attenuation parameter [-a] is also used. Fortunately, the program itself calculates the attenuation which may be needed and suggests a figure to the user.
... minoutdur (12) skiptime (0.5)
sndf (1) sndl (1) ming (30) maxg (90) mind (1.0) maxd (1.0)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
multlo (1) multhi (1)
texture postornate 3 marimba ornatex4 ndforn4.txt 21 0.5 1 1 30 90 1 1 0 1 1 0 0 1 1 -a0.75
There are two methods by which the overlaps can be achieved.
- The most direct (as above) is to create only one node and adjust the skip time. Our ornament in this case is 4 seconds long, so a skiptime of 4 would cause regular repeats of the whole ornament on the beat without overlap or gap. When we reduce skiptime to 0.5, the ornament begins again at MIDI note 60 at the same time that the first one is playing MIDI note 63 (at 0.5 sec), thus creating the interval of a third. The original and repeated ornaments will proceed upwards in thirds. However, after another ½ second, another ornament will start, creating a whole texture of thirds out of the phased ornament. A skiptime of 0.25 will (with this ornament) produce 2nds and 1.0 will result in 5ths, and so it goes.
- The second method involves creating more than one node, which necessarily have to be at different times. If in this case both were at MIDI note 60 and the second node began at 0.5, with skiptime set to 4.0 (full ornament duration), we will hear the ornament begin again after half a second and produce thirds. No additional ornament repeats will come in, so we will hear the second one end by itself, but the whole sequence will repeat after 4 seconds until the specified outdur is reached. There will be a slight overlap at the repeats of the whole node sequence because of the second ornament starting later. This method gives more control over density and the pitch level of each repeat.
If we want to make use of the tempo control as well (mult), we might also want to adjust skiptime to reflect the new tempo in order to preserve the same time relationships. Otherwise, the ornament(s) will play at different speeds, but the skiptime will stay the same, which will alter the timing relationship of the ornaments as the underlying node sequence repeats.
Preserving time relationships while using a time-varying tempo can be improved by multiplying the desired skiptime by the mult factor. When a tempo range is used things do seem to get out of step, but it is possible to keep things somewhat more in step when breakpoint files are used: the breakpoint times are matched in the skiptime file, and its values are multiplied by the corresponding mult factor. I had hoped that the phased ornaments would keep perfectly in step while the tempo waxed and waned, but this does not appear to be happening, so there does seem to be some degree of offsetting taking place as well.
Here are some further experiments you can carry out with the timing of the ornament. The following are suggested alterations to the (command line) parameters as given for Example 3 in ornexs.bat with the note data file ndforn4.txt as above.
- time-varying skiptime oex3skip.brk
sets a skiptime of 4 at time 0 and 0.5 (creates the 3rds) at time 12. We hear a full run of the ornament by itself; the ornament begins again, and then the first few notes of the next run come in a little before the end of the first, and subsequent repeats move the overlap forward until the 0.5 time mark is reached.0 4 12 0.5
- time-varying tempo: accel both the low and high tempo parameters use the same breakpoint data: oex3mulo/hi.brk:
0 1 12 0.5Thus we have 1 (no change) at time zero and 0.5 (twice as fast) at time 12; skiptime is reset to 4 as above. We hear a gradual speedup during the course of the output soundfile as the ornaments repeat (without overlap).
- time-varying tempo: Accel/decel Similarly, moving from 1 at time 0 to 0.5 at time 6 and back to 1 and time 12 will result in an accel/decel over the course of the output soundfile: revised oex3mulo/hi:
0 1 6 0.5 12 1We hear the ornaments move faster-slower, but also notice that the time between the ornaments appears to alter. This paradoxically is because the skip time is constant. What is happening is that the faster ornaments take less time and end sooner, but the next run is still set to begin after 4 seconds, so we have longer and shorter periods of silence, although the actual time between repeats is staying the same.
- combining time-varying tempo with overlaps set by the skiptime: revised oex3skip.brk:
0 4 6 0.5 12 4Now we hear the ornaments overlap in a complex way (notes are not in sync) as the time-varying skiptime gradually moves the overlap forward from 4 seconds and back again.
- skip times adjusted by tempo ratio To get a better (not not perfect) preservation of ornament overlap relationships while changing tempo, we multiply the skip time values by the tempo factors. Let's see what happens when we do this with the two previous experiments:
[oex3skip.brk * oex3mulo/hi = new skiptime]Now the skiptime is reduced more in step with the tempo. We hear not a perfect synchronisation, but considerably closer temporal relationships than before.0 4 * 1 = 4 6 0.5 * 0.5 = 0.25 12 4 * 1 = 4
- sustained tones within ornaments Try using the horn.mp3 source and adding a 2 second C-60 at the start (bottom) of the scale and a 2 second C-72 at the top. This introduces a contrapuntal dimension which further illustrates potential applications, esp. within the context of music based on harmonic fields.
- mixed rhythms Ornaments with more varied rhythmic contents open up the possibility of a more strongly shaped gestural and motivic music.
End of TEXTURE ORNATE / PREORNATE / POSTORNATE
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line
- followed by a times NOTELIST, specified thus:
- #N (where N is the number of events in the notelist).
- This is followed by N lines to define a rhythmic template in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs) NB: Only the times of the motif are active, although pitch and loudness must also be specified (arbitrary values are OK); durations may be 0.- the specified times within the motif must increase
- followed (optionally) by another notelist to specify a harmonic field or set (not used in Mode 5).
- these begin with #N (where N is the number of events in the notelist). This also acts as a 'separator', enabling the program to know where the timed motif ends and the harmonic field or set begins.
- in the list of note events, all start times will be zero for a given harmonic field or set (Modes 1 and 3).
- for Modes 2 and 4 give later start times for the changing harmonic field(s) or set(s).
outdur minimum duration of the outfile
Form: MPV/T// Form: MPV/T/HF-S/ Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of times time instr pitch amp dur List of times #N No. of lines to follow time instr pitch amp dur List of Harmonic Field/Set
skiptime time between repetitions of timing motif in the note data file (from the end of one motif to the beginning of the next; NB: cannot produce overlaps with values shorter than the motif itself)
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
mindur, maxdur minimum and maximum duration of events in texture
minpich, maxpich minimum and maximum pitch (MIDI note value)
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
All parameters except notedata, outdur, skiptime and seed may vary over time.
TEXTURE TIMED repeats a series of notes in random order but locked into a defined rhythmic template.All the examples for TEXTURE TIMED can be made by running timedexs.bat from the DOS prompt. The soundfiles produced can be deleted with timeddel.bat.
The key to this process lies in realising that the first part of the note data file consists of note events in which only the onset timing is relevant (the other three fields need something in them, however, 1 for the instr_no and usually zeros for the other fields). You are therefore specifying a rhythmic template which can be filled with any sequence of pitches.
This template will draw upon the parameter pitch range in random fashion in Mode 5. For example, ndftim1.txt contains only:
60 #6 (rhythmic template definition) 0.00 1 0 0 0 0.34 1 0 0 0 0.67 1 0 0 0 1.00 1 0 0 0 1.50 1 0 0 0 1.75 1 0 0 0
TIMED Example 1 (Preset/Patch timed1/timedex1):
sndfirst (1) sndlast (1) mingain (24) maxgain (84)
mindur (0.2) maxdur (1.0) minpich (48) maxpich (84)
texture timed 5 marimba timedex1 ndftim1.txt 12 2.0 1 1 24 84 0.2 1.0 48 84
We hear the wide pitch range from which the notes for the rhythmic motif are selected. We also notice that skiptime is different. Here skiptime is the time between statements of the rhythmic motif/template. Thus we hear a long gap of two seconds between repeats because skiptime = 2.0 sec. Thus skiptime in TEXTURE TIMED begins after the end of the motif.
This is not like the skiptime in TEXTURE ORNAMENT, where skiptime is the time between repeats of the whole Nodal Substructure. Skiptime begins at the start time of the last Node. Thus, in TEXTURE ORNAMENT a 2 second ornament with a 2 second skiptime leads to a repeat without a gap. Also, where a skiptime less than the ornament duration results in overlaps. Here in TEXTURE TIMED the skiptime is the time between repetitions of the whole rhythmic template definition and there is no mechanism for creating overlapping rhythmic motifs (times less than 0 are not allowed).
In Modes 1-4, the notes are randomly selected from only the pitches in a specified Harmonic Field/Set. In the latter case, you need an additional notelist in the note data file. The following example (ndftim2.txt) makes clear how to do this (note the absence of pitch data in the list of times, and the identical (0.0) start times in the harmonic field/set note list):
60 #5 (rhythmic template definition) 0.00 1 0 0 0 0.25 1 0 0 0 0.75 1 0 0 0 1.00 1 0 0 0 1.50 1 0 0 0 #6 (harmonic field/set definition) 0.0 1 60 0 0 (omitted in Mode 5) 0.0 1 62 0 0 0.0 1 65 0 0 0.0 1 67 0 0 0.0 1 70 0 0 0.0 1 72 0 0
The above note data file is run with the following set of parameters, using Mode 3.
TIMED Example 2 (Preset/Patch timed2/timedex2):EXAMPLE 3 - quick note gestures on a harmonic grid. The 'b' example uses Mode 1 to open the texture out to other octaves.
... outdur (12) skiptime (2.0)
sndfirst (1) sndlast (1) mingain (24) maxgain (84)
mindur (0.2) maxdur (1.0) minpich (48) maxpich (84)
texture timed 3 marimba timedex2 ndftim2.txt 12 2.0 1 1 24 84 0.2 1.0 48 84
ndftim3.txt60 #17 (rhythmic template) 0.00 1 0 0 0 0.05 1 0 0 0 0.10 1 0 0 0 0.15 1 0 0 0 0.20 1 0 0 0 0.25 1 0 0 0 0.30 1 0 0 0 0.35 1 0 0 0 0.40 1 0 0 0 0.45 1 0 0 0 0.50 1 0 0 0 1.00 1 0 0 0 1.50 1 0 0 0 1.60 1 0 0 0 1.70 1 0 0 0 1.80 1 0 0 0 1.90 1 0 0 0 #5 (Harmonic Field/Set) 0.0 1 48 0 0 0.0 1 50 0 0 0.0 1 53 0 0 0.0 1 55 0 0 0.0 1 58 0 0
TIMED Example 3a/b (Preset/Patch timed3a, &b/timedex3a, &b):We hear the rapid flows constrained to the C-D-F-G-Bb harmonic grid. In the absence of amplitude shaping, the ear inevitably begins to hear the longer notes at time 0.5 and 1.0 as the main foci, with the fast 5 .1 and faster 10 0.05 durations flowing around them. The 'b' example using Mode 1 opens out the octaves and creates a richer, warmer texture.
... outdur (12) skiptime (0.1)
sndfirst (1) sndlast (1) mingain (40) maxgain (80)
mindur (0.4) maxdur (1.0) minpich (48) maxpich (84)
texture timed 3 marimba timedex3a ndftim3.txt 12 0.1 1 1 40 80 0.4 1.0 48 84
texture timed 1 marimba timedex3b ndftim3.txt 12 0.1 1 1 40 80 0.4 1.0 48 84
TEXTURE TIMED requires a very specific set of note event timings, and yet makes its note selections randomly. It is therefore it is well suited to to slower and very distinctive rhythmic ideas.
The random reworking of the note selections can be a bit too obvious, however, so, to mitigate this, you might consider using longer note durations, a fairly large and sonorous harmonic field or set, and possibly several input soundfiles.
Alternatively, a vigorous texture of fast, repeated rhythms can be obtained with very closely placed timings and a skiptime equal to the length you want the note of the last rhythmic motif note event to have. Then the next motif will begin with a gap. If skiptime is near zero (min skiptime is 0.000002), there is no time allowance for the last note event of the motif, and the last note of one motif and the first of the next motif will be virtually simultaneous.
End of TEXTURE TIMED
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line
- followed by a times NOTELIST, specified thus:
- #N (where N is the number of events in the notelist).
- This is followed by N lines to define a rhythmic template in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs) NB: Only the times in the template are active, although pitch and loudness must also be specified (arbitrary values are OK); durations may be 0.- times in the template must increase
- followed (optionally) by another notelist to specify a harmonic field or set (not used in Mode 5):
- these begin with #N (where N is the number of events in the notelist). This also acts as a 'separator', enabling the program to know where the time template ends and the harmonic field or set begins.
- in the list of note events, all start times will be zero for a given harmonic field or set (Modes 1 and 3).
- for Modes 2 and 4 give later start times for the changing harmonic field(s) or set(s).
outdur minimum duration of the outfile
Form: MPV/T// Form: MPV/T/HF-S/ Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of times time instr pitch amp dur List of times #N No. of lines to follow time instr pitch amp dur List of Harmonic Field/Set
skip time between repeats of timing motif in notedata, i.e., between runs of the 'line' substructure notelist
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
mindur, maxdur minimum and maximum duration of events in texture
minpich, maxpich minimum and maximum pitch (MIDI note value)
phgrid a timegrid in milliseconds applying WITHIN the groups (Range: 0.0 to 1000.0)
gpspace spatialisation of event-groups (Range: 0 to 5; Default: 1)0 no changegpsprange spatial range of event-groups (Range: 0 to 1; Default: 1)
1 scattered (Default)
2 groups will move towards where the event is
3 motifs move away from where the event is
4 groups follow the texture motion from Left to Right
5 groups follow the texture motion from Right to Left
amprise amplitude change within groups (Range: 0 to 127; Default: 0)
contour amplitude contour of groups (Range: 0 to 6; Default: 0)0 mixture of the other types (Default)gpsizelo, gpsizehi smallest & largest numbers of events in the groups
1 crescendo
2 flat (no change)
3 decrescendo
4 crescendo or flat
5 crescendo or decrescendo
6 decrescendo or flat
gppacklo, gppackhi shortest & longest time between event-onsets in the groups
gpranglo, gpranghi minimum & maximum pitch range of the groups OR, for harmonic field/sets, the range of notes within the field to use
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-d fixed timestep between group notes
-i each group is not each confined to a fixed instrument (Default: fixed)
All parameters except notedata, outdur, skiptime and seed may vary over time.
TEXTURE TGROUPS is a natural (and wonderful) development of the rhythmic template idea in TEXTURE TIMED. In this case, the template times replace the packing parameter as the time-onsets of each group. Thus the groups can not only follow one another at regular time onsets, but these onsets can be have a defined rhythm. The groups themselves are shaped just as they are in TEXTURE GROUPED.
Once the idea is clear that the time-onsets of each group follow the rhythmic template defined in the first part of the note data file, understanding TGROUPED follows easily. We shall illustrate this by using the parameters in Mode 5 to make the rhythmic template audible, and then 'populate' it with groups.
All the examples for TEXTURE TGROUPED can be made by running tgrouexs.bat from the Console prompt. The soundfiles produced can be deleted with tgroudel.bat.
TGROUPED Example 1a
The first example sets out the rhythmic template in the note data file ndftgr1.txt, which is in fact an exact copy of ndftim1.txt used with TEXTURE TIMED. This now familiar rhythm is made completely audible by having a 'group' of only one event (gpsizelo, gpsizehi, gpranglo and gpranghi are all = 1). Here is the data:
[ndftgr1.txt]60 #5 0.00 1 0 0 0 0.25 1 0 0 0 0.75 1 0 0 0 1.00 1 0 0 0 1.50 1 0 0 0
TGROUPED Example 1a (Preset/Patch tgrouped1a/tgrouex1):We hear the defined rhythm over two beats very clearly, because only one note is playing each of the rhythmic durations (the grpsize range is 1). The pitches are widely spaced because selected (at random) from a 3-octave pitch range. There is a two second pause (skiptime) between repeats of the rhythmic template.
... minoutdur skiptime
snd1st sndlast mingain maxgain mindur maxdur minpch maxpch
phgrid grpspace gpsprange amprise contour
gpsizelo gpsizehi gppaklo gppakhi gppranglo gppranghi
[-aatten -ppos -ssprd -rseed -w]
texture tgrouped 5 marimba tgrouex1a ndftgr1.txt 12 2.0 1 1 30 60 0.3 0.6 48 84 0 1 1 0 0 1 1 100 200 1 1
TGROUPED Example 1b
Using the same note data file, we now increase the grpsize range to 3, using 3 for both low and high. Thus all the pitches which previously had 1 note on them, will now have three.
TGROUPED Example 1b (Preset/Patch tgrouped1b/tgrouex1):Group size high and low are reset to 3. The group packing is set between 166 and 167 milliseconds. In the context of this musical example, this corresponds to the duration of a semiquaver (16th note) triplet. We also make the example a little louder by changing min, max event gain to 40 and 80. We hear the triplets on each note but notice that all the triplets have the same overall duration of one quaver (8th note). Thus the triplets which begin on semiquaver durations of the timing template will overlap with those which begin a semiquaver later.
(In Sound Loom use tgrouex1, making the parameter changes described below.)
... minoutdur skiptime
snd1st sndlast mingain maxgain mindur maxdur minpch maxpch
phgrid grpspace gpsprange amprise contour
gpsizelo gpsizehi gppaklo gppakhi gppranglo gppranghi
[-aatten -ppos -ssprd -rseed -w]
texture tgrouped 5 marimba tgrouex1b ndftgr1.txt 12 2.0 1 1 40 80 0.4 1.0 48 84 0 1 1 0 0 3 3 166 167 1 1
TGROUPED Example 1c
Now we make things more variable, with the number of notes in each group ranging from 5 to 10 (grpsize), the packing between group note events ranging between 50 and 100 ms (grppak) and the number of pitches taken from the pitch range widening from 1 in the above 'a' and 'b' examples to a range of 3 to 10 (gpranghi).
TGROUPED Example 1c(Preset/Patch tgrouped1c/tgrouex1):We hear a much more fluid texture of overlapping events. While we may sense some variation in density, one side effect of the ranges used is that the onsets of the rhythmic template can no longer be easily perceived.
(In Sound Loom use tgrouex1, making the parameter changes described above.)
... minoutdur skiptime
snd1st sndlast mingain maxgain mindur maxdur minpch maxpch
phgrid grpspace gpsprange amprise contour
gpsizelo gpsizehi gppaklo gppakhi gppranglo gppranghi
[-aatten -ppos -ssprd -rseed -w]
texture tgrouped 5 marimba tgrouex1c ndftgr1.txt 12 2.0 1 1 40 80 0.4 1.0 48 84 0 1 1 0 0 5 10 50 100 3 10
TGROUPED Example 1d
The final version of this parameter set simply reduces the skiptime to ½ a second. This draws the repeats much closer together, thus increasing the overlap of the groups as they play themselves out, even though the rhythmic templates themselves do not overlap.
TGROUPED Example 1d(Preset/Patch tgrouped1d/tgrouex1):We hear a rapid, fluid texture, in which the random element has become prominent.
(In Sound Loom use tgrouex1, making the parameter changes described above.)
... minoutdur skiptime
snd1st sndlast mingain maxgain mindur maxdur minpch maxpch
phgrid grpspace gpsprange amprise contour
gpsizelo gpsizehi gppaklo gppakhi gppranglo gppranghi
[-aatten -ppos -ssprd -rseed -w]
texture tgrouped 5 marimba tgrouex1d ndftgr1.txt 12 0.5 1 1 40 80 0.4 1.0 48 84 0 1 1 0 0 5 10 50 100 3 10
We now have a fairly good idea of what TIMED GROUPS is all about. We can try for a different range of effects by making use of harmonic fields or sets to constrain the random dimension. Ndftgr2.txt adds a harmonic field to a new and simpler timegrid.
60 #4 0.00 1 0 0 0 0.50 1 0 0 0 3.00 1 0 0 0 4.50 1 0 0 0 #7 0.0 1 48 0 0 0.0 1 53 0 0 0.0 1 58 0 0 0.0 1 63 0 0 0.0 1 68 0 0 0.0 1 73 0 0 0.0 1 78 0 0
TGROUPED Example 2(Preset/Patch tgrouped2/tgrouex2):We hear repeated notes, arpeggios on perfect 4ths, something that sounds like permutations on 2 or 3 pitches, some dyads (2-note chords), varying speeds. Let's look more closely at the various settings:
... minoutdur skiptime (0.5)
snd1st (1) sndlast (1) mingain (40) maxgain (70) mindur (0.25) maxdur (0.75) minpch (48) maxpch (84)
phgrid (0) grpspace (1) gpsprange (1) amprise (0) contour (0)
gpsizelo (7) gpsizehi (28) gppaklo (75) gppakhi (150) gppranglo (1) gppranghi (7)
[-aatten -ppos -ssprd -rseed -w]
texture tgrouped 3 marimba tgrouex2 ndftgr2.txt 21 0.5 1 1 40 70 0.25 0.75 48 84 0 1 1 0 0 7 28 75 150 1 7
- A new time template spreads out the onsets.
- Mode 3 is used so that only the pitches defined in the harmonic set are used. Arpeggios along stacked 4ths are frequent. If Mode 1 is used, it is interesting to note that the inclusion of different octaves also has the effect of enabling adjacent pitches to be used, enriching the texture, but reducing the clarity of the defined harmonic grid.
- The skiptime of 0.5 relates to the time template. The last time is at 4.5 (sec). Adding 0.5 to this = 5.0, so that the next sequence will begin 'on the beat' at 5 sec.
- The note duration range of 0.25 to 0.75 concerns how much of the input soundfile to allow to play, which produces shorter and longer note values, the latter allowing in a bit of resonance. Note duration ('sustain') cannot be longer than the input soundfile.
- The groupsize range moves between 7 and 28 notes per group. This will result in some groups which end well within before the next timegrid onset, and others which will still be playing out their notes when the next timegrid onset comes: i.e., overlaps will occur, in this case producing dyads. These dyads may be perfect 4ths, but other intervals may occur. It all depends on the note selected for the start of the group.
- The faster and slower pacing of the notes in the groups results from the internal group packing range of 75 to 150 ms.
- The groups vary nicely between repeated notes and arpeggios because the group pitch range goes from 1 to 7 notes of the harmonic field.
End of TEXTURE TGROUPED
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index
1 On a given harmonic field
2 On changing harmonic fields
3 On a given harmonic set
4 On changing harmonic sets
5 None [not used by TMOTIFSIN]
infile input soundfile to use as source material
infile2 ... optional soundfile(s) to use as additional inputs
outfile output soundfile
notedata textfile, containing:
- assumed MIDI 'pitch' of each input sound, specified on the 1st line
- followed by a times NOTELIST, specified thus:
- #N (where N is the number of pitches in the notelist).
- This is followed by N lines in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs). Only time is active. Pitch, amp and dur are inactive fields in TEXTURE TMOTIFS.- different times must be given, and they must increase; all 0's for chords are not allowed.
- Now you need an additional set of lines for the motif definition.
- these are also introduced by the number of lines (#N, which acts as a separator).
- This is followed by N lines in the format:
time (secs) infile_no pitch (MIDI) amp (MIDI) dur (secs). All fields are active to define the motif.- Optionally there may be a Harmonic Field/Set definition in the usual format, omitted in Mode 5. If omitted, the motif definition occupies the second section of the note data file.
outdur minimum duration of the outfile
Form: MPV/T/M/ Form: MPV/T/HF-S/M Mode 5 format Comments Modes 1-4 format Comments 60 MIDI pitch value(s) 60 MIDI pitch value(s) #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of times time instr pitch amp dur List of times #N No. of lines to follow #N No. of lines to follow time instr pitch amp dur List of Motifs time instr pitch amp dur List of Harmonic Field/Set #N No. of lines to follow time instr pitch amp dur List of Motifs
skip time between repeats of timing motif in notedata, i.e., between runs of the 'line' substructure notelist
sndfirst, sndlast first and last soundfiles to use from a list of soundfiles for input (Range: 1 to the number of sounds)
mingain, maxgain minimum and maximum level of input sounds (Range: 1 to 127; Default: 64 and 64)
minpich, maxpich minimum and maximum pitch (MIDI note value)
phgrid a timegrid in milliseconds applying WITHIN the motifs (Range: 0.0 to 1000.0)
gpspace spatialisation of event-groups (Range: 0 to 5; Default: 1)0 no changegpsprange spatial range of event-groups (Range: 0 to 1; Default: 1)
1 scattered (Default)
2 motifs will move towards where the event is
3 motifs move away from where the event is
4 motifs follow the texture motion from Left to Right
5 motifs follow the texture motion from Right to Left
amprise amplitude change within motifs (Range: 0 to 127; Default: 0)
contour amplitude contour of groups (Range: 0 to 6; Default: 0)0 mixture of the other types (Default)multlo, multhi smallest & largest multiplier of total input duration of motif
1 crescendo
2 flat (no change)
3 decrescendo
4 crescendo or flat
5 crescendo or decrescendo
6 decrescendo or flat
-aatten overall attenuation of the output
-pposition centre of sound output image (Range: 0 to 1, where 0 is Left and 1 is Right; Default: 0.5)
-sspread spatial spread of texture events (Range: 0 to 1, where 1 is full spread)
-rseed the same seed number will produce the same result on rerun (Default: 0, where 0 is different result each time)
-w always play whole input sound, ignoring duration values
-d motif notes all have the same duration as the timing note
-i motif is not each confined to a fixed instrument (Default: fixed)
All parameters except notedata, outdur, skiptime and seed may vary over time.
TEXTURE TMOTIFS enables us to create fully defined motifs which begin to play according to the times in a rhythmic template. These will draw their pitches either from a pitch range (Mode 5) or from a Harmonic Field/Set (Modes 1 - 4).In TGROUPED we found that the rhythmic template repeated without very much definition because we could not set the amplitude at specific time points. TMOTIFS enables us to create fully defined musical figures, thus providing a useful spectrum in the 'timed' group of functions from random to fully specified.
All the examples for TEXTURE TMOTIFS can be made by running tmotiexs.bat from the DOS prompt. The soundfiles produced can be deleted with tmotidel.bat.Our first example, then, simply creates a 6-note figure which repeats on a rhythmic template of compressing durations: 3-2-1-0.5 seconds, giving us the onset template of onsets at 0, 3, 5, 6, and 6.5 seconds. Ndftmo1.txt sets this template and an easily recognisable musical figure:
60 #5 0.0 1 0 0 0 3.0 1 0 0 0 5.0 1 0 0 0 6.0 1 0 0 0 6.5 1 0 0 0 #6 0.000 1 63 70 0.4 0.167 1 62 65 0.3 0.334 1 60 60 0.3 0.500 1 62 65 0.4 0.667 1 60 60 0.3 0.834 1 59 55 0.3
TMOTIFS Example 1 (Preset/Patch tmotif1/tmotiex1):We hear a dynamically shaped semi-quaver sextuplet motif get closer together and, because each motif is 1 second long, there is an overlap of ½ second at 6.5 seconds. Longer note durations in the note data file (up to the length of the input soundfile) will produce more resonance due to a greater note event overlap within the motifs.
... outdur (21) skiptime (3.5)
snd1st (1) sndlast (1) mingain (40) maxgain (80)
minpich (48) maxpich (84)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
multlo (1) multhi (1)
[-aatten -ppos -ssprd -rseed -w -d -i]
texture tmotifs 5 marimba tmotiex1 ndftmo1.txt 21 3.5 1 1 40 80 48 84 0 1 1 0 0 1 1
Let's look at the time between repeats very closely, as it is musically useful to understand this accurately. The skiptime parameter is the time between repetitions of the rhythmic template, which Sound Loom refers to as the 'pause between line repeats'. This is calculated from the onset of the last motif, i.e., the last of the timing template nodes. The program does not take into account how long the motif is, so this skiptime pause does not begin at the end of the last motif, but rather at its beginning. (If it did begin at the end, this would prevent any overlapping of the last motif and the start of the next repetition of the template.)
The last motif in the Example 1 template begins at 6.5, lasts for 1 second and ends at 7.5. The 3.5 second skiptime pause therefore starts at 6.5 and ends at 10.0. Thus the repeat begins at 10 seconds. Suggestion: When counting this out while listening to the output soundfile, remember to start the count at 0 as in the note data file so that your count will match the numbers in the file.
Thus we could see that a skiptime pause of 0.5 seconds would cause the template to begin again at 7.0 seconds, overlapping the last motif by ½ second. Try it! With longer and more harmonically oriented motifs, this overlap potential can become musically significant.
The motif duration multiplier multlo/hi alters the speed of the motifs, but not of the timing template. A range from 0.5 (twice as fast) to 2.0 (twice as slow) introduces more variety of tempo into the output. Also note that it changes the overlaps considerably.
A second example introduces the use of a Harmonic Field/Set and seeks to play with the overlaps which may occur. Ndftmo2.txt creates a timegrid equally spaced at ½ sec. and revises the motif to form a 3 second arpeggio on various thirds. The harmonic set comprising pitches which belong to the motif itself leads to transpositions which create intervals of 3rd as the 3 second motifs overlap on a ½ second rhythmic template.
60 #5 0.0 1 0 0 0 0.5 1 0 0 0 1.0 1 0 0 0 1.5 1 0 0 0 2.0 1 0 0 0 #9 0.0 1 52 60 0 0.0 1 55 60 0 0.0 1 58 60 0 0.0 1 61 60 0 0.0 1 63 60 0 0.0 1 66 60 0 0.0 1 68 60 0 0.0 1 72 60 0 0.0 1 75 60 0 #18 0.000 1 52 70 0.4 0.167 1 55 65 0.3 0.334 1 58 60 0.3 0.500 1 55 65 0.4 0.667 1 58 60 0.3 0.834 1 61 55 0.3 1.000 1 58 70 0.4 1.167 1 61 65 0.3 1.334 1 63 60 0.3 1.500 1 61 65 0.4 1.667 1 63 60 0.3 1.834 1 66 55 0.3 2.000 1 63 70 0.4 2.167 1 66 65 0.3 2.334 1 68 60 0.3 2.500 1 66 65 0.4 2.667 1 68 60 0.3 2.834 1 72 55 0.3
TMOTIFS Example 2a/b (Preset/Patch tmotif2a, &b/ tmotiex2):We hear the motif rising repeatedly without a break. The skiptime of 0.5 sec. added to the final time node of 2.0 sec means that the time pattern repeats starting at 2.5 sec. Thus the ½ second time intervals is smoothly maintained. The similarity of motif and field in harmonic design leads to the interval of a third sounding as a simultaneity as the motifs overlap. The 'b' example makes only one change: 0.25 is added to the skiptime. This ¼ second offset starts to produce semiquaver (16th note) offsets when the rhythmic template repeats.
(In Sound Loom use tmotiex2, making the parameter changes described below to create the 'b' example.)
... outdur (21) skiptime (0.5)
snd1st (1) sndlast (1) mingain (40) maxgain (80)
minpich (48) maxpich (84)
phgrid (0) gpspace (1) gpsprange (1) amprise (0) contour (0)
multlo (1) multhi (1)
[-aatten -ppos -ssprd -rseed -w -d -i]
texture tmotifs 3 marimba tmotiex2a ndftmo2.txt 21 0.5 1 1 40 80 48 84 0 1 1 0 0 1 1
texture tmotifs 3 marimba tmotiex2b ndftmo2.txt 21 0.75 1 1 40 80 48 84 0 1 1 0 0 1 1
As with MOTIFS and MOTIFSIN, the harmonic field or set is used in two different ways:
- MOTIFS: just the first note of the motif is placed on the harmonic grid, with all the pitches of the motif itself being accurately transposed from that reference point;
- MOTIFSIN: all the notes of the motif are constrained to the harmonic grid, warping the motif to do so.
Also see some further observations about starting off motifs on the same pitch each time.
The range of possibilities in the TEXTURE set provides facilities for remarkably varied musical situations. In particular, there is a balance between random selection and fully defined musical figures. Always there are constraints within which random selections are made, such as parameter ranges and harmonic fields or sets, and all of these can vary through time. In addition you are not constrained to use the pitches of the tempered scale fractional MIDI values will give you any tuning you desire. Thus, while it is possible to duplicate MIDI sequencer type fully defined pitch and rhythmic relationships, it is also possible to use the algorithmic potential of this software to move beyond towards freer forms of texture design, designs often very suitable for sounds of a more 'natural' character, i.e., with limited pitch content.
For example, you may move from a dense apparently unpitched texture, (using a very small packing time and a wide pitch range, but with no harmonic field specified Mode 5) then gradually narrow the pitch range to (close to) a single pitch. In this way the unpitched band becomes gradually focused on a pitch (provided your source material has some pitch content). You can also take any sound of complex quality (e.g. speech) and by creating a very dense texture by using a very small packing time, 'white out' the texture, producing a band of undifferentiated noise. By varying the packing time you can then pass between the noise band and a texture of voices.
Thus the DECORATED group defines a 'line' (nodal substructure), but the decorations themselves are formed by (constrained) random selections. Complementing this is the ORNATE group, which enables you to place fully defined figures ('ornaments') on this 'line', with the option to constrain the pitches of the figure(s) to a harmonic grid.
Similarly, MOTIFS makes fully defined motifs possible, but the 'line' feature is removed. Thus the motifs will begin either on a pitch selected at random from a pitch range, or selected at random from a harmonic grid. In MOTIFS only the first pitch of the motif is 'forced' onto this grid, and in MOTIFSIN, all the pitches of the motif are forced onto the grid, warping the figure if necessary to do so.
TMOTIFS/TMOTIFSIN complements the 'line' feature of DECORATED and ORNATE with a timing grid, so that the motifs can be made to begin at specified times. This opens up possibilities such as controlled overlaps, variations in density, and interval control. The relationship between the timing grid, the intervals in the harmonic grid, the intervals in the motif itself, the time between the onset of the last motif on the grid and the rerun of the grid pattern (skiptime), and the tempo control (the motif duration multiplier multlo/hi) all affect the overall result and provide a wonderfully flexible environment for designing musical textures.
Furthermore, as we are working in the context of sound transformation software, it will be normal to apply the designs to inharmonic input soundfiles with little or no clearly defined pitch content. In this case the timing and pitch contours control 'washes' of sound and timbral colour.
End of TEXTURE TMOTIFS / TMOTIFSIN
Return to list of TEXTURE functions at top
of this file
Return
to Main Index for the CDP System.
Return
to 'Groucho' Time-Domain Index