M5Unit-Synth library not compile to Teensy LC

charnjit

Well-known member
A library download from
https://github.com/m5stack/M5Unit-Synth/tree/main
and tried code example built in
C++:
#include "M5UnitSynth.h"

M5UnitSynth synth;

void setup() {
    Serial.begin(115200);
    Serial.println("Unit Synth Piano");
    synth.begin(&Serial2, UNIT_SYNTH_BAUD, 0, 1);  // Rx.Tx
    synth.setInstrument(0, 0, GrandPiano_1);  // synth piano 1
}

void loop() {
    synth.setNoteOn(0, NOTE_C4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_D4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_E4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_F4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_G4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_A4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_B4, 127);
    delay(1000);
    synth.setNoteOn(0, NOTE_C5, 127);
    delay(1000);
}
got error .......here
C++:
Arduino: 1.8.19 (Windows 7), TD: 1.60-beta5, Board: "Teensy LC, Serial + MIDI, 48 MHz, Smallest Code, US English"


C:\Program Files\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\Arduino\hardware -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\acer\Documents\Arduino\libraries -fqbn=teensy:avr:teensyLC:usb=serialmidi,speed=48,opt=osstd,keys=en-us -ide-version=10819 -build-path C:\Users\acer\AppData\Local\Temp\arduino_build_625674 -warnings=none -build-cache C:\Users\acer\AppData\Local\Temp\arduino_cache_856999 -verbose C:\Users\acer\Documents\Arduino\TEENSY_LC_MIDI_KEY\TEENSY_LC_MIDI_KEY.ino

C:\Program Files\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files\Arduino\hardware -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\acer\Documents\Arduino\libraries -fqbn=teensy:avr:teensyLC:usb=serialmidi,speed=48,opt=osstd,keys=en-us -ide-version=10819 -build-path C:\Users\acer\AppData\Local\Temp\arduino_build_625674 -warnings=none -build-cache C:\Users\acer\AppData\Local\Temp\arduino_cache_856999 -verbose C:\Users\acer\Documents\Arduino\TEENSY_LC_MIDI_KEY\TEENSY_LC_MIDI_KEY.ino

Using board 'teensyLC' from platform in folder: C:\Program Files\Arduino\hardware\teensy\avr

Using core 'teensy3' from platform in folder: C:\Program Files\Arduino\hardware\teensy\avr

Detecting libraries used...

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\sketch\\TEENSY_LC_MIDI_KEY.ino.cpp" -o nul

Alternatives for M5UnitSynth.h: [M5Unit-Synth-main@1.0.1]

ResolveLibrary(M5UnitSynth.h)

  -> candidates: [M5Unit-Synth-main@1.0.1]

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy3" "-IC:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src" "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\sketch\\TEENSY_LC_MIDI_KEY.ino.cpp" -o nul

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy3" "-IC:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src" "C:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src\\M5UnitSynth.cpp" -o nul

WARNING: library M5Unit-Synth-main claims to run on esp32 architecture(s) and may be incompatible with your current board which runs on avr architecture(s).

Generating function prototypes...

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy3" "-IC:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src" "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\sketch\\TEENSY_LC_MIDI_KEY.ino.cpp" -o "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\preproc\\ctags_target_for_gcc_minus_e.cpp"

"C:\\Program Files\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\preproc\\ctags_target_for_gcc_minus_e.cpp"

Compiling sketch...

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/precompile_helper" "C:\\Program Files\\Arduino\\hardware\\teensy\\avr/cores/teensy3" "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674" "C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -x c++-header -Os --specs=nano.specs -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr/cores/teensy3" "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674/pch/Arduino.h" -o "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674/pch/Arduino.h.gch"

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -Os --specs=nano.specs -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674/pch" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy3" "-IC:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src" "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\sketch\\TEENSY_LC_MIDI_KEY.ino.cpp" -o "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\sketch\\TEENSY_LC_MIDI_KEY.ino.cpp.o"

Compiling libraries...

Compiling library "M5Unit-Synth-main"

"C:\\Program Files\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -Os --specs=nano.specs -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++17 -Wno-error=narrowing -fno-rtti -Wno-psabi -mthumb -mcpu=cortex-m0plus -fsingle-precision-constant -D__MKL26Z64__ -DTEENSYDUINO=160 -DARDUINO=10819 -DARDUINO_TEENSYLC -DF_CPU=48000000 -DUSB_MIDI_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674/pch" "-IC:\\Program Files\\Arduino\\hardware\\teensy\\avr\\cores\\teensy3" "-IC:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src" "C:\\Users\\acer\\Documents\\Arduino\\libraries\\M5Unit-Synth-main\\src\\M5UnitSynth.cpp" -o "C:\\Users\\acer\\AppData\\Local\\Temp\\arduino_build_625674\\libraries\\M5Unit-Synth-main\\M5UnitSynth.cpp.o"

C:\Users\acer\Documents\Arduino\libraries\M5Unit-Synth-main\src\M5UnitSynth.cpp: In member function 'void M5UnitSynth::begin(HardwareSerial*, int, uint8_t, uint8_t)':

C:\Users\acer\Documents\Arduino\libraries\M5Unit-Synth-main\src\M5UnitSynth.cpp:6:19: error: no matching function for call to 'HardwareSerial::begin(int&, int, uint8_t&, uint8_t&)'

    6 |     _serial->begin(baud, SERIAL_8N1, RX, TX);

      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~

In file included from C:\Program Files\Arduino\hardware\teensy\avr\cores\teensy3/WProgram.h:47,

                 from C:\Users\acer\AppData\Local\Temp\arduino_build_625674/pch/Arduino.h:6,

                 from C:\Users\acer\Documents\Arduino\libraries\M5Unit-Synth-main\src\M5UnitSynth.h:5,

                 from C:\Users\acer\Documents\Arduino\libraries\M5Unit-Synth-main\src\M5UnitSynth.cpp:1:

C:\Program Files\Arduino\hardware\teensy\avr\cores\teensy3/HardwareSerial.h:285:22: note: candidate: 'virtual void HardwareSerial::begin(uint32_t)'

  285 |         virtual void begin(uint32_t baud);

      |                      ^~~~~

C:\Program Files\Arduino\hardware\teensy\avr\cores\teensy3/HardwareSerial.h:285:22: note:   candidate expects 1 argument, 4 provided

C:\Program Files\Arduino\hardware\teensy\avr\cores\teensy3/HardwareSerial.h:286:22: note: candidate: 'virtual void HardwareSerial::begin(uint32_t, uint32_t)'

  286 |         virtual void begin(uint32_t baud, uint32_t format) {

      |                      ^~~~~

C:\Program Files\Arduino\hardware\teensy\avr\cores\teensy3/HardwareSerial.h:286:22: note:   candidate expects 2 arguments, 4 provided

Using library M5Unit-Synth-main at version 1.0.1 in folder: C:\Users\acer\Documents\Arduino\libraries\M5Unit-Synth-main

Error compiling for board Teensy LC.
seemed it is not for Teensy Board.
My Sam2695 module working well from teensy As Midi keyboard. for functions[noteOn,noteOff, progChange, CC#]etc.
but i want to use sound modify functions given in library see below
C++:
    void begin(HardwareSerial *serial = &Serial1, int baud = UNIT_SYNTH_BAUD,
               uint8_t RX = 16, uint8_t TX = 17);

    void setInstrument(uint8_t bank, uint8_t channel, uint8_t value);
    void setNoteOn(uint8_t channel, uint8_t pitch, uint8_t velocity);
    void setNoteOff(uint8_t channel, uint8_t pitch, uint8_t velocity);
    void setAllNotesOff(uint8_t channel);

    void setPitchBend(uint8_t channel, int value);
    void setPitchBendRange(uint8_t channel, uint8_t value);

    void setMasterVolume(uint8_t level);             // 0-127
    void setVolume(uint8_t channel, uint8_t level);  // 0-127
    
    void setExpression(uint8_t channel, uint8_t expression);  // 0-127

    void setReverb(uint8_t channel, uint8_t program, uint8_t level,
                   uint8_t delayfeedback);

    void setChorus(uint8_t channel, uint8_t program, uint8_t level,
                   uint8_t feedback, uint8_t chorusdelay);
    void setPan(uint8_t channel, uint8_t value);
    void setEqualizer(uint8_t channel, uint8_t lowband, uint8_t medlowband,
                      uint8_t medhighband, uint8_t highband, uint8_t lowfreq,
                      uint8_t medlowfreq, uint8_t medhighfreq,
                      uint8_t highfreq);

    void setTuning(uint8_t channel, uint8_t fine,
                   uint8_t coarse);  // 0-127, 64 is default t
    void setVibrate(uint8_t channel, uint8_t rate, uint8_t depth,
                    uint8_t delay);

    void setTvf(uint8_t channel, uint8_t cutoff, uint8_t resonance);

    void setEnvelope(uint8_t channel, uint8_t attack, uint8_t decay,
                     uint8_t release);

    void setModWheel(uint8_t channel, uint8_t pitch, uint8_t tvtcutoff,
                     uint8_t amplitude, uint8_t rate, uint8_t pitchdepth,
                     uint8_t tvfdepth, uint8_t tvadepth);
Does here Any other Solution?????
Thank you
 
i create midi messege for master volume
SET_MASTER_VOLUME(127);
C++:
 void SET_MASTER_VOLUME(int level)  {      
                                 
                                      byte sysexData[] = { 0xF0, 0x41, 0x00, 0x42, 0x12, 0x40, 0x00, 0x04, 0x3F, 0x00, 0xF7};
                                      sysexData[8]=level;
                                      MIDI.sendSysEx(sizeof(sysexData), sysexData, true);
                                  }
that is working to module...
if you correctly understand below information
midi msg1.jpg

how to write for Bnh 65h 00h 64h 00h 06h vv
i also read Arduino midi referecne .pdf. but could not understand these types.
plaese reply what to write for Bnh here ?? same for vv ???
what t o write for complete messege???
i want to learn as explained example method . i want try others myself after.
 
I am not buy any means familiar with midi, but I found this:
Code:
Control Change Messages
…are made up of three bytes as follows (H denotes a Hexaecimal number):

Status Byte(n) – CC# Byte(cc) – Value Byte(vv)
That is: BnH ccH vvH

For example: to set CC# 107 on Channel 1 to a value of 127 you would need the following message:
B1H 6BH 7FH

And maybe this will help. These were just some quick searches...
 
This page may also be helpful in describing what goes on with RPNs and NRPNs.

MIDI control change commands start with a hex value Bn, where n is MIDI channel minus one; they’re followed by a control number in the range 00 to 7F; then a control value in the same range. As noted in #3 above…

In C you write a hex constant starting with 0x, so a CC command for channel 5 would start with a 0xB4. In the table in post #2, they’ve used a trailing h instead: their B4h is 0xB4.

MIDI also has the concept of “running status”: once a command (byte value of 0x80 or more) has been sent, you don’t need to send it again if you want to repeat the command but using different values. Each command in the table, apart from the first one, is therefore sending 3 CC values in order to set a single RPN or NRPN. It’s a bit long winded, but they’re not usually used as real-time controls.
 
thank you ... table posted in my post#2 was Strange type for me . i tried to study your recomendation pages + google search . i found for
Bnh 65h 00h 64h 00h 06h vv following sequence works
C++:
void SET_PITCH_BENDER_RANGE (byte Range)  {   
                                                 MIDI.sendControlChange(100,0,1);
                                                 MIDI.sendControlChange(101,0,1);
                                                 MIDI.sendControlChange(6,Range,1);
                                                 MIDI.sendControlChange(38,0,1);
                                                 MIDI.sendControlChange(100,127,1);
                                                 MIDI.sendControlChange(101,127,1);
                                            }
if we see this table
midi msg reverb.jpg
....
according to my knowledge to select reverb type 1 /vol FFh .
midi messege should be
C++:
MIDI.sendControlChange(0x69,0,channel);    //for type
 MIDI.sendControlChange(0x3A,0xFF,channel);  // for volume
but it does not work .. i could not understand table reference to midi packet.
 
That table has invalid control values in it - anything above 0x7F would be interpreted as a command byte. However, the MIDI library prevents you sending those values, so your volume setting will actually send a value of 0x7F.

I suggest you try using valid values, and see if you can get anything to change as you’d expect.
 
Back
Top