diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1a7087e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "keyboard/lib/Arduino-USBMIDI"] + path = keyboard/lib/Arduino-USBMIDI + url = https://github.com/lathoub/Arduino-USBMIDI.git diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..1410922 --- /dev/null +++ b/config.mk @@ -0,0 +1,2 @@ +FQBN = arduino:avr:micro +PORT = /dev/ttyACM0 diff --git a/makefile b/makefile new file mode 100644 index 0000000..bd5a66e --- /dev/null +++ b/makefile @@ -0,0 +1,26 @@ +.POSIX: + +include config.mk + +ARDCLI = arduino-cli + +SRCS = $(wildcard *.c) $(wildcard *.cpp) $(wildcard *.ino) +PRG = $(shell basename `pwd`) +B_PATH = $(shell pwd)/build +HEX = $(PRG).$(subst :,.,$(FQBN)).hex +ELF = $(PRG).$(subst :,.,$(FQBN)).elf +ARDLIBS = USB-MIDI@1.1.2 + +$(HEX): $(SRCS) + $(ARDCLI) compile --fqbn $(FQBN) --build-path $(B_PATH) $(CURDIR) + +upload: $(HEX) + sudo $(ARDCLI) upload -v --fqbn $(FQBN) --input-dir $(B_PATH) -p $(PORT) $(CURDIR) + +deps: + @$(foreach lib,$(ARDLIBS),$(ARDCLI) lib install $(lib) || true; ) + +clean: + $(RM) $(HEX) $(ELF) + +.PHONY: all upload deps clean diff --git a/keyboard/keyboard.ino b/midikeys.ino similarity index 93% rename from keyboard/keyboard.ino rename to midikeys.ino index 15edc37..d259c7f 100644 --- a/keyboard/keyboard.ino +++ b/midikeys.ino @@ -1,3 +1,7 @@ +#include + +USBMIDI_CREATE_DEFAULT_INSTANCE(); + /*****************************************************************************/ /* Pins */ /*****************************************************************************/ @@ -106,7 +110,7 @@ void setup() { /***************************************************************************/ /* Serial */ /***************************************************************************/ - Serial.begin(9600); + Serial.begin(115200); /***************************************************************************/ /* Pins */ @@ -131,6 +135,12 @@ void setup() { digitalWrite(SEL_A, LOW); digitalWrite(SEL_B, LOW); digitalWrite(SEL_C, LOW); + + /***************************************************************************/ + /* Midi */ + /***************************************************************************/ + MIDI.begin(); + Serial.println("Keyboard ready."); } void send_note_down(int key, double velocity) { @@ -138,6 +148,7 @@ void send_note_down(int key, double velocity) { Serial.print(key); Serial.print(" "); Serial.println(midi_velocity(velocity), DEC); + MIDI.sendNoteOn(midi_base + key, midi_velocity(velocity), 1); } void send_note_up(int key) { diff --git a/keyboard/nano.h b/nano.h similarity index 100% rename from keyboard/nano.h rename to nano.h diff --git a/keyboard/pro_micro.h b/pro_micro.h similarity index 100% rename from keyboard/pro_micro.h rename to pro_micro.h diff --git a/upload_pro_micro.sh b/upload_pro_micro.sh index fb7bcc8..dde1582 100755 --- a/upload_pro_micro.sh +++ b/upload_pro_micro.sh @@ -1,3 +1,3 @@ #! /usr/bin/env bash -sudo arduino-cli compile -v -p /dev/ttyACM0 -b arduino:avr:micro keyboard -sudo arduino-cli upload -v -p /dev/ttyACM0 -b arduino:avr:micro keyboard +sudo arduino-cli compile -v -p /dev/ttyACM0 -b arduino:avr:micro . +sudo arduino-cli upload -v -p /dev/ttyACM0 -b arduino:avr:micro .