andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: void drawNotes(){ // places the note display grid into the apropriate screen positions andrew@50: int loopsOnScreen = ((width-playArea) / tracks[trSelected].loopLength) + 1; andrew@50: if (loopsOnScreen > currentPulse / tracks[trSelected].loopLength) andrew@50: loopsOnScreen = currentPulse / tracks[trSelected].loopLength; andrew@50: for (int i = 0; i <= loopsOnScreen; i++) andrew@50: image (imgNotes, (width-playArea-(i*tracks[trSelected].loopLength))-currentPulse%(tracks[trSelected].loopLength),0); andrew@50: } andrew@50: andrew@50: andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: public void pulseFrame(int frameNo){ // Draws a pulsing line at left hand side of the input area when loop restarts andrew@50: strokeWeight(3); andrew@50: if (currentPulse % (tracks[trSelected].loopLength) == 0 || (currentPulse-1) % (tracks[trSelected].loopLength) == 0 || (currentPulse-2) % (tracks[trSelected].loopLength) == 0) andrew@50: stroke(255,255,255); andrew@50: else andrew@50: stroke(255,111,111); andrew@50: line (width-playArea+3, 1, width-playArea+3, 300); andrew@50: } andrew@50: andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: void drawTempImageGrid(){ // draws the note display image grid andrew@50: imgNotes.stroke(209,137,255); andrew@50: imgNotes.strokeWeight(15); andrew@50: for(int i = 0; i < 16; i++){ andrew@50: if ((tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)] != null && tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)].noteVelocity > 0) || displayNoteOnArray[i]){ andrew@50: imgNotes.beginDraw(); andrew@50: imgNotes.line (currentPulse%(tracks[trSelected].loopLength), i*imageHeight/16+imageHeight/32, currentPulse%(tracks[trSelected].loopLength)+1, i*imageHeight/16+imageHeight/32); andrew@50: imgNotes.endDraw(); andrew@50: displayNoteOnArray[i] = true; andrew@50: } andrew@50: if (tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)] != null && tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)].noteVelocity == 0){ andrew@50: displayNoteOnArray[i] = false; andrew@50: } andrew@50: andrew@50: if(trSelected ==0){ andrew@50: if ((chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)] != null && chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)].noteVelocity > 0) || displayNoteOnArray[i]){ andrew@50: imgNotes.beginDraw(); andrew@50: imgNotes.line (currentPulse%(chordsTemp.loopLength), i*imageHeight/16+imageHeight/32, currentPulse%(chordsTemp.loopLength)+1, i*imageHeight/16+imageHeight/32); andrew@50: imgNotes.endDraw(); andrew@50: displayNoteOnArray[i] = true; andrew@50: } andrew@50: if (chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)] != null && chordsTemp.sequence[i][currentPulse%(chordsTemp.loopLength)].noteVelocity == 0){ andrew@50: displayNoteOnArray[i] = false; andrew@50: } andrew@50: } andrew@50: } andrew@50: } andrew@50: andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: public void drawLines(){ // draws beat lines andrew@50: int linePosition = 1; andrew@50: int i = 0; andrew@50: for (; linePosition <= imageWidth;){ andrew@50: linePosition = i * grid; andrew@50: img.beginDraw(); andrew@50: img.stroke(lineColour); andrew@50: img.strokeWeight(2); andrew@50: img.line (linePosition, 0, linePosition, imageHeight); andrew@50: img.endDraw(); andrew@50: i++; andrew@50: } andrew@50: } andrew@50: andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: public void drawBarLines(){ // draws bar lines andrew@50: int linePosition = 1; andrew@50: for (int i = 0; linePosition <= imageWidth;){ andrew@50: linePosition = i * grid * beatsPerBar; andrew@50: img.beginDraw(); andrew@50: img.stroke(barLineColour); andrew@50: img.strokeWeight(2); andrew@50: img.line (linePosition, 0, linePosition, imageHeight); andrew@50: img.endDraw(); andrew@50: i++; andrew@50: } andrew@50: } andrew@50: andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: public void backgroundColour(){ // sets background colour andrew@50: img.beginDraw(); andrew@50: img.background (backGround); andrew@50: img.endDraw(); andrew@50: } andrew@50: andrew@50: andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: public void createNoteFan(){ // creates the input fan andrew@50: if (rpulseup) andrew@50: rpulse++; andrew@50: else rpulse--; andrew@50: if (rpulse == grid) andrew@50: rpulseup = false; andrew@50: if (rpulse < 1) andrew@50: rpulseup = true; andrew@50: imgNoteFan.beginDraw(); andrew@50: imgNoteFan.stroke(rpulse/grid*255,50,50); andrew@50: imgNoteFan.strokeWeight(1); andrew@50: for (int i = 0; i < 16; i++){ andrew@50: if (!chordSelecter) andrew@50: if ((tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)] != null && tracks[trSelected].sequence[i][currentPulse%(tracks[trSelected].loopLength)].noteVelocity > 0) || displayNoteOnArray[i]){ andrew@50: imgNoteFan.fill(209,137,255); andrew@50: } andrew@50: else andrew@50: imgNoteFan.fill(0,0,0); andrew@50: else andrew@50: if (i == 14 || i == 12 || i == 9 || i == 7 || i == 5 || i == 3 || i == 2 || i == 1 || i == 0) andrew@50: imgNoteFan.fill(0,0,0); andrew@50: else andrew@50: imgNoteFan.fill(255,255,255); andrew@50: imgNoteFan.quad(0, i*(imageHeight/16.0), 0, (i+1)*(imageHeight/16.0), fanWidth, (imageHeight/2.0), fanWidth, (imageHeight/2.0)); andrew@50: } andrew@50: andrew@50: imgNoteFan.endDraw(); andrew@50: andrew@50: } andrew@50: andrew@50: //------------------------------------------------------------------------------------------------------------------------------- andrew@50: andrew@50: void calcColours(){ // sets up colour values for background, bar and beat lines andrew@50: andrew@50: if(heresyChordChanged){ andrew@50: andrew@50: if(currentChord == 0){ andrew@50: redC = 0; andrew@50: greenC = 0; andrew@50: blueC = 0; andrew@50: } andrew@50: andrew@50: if(currentChord == 1){ andrew@50: redC = 90; andrew@50: greenC = 76; andrew@50: blueC = 3; andrew@50: } andrew@50: andrew@50: if(currentChord == 2){ andrew@50: redC = 254; andrew@50: greenC = 255; andrew@50: blueC = 18; andrew@50: } andrew@50: andrew@50: if(currentChord == 3){ andrew@50: redC = 0; andrew@50: greenC = 0; andrew@50: blueC = 0; andrew@50: } andrew@50: andrew@50: if(currentChord == 4){ andrew@50: redC = 136; andrew@50: greenC = 245; andrew@50: blueC = 49; andrew@50: } andrew@50: andrew@50: if(currentChord == 5){ andrew@50: redC = 9; andrew@50: greenC = 18; andrew@50: blueC = 232; andrew@50: } andrew@50: andrew@50: if(currentChord == 6){ andrew@50: redC = 99; andrew@50: greenC = 99; andrew@50: blueC = 100; andrew@50: } andrew@50: andrew@50: if(currentChord == 7){ andrew@50: redC = 255; andrew@50: greenC = 166; andrew@50: blueC = 21; andrew@50: } andrew@50: andrew@50: if(currentChord == 8){ andrew@50: redC = 13; andrew@50: greenC = 79; andrew@50: blueC = 147; andrew@50: } andrew@50: andrew@50: if(currentChord == 9){ andrew@50: redC = 255; andrew@50: greenC = 165; andrew@50: blueC = 165; andrew@50: } andrew@50: andrew@50: if(currentChord == 10){ andrew@50: redC = 89; andrew@50: greenC = 110; andrew@50: blueC = 134; andrew@50: } andrew@50: andrew@50: if(currentChord == 11){ andrew@50: redC = 68; andrew@50: greenC = 242; andrew@50: blueC = 250; andrew@50: } andrew@50: andrew@50: backGround = color(redC, greenC, blueC); andrew@50: lineColour = color((redC + 100) % 255,(greenC + 69) % 255,(blueC + 214) % 255); andrew@50: barLineColour = color((redC + 205) % 255, (greenC + 174) % 255, (blueC + 159) % 255); andrew@50: andrew@50: backgroundColour(); andrew@50: drawLines(); andrew@50: drawBarLines(); andrew@50: } andrew@50: } andrew@50: andrew@50: andrew@50: andrew@50: