Integrated version
Diff: BaseMachineUIController.h
- Revision:
- 12:d4e5feab3a2d
- Parent:
- 11:a2a51191ebe4
- Child:
- 13:d3ee2ba4efaf
--- a/BaseMachineUIController.h Fri Nov 25 16:03:31 2016 +0000 +++ b/BaseMachineUIController.h Fri Nov 25 17:53:47 2016 +0000 @@ -5,7 +5,8 @@ * */ -#define UART_TRACE_EEPROM (0) +#define UART_TRACE_EEPROM (0) +#define UART_TRACE_CLIPBOARD (0) #ifndef _UICONTROLLER_H_ #define _UICONTROLLER_H_ @@ -74,6 +75,7 @@ playingStep(0), isRunning(false), isDirty(true), + isClipBoardEmpty(true), UImode(0), isStepChanged(false), errCutoff(0), @@ -213,8 +215,14 @@ sequences[j][i].setAccent(accent[i]); } } - RotEncPitch->setVal(sequences[sequencePattern][0].getPitch()); + + for (int i = 0; i < SEQUENCE_N; i++) { + sequenceClipBoard[i].setPitch(pitch[i]); + sequenceClipBoard[i].setNoteOn(noteOn[i]); + sequenceClipBoard[i].setTie(tie[i]); + sequenceClipBoard[i].setAccent(accent[i]); + } } void destract() { @@ -325,6 +333,15 @@ //Thread::wait(100); isDirty = true; break; + case 8: + copyToClipBoard(); + Thread::wait(100); + break; + case 16: + pasteFromClipBoard(); + Thread::wait(100); + isDirty = true; + break; } } @@ -367,6 +384,7 @@ ST7565_SequencerDisplay* sequencerDisplay; Sequence sequences[PATTERN_N][SEQUENCE_N]; + Sequence sequenceClipBoard[SEQUENCE_N]; OscillatorParam oscillatorParam; FilterParam filterParam; @@ -382,6 +400,7 @@ int playingStep; bool isRunning; bool isDirty; + bool isClipBoardEmpty; int UImode; bool isStepChanged; @@ -583,6 +602,9 @@ for (i = 0; i < 5; i++) { spareValue |= ((ExioInA[i]->read()) << i); } + if (spareValue != 0) { + printf("spareValue: %d\r\n", spareValue); + } spareValue2 = ExioRotEnc1->getVal(); } @@ -702,7 +724,9 @@ } */ uint32_t addr_page_top = j << 8; - printf("address: %x\r\n", addr_page_top); + #if (UART_TRACE_EEPROM) + printf("address: %x\r\n", addr_page_top); + #endif AT24C_STATUS status = At24c1024->write_page( addr_page_top, eep_buff, @@ -786,6 +810,60 @@ gLCD->drawstring(0, 1, " Done"); gLCD->display(); } + + void copyToClipBoard() + { + for (int i = 0; i < SEQUENCE_N; i++) { + sequenceClipBoard[i].setNoteOn(sequences[sequencePattern][i].isNoteOn()); + sequenceClipBoard[i].setPitch(sequences[sequencePattern][i].getPitch()); + sequenceClipBoard[i].setTie(sequences[sequencePattern][i].isTie()); + sequenceClipBoard[i].setAccent(sequences[sequencePattern][i].isAccent()); + } + isClipBoardEmpty = false; + + #if (UART_TRACE_CLIPBOARD) + printf("copyToClipBoard\r\n"); + printf("sequencePattern: %d\r\n", sequencePattern); + for (int i = 0; i < SEQUENCE_N; i++) { + printf("%d %d %03d %d %d\r\n", + i, + sequenceClipBoard[i].isNoteOn(), + sequenceClipBoard[i].getPitch(), + sequenceClipBoard[i].isTie(), + sequenceClipBoard[i].isAccent() + ); + } + #endif + } + + void pasteFromClipBoard() + { + #if (UART_TRACE_CLIPBOARD) + printf("pasteFromClipBoard\r\n"); + printf("isClipBoardEmpty: %d\r\n", isClipBoardEmpty); + printf("sequencePattern: %d\r\n", sequencePattern); + for (int i = 0; i < SEQUENCE_N; i++) { + printf("%d %d %03d %d %d\r\n", + i, + sequenceClipBoard[i].isNoteOn(), + sequenceClipBoard[i].getPitch(), + sequenceClipBoard[i].isTie(), + sequenceClipBoard[i].isAccent() + ); + } + #endif + + for (int i = 0; i < SEQUENCE_N; i++) { + if (!isClipBoardEmpty) { + sequences[sequencePattern][i].setNoteOn(sequenceClipBoard[i].isNoteOn()); + sequences[sequencePattern][i].setPitch(sequenceClipBoard[i].getPitch()); + sequences[sequencePattern][i].setTie(sequenceClipBoard[i].isTie()); + sequences[sequencePattern][i].setAccent(sequenceClipBoard[i].isAccent()); + } + } + // syncronize sequence value & Rotary Encoder's value + RotEncPitch->setVal(sequences[sequencePattern][editingStep].getPitch()); + } }; #endif //_UICONTROLLER_H_