andrew@50
|
1 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
2
|
andrew@50
|
3 void drawNotes(){ // places the note display grid into the apropriate screen positions
|
andrew@50
|
4 int loopsOnScreen = ((width-playArea) / tracks[trSelected].loopLength) + 1;
|
andrew@50
|
5 if (loopsOnScreen > currentPulse / tracks[trSelected].loopLength)
|
andrew@50
|
6 loopsOnScreen = currentPulse / tracks[trSelected].loopLength;
|
andrew@50
|
7 for (int i = 0; i <= loopsOnScreen; i++)
|
andrew@50
|
8 image (imgNotes, (width-playArea-(i*tracks[trSelected].loopLength))-currentPulse%(tracks[trSelected].loopLength),0);
|
andrew@50
|
9 }
|
andrew@50
|
10
|
andrew@50
|
11
|
andrew@50
|
12
|
andrew@50
|
13 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
14
|
andrew@50
|
15 public void pulseFrame(int frameNo){ // Draws a pulsing line at left hand side of the input area when loop restarts
|
andrew@50
|
16 strokeWeight(3);
|
andrew@50
|
17 if (currentPulse % (tracks[trSelected].loopLength) == 0 || (currentPulse-1) % (tracks[trSelected].loopLength) == 0 || (currentPulse-2) % (tracks[trSelected].loopLength) == 0)
|
andrew@50
|
18 stroke(255,255,255);
|
andrew@50
|
19 else
|
andrew@50
|
20 stroke(255,111,111);
|
andrew@50
|
21 line (width-playArea+3, 1, width-playArea+3, 300);
|
andrew@50
|
22 }
|
andrew@50
|
23
|
andrew@50
|
24
|
andrew@50
|
25 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
26
|
andrew@50
|
27 void drawTempImageGrid(){ // draws the note display image grid
|
andrew@50
|
28 imgNotes.stroke(209,137,255);
|
andrew@50
|
29 imgNotes.strokeWeight(15);
|
andrew@50
|
30 for(int i = 0; i < 16; i++){
|
andrew@50
|
31 if ((tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)] != null && tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)].noteVelocity > 0) || displayNoteOnArray[i]){
|
andrew@50
|
32 imgNotes.beginDraw();
|
andrew@50
|
33 imgNotes.line (currentPulse%(tracks[trSelected].loopLength), i*imageHeight/16+imageHeight/32, currentPulse%(tracks[trSelected].loopLength)+1, i*imageHeight/16+imageHeight/32);
|
andrew@50
|
34 imgNotes.endDraw();
|
andrew@50
|
35 displayNoteOnArray[i] = true;
|
andrew@50
|
36 }
|
andrew@50
|
37 if (tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)] != null && tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)].noteVelocity == 0){
|
andrew@50
|
38 displayNoteOnArray[i] = false;
|
andrew@50
|
39 }
|
andrew@50
|
40
|
andrew@50
|
41 if(trSelected ==0){
|
andrew@50
|
42 if ((chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)] != null && chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)].noteVelocity > 0) || displayNoteOnArray[i]){
|
andrew@50
|
43 imgNotes.beginDraw();
|
andrew@50
|
44 imgNotes.line (currentPulse%(chordsTemp.loopLength), i*imageHeight/16+imageHeight/32, currentPulse%(chordsTemp.loopLength)+1, i*imageHeight/16+imageHeight/32);
|
andrew@50
|
45 imgNotes.endDraw();
|
andrew@50
|
46 displayNoteOnArray[i] = true;
|
andrew@50
|
47 }
|
andrew@50
|
48 if (chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)] != null && chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)].noteVelocity == 0){
|
andrew@50
|
49 displayNoteOnArray[i] = false;
|
andrew@50
|
50 }
|
andrew@50
|
51 }
|
andrew@50
|
52 }
|
andrew@50
|
53 }
|
andrew@50
|
54
|
andrew@50
|
55
|
andrew@50
|
56 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
57
|
andrew@50
|
58 public void drawLines(){ // draws beat lines
|
andrew@50
|
59 int linePosition = 1;
|
andrew@50
|
60 int i = 0;
|
andrew@50
|
61 for (; linePosition <= imageWidth;){
|
andrew@50
|
62 linePosition = i * grid;
|
andrew@50
|
63 img.beginDraw();
|
andrew@50
|
64 img.stroke(lineColour);
|
andrew@50
|
65 img.strokeWeight(2);
|
andrew@50
|
66 img.line (linePosition, 0, linePosition, imageHeight);
|
andrew@50
|
67 img.endDraw();
|
andrew@50
|
68 i++;
|
andrew@50
|
69 }
|
andrew@50
|
70 }
|
andrew@50
|
71
|
andrew@50
|
72
|
andrew@50
|
73 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
74
|
andrew@50
|
75 public void drawBarLines(){ // draws bar lines
|
andrew@50
|
76 int linePosition = 1;
|
andrew@50
|
77 for (int i = 0; linePosition <= imageWidth;){
|
andrew@50
|
78 linePosition = i * grid * beatsPerBar;
|
andrew@50
|
79 img.beginDraw();
|
andrew@50
|
80 img.stroke(barLineColour);
|
andrew@50
|
81 img.strokeWeight(2);
|
andrew@50
|
82 img.line (linePosition, 0, linePosition, imageHeight);
|
andrew@50
|
83 img.endDraw();
|
andrew@50
|
84 i++;
|
andrew@50
|
85 }
|
andrew@50
|
86 }
|
andrew@50
|
87
|
andrew@50
|
88
|
andrew@50
|
89 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
90
|
andrew@50
|
91 public void backgroundColour(){ // sets background colour
|
andrew@50
|
92 img.beginDraw();
|
andrew@50
|
93 img.background (backGround);
|
andrew@50
|
94 img.endDraw();
|
andrew@50
|
95 }
|
andrew@50
|
96
|
andrew@50
|
97
|
andrew@50
|
98
|
andrew@50
|
99 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
100
|
andrew@50
|
101 public void createNoteFan(){ // creates the input fan
|
andrew@50
|
102 if (rpulseup)
|
andrew@50
|
103 rpulse++;
|
andrew@50
|
104 else rpulse--;
|
andrew@50
|
105 if (rpulse == grid)
|
andrew@50
|
106 rpulseup = false;
|
andrew@50
|
107 if (rpulse < 1)
|
andrew@50
|
108 rpulseup = true;
|
andrew@50
|
109 imgNoteFan.beginDraw();
|
andrew@50
|
110 imgNoteFan.stroke(rpulse/grid*255,50,50);
|
andrew@50
|
111 imgNoteFan.strokeWeight(1);
|
andrew@50
|
112 for (int i = 0; i < 16; i++){
|
andrew@50
|
113 if (!chordSelecter)
|
andrew@50
|
114 if ((tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)] != null && tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)].noteVelocity > 0) || displayNoteOnArray[i]){
|
andrew@50
|
115 imgNoteFan.fill(209,137,255);
|
andrew@50
|
116 }
|
andrew@50
|
117 else
|
andrew@50
|
118 imgNoteFan.fill(0,0,0);
|
andrew@50
|
119 else
|
andrew@50
|
120 if (i == 14 || i == 12 || i == 9 || i == 7 || i == 5 || i == 3 || i == 2 || i == 1 || i == 0)
|
andrew@50
|
121 imgNoteFan.fill(0,0,0);
|
andrew@50
|
122 else
|
andrew@50
|
123 imgNoteFan.fill(255,255,255);
|
andrew@50
|
124 imgNoteFan.quad(0, i*(imageHeight/16.0), 0, (i+1)*(imageHeight/16.0), fanWidth, (imageHeight/2.0), fanWidth, (imageHeight/2.0));
|
andrew@50
|
125 }
|
andrew@50
|
126
|
andrew@50
|
127 imgNoteFan.endDraw();
|
andrew@50
|
128
|
andrew@50
|
129 }
|
andrew@50
|
130
|
andrew@50
|
131 //-------------------------------------------------------------------------------------------------------------------------------
|
andrew@50
|
132
|
andrew@50
|
133 void calcColours(){ // sets up colour values for background, bar and beat lines
|
andrew@50
|
134
|
andrew@50
|
135 if(heresyChordChanged){
|
andrew@50
|
136
|
andrew@50
|
137 if(currentChord == 0){
|
andrew@50
|
138 redC = 0;
|
andrew@50
|
139 greenC = 0;
|
andrew@50
|
140 blueC = 0;
|
andrew@50
|
141 }
|
andrew@50
|
142
|
andrew@50
|
143 if(currentChord == 1){
|
andrew@50
|
144 redC = 90;
|
andrew@50
|
145 greenC = 76;
|
andrew@50
|
146 blueC = 3;
|
andrew@50
|
147 }
|
andrew@50
|
148
|
andrew@50
|
149 if(currentChord == 2){
|
andrew@50
|
150 redC = 254;
|
andrew@50
|
151 greenC = 255;
|
andrew@50
|
152 blueC = 18;
|
andrew@50
|
153 }
|
andrew@50
|
154
|
andrew@50
|
155 if(currentChord == 3){
|
andrew@50
|
156 redC = 0;
|
andrew@50
|
157 greenC = 0;
|
andrew@50
|
158 blueC = 0;
|
andrew@50
|
159 }
|
andrew@50
|
160
|
andrew@50
|
161 if(currentChord == 4){
|
andrew@50
|
162 redC = 136;
|
andrew@50
|
163 greenC = 245;
|
andrew@50
|
164 blueC = 49;
|
andrew@50
|
165 }
|
andrew@50
|
166
|
andrew@50
|
167 if(currentChord == 5){
|
andrew@50
|
168 redC = 9;
|
andrew@50
|
169 greenC = 18;
|
andrew@50
|
170 blueC = 232;
|
andrew@50
|
171 }
|
andrew@50
|
172
|
andrew@50
|
173 if(currentChord == 6){
|
andrew@50
|
174 redC = 99;
|
andrew@50
|
175 greenC = 99;
|
andrew@50
|
176 blueC = 100;
|
andrew@50
|
177 }
|
andrew@50
|
178
|
andrew@50
|
179 if(currentChord == 7){
|
andrew@50
|
180 redC = 255;
|
andrew@50
|
181 greenC = 166;
|
andrew@50
|
182 blueC = 21;
|
andrew@50
|
183 }
|
andrew@50
|
184
|
andrew@50
|
185 if(currentChord == 8){
|
andrew@50
|
186 redC = 13;
|
andrew@50
|
187 greenC = 79;
|
andrew@50
|
188 blueC = 147;
|
andrew@50
|
189 }
|
andrew@50
|
190
|
andrew@50
|
191 if(currentChord == 9){
|
andrew@50
|
192 redC = 255;
|
andrew@50
|
193 greenC = 165;
|
andrew@50
|
194 blueC = 165;
|
andrew@50
|
195 }
|
andrew@50
|
196
|
andrew@50
|
197 if(currentChord == 10){
|
andrew@50
|
198 redC = 89;
|
andrew@50
|
199 greenC = 110;
|
andrew@50
|
200 blueC = 134;
|
andrew@50
|
201 }
|
andrew@50
|
202
|
andrew@50
|
203 if(currentChord == 11){
|
andrew@50
|
204 redC = 68;
|
andrew@50
|
205 greenC = 242;
|
andrew@50
|
206 blueC = 250;
|
andrew@50
|
207 }
|
andrew@50
|
208
|
andrew@50
|
209 backGround = color(redC, greenC, blueC);
|
andrew@50
|
210 lineColour = color((redC + 100) % 255,(greenC + 69) % 255,(blueC + 214) % 255);
|
andrew@50
|
211 barLineColour = color((redC + 205) % 255, (greenC + 174) % 255, (blueC + 159) % 255);
|
andrew@50
|
212
|
andrew@50
|
213 backgroundColour();
|
andrew@50
|
214 drawLines();
|
andrew@50
|
215 drawBarLines();
|
andrew@50
|
216 }
|
andrew@50
|
217 }
|
andrew@50
|
218
|
andrew@50
|
219
|
andrew@50
|
220
|
andrew@50
|
221
|