Integrated version
Diff: BaseMachineUIController.h
- Revision:
- 8:62a65664a2fb
- Parent:
- 7:0f8efe0e1e3f
- Child:
- 9:70b8f9935ef7
--- a/BaseMachineUIController.h Mon Nov 14 15:51:43 2016 +0000 +++ b/BaseMachineUIController.h Thu Nov 17 12:25:30 2016 +0000 @@ -88,7 +88,7 @@ // //ST7565(PinName mosi, PinName sclk, PinName cs, PinName rst, PinName a0); gLCD = new ST7565(PB_15, PB_13, PB_12, PB_2, PB_1); - sequencerDisplay = new ST7565_SequencerDisplay(gLCD, sequences, SEQUENCE_N); + sequencerDisplay = new ST7565_SequencerDisplay(gLCD, sequences[sequencePattern], SEQUENCE_N); AinPulseWidth = new AverageAnalogIn(PC_2, AIN_AVERAGE); AinCutOff = new AverageAnalogIn(PB_0, AIN_AVERAGE); @@ -182,14 +182,16 @@ // Sequence::setBaseNoteNumber(baseNoteNumber); - for (int i = 0; i < SEQUENCE_N; i++) { - Sequence& seq = sequences[i]; - seq.setPitch(pitch[i]); - seq.setNoteOn(noteOn[i]); - seq.setTie(tie[i]); - seq.setAccent(accent[i]); + for (int j = 0; j < PATTERN_N; j++) { + for (int i = 0; i < SEQUENCE_N; i++) { + sequences[j][i].setPitch(pitch[i]); + sequences[j][i].setNoteOn(noteOn[i]); + sequences[j][i].setTie(tie[i]); + sequences[j][i].setAccent(accent[i]); + } } - RotEncPitch->setVal(sequences[0].getPitch()); + + RotEncPitch->setVal(sequences[sequencePattern][0].getPitch()); } void destract() { @@ -227,8 +229,13 @@ } void getSequences(Sequence (*pSequences)[SEQUENCE_N]) { - memcpy(pSequences, sequences, sizeof(sequences)); + memcpy(pSequences, sequences[sequencePattern], sizeof(sequences[sequencePattern])); } + /* + void setSequences(Sequence* pSequence) { + memcpy(sequences[sequencePattern], pSequence, sizeof(sequences[sequencePattern])); + } + */ void getOscillatorParam(OscillatorParam* pParam) { memcpy(pParam, &oscillatorParam, sizeof(oscillatorParam)); @@ -311,7 +318,7 @@ ST7565_SequencerDisplay* sequencerDisplay; - Sequence sequences[SEQUENCE_N]; + Sequence sequences[PATTERN_N][SEQUENCE_N]; OscillatorParam oscillatorParam; FilterParam filterParam; @@ -390,7 +397,7 @@ #if (UART_TRACE) printf("PinNoteOnOff Pushed\r\n"); #endif - sequences[editingStep].setNoteOn(!sequences[editingStep].isNoteOn()); + sequences[sequencePattern][editingStep].setNoteOn(!sequences[sequencePattern][editingStep].isNoteOn()); isDirty = true; } @@ -398,7 +405,7 @@ #if (UART_TRACE) printf("PinTie Pushed\r\n"); #endif - sequences[editingStep].setTie(!sequences[editingStep].isTie()); + sequences[sequencePattern][editingStep].setTie(!sequences[sequencePattern][editingStep].isTie()); isDirty = true; } @@ -406,7 +413,7 @@ #if (UART_TRACE) printf("PinAccent Pushed\r\n"); #endif - sequences[editingStep].setAccent(!sequences[editingStep].isAccent()); + sequences[sequencePattern][editingStep].setAccent(!sequences[sequencePattern][editingStep].isAccent()); isDirty = true; } @@ -437,13 +444,13 @@ if (_step != editingStep) { editingStep = _step; // syncronize sequence value & Rotary Encoder's value - RotEncPitch->setVal(sequences[editingStep].getPitch()); + RotEncPitch->setVal(sequences[sequencePattern][editingStep].getPitch()); isDirty = true; } int _pitch = RotEncPitch->getVal(); - if (_pitch != sequences[editingStep].getPitch()) { - sequences[editingStep].setPitch(_pitch); + if (_pitch != sequences[sequencePattern][editingStep].getPitch()) { + sequences[sequencePattern][editingStep].setPitch(_pitch); isDirty = true; } } @@ -514,6 +521,10 @@ } if (i != 8 && sequencePattern != i) { sequencePattern = i; + // syncronize sequence value & Rotary Encoder's value + RotEncPitch->setVal(sequences[sequencePattern][editingStep].getPitch()); + + sequencerDisplay->setSequences(sequences[sequencePattern]); sequencerDisplay->setSequencePattern(sequencePattern + 1); isDirty = true; } @@ -525,15 +536,15 @@ gLCD->clear(); - sprintf(buff, "Run:%d BPM:%03d", isRunning, bpm); + sprintf(buff, "Run:%d BPM:%03d Ptn:%02d", isRunning, bpm, sequencePattern + 1); gLCD->drawstring(0, col++, buff); sprintf(buff, "Stp:%02d Nto:%d Pch:%02d", - editingStep, sequences[editingStep].isNoteOn(), sequences[editingStep].getPitch()); + editingStep, sequences[sequencePattern][editingStep].isNoteOn(), sequences[sequencePattern][editingStep].getPitch()); gLCD->drawstring(0, col++, buff); sprintf(buff, "Oct:%-2d Tie:%d Acc:%d", - sequencerDisplay->getOctave(), sequences[editingStep].isTie(),sequences[editingStep].isAccent()); + sequencerDisplay->getOctave(), sequences[sequencePattern][editingStep].isTie(),sequences[sequencePattern][editingStep].isAccent()); gLCD->drawstring(0, col++, buff); sprintf(buff, "Wsp:%d Mod:%d pStp:%d", oscillatorParam.waveShape, UImode, playingStep);