form caption("Synthual Healing") size(590, 540), 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(380, 8, 200, 200), text("The Yoozh") fontcolour(0, 0, 0, 255) colour(236, 255, 0, 255) outlinecolour(0, 0, 0, 255)
rslider bounds(390, 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(482, 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(388, 118, 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(482, 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("Scaley Stuff") 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(10, 8, 216, 200), text("Freak Inflection") colour(255, 115, 0, 255) fontcolour(0, 0, 0, 255) outlinecolour(0, 0, 0, 255)
rslider bounds(20, 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(120, 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)
checkbox bounds(340, 426, 100, 30), text("Enable Arp"), fontcolour:1(0, 0, 0), fontcolour:0(0, 0, 0) channel("enableArp")
rslider bounds(448, 426, 60, 60) range(1, 16, 4, 1, 0.001), channel("tempo")
rslider bounds(516, 426, 60, 60) range(0.001, 2, 0.1, 1, 0.001), channel("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
massign 0,0;mute all midi channels
massign 1, 1;midi assign channel 1 to play instr 1
opcode SynthualHealing, aa, ii
iNoteIn, iVelocity xin
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
xout aAddSig*kMasterVol*(aOut*aEnv), aAddSig*kMasterVol*(aOut*aEnv)
endop
instr 1
kShouldArp chnget "enableArp"
kTempo chnget "tempo"
kDuration chnget "duration"
if kShouldArp == 1 then
iArpPattern[] fillarray 0, 5, 7, 12, 7, 5
kIndex init 0
if metro(kTempo) == 1 then
event "i", 2000, 0, kDuration, p4+iArpPattern[kIndex], p5
kIndex = kIndex < 5 ? kIndex+1 : 0
endif
else
a1, a2 SynthualHealing p4, p5
outs a1, a2
endif
endin
instr 2000
a1, a2 SynthualHealing p4, p5
outs a1, a2
endin
f1 0 4096 10 1
f0 z