From 957f0ccad0d5ce3ce334e08df50df1059b608ffc Mon Sep 17 00:00:00 2001 From: tropicananass Date: Tue, 5 Feb 2019 20:43:51 +0100 Subject: [PATCH] testing things ... I don't know, don't remember --- .clang_complete | 12 +- .gcc-flags.json | 6 +- .pioenvs/.sconsign.dblite | Bin 105873 -> 0 bytes .pioenvs/do-not-modify-files-here.url | 3 - .pioenvs/micro/firmware.elf | Bin 25328 -> 0 bytes .pioenvs/micro/firmware.hex | 512 ---------------- .pioenvs/structure.hash | 2 +- build.log | 821 ++++++++++++++++++++++++++ src/main.cpp | 149 ++++- 9 files changed, 959 insertions(+), 546 deletions(-) delete mode 100644 .pioenvs/.sconsign.dblite delete mode 100644 .pioenvs/do-not-modify-files-here.url delete mode 100755 .pioenvs/micro/firmware.elf delete mode 100644 .pioenvs/micro/firmware.hex create mode 100644 build.log diff --git a/.clang_complete b/.clang_complete index ddbc43d..399498c 100644 --- a/.clang_complete +++ b/.clang_complete @@ -1,14 +1,12 @@ -I/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino -I/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro --I/home/nathan/.platformio/lib/Encoder --I/home/nathan/.platformio/lib/Encoder/utility -I/home/nathan/.platformio/lib/MIDI controller/src -I/home/nathan/.platformio/lib/MIDIUSB_ID1104/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src --I/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092 -I/home/nathan/.platformio/lib/ArduinoJson_ID64/src --I/home/nathan/.platformio/lib/Multiplexer_ID320 +-I/home/nathan/.platformio/lib/Keypad_ID165/src -I/home/nathan/.platformio/lib/PubSubClient_ID89/src +-I/home/nathan/.platformio/lib/Tone_ID1420 -I/home/nathan/.platformio/lib/WifiManager_ID567 -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src -I/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src @@ -39,9 +37,9 @@ -I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed -I/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include -I/home/nathan/.platformio/packages/tool-unity --I/home/nathan/Documents/PlatformIO/Projects/Midi/include --I/home/nathan/Documents/PlatformIO/Projects/Midi/src --DPLATFORMIO=30603 +-I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include +-I/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src +-DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR diff --git a/.gcc-flags.json b/.gcc-flags.json index d28275f..2f57e73 100644 --- a/.gcc-flags.json +++ b/.gcc-flags.json @@ -1,8 +1,8 @@ { "execPath": "/home/nathan/.platformio/packages/toolchain-atmelavr/bin/avr-g++", - "gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=30603 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", - "gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=30603 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", + "gccDefaultCFlags": "-fsyntax-only -std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", + "gccDefaultCppFlags": "-fsyntax-only -fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -flto -mmcu=atmega32u4 -DPLATFORMIO=40000 -DARDUINO_AVR_MICRO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10805 -DUSB_VID=0x2341 -DUSB_PID=0x0037 -DUSB_PRODUCT=\"Arduino Micro\" -DUSB_MANUFACTURER=\"Arduino\" -D__AVR_ATmega32U4__", "gccErrorLimit": 15, - "gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/Encoder,/home/nathan/.platformio/lib/Encoder/utility,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/lib/Adafruit MQTT Library_ID1092,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Multiplexer_ID320,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/home/nathan/Documents/PlatformIO/Projects/Midi/include,/home/nathan/Documents/PlatformIO/Projects/Midi/src", + "gccIncludePaths": "/home/nathan/.platformio/packages/framework-arduinoavr/cores/arduino,/home/nathan/.platformio/packages/framework-arduinoavr/variants/micro,/home/nathan/.platformio/lib/MIDI controller/src,/home/nathan/.platformio/lib/MIDIUSB_ID1104/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SoftwareSerial/src,/home/nathan/.platformio/lib/ArduinoJson_ID64/src,/home/nathan/.platformio/lib/Keypad_ID165/src,/home/nathan/.platformio/lib/PubSubClient_ID89/src,/home/nathan/.platformio/lib/Tone_ID1420,/home/nathan/.platformio/lib/WifiManager_ID567,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/EEPROM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/HID/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/SPI/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/__cores__/arduino/Wire/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Adafruit_CircuitPlayground/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Bridge/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Esplora/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Ethernet/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Firmata/utility,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/GSM/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Keyboard/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/LiquidCrystal/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Mouse/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/RobotIRremote/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Control/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Robot_Motor/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SD/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Servo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/SpacebrewYun/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Stepper/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/TFT/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/Temboo/src,/home/nathan/.platformio/packages/framework-arduinoavr/libraries/WiFi/src,/home/nathan/.platformio/packages/toolchain-atmelavr/avr/include,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed,/home/nathan/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include,/home/nathan/.platformio/packages/tool-unity,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/include,/media/c/Users/Nathan/Documents/PlatformIO/Projects/MidiKeyboard/src", "gccSuppressWarnings": false } diff --git a/.pioenvs/.sconsign.dblite b/.pioenvs/.sconsign.dblite deleted file mode 100644 index acadb9d69ce4784161e23ce5dc9510b4259b92bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105873 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 diff --git a/.pioenvs/micro/firmware.hex b/.pioenvs/micro/firmware.hex deleted file mode 100644 index 079200f..0000000 --- a/.pioenvs/micro/firmware.hex +++ /dev/null @@ -1,512 +0,0 @@ -:100000000C94EA000C9412010C9412010C9412014D -:100010000C9412010C9412010C9412010C94120114 -:100020000C9412010C9412010C94D70A0C944905FB -:100030000C9412010C9412010C9412010C941201F4 -:100040000C9412010C9412010C9412010C941201E4 -:100050000C9412010C9412010C9412010C942404BF -:100060000C9412010C9412010C9412010C941201C4 -:100070000C9412010C9412010C9412010C941201B4 -:100080000C9412010C9412010C9412010C941201A4 -:100090000C9412010C9412010C9412010C94120194 -:1000A0000C9412010C9412010C9412017D0880082A -:1000B0006F0873087908A108A108A10884088808B6 -:1000C0008C0892089608A1089C08000000002400F3 -:1000D00027002A002D003000000000002500280025 -:1000E0002B002E0031000000000023002600290014 -:1000F0002C002F000404040404030405020202027D -:1001000004030202020206060606060604040202B0 -:100110000204040408020110408040102040804086 -:10012000800802040180402010020110801020404D -:1001300040200000000200090F0000030401000C31 -:1001400000000000000000000000000000000000AF -:1001500000070605040100080A0B0C0D09080B0036 -:10016000020202010009040000010202000005244D -:1001700000100105240101010424020605240600E3 -:10018000010705810310004009040100020A000074 -:10019000000705020240000007058302400000043A -:1001A00003090412010002EF02014041233700005D -:1001B000010102030141726475696E6F204C4C436A -:1001C0000041726475696E6F204D6963726F000043 -:1001D0005C0D800C11241FBECFEFDAE0DEBFCDBF77 -:1001E00011E0A0E0B1E0EAE4FFE102C005900D9269 -:1001F000AC39B107D9F723E0ACE9B1E001C01D92F9 -:10020000AD3DB207E1F710E0C9EED0E004C02197A0 -:10021000FE010E946C0EC83ED107C9F70E94580B20 -:100220000C94980F0C9400000F931F93CF93DF93BF -:10023000EC012B8988E0289F9001112421153105BC -:1002400029F0C90107976817790728F0295F3F4F00 -:100250002617370730F483E0769567958A95E1F79E -:100260006B8B1B8988898117F9F03C81E0910D0324 -:10027000F0910E03828193814A8941502A81329FF5 -:10028000400D1124012F0F775B812989359F200DA7 -:1002900011242F774F70DC01ED91FC910480F581E2 -:1002A000E02D60EB0995188BDF91CF911F910F9195 -:1002B0000895FC0175876487089580E00895089586 -:1002C00008950F93DC01ED91FC910480F581E02D00 -:1002D00000E009950F910895E0911103F091120348 -:1002E000309741F09381891740F09481891728F461 -:1002F000CF01089580E090E008950580F681E02D1B -:10030000EFCFCF93C82F8B3258F5823108F0C2510E -:10031000EC2FF0E0EF5AFE4FE49180917B00E3FB7D -:10032000222720F930E095E0220F331F9A95E1F75C -:100330008F7D282B20937B00E770E064E0937C00A6 -:1003400080917A00806480937A0080917A0086FDA3 -:10035000FCCF809178002091790090E0922B13C01F -:100360000E946C01009769F0DC0113962C911397A1 -:100370006C2F621BED91FC910680F781E02DCF91EF -:10038000099480E090E0CF910895CF93DF93EC0142 -:1003900089850E9481012E853F8544E0880F991F41 -:1003A0004A95E1F7821B930B9595879595958795CF -:1003B000280F391F3F872E87285F3F4FC90164E010 -:1003C000959587956A95E1F7EC85FD85309709F05D -:1003D0000995E881F9810680F781E02DBC01CE0105 -:1003E000DF91CF910994CF93DF938B3208F039C01E -:1003F00090E0FC01ED5EFE4F2491FC01EC50FF4FBC -:100400008491882309F442C090E0880F991FFC0171 -:10041000E653FF4FC591D491FC01E852FF4FA591DF -:10042000B491611109C09FB7F89488812095822307 -:100430008883EC912E230BC0623061F49FB7F8944F -:100440008881322F309583238883EC912E2B2C9337 -:100450009FBF1CC08FB7F894E8812E2B28838FBFD5 -:1004600015C0D62FC82F0E946C01009779F0DC01CF -:1004700013962C9113976C2F621BED91FC910190B8 -:10048000F081E02D4D2FDF91CF910994DF91CF9135 -:100490000895642FFC0181850C94F3010F931F9341 -:1004A000CF938C01C0E08C2F90E0F8012685378532 -:1004B0008217930758F422853385F901E80FF91F55 -:1004C00061E080810E94F301CF5FEDCFCF911F915A -:1004D0000F91089508950895089508950E94930F27 -:1004E0008091090390910A030C940A0F0F931F93B4 -:1004F000CF93DF9300D000D0CDB7DEB7862F90E04A -:1005000034E0959587953A95E1F78983462B4A83A0 -:100510002B830C830DEF12E0F801838144E050E05F -:10052000BE016F5F7F4F8F5F0E949807F801838144 -:100530008F5F0E94CA0A0F900F900F900F90DF916B -:10054000CF911F910F910895CF92DF92EF92FF927A -:10055000CF93DF9300D000D0CDB7DEB780919C025F -:1005600090919D02A0919E02B0919F024091A002A5 -:100570005091A1026091A2027091A302841B950B7D -:10058000A60BB70B8F739927AA27BB27892B8A2B1A -:100590008B2B09F055C0809100030E945C088823D2 -:1005A00009F45FC0C0909C02D0909D02E0909E0232 -:1005B000F0909F028FEFC81AD80AE80AF80A8FE372 -:1005C000C822DD24EE24FF248091A0029091A10294 -:1005D000A091A202B091A3028C159D05AE05BF05A6 -:1005E00079F1809100030E945C0844E050E0BE0174 -:1005F0006F5F7F4F809100030E942D08049704F1E4 -:1006000080919C0290919D02A0919E02B0919F02C8 -:10061000880F991F880F991FFC01E456FE4F4981EE -:100620005A816B817C814083518362837383C09242 -:100630009C02D0929D02E0929E02F0929F02BACF5D -:100640008091A0029091A102A091A202B091A30278 -:10065000880F991F880F991FFC01E456FE4F2081D7 -:1006600001C020E040919C0250919D0260919E0249 -:1006700070919F028091A0029091A102A091A2028C -:10068000B091A302481759076A077B07B9F0809118 -:10069000A0029091A102A091A202B091A3020196A2 -:1006A000A11DB11D8F739927AA27BB278093A00294 -:1006B0009093A102A093A202B093A30281E0211122 -:1006C00001C080E00F900F900F900F90DF91CF91BD -:1006D000FF90EF90DF90CF900895CF93DF93C82FD6 -:1006E0008B3210F5682F70E0FB01EE5CFE4F8491B9 -:1006F000FB01ED5EFE4FD491FB01EC50FF4FC49126 -:10070000CC2321F181110E946508EC2FF0E0EE0F5F -:10071000FF1FEA51FF4FA591B491EC91ED2381E0C9 -:1007200090E0B1F480E014C00E946C01009771F079 -:10073000DC0113962C9113976C2F621BED91FC91A9 -:100740000480F581E02DDF91CF91099480E090E065 -:10075000DF91CF9108950F931F93CF93DF93EC0117 -:100760008B01FB0180810E946D0321E0892B09F43C -:1007700020E0F8018181F22FF81BFF3F69F53FB7B8 -:10078000F8948091E7029091E802A091E902B0917B -:10079000EA023FBF4E855F8568897989841B950B86 -:1007A000A60BB70B4E895F89688D798D481759075D -:1007B0006A077B0710F53FB7F8948091E7029091A4 -:1007C000E802A091E902B091EA023FBF8E879F87BD -:1007D000A88BB98B81E012C0F13079F43FB7F8945F -:1007E0008091E7029091E802A091E902B091EA02BB -:1007F0003FBF8E879F87A88BB98B80E0F80121834C -:10080000DF91CF911F910F910895CF93DF93EC016A -:10081000888981506823CE010E94700A89850E94D0 -:1008200081018985DF91CF910C948101CF93DF9372 -:10083000EC01888981506823CE010E94700A898565 -:10084000DF91CF910C946D031F920F920FB60F9210 -:1008500011242F933F938F939F93AF93BF938091D6 -:10086000E7029091E802A091E902B091EA0230918A -:10087000E60223E0230F2D3720F40196A11DB11DC0 -:1008800005C026E8230F0296A11DB11D2093E602A4 -:100890008093E7029093E802A093E902B093EA0202 -:1008A0008091EB029091EC02A091ED02B091EE02EA -:1008B0000196A11DB11D8093EB029093EC02A093D1 -:1008C000ED02B093EE02BF91AF919F918F913F9156 -:1008D0002F910F900FBE0F901F9018951F93CF93DD -:1008E000DF93C82F162F8B3240F5682F70E0FB0185 -:1008F000EE5CFE4F8491FB01ED5EFE4FD491FB0157 -:10090000EC50FF4FC491CC2361F181110E94650826 -:10091000EC2FF0E0EE0FFF1FE852FF4FA591B491CE -:100920009FB7F894111104C08C91D095D82302C0C0 -:10093000EC91DE2BDC939FBF14C00E946C010097EA -:1009400081F0DC0113962C9113976C2F621BED91B3 -:10095000FC910280F381E02D412FDF91CF911F9117 -:100960000994DF91CF911F9108954091F202509127 -:10097000F3022091F0023091F10242175307B4F4D0 -:100980009091E8009570E1F39091E80092FD19C014 -:100990008093F1008091F2029091F30201968F739F -:1009A0009927892B19F48EEF8093E8008091F20249 -:1009B0009091F30201969093F3028093F20281E00A -:1009C000089580E00895615030F02091F100FC011D -:1009D00020830196F8CF289A84E68093F602089542 -:1009E000DF92EF92FF920F931F93CF93DF93D82E56 -:1009F0008A017B01E40EF51EEB01CE15DF0571F0D7 -:100A0000D7FE03C0FE01849101C088810E94B50415 -:100A100021968111F2CF8FEF9FEF01C0C801DF91C6 -:100A2000CF911F910F91FF90EF90DF9008950F935A -:100A30001F93CF93DF931F92CDB7DEB782E08983F8 -:100A400042E450E06DE571E080E80E94F0040E940D -:100A5000B60ADC0112960D911C9113970115110530 -:100A600089F0D801ED91FC910280F381E02DBE0167 -:100A70006F5F7F4FC801099597FD04C0F80100859D -:100A80001185ECCF89810F90DF91CF911F910F914C -:100A900008951F920F920FB60F921124CF92DF92FA -:100AA000EF92FF920F931F932F933F934F935F9378 -:100AB0006F937F938F939F93AF93BF93EF93FF9326 -:100AC000CF93DF93CDB7DEB76C97DEBFCDBF10926B -:100AD000E9008091E80083FFFBC168E0CE01459604 -:100AE0000E94E30482EF8093E8008D8987FF05C0B0 -:100AF0009091E80090FFFCCF03C09EEF9093E80038 -:100B0000982F907609F0C6C09E894F89588D2F89FD -:100B1000F88C91110CC0803829F48091EF028093F9 -:100B2000F10002C01092F1001092F10045C1913025 -:100B300051F4811141C14130510509F03DC180910D -:100B4000EF028D7F0BC0933061F4811135C14130CC -:100B5000510509F031C18091EF0282608093EF026C -:100B60002BC1953049F48091E80080FFFCCF822FA3 -:100B700080688093E30020C1963009F05EC00B8D41 -:100B80001C8D22E01092E9001092F3021092F20202 -:100B9000F21232C01092F1021092F0020E94170578 -:100BA00099E0BE016F5F7F4FDB01E92F1D92EA954F -:100BB000E9F79983FA8291E09E8390EA98879AEF09 -:100BC00099872091F2023091F302275F3F4F3C83D7 -:100BD0002B838D831092E9001092F3021092F2029F -:100BE0001093F1020093F00249E050E080E00E948F -:100BF000F0040E941705E0C01093F1020093F00288 -:100C00000E94B60ADC0112960D911C9113970115F2 -:100C1000110509F4BBC0D801ED91FC910480F58168 -:100C2000E02DBE016B5E7F4FC8010995009709F06A -:100C3000C7C0F80100851185EACF973009F445C196 -:100C4000983021F481E08093F100B6C0993009F02A -:100C5000B3C0837009F039C1EDE0F1E081E031E02B -:100C600096E32081211109C08EE78093EA0010925B -:100C7000EA008F898093F8029FC08093E900309347 -:100C8000EB0021912093EC009093ED008F5F873073 -:100C900041F7EACF8B8D9C8D1092E9001092F30200 -:100CA0001092F2029093F1028093F002898D8111EB -:100CB00053C08E899D89913A49F4813209F005C16A -:100CC00047E050E064E071E080E0BBC0913209F0A1 -:100CD000FCC0833269F48F89988DA0E0B0E08093E6 -:100CE000000190930101A0930201B093030164C03D -:100CF000803269F48091E80082FFFCCF67E084E0F5 -:100D000091E00E94E3048BEF8093E80055C08232AB -:100D100009F052C08F8980930B01EEEFFFE78591B8 -:100D200094918B3F9C4D19F0E0E0F8E002C0EEEFAB -:100D3000FAE08091040190910501A0910601B09123 -:100D40000701803B9440A105B10509F09EC0809148 -:100D50000B0180FF79C099C00E94B60AFC01028194 -:100D600013810115110509F4B0C0D801ED91FC9172 -:100D70000190F081E02DBE016B5E7F4FC8010995A7 -:100D800081111AC0F80100851185EBCFF1E0FF1643 -:100D900009F44EC0F3E0FF1298C08F89882309F44C -:100DA0004AC0823089F440E86DE081EC91E00E9415 -:100DB000EE0C882309F489C08EEF8093E80088C088 -:100DC00018161906CCF381C0813029F440E86BE095 -:100DD00085EB91E0ECCF833009F077C00E94B60A32 -:100DE000DC011296ED90FC9013978E010F5F1F4F60 -:100DF0006801E114F10479F0D701ED91FC910680CE -:100E0000F781E02DB801C7010995080F111DF70101 -:100E1000E084F184EECFD8011C92F601019000200D -:100E2000E9F73197BF016C197D0940E0C601BFCFDA -:100E300063EA71E002C06FE971E0FB01449150E0A8 -:100E400080E80E94F004B8CFEE3F2AE0F20751F0AC -:100E5000808191818737A7E79A0721F09093FF0A55 -:100E60008093FE0A87E797E79183808380916000F3 -:100E70008093F4029BE088E10FB6F894A8958093E4 -:100E800060000FBE9093600097CF8081918187377B -:100E9000974709F091CFA895809160008861809371 -:100EA00060008091F40280936000EE3FBAE0FB079F -:100EB00039F08091FE0A9091FF0A918380837CCF64 -:100EC0001092FF0A1092FE0A77CF81E28093EB0026 -:100ED0006C960FB6F894DEBF0FBECDBFDF91CF91F9 -:100EE000FF91EF91BF91AF919F918F917F916F9102 -:100EF0005F914F913F912F911F910F91FF90EF9034 -:100F0000DF90CF900F900FBE0F901F9018952FB7C6 -:100F1000F89487708093E9009091E800892F80729F -:100F200095FF04C09091F20080E4891B2FBF0895C3 -:100F30007F928F929F92AF92BF92CF92DF92EF9269 -:100F4000FF920F931F93CF93DF93C82E8B017A01EB -:100F50008091F802811103C08FEF9FEF70C08091E4 -:100F6000F50280FF05C08091E00082608093E00080 -:100F7000CE2DDF2DD12C8AEFB82E8C2D8770982E98 -:100F80008C2D8072882E8C2D8074782E9AE3A92E59 -:100F9000209719F4DD2009F44DC08C2D0E9487079D -:100FA000811106C0BA94BB20B9F20E949C0AF0CF0E -:100FB000282F30E0C217D3070CF48C2F9FB7F8947A -:100FC0009092E9002091E80025FF32C0282F30E000 -:100FD000C21BD30B882029F08150A0F01092F100A1 -:100FE000FBCFF801C7FE0AC0815050F044914093F6 -:100FF000F1003196F9CF41914093F1008150D8F73B -:10100000020F131FDD2019F0A092E8000AC08091A2 -:10101000E80085FD08C0A092E800DD24D394209765 -:1010200039F0D12C05C0209719F47110A092E80076 -:101030009FBFAECF5D9A84E68093F702C701DF9130 -:10104000CF911F910F91FF90EF90DF90CF90BF90C5 -:10105000AF909F908F907F9008959091F802992380 -:1010600011F057FF03C08FEF9FEF08959FB7F894DB -:1010700087708093E9002091F20030E04217530717 -:101080000CF49A01822FFB0144E6815038F0289A33 -:101090004093F6025091F1005193F7CF211531059D -:1010A00021F08091F200882319F09FBFC9010895B3 -:1010B0008BE68093E800F9CF9FB7F8948770809310 -:1010C000E9008091F2009FBF089590E0FC01319704 -:1010D000EF30F105B0F5EA5AFF4F0C946C0E809199 -:1010E00080008F7703C0809180008F7D8093800087 -:1010F000089580918000877FF9CF84B58F7702C0F3 -:1011000084B58F7D84BD0895809190008F7707C04E -:10111000809190008F7D03C080919000877F8093A5 -:10112000900008958091C0008F7703C08091C00027 -:101130008F7D8093C00008958091C200877F809347 -:10114000C20008953FB7F8948091EB029091EC02B1 -:10115000A091ED02B091EE0226B5A89B05C02F3FED -:1011600019F00196A11DB11D3FBFBA2FA92F982FCD -:101170008827820F911DA11DB11DBC01CD0142E048 -:10118000660F771F881F991F4A95D1F7089580E051 -:1011900090E0089580E00895CF92DF92EF92FF9261 -:1011A0000F931F93CF93DF936C017A018B01C0E003 -:1011B000D0E0CE15DF0581F0D8016D918D01D6010B -:1011C000ED91FC910190F081E02DC6010995892BEC -:1011D00011F02196EECF7E01C701DF91CF911F91D3 -:1011E0000F91FF90EF90DF90CF900895FC018281E6 -:1011F0008F5BFB01808381E00895CF93DF931F9283 -:10120000CDB7DEB76983DC01ED91FC910280F381FB -:10121000E02D41E050E0BE016F5F7F4F09950F90D8 -:10122000DF91CF910895089580E090E0089584E0E3 -:10123000E6E9F1E0DB0101900D928A95E1F784E0A7 -:101240000895CF92DF92EF92FF920F931F93CF9367 -:10125000DF93CDB7DEB7C456D1090FB6F894DEBF21 -:101260000FBECDBF6C01DB019C919E5F9C93FE0184 -:10127000319684E6DF011D928A95E9F788E089833B -:101280008BE08A8322E02C8391E09D839E8339E06A -:10129000398774E07A879E879F873A8B44E24B8B2D -:1012A0009C8B00E011E01E8B0D8B89E0E82EF12C69 -:1012B000F88EEF8A998F3B8F7C8F2F8F98A353E006 -:1012C00059A387E08CA34DA39EA318A70FA301E405 -:1012D00010E01AA709A786E08BA74CA72DA79EA709 -:1012E0009FA789AB4AAB2BAB2CAB2DAB3FAB48AF29 -:1012F00059AF9AAF5BAF9CAF2DAF9EAF21963FAF7A -:10130000219722964FAF229723965FAF239724967B -:101310002FAF249725967FAF259726969FAF2697C8 -:1013200027969FAF279728969FAF28972A963FAF7B -:101330002A9745E02B964FAF2B972D962FAF2D97E1 -:1013400060E470E02F967FAF6EAF2F9763964FAF3C -:10135000639785E264968FAF649765969FAF6597B4 -:1013600066969FAF669767969FAF679768963FAF01 -:10137000689769964FAF69976B962FAF6B976D968D -:101380007FAF6EAF6D97A1964FAFA197A2968FAF2B -:10139000A297A3969FAFA397A4969FAFA497A59655 -:1013A0005FAFA597D60112969C9112979B839B875E -:1013B0009F5F9A8F9D8F13968C912C968FAF2C9751 -:1013C0008F5F80686A968FAF6A9744E650E0BF01EE -:1013D00080E00E94F004CC59DF4F0FB6F894DEBFD6 -:1013E0000FBECDBFDF91CF911F910F91FF90EF9076 -:1013F000DF90CF900895CF93DF93EC0180910B01A4 -:10140000882331F083E00E9498071816190634F0FB -:1014100081E090E09B838A8380E090E0DF91CF9130 -:10142000089583E00E94870790E008950F931F932B -:10143000CF93DF931F92CDB7DEB78C01FC0184857B -:10144000958597FF12C041E050E0BE016F5F7F4F6E -:1014500082E00E942D08019719F4898190E002C072 -:101460008FEF9FEFF80195878487F8018485958534 -:101470000F90DF91CF911F910F910895CF93DF933C -:101480001F92CDB7DEB7FC018485958597FD05C019 -:101490002FEF3FEF358724870FC041E050E0BE01BA -:1014A0006F5F7F4F82E00E942D08019719F48981B8 -:1014B00090E002C08FEF9FEF0F90DF91CF910895E2 -:1014C000FC018485958597FD06C082E00E945C083A -:1014D00090E00196089582E00E945C0890E00895F3 -:1014E000EF92FF920F931F93CF93DF938C01D62F30 -:1014F000C0E0EE24E394F12C8C2F90E0F8012685D7 -:1015000037858217930788F4B7010C2E01C0660F48 -:101510000A94EAF76D2322853385F901E80FF91F54 -:1015200080810E946E04CF5FE7CFDF91CF911F9142 -:101530000F91FF90EF900895CF92DF92EF92FF927C -:101540000E94A2086B017C010E94A208DC01CB0171 -:101550008C199D09AE09BF09883E9340A105B105CC -:1015600098F3FF90EF90DF90CF90089580917903EA -:1015700081110DC082E08093750384E0809376032F -:10158000109278031092770381E08093790385E7C6 -:1015900093E008958093E9008091F200882319F088 -:1015A0008AE38093E800089583E00C94CA0A1F92AE -:1015B0000F920FB60F9211242F933F934F935F9387 -:1015C0006F937F938F939F93AF93BF93CF93EF933B -:1015D000FF93C091E1008091E100837F8093E1005F -:1015E000C3FF0FC01092E90081E08093EB001092DE -:1015F000EC0082E38093ED001092F80288E0809383 -:10160000F000C2FF19C083E00E94CA0A8091F7026D -:10161000882339F08091F70281508093F702882364 -:1016200089F18091F602882339F08091F602815089 -:101630008093F602882341F1C4FF10C08091E2003C -:101640008E7E81608093E2008091E1008F7E8093A6 -:10165000E1008091F5028E7E806111C0C0FF16C04E -:101660008091E2008E7E80618093E2008091E100B3 -:101670008E7E8093E1008091F5028E7E8160809362 -:10168000F50204C05D98CDCF2898D6CFFF91EF9199 -:10169000CF91BF91AF919F918F917F916F915F910A -:1016A0004F913F912F910F900FBE0F901F90189563 -:1016B000789484B5826084BD84B5816084BD85B52D -:1016C000826085BD85B5816085BD80916E00816039 -:1016D00080936E00109281008091810082608093DF -:1016E00081008091810081608093810080918000E1 -:1016F000816080938000809191008260809391004E -:101700008091910081608093910080919000816030 -:10171000809390008091C10084608093C10080918B -:10172000C10082608093C1008091C100816080937C -:10173000C1008091C30081608093C3008091C0008C -:1017400082608093C0008091C20081608093C2005B -:1017500080917A00846080937A0080917A00826020 -:1017600080937A0080917A00816080937A008091E2 -:101770007A00806880937A001092F8021092EF024B -:101780001092F5028091D70081608093D70080EAA3 -:101790008093D80089B5806189BD89B5826089BD93 -:1017A00009B400FEFDCF0E949C0A8091D8008F7C76 -:1017B00080618093D8008091E000807F8093E0007A -:1017C0008091E1008E7E8093E1008DE08093E200C5 -:1017D000559A209A5D98289861E080E00E94F30174 -:1017E00061E081E00E94F3019EE1E92E91E0F92E93 -:1017F00020E0C22E20E0D22E86ECA82E82E0B82E69 -:1018000006EA12E0C0E06C2F83E693E00E94050434 -:10181000D5018D939D935D01F8012081318182175F -:10182000930711F091838083CF5F0E5F1F4FC43009 -:1018300051F78091CA029091CB02843F914014F0FD -:1018400061E001C060E080E00E946E048091C60209 -:101850009091C702843F914014F061E001C060E0C4 -:1018600081E00E946E04C0910D03D0910E038A8125 -:101870009B81892B01F58091A4029091A5029B8305 -:101880008A83892B79F482E090E00E94720E909313 -:10189000A5028093A402DC01ED92FC9299838883D7 -:1018A0009B838A838A819B81DC01ED91FC9101906D -:1018B000F081E02D09950091FB021091FC020115C9 -:1018C000110561F0D801ED91FC910480F581E02DC6 -:1018D000C8010995F80105811681F1CF8A819B81A4 -:1018E000DC01ED91FC910280F381E02D09958111DD -:1018F000F5CFC114D10409F47FCF0E9400007CCF42 -:10190000CF93DF93E3E6F3E08EE291E07497918367 -:101910008083A781B085109731F025813681169696 -:101920003C932E9315972091F9023091FA02E21719 -:10193000F30721F4B093FA02A093F902C581D6818E -:10194000209711F0B887AF832091FB023091FC0201 -:10195000E217F30721F4D093FC02C093FB0223E0CB -:10196000E331F20799F680916F03909170030E9422 -:101970000A0F8EE691E09093640380936303E091F5 -:101980006A03F0916B03309731F080916803909176 -:1019900069039683858380910F039091100383568A -:1019A000934021F4F0931003E0930F03A091680398 -:1019B000B0916903109721F01896FC93EE93179756 -:1019C00080911103909112038356934021F4B093B8 -:1019D0001203A0931103DF91CF910895DF92EF924C -:1019E000FF920F931F93CF93DF93D82EF92EE42EFF -:1019F000062F10E0C8010196880F0E94B50483E00D -:101A00000E94B504CD2DDF2D0C0F1D1FC017D1076F -:101A100089F0E7FE03C0FE01849101C088810E9425 -:101A2000B504F82E80E00E94B5048F212196811123 -:101A3000EDCF01C081E0DF91CF911F910F91FF9019 -:101A4000EF90DF900895FC018EE291E09183808316 -:101A50001282138281E08483168215821086178297 -:101A60008091FB029091FC02892B21F4F093FC02FF -:101A7000E093FB02A091F902B091FA02B087A7832C -:101A8000109721F01696FC93EE931597F093FA02B7 -:101A9000E093F902168215826187158614861786EF -:101AA000168682E691E0918380838FEF808B87E0BA -:101AB000818B428B138A089582E080930103809387 -:101AC000020387E093E09093040380930303109252 -:101AD00006031092050388E391E09093FE02809341 -:101AE000FD0280E88093070381E8809308030E9449 -:101AF000B60AFC0121818091010390E0820F911DC3 -:101B00000897C4F5A281B381109729F48DEF92E074 -:101B1000938382830EC018968D919C91199700979C -:101B200011F0DC01F8CF8DEF92E019969C938E9323 -:101B3000189780818093FF028181809300039081B8 -:101B400080910203890F808380E0909101038917BF -:101B500088F4A0910303B0910403A80FB11D9C91D8 -:101B6000A181B0E0A45FBE4F9C9391819F5F918360 -:101B70008F5FEBCF109284031092830388EE93E083 -:101B8000A0E0B0E08093850390938603A093870341 -:101B9000B093880384E491E090938203809381035F -:101BA0008FEF9FEF90938E0380938D038091D103ED -:101BB00081110BC010920A031092090310920C03BA -:101BC00010920B0381E08093D10389E093E090931E -:101BD0000E0380930D0380E18093650380911103D0 -:101BE00090911203892B31F483E693E090931203D2 -:101BF00080931103E0910F03F0911003F0936B03B6 -:101C0000E0936A03309721F083E693E0968385831F -:101C100083E693E09093100380930F03109269037F -:101C2000109268038091130180936603805F809314 -:101C300067038093130184E891E090936403809399 -:101C4000630383E180936C0384E090E090937203DC -:101C50008093710380E190E0909374038093730309 -:101C600084E090E00E94720E9093700380936F0363 -:101C7000409126015091270160912801709129011E -:101C8000FC01408351836283738390936E0380933E -:101C90006D0383E693E00E944E0241E0609166038B -:101CA00083E193E00E94230D609166036F5F42E041 -:101CB00087E293E00E94230D609166036E5F43E02C -:101CC0008BE393E00E94230D609166036D5F44E017 -:101CD0008FE493E00C94230DEE0FFF1F0590F49119 -:101CE000E02D09940F931F93CF93DF9382309105DA -:101CF00010F482E090E0E091DB03F091DC0320E05F -:101D000030E0A0E0B0E0309719F1408151810281CC -:101D1000138148175907C8F08417950769F410977D -:101D200031F012960C93129713961C9327C00093D0 -:101D3000DB031093DC0322C02115310519F0421793 -:101D4000530718F49A01BD01EF01DF01F801DBCF61 -:101D500021153105F9F0281B390B2430310580F4A9 -:101D60008A819B816115710521F0FB019383828338 -:101D700004C09093DC038093DB03FE01329644C0E1 -:101D8000FE01E20FF31F81939193225031093983B1 -:101D900028833AC02091D9033091DA03232B41F4F0 -:101DA00020911601309117013093DA032093D90363 -:101DB00020911401309115012115310541F42DB701 -:101DC0003EB74091180150911901241B350BE09149 -:101DD000D903F091DA03E217F307A0F42E1B3F0BAF -:101DE0002817390778F0AC014E5F5F4F241735078D -:101DF00048F04E0F5F1F5093DA034093D90381934D -:101E0000919302C0E0E0F0E0CF01DF91CF911F910C -:101E10000F910895CF93DF93009709F481C0FC01DF -:101E2000329713821282A091DB03B091DC031097EA -:101E300081F420813181820F931F2091D903309149 -:101E4000DA032817390751F5F093DA03E093D90341 -:101E500067C0ED0120E030E0CE17DF0740F44A8193 -:101E60005B819E0141155105F1F0EA01F5CFD38365 -:101E7000C28340815181840F951FC817D90759F437 -:101E800088819981840F951F0296918380838A812E -:101E90009B81938382832115310529F4F093DC0320 -:101EA000E093DB033DC0E901FB83EA83499159914B -:101EB000C40FD51FEC17FD0761F480819181840F59 -:101EC000951F0296E90199838883828193819B8380 -:101ED0008A83E0E0F0E012968D919C911397009731 -:101EE00019F0FD01DC01F7CF8D919C9111979D01B7 -:101EF0002E5F3F4F820F931F2091D9033091DA0359 -:101F00002817390769F4309729F41092DC031092EE -:101F1000DB0302C013821282B093DA03A093D903C9 -:101F2000DF91CF91089581E090E0F8940C94980FA0 -:101F300010E0C9EED0E004C0FE010E946C0E2196B4 -:0A1F4000CA3ED107C9F7F894FFCF9D -:101F4A00FFFFFFFF00E100000000000000C18081E8 -:101F5A000000002B0000DD038000000000001309D0 -:101F6A00A40276026101120E0F10000000006D0239 -:101F7A001309130900000000CA082109C708170934 -:101F8A0000000000FD08FB09110AD40A600A3E0A93 -:101F9A00160A0000000059011309C5016E0200006B -:101FAA00000059011309C5011401000000006C0268 -:101FBA006C026B026B026A021309130913091309F3 -:101FCA000000000049026C02160405046A024E026F -:0C1FDA001309130913094D494449000084 -:00000001FF diff --git a/.pioenvs/structure.hash b/.pioenvs/structure.hash index e2b2b68..9ed9b4e 100644 --- a/.pioenvs/structure.hash +++ b/.pioenvs/structure.hash @@ -1 +1 @@ -28e4685b16586ee96b0209f47019afd2bdc0b573 \ No newline at end of file +5b5b88025335f306e0a3618fe34989e446b2df4b \ No newline at end of file diff --git a/build.log b/build.log new file mode 100644 index 0000000..7d6d686 --- /dev/null +++ b/build.log @@ -0,0 +1,821 @@ +Processing micro (platform: atmelavr; board: micro; framework: arduino) +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Verbose mode can be enabled via `-v, --verbose` option +CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/micro.html +PLATFORM: Atmel AVR > Arduino Micro +HARDWARE: ATMEGA32U4 16MHz 2.50KB RAM (28KB Flash) +Library Dependency Finder -> http://bit.ly/configure-pio-ldf +LDF MODES: FINDER(chain) COMPATIBILITY(soft) +Collected 29 compatible libraries +Scanning dependencies... +Dependency Graph +|-- 3.1.0 #f4c4c2a +| |-- 1.0 +| |-- 1.0.3 +Compiling .pioenvs/micro/src/main.cpp.o +Compiling .pioenvs/micro/libe75/SoftwareSerial/SoftwareSerial.cpp.o +src/main.cpp:21:13: warning: 'Analog' is deprecated +Analog potentiometers[] = { +^ +Compiling .pioenvs/micro/lib103/MIDIUSB_ID1104/MIDIUSB.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:10, +from src/main.cpp:3: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Outputs/Analog.h:8, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:14, +from src/main.cpp:3: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:33:0, +from src/main.cpp:3: +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:28:0, +from src/main.cpp:3: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:29:0, +from src/main.cpp:3: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +Compiling .pioenvs/micro/lib7af/MIDI controller/Banks/Bank.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/../MIDI_Controller.h:10, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/Bank.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Outputs/Analog.h:8, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/../MIDI_Controller.h:14, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/Bank.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/Banks/../MIDI_Controller.h:33:0, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/Bank.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/Banks/../MIDI_Controller.h:28:0, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/Bank.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/Banks/../MIDI_Controller.h:29:0, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/Bank.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/.././MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +Archiving .pioenvs/micro/lib103/libMIDIUSB_ID1104.a +Archiving .pioenvs/micro/libe75/libSoftwareSerial.a +Compiling .pioenvs/micro/lib7af/MIDI controller/Banks/BankSelector.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/Banks/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.h:7, +from /home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/Banks/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp: In member function 'void BankSelector::refreshLEDs(uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp:108:12: warning: enumeration value 'SINGLE_BUTTON' not handled in switch [-Wswitch] +switch (mode) +^ +/home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp:108:12: warning: enumeration value 'SINGLE_SWITCH' not handled in switch [-Wswitch] +/home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp:108:12: warning: enumeration value 'MULTIPLE_BUTTONS' not handled in switch [-Wswitch] +/home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp:108:12: warning: enumeration value 'INCREMENT_DECREMENT' not handled in switch [-Wswitch] +/home/nathan/.platformio/lib/MIDI controller/src/Banks/BankSelector.cpp:108:12: warning: enumeration value 'INCREMENT' not handled in switch [-Wswitch] +Compiling .pioenvs/micro/lib7af/MIDI controller/ExtendedInputOutput/AnalogMultiplex.cpp.o +Indexing .pioenvs/micro/lib103/libMIDIUSB_ID1104.a +Indexing .pioenvs/micro/libe75/libSoftwareSerial.a +Compiling .pioenvs/micro/lib7af/MIDI controller/ExtendedInputOutput/ExtendedIOElement.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.cpp:1:0: +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.cpp:1:0: +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +Compiling .pioenvs/micro/lib7af/MIDI controller/ExtendedInputOutput/ExtendedInputOutput.cpp.o +Compiling .pioenvs/micro/lib7af/MIDI controller/ExtendedInputOutput/ShiftRegisterOut.cpp.o +Compiling .pioenvs/micro/lib7af/MIDI controller/Helpers/Hysteresis.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedInputOutput.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Controller/MIDI_Controller_Class.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.cpp:1:0: +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.h: In constructor 'ShiftRegisterOut::ShiftRegisterOut(pin_t, pin_t, pin_t, uint8_t, pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.h:29:11: warning: 'ShiftRegisterOut::bitOrder' will be initialized after [-Wreorder] +uint8_t bitOrder, bufferLength; +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.cpp:7:109: warning: base 'ExtendedIOElement' [-Wreorder] +: dataPin(dataPin), clockPin(clockPin), latchPin(latchPin), bitOrder(bitOrder), ExtendedIOElement(length) +^ +/home/nathan/.platformio/lib/MIDI controller/src/ExtendedInputOutput/ShiftRegisterOut.cpp:6:1: warning: when initialized here [-Wreorder] +ShiftRegisterOut::ShiftRegisterOut(pin_t dataPin, pin_t clockPin, pin_t latchPin, uint8_t bitOrder, pin_t length) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/MIDI_Controller_Class.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./Banks/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/./Banks/BankSelector.h:7, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/MIDI_Controller_Class.cpp:3: +/home/nathan/.platformio/lib/MIDI controller/src/./Banks/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./Banks/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./Banks/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./Banks/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/MIDI_Controller_Class.cpp: In destructor 'MIDI_Controller_::~MIDI_Controller_()': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller/MIDI_Controller_Class.cpp:14:12: warning: deleting object of polymorphic class type 'MIDI_Interface' which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor] +delete new_midi; +^ +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Interfaces/MIDI_Interface.cpp.o +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/Analog.cpp.o +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/ButtonMatrix.cpp.o +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/Digital.cpp.o +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/DigitalCC.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Analog.h:8, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Analog.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:10, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Analog.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/./../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/./ButtonMatrix.h:6, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/ButtonMatrix.cpp:4: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/./../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/./../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/./../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/./../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/ButtonMatrix.cpp:5: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:33:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Analog.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:28:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Analog.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:29:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Analog.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Digital.h:7, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Digital.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:10, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Digital.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalCC.h:6, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalCC.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:10, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalCC.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:33:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Digital.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/DigitalLatch.cpp.o +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:28:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Digital.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:29:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/Digital.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:33:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalCC.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:28:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalCC.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:29:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalCC.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedInputOutput.h:5:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalLatch.h:6, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalLatch.cpp:1: +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual int ExtendedIOElement::digitalRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:33:38: warning: no return statement in function returning non-void [-Wreturn-type] +virtual int digitalRead(pin_t pin){}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h: In member function 'virtual analog_t ExtendedIOElement::analogRead(pin_t)': +/home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/../ExtendedInputOutput/ExtendedIOElement.h:34:42: warning: no return statement in function returning non-void [-Wreturn-type] +virtual analog_t analogRead(pin_t pin){}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/MIDI_Controller_Class.h:4:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:10, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalLatch.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h: In member function 'virtual void USBMIDI_Interface::sendImpl(uint8_t, uint8_t, uint8_t, uint8_t)': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:36: warning: narrowing conversion of '(((int)m) >> 4)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Controller/../MIDI_Interfaces/USBMIDI_Interface.h:46:44: warning: narrowing conversion of '(int)(m | c)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing] +midiEventPacket_t msg = {m >> 4, m | c, d1, d2}; +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:33:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalLatch.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h: In constructor 'AnalogMultiplex::AnalogMultiplex(pin_t, std::initializer_list)': +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:45:32: warning: 'AnalogMultiplex::nb_addresses' will be initialized after [-Wreorder] +const size_t nb_addressPins, nb_addresses; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:24:50: warning: base 'ExtendedIOElement' [-Wreorder] +ExtendedIOElement(1 << addressPins.size()) +^ +/home/nathan/.platformio/lib/MIDI controller/src/./ExtendedInputOutput/AnalogMultiplex.h:22:3: warning: when initialized here [-Wreorder] +AnalogMultiplex(pin_t analogPin, std::initializer_list addressPins) +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:28:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalLatch.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:57:111: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:85:82: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h: In instantiation of 'SerialMIDI_Interface::SerialMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:101:110: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:51:23: warning: 'SerialMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:112: warning: base 'StreamMIDI_Interface' [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/SerialMIDI_Interface.h:43:3: warning: when initialized here [-Wreorder] +SerialMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamMIDI_Interface(serial) {} +^ +In file included from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Controller.h:29:0, +from /home/nathan/.platformio/lib/MIDI controller/src/MIDI_Outputs/DigitalLatch.cpp:2: +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = HardwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:70:121: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = Serial_]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:98:86: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h: In instantiation of 'SerialDebugMIDI_Interface::SerialDebugMIDI_Interface(T&, long unsigned int) [with T = SoftwareSerial]': +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:107:120: required from here +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:64:23: warning: 'SerialDebugMIDI_Interface::baud' will be initialized after [-Wreorder] +const unsigned long baud; +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:122: warning: base 'StreamDebugMIDI_Interface' [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +/home/nathan/.platformio/lib/MIDI controller/src/./MIDI_Interfaces/DebugMIDI_Interface.h:56:3: warning: when initialized here [-Wreorder] +SerialDebugMIDI_Interface(T &serial, unsigned long baud) : serial(serial), baud(baud), StreamDebugMIDI_Interface(serial) {} +^ +Compiling .pioenvs/micro/lib7af/MIDI controller/MIDI_Outputs/MIDI_Control_Element.cpp.o +Archiving .pioenvs/micro/libFrameworkArduinoVariant.a +Indexing .pioenvs/micro/libFrameworkArduinoVariant.a +Compiling .pioenvs/micro/FrameworkArduino/CDC.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/HardwareSerial.cpp.o +Archiving .pioenvs/micro/lib7af/libMIDI controller.a +Compiling .pioenvs/micro/FrameworkArduino/HardwareSerial0.cpp.o +Indexing .pioenvs/micro/lib7af/libMIDI controller.a +Compiling .pioenvs/micro/FrameworkArduino/HardwareSerial1.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/HardwareSerial2.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/HardwareSerial3.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/IPAddress.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/PluggableUSB.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/Print.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/Stream.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/Tone.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/USBCore.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/WInterrupts.c.o +Compiling .pioenvs/micro/FrameworkArduino/WMath.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/WString.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/abi.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/hooks.c.o +Compiling .pioenvs/micro/FrameworkArduino/main.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/new.cpp.o +Compiling .pioenvs/micro/FrameworkArduino/wiring.c.o +Compiling .pioenvs/micro/FrameworkArduino/wiring_analog.c.o +Compiling .pioenvs/micro/FrameworkArduino/wiring_digital.c.o +Compiling .pioenvs/micro/FrameworkArduino/wiring_pulse.S.o +Compiling .pioenvs/micro/FrameworkArduino/wiring_pulse.c.o +Compiling .pioenvs/micro/FrameworkArduino/wiring_shift.c.o +Archiving .pioenvs/micro/libFrameworkArduino.a +Indexing .pioenvs/micro/libFrameworkArduino.a +Linking .pioenvs/micro/firmware.elf +Checking size .pioenvs/micro/firmware.elf +Building .pioenvs/micro/firmware.hex +Memory Usage -> http://bit.ly/pio-memory-usage +DATA: [=== ] 33.5% (used 857 bytes from 2560 bytes) +PROGRAM: [=== ] 32.9% (used 9438 bytes from 28672 bytes) +================================================================================== [SUCCESS] Took 4.86 seconds ================================================================================== diff --git a/src/main.cpp b/src/main.cpp index c6c0709..ad704c8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,6 @@ int muxSelector[TOTAL_LINES]{18, 14, 15, 16}; // Multiplexer m(muxSignal, TOTAL_LINES, muxSelector); AnalogMultiplex multiplexer(A1, {18, 14, 15, 16}); - /* Midi links */ //USBDebugMIDI_Interface midiInterface(115200); @@ -23,48 +22,158 @@ Analog potentiometers[] = { {multiplexer.pin(0), MIDI_CC::Channel_Volume, 1}, {multiplexer.pin(1), MIDI_CC::Channel_Volume, 2}, {multiplexer.pin(2), MIDI_CC::Channel_Volume, 3}, - {multiplexer.pin(3), MIDI_CC::Channel_Volume, 4} + {multiplexer.pin(3), MIDI_CC::Channel_Volume, 4}, + {multiplexer.pin(4), MIDI_CC::Channel_Volume, 5}, + {multiplexer.pin(5), MIDI_CC::Channel_Volume, 6}, + {multiplexer.pin(6), MIDI_CC::Channel_Volume, 7}, + {multiplexer.pin(7), MIDI_CC::Channel_Volume, 8} }; /* Values */ int val[16]; int ref[16]; +uint8_t readCapacitivePin(int pinToMeasure); + void setup() { - //Serial.begin(9600); - /*while (Serial.available() == 0){ + Serial.begin(115200); + while (Serial.available() == 0){ delay(.5 s); - }*/ + } // for (size_t i = 0; i < 4; i++) { - // ref[i] = m.analogRead(i); + // ref[i] = multiplexer.analogRead(i); // } + ref[8] = readCapacitivePin(2); pinMode(0, OUTPUT); pinMode(1, OUTPUT); } -void loop() { - for (size_t i = 0; i < 4; i++) { - val[i] = multiplexer.analogRead(i); - if (val[i] != ref[i]) { - // Serial.print("p["); - // Serial.print(i, DEC); - // Serial.print("] = "); - // Serial.println(val[i], DEC); - ref[i] = val[i]; +long loopAverage = 0; +long lastLoop = 0; +bool on = false; +void loop() { + // long start = millis(); + // for (size_t i = 0; i < 4; i++) { + // val[i] = multiplexer.analogRead(i); + // if (val[i] != ref[i]) { + // Serial.print("p["); + // Serial.print(i, DEC); + // Serial.print("] = "); + // Serial.println(val[i], DEC); + // ref[i] = val[i]; + // + // } + // } + val[8] = readCapacitivePin(2); + if (abs(val[8] - ref[8]) >= 2) { + if (val[8] > ref[8]) { + // Serial.print("loop() time : "); + // Serial.println(lastLoop, DEC); + // Serial.print("average : "); + // Serial.println(loopAverage, DEC); + Serial.println(val[8], DEC); } + ref[8] = val[8]; } + + + // if (val[0] >= 500) { + // digitalWrite(0, HIGH); + // } else { + // digitalWrite(0, LOW); + // } if (val[2] >= 500) { - digitalWrite(0, HIGH); - } else { - digitalWrite(0, LOW); - } - if (val[0] >= 500) { digitalWrite(1, HIGH); } else { digitalWrite(1, LOW); } MIDI_Controller.refresh(); + // lastLoop = millis() - start; + // loopAverage = (loopAverage + lastLoop) / 2; //delay(.5 s); } + +uint8_t readCapacitivePin(int pinToMeasure) { + // Variables used to translate from Arduino to AVR pin naming + volatile uint8_t* port; + volatile uint8_t* ddr; + volatile uint8_t* pin; + + // Here we translate the input pin number from + // Arduino pin number to the AVR PORT, PIN, DDR, + // and which bit of those registers we care about. + + byte bitmask; + port = portOutputRegister(digitalPinToPort(pinToMeasure)); + ddr = portModeRegister(digitalPinToPort(pinToMeasure)); + bitmask = digitalPinToBitMask(pinToMeasure); + pin = portInputRegister(digitalPinToPort(pinToMeasure)); + + // Discharge the pin first by setting it low and output + *port &= ~(bitmask); + *ddr |= bitmask; + delay(1); + uint8_t SREG_old = SREG; //back up the AVR Status Register + // Prevent the timer IRQ from disturbing our measurement + noInterrupts(); + + // Make the pin an input with the internal pull-up on + *ddr &= ~(bitmask); + *port |= bitmask; + + // Now see how long the pin to get pulled up. This manual unrolling of the loop + // decreases the number of hardware cycles between each read of the pin, + // thus increasing sensitivity. + uint8_t cycles = 17; + + if (*pin & bitmask) { + cycles = 0; + } else if (*pin & bitmask) { + cycles = 1; + } else if (*pin & bitmask) { + cycles = 2; + } else if (*pin & bitmask) { + cycles = 3; + } else if (*pin & bitmask) { + cycles = 4; + } else if (*pin & bitmask) { + cycles = 5; + } else if (*pin & bitmask) { + cycles = 6; + } else if (*pin & bitmask) { + cycles = 7; + } else if (*pin & bitmask) { + cycles = 8; + } else if (*pin & bitmask) { + cycles = 9; + } else if (*pin & bitmask) { + cycles = 10; + } else if (*pin & bitmask) { + cycles = 11; + } else if (*pin & bitmask) { + cycles = 12; + } else if (*pin & bitmask) { + cycles = 13; + } else if (*pin & bitmask) { + cycles = 14; + } else if (*pin & bitmask) { + cycles = 15; + } else if (*pin & bitmask) { + cycles = 16; + } + + // End of timing-critical section; turn interrupts back on if they were on before, or leave them off if they were off before + SREG = SREG_old; + + // Discharge the pin again by setting it low and output + // It's important to leave the pins low if you want to + // be able to touch more than 1 sensor at a time - if + // the sensor is left pulled high, when you touch + // two sensors, your body will transfer the charge between + // sensors. + *port &= ~(bitmask); + *ddr |= bitmask; + return cycles; +}