sources and files for the bombatuino project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.6 KiB

11 years ago
  1. #include <Wire.h>
  2. #include <bombatuino_INPUT_MCP23017.h>
  3. #include <bombatuino_INPUT_74HC4051.h>
  4. #include <bombatuino_ROTARY_ENCODER.h>
  5. #include <bombatuino_MIDI.h>
  6. MIDI Midi;
  7. INPUT_MCP23017 input_MCP23017_0;
  8. INPUT_MCP23017 input_MCP23017_1;
  9. INPUT_MCP23017 input_MCP23017_3;
  10. INPUT_MCP23017 input_MCP23017_4;
  11. ROTARY_ENCODER re_JogWheel1(rotaryLeftJogWheel1,rotaryRightJogWheel1);
  12. ROTARY_ENCODER re_JogWheel2(rotaryLeftJogWheel2,rotaryRightJogWheel2);
  13. ROTARY_ENCODER re_Browse(rotaryLeftBrowse,rotaryRightBrowse);
  14. INPUT_74HC4051 input_4051_A0;
  15. INPUT_74HC4051 input_4051_A1;
  16. INPUT_74HC4051 input_4051_A2;
  17. void setup() {
  18. Midi.begin();
  19. input_MCP23017_0.begin(0,printDigitalData);
  20. input_MCP23017_1.begin(1,printDigitalData);
  21. input_MCP23017_3.begin(3,printDigitalData);
  22. input_MCP23017_4.begin(4,printDigitalData);
  23. input_4051_A0.begin(A0,8,9,10,printAnalogData);
  24. input_4051_A1.begin(A1,8,9,10,printAnalogData);
  25. input_4051_A2.begin(A2,8,9,10,printAnalogData);
  26. }
  27. void loop() {
  28. input_MCP23017_0.loop();
  29. input_MCP23017_1.loop();
  30. input_MCP23017_3.loop();
  31. input_MCP23017_4.loop();
  32. input_4051_A0.loop();
  33. input_4051_A1.loop();
  34. input_4051_A2.loop();
  35. }
  36. void printAnalogData(int id, int pin, int value) {
  37. Midi.controlChange((id-A0) * 8 + pin,value);
  38. }
  39. void printDigitalData(int id, int pin, int value) {
  40. if (id == 1 && pin == 6)
  41. re_JogWheel1.setPinA(value);
  42. if (id == 1 && pin == 7)
  43. re_JogWheel1.setPinB(value);
  44. if (id == 3 && pin == 9)
  45. re_JogWheel2.setPinA(value);
  46. if (id == 3 && pin == 10)
  47. re_JogWheel2.setPinB(value);
  48. if (id == 3 && pin == 6)
  49. re_Browse.setPinA(value);
  50. if (id == 3 && pin == 5)
  51. re_Browse.setPinB(value);
  52. if ((id == 3 && pin != 5 && pin != 6 && pin!= 9 && pin != 10) || (id == 1 && pin != 6 && pin !=7) || (id == 0) || (id == 4)) {
  53. if (value == HIGH)
  54. Midi.noteOn(id * 16 + pin, MIDI_MAX_DATA);
  55. else Midi.noteOff(id * 16 + pin);
  56. }
  57. }
  58. //JogWheel1
  59. void rotaryLeftJogWheel1() {
  60. Midi.noteOn(1 * 16 + 6, MIDI_MAX_DATA);
  61. Midi.noteOff(1 * 16 + 6);
  62. }
  63. void rotaryRightJogWheel1() {
  64. Midi.noteOn(1 * 16 + 7, MIDI_MAX_DATA);
  65. Midi.noteOff(1 * 16 + 7);
  66. }
  67. //JogWheel2
  68. void rotaryLeftJogWheel2() {
  69. Midi.noteOn(3 * 16 + 9, MIDI_MAX_DATA);
  70. Midi.noteOff(3 * 16 + 9);
  71. }
  72. void rotaryRightJogWheel2() {
  73. Midi.noteOn(3 * 16 + 10, MIDI_MAX_DATA);
  74. Midi.noteOff(3 * 16 + 10);
  75. }
  76. //Browse
  77. void rotaryLeftBrowse() {
  78. Midi.noteOn(3 * 16 + 6, MIDI_MAX_DATA);
  79. Midi.noteOff(3 * 16 + 6);
  80. }
  81. void rotaryRightBrowse() {
  82. Midi.noteOn(3 * 16 + 5, MIDI_MAX_DATA);
  83. Midi.noteOff(3 * 16 + 5);
  84. }