# ex1D04.py # Triangular Random from moduleCsound import * tags(1) header(ksmps=32) # trirnd opcode defined for TRIANGULAR DISTRIBUTION # only "notes_uniform" instrument called, within score, which calls others add(""" ;****UDO FOR TRIANGULAR DISTRIBUTION**** opcode trirnd, i, ii iMin, iMax xin ;generate two random values with the random opcode iOne random iMin, iMax iTwo random iMin, iMax ;get the mean and output iRnd = (iOne+iTwo) / 2 xout iRnd endop """) add(r""" ;****INSTRUMENTS FOR UNIFORM AND TRIANGULAR DISTRIBUTION**** instr notes_uniform prints "... instr notes_uniform playing:\n" prints "EQUAL LIKELINESS OF ALL PITCHES AND DURATIONS\n" ;how many notes to be played iHowMany = p4 ;trigger as many instances of instr play as needed iThisNote = 0 iStart = 0 until iThisNote == iHowMany do iMidiPch random 36, 84 ;midi note iDur random .25, 1.75 ;duration event_i "i", "play", iStart, iDur, int(iMidiPch) iStart += iDur ;increase start iThisNote += 1 ;increase counter enduntil ;reset the duration of this instr to make all events happen p3 = iStart + 2 ;trigger next instrument two seconds after the last note event_i "i", "notes_trirnd", p3, 1, iHowMany endin instr notes_trirnd prints "... instr notes_trirnd playing:\n" prints "MEDIUM NOTES AND DURATIONS PREFERRED\n" iHowMany = p4 iThisNote = 0 iStart = 0 until iThisNote == iHowMany do iMidiPch trirnd 36, 84 ;medium pitches preferred iDur trirnd .25, 1.75 ;medium durations preferred event_i "i", "play", iStart, iDur, int(iMidiPch) iStart += iDur iThisNote += 1 enduntil ;reset the duration of this instr to make all events happen p3 = iStart + 2 ;call instr to exit csound event_i "i", "exit", p3+1, 1 endin ;****INSTRUMENTS TO PLAY THE SOUNDS AND EXIT CSOUND**** instr play ;increase duration in random range iDur random p3, p3*1.5 p3 = iDur ;get midi note and convert to frequency iMidiNote = p4 iFreq cpsmidinn iMidiNote ;generate note with karplus-strong algorithm aPluck pluck .2, iFreq, iFreq, 0, 1 aPluck linen aPluck, 0, p3, p3 ;filter aFilter mode aPluck, iFreq, .1 ;mix aPluck and aFilter according to MidiNote ;(high notes will be filtered more) aMix ntrpol aPluck, aFilter, iMidiNote, 36, 84 ;panning also according to MidiNote ;(low = left, high = right) iPan = (iMidiNote-36) / 48 aL, aR pan2 aMix, iPan outs aL, aR endin instr exit exitnow endin """) tags(2) add(""" i "notes_uniform" 0 1 23 ;set number of notes per instr here ;instr trirnd will be triggered automatically e 99999 ;make possible to perform long (exit will be automatically) """) tags(3) writeRun(__file__)
Tuesday, July 11, 2017
ex1D04. Triangular Random
Subscribe to:
Post Comments (Atom)
-
Amplitudes should follow the dB scale and change via the log function. # ex1C01.py # dB vs linear from moduleCsound import * tag...
-
# ex1D09.py # Random Walk from moduleCsound import * tags( 1 ) header(ksmps =32 ) # --- globals add( r""" seed 1...
-
# ex2C03.py # Midi All In from moduleCsound import * add(startSyn) add(startOpt) add( "-+rtmidi=virtual -Ma -odac" ) add(...
No comments:
Post a Comment