|
- GuitarChords
- ------------
-
- Mute buttons dictate the behaviour of a string when it is open and un-fretted, they have no effect on fretted notes.
-
- <Cabbage>
- form size(620, 260), caption("Guitar Chords"), pluginID("guit")
-
- label bounds( 56, 0, 80, 9), text("Mute"), FontColour("white")
-
- combobox bounds( 3, 10, 50, 15), channel("TuneHighE"), value(64), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1")
- checkbox bounds( 59, 10, 15, 15), channel("HighE0"), colour("255, 20, 20")
- checkbox bounds(101, 10, 15, 15), channel("HighE1"), colour("250,250, 0")
- checkbox bounds(153, 10, 15, 15), channel("HighE2"), colour("250,250, 0")
- checkbox bounds(202, 10, 15, 15), channel("HighE3"), colour("250,250, 0")
- checkbox bounds(249, 10, 15, 15), channel("HighE4"), colour("250,250, 0")
- checkbox bounds(295, 10, 15, 15), channel("HighE5"), colour("250,250, 0")
- checkbox bounds(339, 10, 15, 15), channel("HighE6"), colour("250,250, 0")
- checkbox bounds(381, 10, 15, 15), channel("HighE7"), colour("250,250, 0")
- checkbox bounds(420, 10, 15, 15), channel("HighE8"), colour("250,250, 0")
- checkbox bounds(460, 10, 15, 15), channel("HighE9"), colour("250,250, 0")
- checkbox bounds(495, 10, 15, 15), channel("HighE10"), colour("250,250, 0")
- checkbox bounds(529, 10, 15, 15), channel("HighE11"), colour("250,250, 0")
- checkbox bounds(561, 10, 15, 15), channel("HighE12"), colour("250,250, 0")
- checkbox bounds(591, 10, 15, 15), channel("HighE13"), colour("250,250, 0")
-
- combobox bounds( 3, 30, 50, 15), channel("TuneB"), value(69), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1")
- checkbox bounds( 59, 30, 15, 15), channel("B0"), colour("255, 20, 20")
- checkbox bounds(101, 30, 15, 15), channel("B1"), colour("250,250, 0"), value(1)
- checkbox bounds(153, 30, 15, 15), channel("B2"), colour("250,250, 0")
- checkbox bounds(202, 30, 15, 15), channel("B3"), colour("250,250, 0")
- checkbox bounds(249, 30, 15, 15), channel("B4"), colour("250,250, 0")
- checkbox bounds(295, 30, 15, 15), channel("B5"), colour("250,250, 0")
- checkbox bounds(339, 30, 15, 15), channel("B6"), colour("250,250, 0")
- checkbox bounds(381, 30, 15, 15), channel("B7"), colour("250,250, 0")
- checkbox bounds(420, 30, 15, 15), channel("B8"), colour("250,250, 0")
- checkbox bounds(460, 30, 15, 15), channel("B9"), colour("250,250, 0")
- checkbox bounds(495, 30, 15, 15), channel("B10"), colour("250,250, 0")
- checkbox bounds(529, 30, 15, 15), channel("B11"), colour("250,250, 0")
- checkbox bounds(561, 30, 15, 15), channel("B12"), colour("250,250, 0")
- checkbox bounds(591, 30, 15, 15), channel("B13"), colour("250,250, 0")
-
- combobox bounds( 3, 50, 50, 15), channel("TuneG"), value(73), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1")
- checkbox bounds( 59, 50, 15, 15), channel("G0"), colour("255, 20, 20")
- checkbox bounds(101, 50, 15, 15), channel("G1"), colour("250,250, 0")
- checkbox bounds(153, 50, 15, 15), channel("G2"), colour("250,250, 0")
- checkbox bounds(202, 50, 15, 15), channel("G3"), colour("250,250, 0")
- checkbox bounds(249, 50, 15, 15), channel("G4"), colour("250,250, 0")
- checkbox bounds(295, 50, 15, 15), channel("G5"), colour("250,250, 0")
- checkbox bounds(339, 50, 15, 15), channel("G6"), colour("250,250, 0")
- checkbox bounds(381, 50, 15, 15), channel("G7"), colour("250,250, 0")
- checkbox bounds(420, 50, 15, 15), channel("G8"), colour("250,250, 0")
- checkbox bounds(460, 50, 15, 15), channel("G9"), colour("250,250, 0")
- checkbox bounds(495, 50, 15, 15), channel("G10"), colour("250,250, 0")
- checkbox bounds(529, 50, 15, 15), channel("G11"), colour("250,250, 0")
- checkbox bounds(561, 50, 15, 15), channel("G12"), colour("250,250, 0")
- checkbox bounds(591, 50, 15, 15), channel("G13"), colour("250,250, 0")
-
- combobox bounds( 3, 70, 50, 15), channel("TuneD"), value(78), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1")
- checkbox bounds( 59, 70, 15, 15), channel("D0"), colour("255, 20, 20")
- checkbox bounds(101, 70, 15, 15), channel("D1"), colour("250,250, 0")
- checkbox bounds(153, 70, 15, 15), channel("D2"), colour("250,250, 0"), value(1)
- checkbox bounds(202, 70, 15, 15), channel("D3"), colour("250,250, 0")
- checkbox bounds(249, 70, 15, 15), channel("D4"), colour("250,250, 0")
- checkbox bounds(295, 70, 15, 15), channel("D5"), colour("250,250, 0")
- checkbox bounds(339, 70, 15, 15), channel("D6"), colour("250,250, 0")
- checkbox bounds(381, 70, 15, 15), channel("D7"), colour("250,250, 0")
- checkbox bounds(420, 70, 15, 15), channel("D8"), colour("250,250, 0")
- checkbox bounds(460, 70, 15, 15), channel("D9"), colour("250,250, 0")
- checkbox bounds(495, 70, 15, 15), channel("D10"), colour("250,250, 0")
- checkbox bounds(529, 70, 15, 15), channel("D11"), colour("250,250, 0")
- checkbox bounds(561, 70, 15, 15), channel("D12"), colour("250,250, 0")
- checkbox bounds(591, 70, 15, 15), channel("D13"), colour("250,250, 0")
-
- combobox bounds( 3, 90, 50, 15), channel("TuneA"), value(83), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1")
- checkbox bounds( 59, 90, 15, 15), channel("A0"), colour("255, 20, 20")
- checkbox bounds(101, 90, 15, 15), channel("A1"), colour("250,250, 0")
- checkbox bounds(153, 90, 15, 15), channel("A2"), colour("250,250, 0")
- checkbox bounds(202, 90, 15, 15), channel("A3"), colour("250,250, 0"), value(1)
- checkbox bounds(249, 90, 15, 15), channel("A4"), colour("250,250, 0")
- checkbox bounds(295, 90, 15, 15), channel("A5"), colour("250,250, 0")
- checkbox bounds(339, 90, 15, 15), channel("A6"), colour("250,250, 0")
- checkbox bounds(381, 90, 15, 15), channel("A7"), colour("250,250, 0")
- checkbox bounds(420, 90, 15, 15), channel("A8"), colour("250,250, 0")
- checkbox bounds(460, 90, 15, 15), channel("A9"), colour("250,250, 0")
- checkbox bounds(495, 90, 15, 15), channel("A10"), colour("250,250, 0")
- checkbox bounds(529, 90, 15, 15), channel("A11"), colour("250,250, 0")
- checkbox bounds(561, 90, 15, 15), channel("A12"), colour("250,250, 0")
- checkbox bounds(591, 90, 15, 15), channel("A13"), colour("250,250, 0")
-
- combobox bounds( 3,110, 50, 15), channel("TuneLowE"), value(88), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1")
- checkbox bounds( 59,110, 15, 15), channel("LowE0"), colour("255, 20, 20"), value(1)
- checkbox bounds(101,110, 15, 15), channel("LowE1"), colour("250,250, 0");52
- checkbox bounds(153,110, 15, 15), channel("LowE2"), colour("250,250, 0");49
- checkbox bounds(202,110, 15, 15), channel("LowE3"), colour("250,250, 0");47
- checkbox bounds(249,110, 15, 15), channel("LowE4"), colour("250,250, 0");46
- checkbox bounds(295,110, 15, 15), channel("LowE5"), colour("250,250, 0");44
- checkbox bounds(339,110, 15, 15), channel("LowE6"), colour("250,250, 0");42
- checkbox bounds(381,110, 15, 15), channel("LowE7"), colour("250,250, 0");39
- checkbox bounds(420,110, 15, 15), channel("LowE8"), colour("250,250, 0");40
- checkbox bounds(460,110, 15, 15), channel("LowE9"), colour("250,250, 0");35
- checkbox bounds(495,110, 15, 15), channel("LowE10"), colour("250,250, 0");34
- checkbox bounds(529,110, 15, 15), channel("LowE11"), colour("250,250, 0");32
- checkbox bounds(561,110, 15, 15), channel("LowE12"), colour("250,250, 0");30
- checkbox bounds(591,110, 15, 15), channel("LowE13"), colour("250,250, 0");
-
- ; frets
- line bounds(134, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(185, 5, 2, 130), colour(50,50,50) ;3 ;
- line bounds(232, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(279, 5, 2, 130), colour(50,50,50) ;5 ;
- line bounds(324, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(367, 5, 2, 130), colour(50,50,50) ;7 ;
- line bounds(408, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(447, 5, 2, 130), colour(50,50,50) ;9 ;
- line bounds(484, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(519, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(552, 5, 2, 130), colour(50,50,50) ;12 ;
- line bounds(583, 5, 2, 130), colour(50,50,50) ; ;
- line bounds(612, 5, 2, 130), colour(50,50,50) ;
-
- image bounds(185, 5, 47,130), colour("tan"), line(0) ; 3rd fret
- image bounds(279, 5, 45,130), colour("tan"), line(0) ; 5th fret
- image bounds(367, 5, 42,130), colour("tan"), line(0) ; 7th fret
- image bounds(447, 5, 37,130), colour("tan"), line(0) ; 9th fret
- image bounds(552, 5, 31,130), colour("tan"), line(0) ; 12th fret
- image bounds( 80, 0,624,140), colour("white"), line(0) ; neck
-
- button bounds( 80,150,100, 30), text("strum"), channel("strum"), value(0), FontColour("yellow")
- combobox bounds( 80,185, 95, 17), channel("GuitarType"), value(0), text("6 String","12 String")
- checkbox bounds(185,150,100, 20), channel("ReverseStrum"), text("Reverse") colour("lime")
- hslider bounds(280,143,270, 40), text("Gap"), colour("tan"), FontColour(195,126, 0), channel("gap"), range(0,0.5,0.05,0.5,0.0001)
- hslider bounds(280,168,270, 40), text("Damp"), colour("tan"), FontColour(195,126, 0), channel("damp"), range(0.01,0.99,0.17)
- hslider bounds(280,193,270, 40), text("Pos."), colour("tan"), FontColour(195,126, 0), channel("pos"), range(0.0001, 0.5, 0.02, 0.5, 0.001)
-
- image bounds(5, 235, 470, 20), colour(75, 85, 90, 50), plant("credit"){
- label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2013|"), colour("white"), FontColour(195,126, 0)
- }
- </Cabbage>
-
- <CsoundSynthesizer>
- <CsOptions>
- -n -d -+rtmidi=NULL -M0 --midi-key-cps=4 --midi-velocity-amp=5
- </CsOptions>
- <CsInstruments>
- sr = 44100
- ksmps = 64
- nchnls = 2
- 0dbfs=1
-
- iDetuneRange = 0.025
- gidetune ftgen 0, 0, 8, -21, 6, iDetuneRange ; table of detuning values for each string in a 12 string guitar configuration
-
- instr 1
-
- ; radio buttons mechanism
- koff = 0 ; checkbox value when off (needs to be k-rate)
-
- kSumHighE = 0 ; sum of high E string buttons
- kSumB = 0 ; sum of B string buttons
- kSumG = 0 ; sum of G string buttons
- kSumD = 0 ; sum of D string buttons
- kSumA = 0 ; sum of A string buttons
- kSumLowE = 0 ; sum of low E string buttons
-
- kTrigSumHighE = 0 ; sum of high E string on triggers
- kTrigSumB = 0 ; sum of B string change triggers
- kTrigSumG = 0 ; sum of G string change triggers
- kTrigSumD = 0 ; sum of D string change triggers
- kTrigSumA = 0 ; sum of A string change triggers
- kTrigSumLowE = 0 ; sum of low E string change triggers
-
- kChangeTrigHighE = 0 ; sum of high E string change triggers
- kChangeTrigB = 0 ; sum of B string change triggers
- kChangeTrigG = 0 ; sum of G string change triggers
- kChangeTrigD = 0 ; sum of D string change triggers
- kChangeTrigA = 0 ; sum of A string change triggers
- kChangeTrigLowE = 0 ; sum of low E string change triggers
-
- ; macro for string set-up
- #define STRING_SETUP(LABEL)
- #
- k$LABEL0 chnget "$LABEL0"
- kTune$LABEL chnget "Tune$LABEL"
- #
- $STRING_SETUP(HighE)
- $STRING_SETUP(B)
- $STRING_SETUP(G)
- $STRING_SETUP(D)
- $STRING_SETUP(A)
- $STRING_SETUP(LowE)
-
-
- ; macro for check box input
- #define INPUT(N'LABEL)
- #
- k$LABEL$N chnget "$LABEL$N" ; read in checkbox value
- kSum$LABEL = kSum$LABEL + k$LABEL$N ; accumulate to value for all checkboxes for this string
- ktrig$N trigger k$LABEL$N,0.5,0 ; generate a trigger if this checkbox is switched *on*
- kTrigSum$LABEL = kTrigSum$LABEL + ktrig$N ; accumulation of all 'on' triggers for this string
- kChangeTrig changed k$LABEL$N ; generate a different trigger if this checkbox is switched either on or off
- kChangeTrig$LABEL = kChangeTrig$LABEL+kChangeTrig ; accumlation of all 'change' triggers for this string
- #
-
- ; macro for radio button switching mechanism
- #define SWITCH(N'LABEL)
- #
- if ktrig$N==1 then
- k$LABELVal = $N
- kgoto SKIP$LABEL$N
- endif
- chnset koff,"$LABEL$N"
- SKIP$LABEL$N:
- #
-
- $INPUT(1'HighE)
- $INPUT(2'HighE)
- $INPUT(3'HighE)
- $INPUT(4'HighE)
- $INPUT(5'HighE)
- $INPUT(6'HighE)
- $INPUT(7'HighE)
- $INPUT(8'HighE)
- $INPUT(9'HighE)
- $INPUT(10'HighE)
- $INPUT(11'HighE)
- $INPUT(12'HighE)
- $INPUT(13'HighE)
- if(kTrigSum$LABEL>0) then
- $SWITCH(1'HighE)
- $SWITCH(2'HighE)
- $SWITCH(3'HighE)
- $SWITCH(4'HighE)
- $SWITCH(5'HighE)
- $SWITCH(6'HighE)
- $SWITCH(7'HighE)
- $SWITCH(8'HighE)
- $SWITCH(9'HighE)
- $SWITCH(10'HighE)
- $SWITCH(11'HighE)
- $SWITCH(12'HighE)
- $SWITCH(13'HighE)
- endif
-
- $INPUT(1'B)
- $INPUT(2'B)
- $INPUT(3'B)
- $INPUT(4'B)
- $INPUT(5'B)
- $INPUT(6'B)
- $INPUT(7'B)
- $INPUT(8'B)
- $INPUT(9'B)
- $INPUT(10'B)
- $INPUT(11'B)
- $INPUT(12'B)
- $INPUT(13'B)
- if(kTrigSum$LABEL>0) then
- $SWITCH(1'B)
- $SWITCH(2'B)
- $SWITCH(3'B)
- $SWITCH(4'B)
- $SWITCH(5'B)
- $SWITCH(6'B)
- $SWITCH(7'B)
- $SWITCH(8'B)
- $SWITCH(9'B)
- $SWITCH(10'B)
- $SWITCH(11'B)
- $SWITCH(12'B)
- $SWITCH(13'B)
- endif
-
- $INPUT(1'G)
- $INPUT(2'G)
- $INPUT(3'G)
- $INPUT(4'G)
- $INPUT(5'G)
- $INPUT(6'G)
- $INPUT(7'G)
- $INPUT(8'G)
- $INPUT(9'G)
- $INPUT(10'G)
- $INPUT(11'G)
- $INPUT(12'G)
- $INPUT(13'G)
- if(kTrigSum$LABEL>0) then
- $SWITCH(1'G)
- $SWITCH(2'G)
- $SWITCH(3'G)
- $SWITCH(4'G)
- $SWITCH(5'G)
- $SWITCH(6'G)
- $SWITCH(7'G)
- $SWITCH(8'G)
- $SWITCH(9'G)
- $SWITCH(10'G)
- $SWITCH(11'G)
- $SWITCH(12'G)
- $SWITCH(13'G)
- endif
-
- $INPUT(1'D)
- $INPUT(2'D)
- $INPUT(3'D)
- $INPUT(4'D)
- $INPUT(5'D)
- $INPUT(6'D)
- $INPUT(7'D)
- $INPUT(8'D)
- $INPUT(9'D)
- $INPUT(10'D)
- $INPUT(11'D)
- $INPUT(12'D)
- $INPUT(13'D)
- if(kTrigSum$LABEL>0) then
- $SWITCH(1'D)
- $SWITCH(2'D)
- $SWITCH(3'D)
- $SWITCH(4'D)
- $SWITCH(5'D)
- $SWITCH(6'D)
- $SWITCH(7'D)
- $SWITCH(8'D)
- $SWITCH(9'D)
- $SWITCH(10'D)
- $SWITCH(11'D)
- $SWITCH(12'D)
- $SWITCH(13'D)
- endif
-
- $INPUT(1'A)
- $INPUT(2'A)
- $INPUT(3'A)
- $INPUT(4'A)
- $INPUT(5'A)
- $INPUT(6'A)
- $INPUT(7'A)
- $INPUT(8'A)
- $INPUT(9'A)
- $INPUT(10'A)
- $INPUT(11'A)
- $INPUT(12'A)
- $INPUT(13'A)
- if(kTrigSum$LABEL>0) then
- $SWITCH(1'A)
- $SWITCH(2'A)
- $SWITCH(3'A)
- $SWITCH(4'A)
- $SWITCH(5'A)
- $SWITCH(6'A)
- $SWITCH(7'A)
- $SWITCH(8'A)
- $SWITCH(9'A)
- $SWITCH(10'A)
- $SWITCH(11'A)
- $SWITCH(12'A)
- $SWITCH(13'A)
- endif
-
- $INPUT(1'LowE)
- $INPUT(2'LowE)
- $INPUT(3'LowE)
- $INPUT(4'LowE)
- $INPUT(5'LowE)
- $INPUT(6'LowE)
- $INPUT(7'LowE)
- $INPUT(8'LowE)
- $INPUT(9'LowE)
- $INPUT(10'LowE)
- $INPUT(11'LowE)
- $INPUT(12'LowE)
- $INPUT(13'LowE)
- if(kTrigSum$LABEL>0) then
- $SWITCH(1'LowE)
- $SWITCH(2'LowE)
- $SWITCH(3'LowE)
- $SWITCH(4'LowE)
- $SWITCH(5'LowE)
- $SWITCH(6'LowE)
- $SWITCH(7'LowE)
- $SWITCH(8'LowE)
- $SWITCH(9'LowE)
- $SWITCH(10'LowE)
- $SWITCH(11'LowE)
- $SWITCH(12'LowE)
- $SWITCH(13'LowE)
- endif
-
- ; macro that checks for open strings
- #define OPEN_STRING(LABEL)
- #
- if(kSum$LABEL==0) then
- k$LABELVal = 0
- endif
- #
- $OPEN_STRING(HighE)
- $OPEN_STRING(B)
- $OPEN_STRING(G)
- $OPEN_STRING(D)
- $OPEN_STRING(A)
- $OPEN_STRING(LowE)
-
- ; macro for operations when a string is plucked
- #define PLAY_STRING(LABEL'StringNum)
- #
- k$LABELNum = k$LABELVal + (128 - kTune$LABEL) ; derive MIDI note number (note that combobox value has to be inverted
- k$LABELCps = cpsmidinn(k$LABELNum) ; convert to cps
- kTimeElapsed timeinsts ; elapsed time form the start of this note (this will be used to prevent premature triggering of the string)
- if(kChangeTrig$LABEL==1&&kTimeElapsed>0.1) then ; if a change note trigger for this string has been received and time buffer has elapsed...
- turnoff2 2.$StringNum,4,1 ; turnoff this string
- if(kSum$LABEL==0&&k$LABEL0==1) kgoto SKIP$LABEL ; if this is an open and muted string jump string playing code
- schedkwhen kChangeTrig$LABEL,0,0,2.$StringNum,0,20,k$LABELCps,$StringNum ; play string (instr 2)
- endif
- if(kSum$LABEL==0&&k$LABEL0==1) kgoto SKIP$LABEL ; if this is an open and muted string jump string playing code
- kRndStrt random 0,kgap*0.15
- schedkwhen ktrig,0,0,2.$StringNum,kstart+kRndStrt,20,k$LABELCps,$StringNum ; play string (instr 2)
- kstart = kstart + kgap ; increment start time
- SKIP$LABEL: ; label
- #
-
- kstrum chnget "strum" ; 'strum' button
- ktrig changed kstrum ; if 'strum' button has been clicked...
- if ktrig==1 then ; ...
- turnoff2 2,0,1 ; turn off all playing strings (in preparation for the new chord)
- endif
-
- kgap chnget "gap"
- kreverse chnget "ReverseStrum"
- if kreverse==0 then
- kstart = 0 ; start time (for first string plucked
- else
- kstart = kgap*5
- kgap = -kgap
- endif
-
- $PLAY_STRING(LowE'1)
- $PLAY_STRING(A'2)
- $PLAY_STRING(D'3)
- $PLAY_STRING(G'4)
- $PLAY_STRING(B'5)
- $PLAY_STRING(HighE'6)
-
- endin
-
- instr 2 ; string pluck
- kdamp chnget "damp" ; damping
- iplk chnget "pos" ; pluck position
- iamp random 0.1,0.2
-
- iGuitarType chnget "GuitarType"
- if(iGuitarType==2) then ; if 12 string guitar...
- kmvt1 jspline 0.15,0.2,0.4 ; a bit of random pick-up movement animates the tone of the guitar
- kmvt2 jspline 0.15,0.2,0.4
- idtn table p5,gidetune ; detuning value. used in 12 string guitar only.
- if p5<5 then ; strings 1 - 4 are in octaves in a 12-string guitar
- a1 wgpluck2 iplk, iamp/2, p4, 0.2+kmvt1, kdamp
- a2 wgpluck2 iplk, iamp/2, p4*(2+idtn), 0.2+kmvt2, kdamp
- else ; strings 5 & 6 are in unison in a 12-string guitar
- a1 wgpluck2 iplk, iamp/2, p4, 0.2 +kmvt1, kdamp
- a2 wgpluck2 iplk, iamp/2, p4*(1+idtn), 0.2+rnd(0.5)+kmvt2, kdamp
- endif
- a2 delay a2,0.01+rnd(0.01) ; slight delay to second string
- asig = a1+a2
- else ; otherwise 6 string
- kmvt jspline 0.15,0.2,0.4
- asig wgpluck2 iplk, iamp, p4, 0.2+kmvt, kdamp
- endif
-
- aenv linsegr 0, 0.0008, 1, p3-0.1008, 0, 0.05, 0 ; amplitude envelope. Attack removes excessive 'click'. Decays to nothing across note duration (p3). Short release stage prevents click if a note is interrupted.
-
- /* FILTERING TO IMPROVE THE SOUND */
- af1 resonz asig,200,200
- af2 resonz asig,550,550
- af3 resonz asig,2100,2100
- asig sum af1,af2*5,af3
- asig = asig/200
- /* ------------------------------ */
-
- asig = asig*aenv
- outs asig, asig
- endin
-
- </CsInstruments>
- <CsScore>
- i 1 0 3600
- </CsScore>
- </CsoundSynthesizer>
|