5.11. Editing Instruments and Altering EventMode

A Texture's instrument can be edited like other Texture attributes. The instruments available for editing, just as when creating a Texture, are dependent on the active EventMode. To use instruments from another EventMode, the active EventMode must first be changed, and then the Texture may be assigned an instrument.

In the following example, the user changes the EventMode to csoundNative with EMo, examines the available instruments with EMi, and then assigns each Texture instrument 80:

Example 5-30. Changing EventMode and editing Texture instrument

[PI(auto-muteHiConga)TI(a1)] :: emo 
select an EventMode mode: cn
EventMode mode set to: csoundNative.

[PI(auto-muteHiConga)TI(a1)] :: emi
csoundNative instruments:
{number,name}
   3      sineDrone                        
   4      sineUnitEnvelope                 
   5      sawDrone                         
   6      sawUnitEnvelope                  
   11     noiseWhite                       
   12     noisePitched                     
   13     noiseUnitEnvelope                
   14     noiseTambourine                  
   15     noiseUnitEnvelopeBandpass        
   16     noiseSahNoiseUnitEnvelope        
   17     noiseSahNoiseUnitEnvelopeDistort 
   20     fmBasic                          
   21     fmClarinet                       
   22     fmWoodDrum                       
   23     fmString                         
   30     samplerReverb                    
   31     samplerRaw                       
   32     samplerUnitEnvelope              
   33     samplerUnitEnvelopeBandpass      
   34     samplerUnitEnvelopeDistort       
   35     samplerUnitEnvelopeParametric    
   36     samplerSahNoiseUnitEnvelope      
   40     vocodeNoiseSingle                
   41     vocodeNoiseSingleGlissando       
   42     vocodeNoiseQuadRemap             
   43     vocodeNoiseQuadScale             
   44     vocodeNoiseQuadScaleRemap        
   45     vocodeNoiseOctScale              
   46     vocodeNoiseOctScaleRemap         
   47     vocodeNoiseBiOctScale            
   48     vocodeNoiseTriOctScale           
   50     guitarNylonNormal                
   51     guitarNylonLegato                
   52     guitarNylonHarmonic              
   60     additiveBellBright               
   61     additiveBellDark                 
   62     additiveBellClear                
   70     synthRezzy                       
   71     synthWaveformVibrato             
   72     synthVcoAudioEnvelopeSineQuad    
   73     synthVcoAudioEnvelopeSquareQuad  
   74     synthVcoDistort                  
   80     pluckTamHats                     
   81     pluckFormant                     
   82     pluckUnitEnvelope                
   110    noiseAudioEnvelopeSineQuad       
   111    noiseAudioEnvelopeSquareQuad     
   130    samplerAudioEnvelopeSineQuad     
   131    samplerAudioEnvelopeSquareQuad   
   132    samplerAudioFileEnvelopeFilter   
   133    samplerAudioFileEnvelopeFollow   
   140    vocodeSineOctScale               
   141    vocodeSineOctScaleRemap          
   142    vocodeSineBiOctScale             
   143    vocodeSineTriOctScale            
   144    vocodeSineQuadOctScale           
   145    vocodeSinePentOctScale           
   146    vocodeSineHexOctScale            
   230    samplerVarispeed                 
   231    samplerVarispeedAudioSine        
   232    samplerVarispeedReverb           
   233    samplerVarispeedDistort          
   234    samplerVarispeedSahNoiseDistort  
   240    vocodeVcoOctScale                
   241    vocodeVcoOctScaleRemap           

[PI(auto-muteHiConga)TI(a1)] :: tie i 80
WARNING: new Texture auxiliary value 2
TI a1: parameter instrument updated.

[PI(auto-muteHiConga)TI(a1)] :: tio b1
TI b1 now active.

[PI(auto-muteHiConga)TI(b1)] :: tie i 80
WARNING: new Texture auxiliary value 2
TI b1: parameter instrument updated.

[PI(auto-muteHiConga)TI(b1)] :: tiv
command.py: command in debug mode.
TI: b1, TM: LineGroove, TC: 0, TT: TwelveEqual
pitchMode: pitchSpace, polyMode: set, silenceMode: off, postMapMode: on
midiProgram: piano1
   status: +, duration: 000.0--20.27
(i)nstrument        80 (csoundNative: pluckTamHats)
(t)ime range        00.0--20.0
(b)pm               constant, 120
(r)hythm            loop, ((4,1,+),(4,1,+),(4,2,+),(4,3,+),(4,5,+),(4,3,+)),
                    randomWalk
(p)ath              auto-muteHiConga
                    (D4)
                    20.00(s)
local (f)ield       constant, 0
local (o)ctave      constant, 0
(a)mplitude         randomUniform, (constant, 0.6), (constant, 1)
pan(n)ing           wavePowerDown, event, (constant, 15), 0.25, 2.5, (constant,
                    0), (constant, 0.5)
au(x)iliary
   x0               cyclicGen, up, 0.1, 0.9, 0.1
   x1               cyclicGen, down, 800, 16000, 200
texture (s)tatic
   s0               parallelMotionList, (), 0.0
   s1               pitchSelectorControl, randomPermutate            
   s2               levelFieldMonophonic, event
   s3               levelOctaveMonophonic, event
texture (d)ynamic   none

Notice that, after editing the Texture, a warning is issued. This warning tells the user that additional auxiliary ParameterObjects have been added. As a Csound-based instrument, each event of instrument 80 can accept two additional synthesis parameters. When viewing a Texture with this instrument, as shown above, the auxiliary display shows two additional ParameterObjects, x0 and x1. To learn what these auxiliary ParameterObjects control, the command TIdoc ma be used:

Example 5-31. Examining Texture documentation with TIdoc

[PI(auto-muteHiConga)TI(b1)] :: tidoc
TI: b1, TM: LineGroove
(i)nstrument        80 (csoundNative: pluckTamHats)
(b)pm               (1) name, (2) value
(r)hythm            (1) name, (2) pulseList {a list of Pulse notations}
local (f)ield       (1) name, (2) value
local (o)ctave      (1) name, (2) value
(a)mplitude         (1) name, (2) min, (3) max
pan(n)ing           (1) name, (2) stepString {'event', 'time'}, (3)
                    parameterObject {secPerCycle}, (4) phase, (5) exponent, (6)
                    min, (7) max
au(x)iliary
   x0               iparm (0-1)
                    (1) name, (2) directionString {'upDown', 'downUp', 'up',
                    'down'}, (3) min, (4) max, (5) increment
   x1               low-pass filter frequency
                    (1) name, (2) directionString {'upDown', 'downUp', 'up',
                    'down'}, (3) min, (4) max, (5) increment
texture (s)tatic
   s0               (1) name, (2) transpositionList, (3) timeDelay
   s1               (1) name, (2) selectionString {'randomChoice', 'randomWalk',
                    'randomPermutate', 'orderedCyclic', 'orderedOscillate'}
   s2               (1) name, (2) level {'set', 'event'}
   s3               (1) name, (2) level {'set', 'event'}
texture (d)ynamic   none     

Assuming that Csound is properly configured, a new set of EventLists can be created. As the user is now in EventMode csoundNative and has csoundNative textures, both a Csound score and a MIDI file are created. (See Section 2.6 for more information on working with Csound in athenaCL.) The user may render the Csound score with ELr, and then audition the results with the ELh command. (Replace "/Volumes/xdisc/_scratch/" with a complete file path to a suitable directory.)

Example 5-32. Creating a new EventList with ELn

[PI(auto-muteHiConga)TI(b1)] :: eln /Volumes/xdisc/_scratch/a02.xml
   EventList a02 complete:
/Volumes/xdisc/_scratch/a02.bat
/Volumes/xdisc/_scratch/a02.orc
/Volumes/xdisc/_scratch/a02.sco
/Volumes/xdisc/_scratch/a02.mid
/Volumes/xdisc/_scratch/a02.xml