bounds(0, 0, 0, 0)
form caption("Synthual Healing") size(590, 600), colour(255,99,71), pluginID("def1")
keyboard bounds(8, 211, 570, 104) whitenotecolour(255, 173, 0, 255) keyseparatorcolour(255, 0, 255, 255) arrowbackgroundcolour(0, 197, 255, 255)
groupbox bounds(224, 8, 162, 200), text("WELLY") colour(0, 0, 0, 255) fontcolour(255, 188, 0, 255) outlinecolour(255, 255, 255, 255)
rslider bounds(236, 34, 137, 130), channel("MasterVol"), range(0, 1, 0.25, 1, 0.001), text("GIVE IT SOME!"), outlinecolour(0, 0, 255, 255) markercolour(0, 0, 0, 255) trackercolour(0, 255, 0, 255) textcolour(255, 255, 0, 255) fontcolour(255, 0, 0, 255)
groupbox bounds(388, 8, 200, 200), text("The Yoozh") fontcolour(0, 0, 0, 255) colour(236, 255, 0, 255) outlinecolour(0, 0, 0, 255)
rslider bounds(392, 32, 92, 87), channel("att"), range(0, 1, 0.01, 1, 0.01), text("Attack") markercolour(0, 0, 0, 255) trackercolour(255, 0, 255, 255) textcolour(0, 0, 255, 255)
rslider bounds(484, 32, 93, 87), channel("dec"), range(0, 1, 0.5, 1, 0.01), text("Decay") outlinecolour(0, 0, 0, 255) markercolour(0, 0, 0, 255) trackercolour(207, 0, 255, 255) textcolour(0, 0, 255, 255)
rslider bounds(390, 116, 92, 85), channel("sus"), range(0, 1, 0.7, 1, 0.01), text("Sustain") markercolour(0, 0, 0, 255) trackercolour(164, 0, 255, 255) textcolour(0, 0, 255, 255)
rslider bounds(484, 120, 94, 81), channel("rel"), range(0, 1, 0.7, 1, 0.01), text("Release") trackercolour(178, 0, 255, 255) textcolour(0, 0, 255, 255)
groupbox bounds(8, 318, 570, 100), text("Hell Hath No Fourier") colour(106, 0, 255, 255) fontcolour(255, 231, 0, 255) outlinecolour(0, 255, 255, 255)
rslider bounds(22, 338, 69, 80), channel("Partial2Strength"), range(0, 1, 0, 1, 0.001), text("Partial 2"), colour(255, 255, 0, 255) markercolour(255, 0, 0, 255) outlinecolour(0, 255, 255, 255) fontcolour(255, 0, 0, 255) textcolour(250, 255, 0, 255) trackercolour(0, 0, 255, 255)
rslider bounds(112, 338, 69, 80), channel("Partial3Strength"), range(0, 1, 0, 1, 0.001), text("Partial 3"), colour(255, 0, 255, 255) markercolour(255, 255, 0, 255) outlinecolour(221, 255, 0, 255) textcolour(250, 255, 0, 255) trackercolour(0, 255, 0, 255)
rslider bounds(208, 338, 69, 80), channel("Partial4Strength"), range(0, 1, 0, 1, 0.001), text("Partial 4"), colour(0, 255, 255, 255) markercolour(255, 0, 255, 255) outlinecolour(255, 115, 0, 255) textcolour(255, 231, 0, 255) trackercolour(255, 255, 255, 255)
rslider bounds(306, 338, 69, 80), channel("Partial5Strength"), range(0, 1, 0, 1, 0.001), text("Partial 5"), colour(255, 0, 0, 128) markercolour(255, 255, 255, 255) outlinecolour(0, 255, 140, 255) textcolour(250, 255, 0, 255) trackercolour(255, 0, 0, 255)
rslider bounds(404, 338, 69, 80), channel("Partial6Strength"), range(0, 1, 0, 1, 0.001), text("Partial 6"), colour(0, 255, 38, 128) markercolour(34, 255, 0, 255) outlinecolour(207, 255, 0, 255) fontcolour(255, 255, 255, 255) textcolour(255, 245, 0, 255) trackercolour(255, 159, 0, 255)
rslider bounds(494, 338, 69, 80), channel("Partial7Strength"), range(0, 1, 0, 1, 0.001), text("Partial 7"), colour(178, 255, 0, 255) markercolour(255, 130, 0, 255) fontcolour(255, 255, 255, 255) outlinecolour(0, 255, 53, 255) textcolour(255, 231, 0, 255) trackercolour(0, 197, 255, 255)
groupbox bounds(6, 8, 216, 200), text("Freak Inflection") colour(255, 115, 0, 255) fontcolour(0, 0, 0, 255) outlinecolour(0, 0, 0, 255)
rslider bounds(14, 30, 96, 175), channel("modfreq"), range(-30, -1, -30, 1, 0.001), text("Modfreq") outlinecolour(0, 0, 255, 255) fontcolour(0, 0, 0, 255) markercolour(0, 0, 0, 255) trackercolour(255, 255, 0, 255) textcolour(255, 245, 0, 255)
rslider bounds(114, 30, 96, 175), channel("harmonicity"), range(-10, -1, -10, 1, 0.001), text("Harmonicity") outlinecolour(0, 0, 255, 255) fontcolour(255, 0, 0, 255) markercolour(0, 0, 0, 255) trackercolour(255, 255, 0, 255) textcolour(255, 255, 0, 255)
groupbox bounds(8, 498, 273, 96) fontcolour(255, 0, 0, 255) colour(0, 96, 255, 255) outlinecolour(255, 0, 188, 255) outlinethickness(0)
hslider bounds(14, 524, 262, 64), channel("CF"), range(100, 15000, 400, 1, 0.001), text("DILATE"), textcolour(255, 188, 0, 255) colour(0, 255, 0, 255) fontcolour(255, 255, 0, 255) textboxcolour(255, 255, 0, 255) textboxoutlinecolour(255, 0, 255, 255)
label bounds(14, 504, 262, 20), text("Filter"), fontcolour(0, 255, 0, 255) colour(106, 0, 255, 255)
form caption("Simple Arper") size(590, 600)
keyboard bounds(12, 4, 381, 95)
checkbox bounds(288, 426, 282, 64), channel("enableArp"), text("Enable Arp")
image bounds(286, 498, 284, 95), visible(0), identchannel("arpControls"){
rslider bounds(7, 2, 116, 63) range(1, 8, 6, 1, 0.001), channel("tempo") text("Tempo")
rslider bounds(127, 2, 116, 63) range(0.1, 8, 0.2, 1, 0.001), channel("duration") text("Duration")
}
-n -d -+rtmidi=NULL -M0 -m0d --midi-key=4 --midi-velocity-amp=5
; Initialize the global variables.
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
;create UDO to prevent duplicating code..
opcode SimpleSynth, aa, ii
iFreq, iAmp xin
kEnv madsr .1, .3, .8, .2
aOut vco2 kEnv, cpsmidinn(iFreq)
xout aOut*iAmp, aOut*iAmp
endop
;trigger by midi keyboard
instr 1
iNoteArray[] fillarray 0, 5, 7, 12, 7, 5
kNoteIndex init 0
if chnget:k("enableArp") == 1 then
kTempo chnget "tempo"
kMetro metro kTempo
if kMetro == 1 then
;trigger sounds from instrument 1000, which in turns calls synth UDO..
event "i", 1000, 0, chnget:k("duration"), p4+iNoteArray[kNoteIndex], p5/5
kNoteIndex = kNoteIndex<5 ? kNoteIndex + 1 : 0
endif
else
;plays sound through thr simple synth UDO
a1, a2 SimpleSynth, p4, p5
outs a1, a2
endif
endin
iFreq = p4
iAmp = p5
iVelocity veloc 0, 1
iNoteIn notnum
iMidi2Freq = 0
if (iNoteIn == 0) then
iMidi2Freq = 0; Midi note 0 has a frequency of 8Hz
else
iMidi2Freq = (440.0*exp(log(2.0)*((iNoteIn)-69.0)/12.0)) ;Midi to Frequency Conversion
endif
iAtt chnget "att"
iDec chnget "dec"
iSus chnget "sus"
iRel chnget "rel"
kMasterVol chnget "MasterVol"
kModulatorFrequency chnget "modfreq"
kHarmonicity chnget "harmonicity"
kMODULATOR poscil p4/(kHarmonicity), p4/(kModulatorFrequency/5)
aEnv madsr iAtt, iDec, iSus, iRel ;, .1, .2, .6, .4
aFundamentalSig poscil iVelocity, iMidi2Freq, 1;high precision oscillator referencing a function table (GEN10 below) and the score
kP2 chnget "Partial2Strength"
kP3 chnget "Partial3Strength"
kP4 chnget "Partial4Strength"
kP5 chnget "Partial5Strength"
kP6 chnget "Partial6Strength"
kP7 chnget "Partial7Strength"
aP2 poscil iVelocity*kP2, iMidi2Freq*2, 1; frequencies for partials
aP3 poscil iVelocity*kP3, iMidi2Freq*3, 1
aP4 poscil iVelocity*kP4, iMidi2Freq*4, 1
aP5 poscil iVelocity*kP5, iMidi2Freq*5, 1; frequencies for partials
aP6 poscil iVelocity*kP6, iMidi2Freq*6, 1
aP7 poscil iVelocity*kP7, iMidi2Freq*7, 1
aAddSig = (aFundamentalSig+aP2+aP3+aP4+aP5+aP6+aP7) * 0.07 * aEnv
aOut oscil p5, p4 + kMODULATOR, 1
kPartialMultiplier chnget "partialMult"
aHughBuzz buzz p5, p4, p5*kPartialMultiplier, 1; buzz — Output is a set of harmonically related sine partials.
chnset p5*kPartialMultiplier+1, "numpartials" ; velocity sensitive.
MixerSetLevel 1, 2, 0.5; set Mixer send levels (instrument number, buss number, level)
MixerSend aHughBuzz, 1, 2, 1; send the signal over a buss (aSignal, instrument number, buss number, channel number)
kGain1 MixerGetLevel 1, 2; receive levels from the specified mixersend adn buss
aReceive MixerReceive 2, 1; receive a signal on the specified buss and channel
kCF chnget "CF"
aHughBuzzFiltered lowpass2 aReceive, kCF, 30; lowpass filter
outs aHughBuzzFiltered*aAddSig*kMasterVol*(aOut*aEnv), aHughBuzzFiltered*aAddSig*kMasterVol*(aOut*aEnv)
;synth...
instr 1000
a1, a2 SimpleSynth, p4, p5
outs a1, a2
endin
;updates GUI
instr 1001
kArp chnget "enableArp"
if changed(kArp) == 1 then
if kArp == 1 then
chnset "visible(1)", "arpControls"
else
chnset "visible(0)", "arpControls"
endif
endif
endin
;causes Csound to run for about 7000 years...
f0 z
i1001 0 z