#sam2695 — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #sam2695, aggregated by home.social.
-
I've found another SAM2695 based synth module...
https://diyelectromusic.com/2025/07/15/other-sam2695-synths/
-
Other SAM2695 Synths
After my experiments with the XIAO ESP32-C3 MIDI Synthesizer and in particular, after looking in detail at some different SAM2695 synth modules in XIAO ESP32-C3 MIDI Synthesizer – Part 3, I’ve also found a few other neat modules that I thought worth a mention.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
If you are new to microcontrollers, see the Getting Started pages.
SAM2695 Synth Modules
So far, in addition to the XIAO ESP32-C3 MIDI Synthesizer I’ve had a look at the M5Stack synth (see XIAO ESP32-C3 MIDI Synthesizer – Part 6) and mentioned in passing the original “GM Mini Synth” that first got me interested in the SAM2695 (see XIAO ESP32-C3 MIDI Synthesizer – Part 3).
MIDI Guy Modules
But I’ve also found the “MIDI Guy” modules on Tindie. There are two modules that are of particular interest to me:
- A complete SAM2695 based synth module: https://www.tindie.com/products/kinoshitalab/midi-guy-rev-21-kit/
- A MIDI interface with a connector compatible with the M5 Stack synth: https://www.tindie.com/products/kinoshitalab/m5-synth-standaloner/
Both modules are USB-C powered and provide a MIDI interface. In the case of the “”midi-guy” “stand alone” PCB it is a MIDI interface with a Grove/M5 Stack connector to plug directly into the M5Stack MIDI Synthesizer module.
The “MIDI Guy” however incorporates a MIDI (TRS) IN interface, audio output and Dream SAM2695 synthesizer all into one single unit.
Closing Thoughts
These are both great little modules, and very inexpensive too. Mine both came with MIDI DIN to TRS converters too.
The MIDI Guy synth module also has a link to a 3D printable base plate (as shown in the photo above).
My only niggle is that the mounting holes on the MIDI interface don’t line up with the mounting holes for the M5 Stack synth module. I wonder if they did at one point and something changed…
Anyway, these are great modules. If you have a M5 stack synth, get this MIDI interface for it! It makes it so easy to use.
If you want to experiment with the SAM2695 synth, you can do a lot worse than the MID Guy module. It just has everything in a single board.
Note: I wasn’t sent or otherwise encouraged to write about these modules. I just spotted them, thought they looked interesting and bought them to try. I wasn’t disappointed.
Kevin
-
XIAO ESP32-C3 MIDI Synthesizer – Part 6
Expanding on my previous posts, I thought it might be interesting to see how I might be able to add some additional IO to the MIDI Synth. This is an exploration of some options there.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- XIAO SAMD21, Arduino and MIDI – Part 6
If you are new to microcontrollers, see the Getting Started pages.
The Synth Grove Connector
One option to immediately explore for me was the Grove connector on the Synth – highlighted by the blue rectangle in the photo below. I’m thinking at this stage of the XIAO Expander Module (more here) and how that might give some options for easily hooking up to the Synth.
There one obvious issue with this, and one not so obvious issue.
First, of course, there is no access to this connector through the case. My initial thought was to simply remove the PCB from the case and use it as a stand-alone board. On initial inspection it seemed that there were two screws holding it down. Not so, a more thorough inspection (after remove the two screws and still not being able to remove it), revealed a third screw underneath the “light pipe” for the LEDs.
Unfortunately that light pipe is pretty well wedged into the case making removal particularly tricky. But without removing the light pipe, it isn’t possible to get to the screw at all.
I did wonder about making a hole in the 3D printed case. A better option might be to get hold of the published 3D print files and add a hole and make my own (they are available via the product page).
But both options would probably end up changing the original case somehow – even if printing my own, I still need to get the original PCB out somehow and that brings me back to the light pipe issue.
The second issue isn’t quite so obvious. In that photo we can see that the pins for the Grove connector are labelled as follows (top to bottom):
- NC
- TX
- 5V
- GND
The UART on the XIAO expander board, which I’d like to use, is labelled:
- RX7
- TX6
- 3V3
- GND
Checking in with the Synth schematic, the connector is wired as follows:
SYS_MIDI connects to the MIDI_IN pin of the SAM2695, so actually connecting “TX to TX” in this instance should be ok.
5V might be an issue though, as it really does look like (to me) that it really means 5V – it is the input to the TPL740F33 that generates the 3V3 power signal, as well as feeding the amplifier directly. The datasheet of the TPL740F33 does seem to imply that if receiving 3V3 it can still generate 3V3 so it might be ok? The amplifier obviously won’t be as powerful though running off 3V3.
Anyway, for now, instead I’ve just opted to use the GPIO again, wired into the expansion sockets with the XIAO removed.
At the XIAO expander end, I’ve used the additional pins rather than the Grove connector, as they support a 5V output.
The downsides to this approach:
- I’m not using the Grove connectors, which would have been really neat.
- I have no access to the four buttons on the XIAO MIDI Synth.
But I do now have access to two I2C Grove connectors, a GPIO Grove, and the RX part of the UART Grove too as well as the on-board display.
If a XIAO SAMD21 is used, then the previous code for USB to the Synth can be used directly – see XIAO ESP32-C3 MIDI Synthesizer – Part 2.
If the XIAO ESP32-C3 is used, then an additional serial MIDI connection is required. This can be connected to the Grove UART connector (using the RX pin, and leaving TX unconnected) or the RX pin of the additional 8-way pin header on the expansion board. Then the code from this will work directly: XIAO ESP32-C3 MIDI Synthesizer – Part 5.
Adding a Display and Program Control
I already have some code that has done this for a XIAO on an expansion board here XIAO SAMD21, Arduino and MIDI – Part 6.
But for this to work usefully with the Synth module, I need to adjust the routing so that MIDI goes from USB to serial, but the program change messages are also sent via serial to the synth module. That has already been address in previous parts, to I just need to merge the code with that from XIAO ESP32-C3 MIDI Synthesizer – Part 4.
This is the result.
There is a bit of jitter on the analog pot, but that is only because I’m using the original fairly simplified algorithm to detect changes. If I was fussed about it, I’d reuse the averaging class from Arduino MIDI Atari Paddles. And to be honest, a capacitor on the pot would probably go quite a long way too…
As a test, I also powered the device from the Grove UART port connecting it as follows:
- Expander GND – GND Synth
- Expander 3V3 – 5V IN Synth
- Expander TX – RX/D6 Synth
- Expander RX – N/C
And this all worked fine. So I think a Grove to Grove lead would work fine if I had access to the Synth’s Grove port.
This does mean that the exact same code can work with the M5 Synth module using a Grove to Grove lead. The downside of this, even though it is a lot simpler in connectivity terms, is that there is now external audio out like there is on the XIAO Synth.
For completeness the same code can be used with the XIAO ESP32-C3 and serial MIDI, see the photo at the start of this blog.
To turn off all USB handling in the code, the following must be commented out:
//#define HAS_USB
//#define SER_TO_USB
//#define MIDI_USB_PCCCFor other parts of the code, the Arduino abstraction for A0 maps over to the ESP32-C3 fine. The only thing to watch out for is the increased analog resolution from 10 to 12 bits, but a call to analogReadResolution(10) drops that back to the expected 10 bits.
Oh and the Serial port to use is different:
- XIAO SAMD21: Serial1
- XIAO ESP32-C3: Serial0
Closing Thoughts
If I can be bothered, it would be nice to actually display the General MIDI voice name on the display. The SAM2695 also has its MT-32 mode, so having some means of selecting that might be interesting too.
And so far I’ve largely only messed about with driving it on a single MIDI channel, so there is a lot more that could be done there.
Kevin
#controlChange #esp32c3 #midi #programChange #SAM2695 #samd21 #usbMidi #xiao
-
XIAO ESP32-C3 MIDI Synthesizer – Part 6
Expanding on my previous posts, I thought it might be interesting to see how I might be able to add some additional IO to the MIDI Synth. This is an exploration of some options there.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- XIAO SAMD21, Arduino and MIDI – Part 6
If you are new to microcontrollers, see the Getting Started pages.
The Synth Grove Connector
One option to immediately explore for me was the Grove connector on the Synth – highlighted by the blue rectangle in the photo below. I’m thinking at this stage of the XIAO Expander Module (more here) and how that might give some options for easily hooking up to the Synth.
There one obvious issue with this, and one not so obvious issue.
First, of course, there is no access to this connector through the case. My initial thought was to simply remove the PCB from the case and use it as a stand-alone board. On initial inspection it seemed that there were two screws holding it down. Not so, a more thorough inspection (after remove the two screws and still not being able to remove it), revealed a third screw underneath the “light pipe” for the LEDs.
Unfortunately that light pipe is pretty well wedged into the case making removal particularly tricky. But without removing the light pipe, it isn’t possible to get to the screw at all.
I did wonder about making a hole in the 3D printed case. A better option might be to get hold of the published 3D print files and add a hole and make my own (they are available via the product page).
But both options would probably end up changing the original case somehow – even if printing my own, I still need to get the original PCB out somehow and that brings me back to the light pipe issue.
The second issue isn’t quite so obvious. In that photo we can see that the pins for the Grove connector are labelled as follows (top to bottom):
- NC
- TX
- 5V
- GND
The UART on the XIAO expander board, which I’d like to use, is labelled:
- RX7
- TX6
- 3V3
- GND
Checking in with the Synth schematic, the connector is wired as follows:
SYS_MIDI connects to the MIDI_IN pin of the SAM2695, so actually connecting “TX to TX” in this instance should be ok.
5V might be an issue though, as it really does look like (to me) that it really means 5V – it is the input to the TPL740F33 that generates the 3V3 power signal, as well as feeding the amplifier directly. The datasheet of the TPL740F33 does seem to imply that if receiving 3V3 it can still generate 3V3 so it might be ok? The amplifier obviously won’t be as powerful though running off 3V3.
Anyway, for now, instead I’ve just opted to use the GPIO again, wired into the expansion sockets with the XIAO removed.
At the XIAO expander end, I’ve used the additional pins rather than the Grove connector, as they support a 5V output.
The downsides to this approach:
- I’m not using the Grove connectors, which would have been really neat.
- I have no access to the four buttons on the XIAO MIDI Synth.
But I do now have access to two I2C Grove connectors, a GPIO Grove, and the RX part of the UART Grove too as well as the on-board display.
If a XIAO SAMD21 is used, then the previous code for USB to the Synth can be used directly – see XIAO ESP32-C3 MIDI Synthesizer – Part 2.
If the XIAO ESP32-C3 is used, then an additional serial MIDI connection is required. This can be connected to the Grove UART connector (using the RX pin, and leaving TX unconnected) or the RX pin of the additional 8-way pin header on the expansion board. Then the code from this will work directly: XIAO ESP32-C3 MIDI Synthesizer – Part 5.
Adding a Display and Program Control
I already have some code that has done this for a XIAO on an expansion board here XIAO SAMD21, Arduino and MIDI – Part 6.
But for this to work usefully with the Synth module, I need to adjust the routing so that MIDI goes from USB to serial, but the program change messages are also sent via serial to the synth module. That has already been address in previous parts, to I just need to merge the code with that from XIAO ESP32-C3 MIDI Synthesizer – Part 4.
This is the result.
There is a bit of jitter on the analog pot, but that is only because I’m using the original fairly simplified algorithm to detect changes. If I was fussed about it, I’d reuse the averaging class from Arduino MIDI Atari Paddles. And to be honest, a capacitor on the pot would probably go quite a long way too…
As a test, I also powered the device from the Grove UART port connecting it as follows:
- Expander GND – GND Synth
- Expander 3V3 – 5V IN Synth
- Expander TX – RX/D6 Synth
- Expander RX – N/C
And this all worked fine. So I think a Grove to Grove lead would work fine if I had access to the Synth’s Grove port.
This does mean that the exact same code can work with the M5 Synth module using a Grove to Grove lead. The downside of this, even though it is a lot simpler in connectivity terms, is that there is now external audio out like there is on the XIAO Synth.
For completeness the same code can be used with the XIAO ESP32-C3 and serial MIDI, see the photo at the start of this blog.
To turn off all USB handling in the code, the following must be commented out:
//#define HAS_USB
//#define SER_TO_USB
//#define MIDI_USB_PCCCFor other parts of the code, the Arduino abstraction for A0 maps over to the ESP32-C3 fine. The only thing to watch out for is the increased analog resolution from 10 to 12 bits, but a call to analogReadResolution(10) drops that back to the expected 10 bits.
Oh and the Serial port to use is different:
- XIAO SAMD21: Serial1
- XIAO ESP32-C3: Serial0
Closing Thoughts
If I can be bothered, it would be nice to actually display the General MIDI voice name on the display. The SAM2695 also has its MT-32 mode, so having some means of selecting that might be interesting too.
And so far I’ve largely only messed about with driving it on a single MIDI channel, so there is a lot more that could be done there.
Kevin
#controlChange #esp32c3 #midi #programChange #SAM2695 #samd21 #usbMidi #xiao
-
XIAO ESP32-C3 MIDI Synthesizer – Part 6
Expanding on my previous posts, I thought it might be interesting to see how I might be able to add some additional IO to the MIDI Synth. This is an exploration of some options there.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- XIAO SAMD21, Arduino and MIDI – Part 6
If you are new to microcontrollers, see the Getting Started pages.
The Synth Grove Connector
One option to immediately explore for me was the Grove connector on the Synth – highlighted by the blue rectangle in the photo below. I’m thinking at this stage of the XIAO Expander Module (more here) and how that might give some options for easily hooking up to the Synth.
There one obvious issue with this, and one not so obvious issue.
First, of course, there is no access to this connector through the case. My initial thought was to simply remove the PCB from the case and use it as a stand-alone board. On initial inspection it seemed that there were two screws holding it down. Not so, a more thorough inspection (after remove the two screws and still not being able to remove it), revealed a third screw underneath the “light pipe” for the LEDs.
Unfortunately that light pipe is pretty well wedged into the case making removal particularly tricky. But without removing the light pipe, it isn’t possible to get to the screw at all.
I did wonder about making a hole in the 3D printed case. A better option might be to get hold of the published 3D print files and add a hole and make my own (they are available via the product page).
But both options would probably end up changing the original case somehow – even if printing my own, I still need to get the original PCB out somehow and that brings me back to the light pipe issue.
The second issue isn’t quite so obvious. In that photo we can see that the pins for the Grove connector are labelled as follows (top to bottom):
- NC
- TX
- 5V
- GND
The UART on the XIAO expander board, which I’d like to use, is labelled:
- RX7
- TX6
- 3V3
- GND
Checking in with the Synth schematic, the connector is wired as follows:
SYS_MIDI connects to the MIDI_IN pin of the SAM2695, so actually connecting “TX to TX” in this instance should be ok.
5V might be an issue though, as it really does look like (to me) that it really means 5V – it is the input to the TPL740F33 that generates the 3V3 power signal, as well as feeding the amplifier directly. The datasheet of the TPL740F33 does seem to imply that if receiving 3V3 it can still generate 3V3 so it might be ok? The amplifier obviously won’t be as powerful though running off 3V3.
Anyway, for now, instead I’ve just opted to use the GPIO again, wired into the expansion sockets with the XIAO removed.
At the XIAO expander end, I’ve used the additional pins rather than the Grove connector, as they support a 5V output.
The downsides to this approach:
- I’m not using the Grove connectors, which would have been really neat.
- I have no access to the four buttons on the XIAO MIDI Synth.
But I do now have access to two I2C Grove connectors, a GPIO Grove, and the RX part of the UART Grove too as well as the on-board display.
If a XIAO SAMD21 is used, then the previous code for USB to the Synth can be used directly – see XIAO ESP32-C3 MIDI Synthesizer – Part 2.
If the XIAO ESP32-C3 is used, then an additional serial MIDI connection is required. This can be connected to the Grove UART connector (using the RX pin, and leaving TX unconnected) or the RX pin of the additional 8-way pin header on the expansion board. Then the code from this will work directly: XIAO ESP32-C3 MIDI Synthesizer – Part 5.
Adding a Display and Program Control
I already have some code that has done this for a XIAO on an expansion board here XIAO SAMD21, Arduino and MIDI – Part 6.
But for this to work usefully with the Synth module, I need to adjust the routing so that MIDI goes from USB to serial, but the program change messages are also sent via serial to the synth module. That has already been address in previous parts, to I just need to merge the code with that from XIAO ESP32-C3 MIDI Synthesizer – Part 4.
This is the result.
There is a bit of jitter on the analog pot, but that is only because I’m using the original fairly simplified algorithm to detect changes. If I was fussed about it, I’d reuse the averaging class from Arduino MIDI Atari Paddles. And to be honest, a capacitor on the pot would probably go quite a long way too…
As a test, I also powered the device from the Grove UART port connecting it as follows:
- Expander GND – GND Synth
- Expander 3V3 – 5V IN Synth
- Expander TX – RX/D6 Synth
- Expander RX – N/C
And this all worked fine. So I think a Grove to Grove lead would work fine if I had access to the Synth’s Grove port.
This does mean that the exact same code can work with the M5 Synth module using a Grove to Grove lead. The downside of this, even though it is a lot simpler in connectivity terms, is that there is now external audio out like there is on the XIAO Synth.
For completeness the same code can be used with the XIAO ESP32-C3 and serial MIDI, see the photo at the start of this blog.
To turn off all USB handling in the code, the following must be commented out:
//#define HAS_USB
//#define SER_TO_USB
//#define MIDI_USB_PCCCFor other parts of the code, the Arduino abstraction for A0 maps over to the ESP32-C3 fine. The only thing to watch out for is the increased analog resolution from 10 to 12 bits, but a call to analogReadResolution(10) drops that back to the expected 10 bits.
Oh and the Serial port to use is different:
- XIAO SAMD21: Serial1
- XIAO ESP32-C3: Serial0
Closing Thoughts
If I can be bothered, it would be nice to actually display the General MIDI voice name on the display. The SAM2695 also has its MT-32 mode, so having some means of selecting that might be interesting too.
And so far I’ve largely only messed about with driving it on a single MIDI channel, so there is a lot more that could be done there.
Kevin
#controlChange #esp32c3 #midi #programChange #SAM2695 #samd21 #usbMidi #xiao
-
XIAO ESP32-C3 MIDI Synthesizer – Part 6
Expanding on my previous posts, I thought it might be interesting to see how I might be able to add some additional IO to the MIDI Synth. This is an exploration of some options there.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- XIAO SAMD21, Arduino and MIDI – Part 6
If you are new to microcontrollers, see the Getting Started pages.
The Synth Grove Connector
One option to immediately explore for me was the Grove connector on the Synth – highlighted by the blue rectangle in the photo below. I’m thinking at this stage of the XIAO Expander Module (more here) and how that might give some options for easily hooking up to the Synth.
There one obvious issue with this, and one not so obvious issue.
First, of course, there is no access to this connector through the case. My initial thought was to simply remove the PCB from the case and use it as a stand-alone board. On initial inspection it seemed that there were two screws holding it down. Not so, a more thorough inspection (after remove the two screws and still not being able to remove it), revealed a third screw underneath the “light pipe” for the LEDs.
Unfortunately that light pipe is pretty well wedged into the case making removal particularly tricky. But without removing the light pipe, it isn’t possible to get to the screw at all.
I did wonder about making a hole in the 3D printed case. A better option might be to get hold of the published 3D print files and add a hole and make my own (they are available via the product page).
But both options would probably end up changing the original case somehow – even if printing my own, I still need to get the original PCB out somehow and that brings me back to the light pipe issue.
The second issue isn’t quite so obvious. In that photo we can see that the pins for the Grove connector are labelled as follows (top to bottom):
- NC
- TX
- 5V
- GND
The UART on the XIAO expander board, which I’d like to use, is labelled:
- RX7
- TX6
- 3V3
- GND
Checking in with the Synth schematic, the connector is wired as follows:
SYS_MIDI connects to the MIDI_IN pin of the SAM2695, so actually connecting “TX to TX” in this instance should be ok.
5V might be an issue though, as it really does look like (to me) that it really means 5V – it is the input to the TPL740F33 that generates the 3V3 power signal, as well as feeding the amplifier directly. The datasheet of the TPL740F33 does seem to imply that if receiving 3V3 it can still generate 3V3 so it might be ok? The amplifier obviously won’t be as powerful though running off 3V3.
Anyway, for now, instead I’ve just opted to use the GPIO again, wired into the expansion sockets with the XIAO removed.
At the XIAO expander end, I’ve used the additional pins rather than the Grove connector, as they support a 5V output.
The downsides to this approach:
- I’m not using the Grove connectors, which would have been really neat.
- I have no access to the four buttons on the XIAO MIDI Synth.
But I do now have access to two I2C Grove connectors, a GPIO Grove, and the RX part of the UART Grove too as well as the on-board display.
If a XIAO SAMD21 is used, then the previous code for USB to the Synth can be used directly – see XIAO ESP32-C3 MIDI Synthesizer – Part 2.
If the XIAO ESP32-C3 is used, then an additional serial MIDI connection is required. This can be connected to the Grove UART connector (using the RX pin, and leaving TX unconnected) or the RX pin of the additional 8-way pin header on the expansion board. Then the code from this will work directly: XIAO ESP32-C3 MIDI Synthesizer – Part 5.
Adding a Display and Program Control
I already have some code that has done this for a XIAO on an expansion board here XIAO SAMD21, Arduino and MIDI – Part 6.
But for this to work usefully with the Synth module, I need to adjust the routing so that MIDI goes from USB to serial, but the program change messages are also sent via serial to the synth module. That has already been address in previous parts, to I just need to merge the code with that from XIAO ESP32-C3 MIDI Synthesizer – Part 4.
This is the result.
There is a bit of jitter on the analog pot, but that is only because I’m using the original fairly simplified algorithm to detect changes. If I was fussed about it, I’d reuse the averaging class from Arduino MIDI Atari Paddles. And to be honest, a capacitor on the pot would probably go quite a long way too…
As a test, I also powered the device from the Grove UART port connecting it as follows:
- Expander GND – GND Synth
- Expander 3V3 – 5V IN Synth
- Expander TX – RX/D6 Synth
- Expander RX – N/C
And this all worked fine. So I think a Grove to Grove lead would work fine if I had access to the Synth’s Grove port.
This does mean that the exact same code can work with the M5 Synth module using a Grove to Grove lead. The downside of this, even though it is a lot simpler in connectivity terms, is that there is now external audio out like there is on the XIAO Synth.
For completeness the same code can be used with the XIAO ESP32-C3 and serial MIDI, see the photo at the start of this blog.
To turn off all USB handling in the code, the following must be commented out:
//#define HAS_USB
//#define SER_TO_USB
//#define MIDI_USB_PCCCFor other parts of the code, the Arduino abstraction for A0 maps over to the ESP32-C3 fine. The only thing to watch out for is the increased analog resolution from 10 to 12 bits, but a call to analogReadResolution(10) drops that back to the expected 10 bits.
Oh and the Serial port to use is different:
- XIAO SAMD21: Serial1
- XIAO ESP32-C3: Serial0
Closing Thoughts
If I can be bothered, it would be nice to actually display the General MIDI voice name on the display. The SAM2695 also has its MT-32 mode, so having some means of selecting that might be interesting too.
And so far I’ve largely only messed about with driving it on a single MIDI channel, so there is a lot more that could be done there.
Kevin
#controlChange #esp32c3 #midi #programChange #SAM2695 #samd21 #usbMidi #xiao
-
XIAO ESP32-C3 MIDI Synthesizer – Part 6
Expanding on my previous posts, I thought it might be interesting to see how I might be able to add some additional IO to the MIDI Synth. This is an exploration of some options there.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- XIAO SAMD21, Arduino and MIDI – Part 6
If you are new to microcontrollers, see the Getting Started pages.
The Synth Grove Connector
One option to immediately explore for me was the Grove connector on the Synth – highlighted by the blue rectangle in the photo below. I’m thinking at this stage of the XIAO Expander Module (more here) and how that might give some options for easily hooking up to the Synth.
There one obvious issue with this, and one not so obvious issue.
First, of course, there is no access to this connector through the case. My initial thought was to simply remove the PCB from the case and use it as a stand-alone board. On initial inspection it seemed that there were two screws holding it down. Not so, a more thorough inspection (after remove the two screws and still not being able to remove it), revealed a third screw underneath the “light pipe” for the LEDs.
Unfortunately that light pipe is pretty well wedged into the case making removal particularly tricky. But without removing the light pipe, it isn’t possible to get to the screw at all.
I did wonder about making a hole in the 3D printed case. A better option might be to get hold of the published 3D print files and add a hole and make my own (they are available via the product page).
But both options would probably end up changing the original case somehow – even if printing my own, I still need to get the original PCB out somehow and that brings me back to the light pipe issue.
The second issue isn’t quite so obvious. In that photo we can see that the pins for the Grove connector are labelled as follows (top to bottom):
- NC
- TX
- 5V
- GND
The UART on the XIAO expander board, which I’d like to use, is labelled:
- RX7
- TX6
- 3V3
- GND
Checking in with the Synth schematic, the connector is wired as follows:
SYS_MIDI connects to the MIDI_IN pin of the SAM2695, so actually connecting “TX to TX” in this instance should be ok.
5V might be an issue though, as it really does look like (to me) that it really means 5V – it is the input to the TPL740F33 that generates the 3V3 power signal, as well as feeding the amplifier directly. The datasheet of the TPL740F33 does seem to imply that if receiving 3V3 it can still generate 3V3 so it might be ok? The amplifier obviously won’t be as powerful though running off 3V3.
Anyway, for now, instead I’ve just opted to use the GPIO again, wired into the expansion sockets with the XIAO removed.
At the XIAO expander end, I’ve used the additional pins rather than the Grove connector, as they support a 5V output.
The downsides to this approach:
- I’m not using the Grove connectors, which would have been really neat.
- I have no access to the four buttons on the XIAO MIDI Synth.
But I do now have access to two I2C Grove connectors, a GPIO Grove, and the RX part of the UART Grove too as well as the on-board display.
If a XIAO SAMD21 is used, then the previous code for USB to the Synth can be used directly – see XIAO ESP32-C3 MIDI Synthesizer – Part 2.
If the XIAO ESP32-C3 is used, then an additional serial MIDI connection is required. This can be connected to the Grove UART connector (using the RX pin, and leaving TX unconnected) or the RX pin of the additional 8-way pin header on the expansion board. Then the code from this will work directly: XIAO ESP32-C3 MIDI Synthesizer – Part 5.
Adding a Display and Program Control
I already have some code that has done this for a XIAO on an expansion board here XIAO SAMD21, Arduino and MIDI – Part 6.
But for this to work usefully with the Synth module, I need to adjust the routing so that MIDI goes from USB to serial, but the program change messages are also sent via serial to the synth module. That has already been address in previous parts, to I just need to merge the code with that from XIAO ESP32-C3 MIDI Synthesizer – Part 4.
This is the result.
There is a bit of jitter on the analog pot, but that is only because I’m using the original fairly simplified algorithm to detect changes. If I was fussed about it, I’d reuse the averaging class from Arduino MIDI Atari Paddles. And to be honest, a capacitor on the pot would probably go quite a long way too…
As a test, I also powered the device from the Grove UART port connecting it as follows:
- Expander GND – GND Synth
- Expander 3V3 – 5V IN Synth
- Expander TX – RX/D6 Synth
- Expander RX – N/C
And this all worked fine. So I think a Grove to Grove lead would work fine if I had access to the Synth’s Grove port.
This does mean that the exact same code can work with the M5 Synth module using a Grove to Grove lead. The downside of this, even though it is a lot simpler in connectivity terms, is that there is now external audio out like there is on the XIAO Synth.
For completeness the same code can be used with the XIAO ESP32-C3 and serial MIDI, see the photo at the start of this blog.
To turn off all USB handling in the code, the following must be commented out:
//#define HAS_USB
//#define SER_TO_USB
//#define MIDI_USB_PCCCFor other parts of the code, the Arduino abstraction for A0 maps over to the ESP32-C3 fine. The only thing to watch out for is the increased analog resolution from 10 to 12 bits, but a call to analogReadResolution(10) drops that back to the expected 10 bits.
Oh and the Serial port to use is different:
- XIAO SAMD21: Serial1
- XIAO ESP32-C3: Serial0
Closing Thoughts
If I can be bothered, it would be nice to actually display the General MIDI voice name on the display. The SAM2695 also has its MT-32 mode, so having some means of selecting that might be interesting too.
And so far I’ve largely only messed about with driving it on a single MIDI channel, so there is a lot more that could be done there.
Kevin
#controlChange #esp32c3 #midi #programChange #SAM2695 #samd21 #usbMidi #xiao
-
And whilst on the topic of SAM2695 devices, here is a short play with the M5 Stack MIDI Synth using essentially all the same principles of the set of other XIAO posts.
https://diyelectromusic.com/2025/06/28/xiao-usb-device-to-serial-midi-converter/
-
XIAO USB Device to Serial MIDI Converter
Having recently revisited the CircuitPython USB to Serial MIDI Router as part of XIAO ESP32-C3 MIDI Synthesizer – Part 2 it reminded me I didn’t really have a simple Arduino USB device to serial MIDI for the XIAO. So this is filling that gap.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key Arduino tutorials for the main concepts used in this project:
If you are new to Arduino, see the Getting Started pages.
Parts list
- XIAO SAMD21
- Serial MIDI module
- Breadboard and jumper wires
The Circuit
A 3V3 serial module can be hooked up to the TX/RX pins of the XIAO as shown above.
The Code
This is largely a simplification of the code used for XIAO SAMD21, Arduino and MIDI – Part 4 to use just the standard serial port and USB device MIDI.
There is one option at the top to determine how the serial port ought to be routed. There are two options:
- Serial to USB. This allows a full bi-directional serial <-> USB.
- Serial to Serial. This allows both USB and Serial RX to route to Serial TX.
In the other direction, USB always gets routed to the Serial port.
Closing Thoughts
Often I find I’ve missed out a simpler use-case in pursuit of a more complex one. This was one of those times so hopefully that is now fixed.
In the above photo I’m using it as a USB to serial router for my M5 Stack Synth module based on the SAM2695 that I’ve been playing with. The Synth is powered from the XIAO’s 5V and GND and connected to the TX/D6 pin. This allows me to use USB MIDI which gets routed to the M5 Synth hanging off the XIAO TX pin.
There is more on that particular synth chip here: XIAO ESP32-C3 MIDI Synthesizer – Part 3.
Kevin
-
XIAO USB Device to Serial MIDI Converter
Having recently revisited the CircuitPython USB to Serial MIDI Router as part of XIAO ESP32-C3 MIDI Synthesizer – Part 2 it reminded me I didn’t really have a simple Arduino USB device to serial MIDI for the XIAO. So this is filling that gap.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key Arduino tutorials for the main concepts used in this project:
If you are new to Arduino, see the Getting Started pages.
Parts list
- XIAO SAMD21
- Serial MIDI module
- Breadboard and jumper wires
The Circuit
A 3V3 serial module can be hooked up to the TX/RX pins of the XIAO as shown above.
The Code
This is largely a simplification of the code used for XIAO SAMD21, Arduino and MIDI – Part 4 to use just the standard serial port and USB device MIDI.
There is one option at the top to determine how the serial port ought to be routed. There are two options:
- Serial to USB. This allows a full bi-directional serial <-> USB.
- Serial to Serial. This allows both USB and Serial RX to route to Serial TX.
In the other direction, USB always gets routed to the Serial port.
Closing Thoughts
Often I find I’ve missed out a simpler use-case in pursuit of a more complex one. This was one of those times so hopefully that is now fixed.
In the above photo I’m using it as a USB to serial router for my M5 Stack Synth module based on the SAM2695 that I’ve been playing with. The Synth is powered from the XIAO’s 5V and GND and connected to the TX/D6 pin. This allows me to use USB MIDI which gets routed to the M5 Synth hanging off the XIAO TX pin.
There is more on that particular synth chip here: XIAO ESP32-C3 MIDI Synthesizer – Part 3.
Kevin
-
And part 4 goes back to using the XIAO SAMD21 in the XIAO Synth to create a simple synth module with buttons for voice selection and volume control.
https://diyelectromusic.com/2025/06/27/xiao-esp32-c3-midi-synthesizer-part-4/
-
Part 3 takes a deeper look at the SAM2695 synth chip itself.
https://diyelectromusic.com/2025/06/27/xiao-esp32-c3-midi-synthesizer-part-3/
-
XIAO ESP32-C3 MIDI Synthesizer – Part 3
So, now that the basics are out of the way I’m going to dive into the specifics of the Dream SAM2695 chip itself.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- CircuitPython USB to Serial MIDI Router
- XIAO USB Device to Serial MIDI Converter
If you are new to microcontrollers, see the Getting Started pages.
The Dream SAM2695
I first encountered this device on a breakout board several years ago, called a “GM Mini Module”. Various tutorials at the time showed how to hook this up to an Arduino. For example, my specific module had the following suggested application:
The breakout was essentially just the SAM2695 with an additional MIDI IN circuit and DIN socket.
At the time it was a component of the “fluxamasynth” – an Arduino shield containing the chip. Whilst the shield is now discontinued, a number of resources still remain online about it: https://github.com/fluxly/Fluxamasynth
Since then there have been a number of modules released that use this neat synth chip, probably the most recognisable of which is perhaps the M5 MDI Synth: https://shop.m5stack.com/products/midi-synthesizer-unit-sam2695
There is also a M5 module with built-in MIDI DIN socket too.
This latest XIAO device follows in the footsteps of all these other variations but adds the microcontroller, and ESP32-C3, to make a complete “system”.
I happen to have three of these devices – the original Dream “GM mini module”, M5 synth and the XIAO, so I’ll do a post about them together at some point, but the all work in essentially the same way.
This series of posts is mostly taking a detailed look at the XIAO MIDI Synthesizer, but the following post shows how to use a XIAO SAMD21 to talk to the M5 Stack Synth: XIAO USB Device to Serial MIDI Converter.
The datasheet for the SAM2695 describes its capabilities:
- MIDI control processor, serial and parallel interface
- Synthesis, General MIDI wavetable implementation
- General MIDI compatible effects: reverb + chorus
- Spatial Effect
- 4-band stereo equalizer
- Stereo DAC. DR: 86dB typ, THD+N: -75dB typ
- Mike input. DR: 86dB typ, THD+N: -75dB typ
- Mike echo
- 64-voice polyphony (without effects)
- 38-voice polyphony + effects
- On-chip CleanWave™ wavetable data, firmware, RAM delay lines
- Audio stereo line output
Interestingly it supports a parallel or serial MIDI access. But using serial is by far the easiest as it can link up directly to another microcontroller’s UART or an opto-isolator of a standard MIDI IN circuit.
The GM Sound Engine
The SAM2695 has two complete instrument banks and a drum set. The banks are as follows:
- CH1-9,11-16: BANKSEL 0: Full General MIDI Sound set
- CH1-9,11-16: BANKSEL 127: MT-32 Compatible Sound set
- CH10: General MIDI Drum Sound set:
- Program 1: Normal kit, notes 35-81
- Program 17: “Power Set”, Normal set + note 38 only
- Program 41: “Brush”, Normal set + notes 35-40 changed
- Program 49: “Orchestra”, Normal set + notes 27-30, 38-53, 88 changed
- Program 128: “CM 64/32 Partial”, range of effects and things – MT-32 like
The device also supports effects and an equaliser. All additional controls are configured using either MIDI NRPN or SysEx message. And there are a lot of messages defined in the datasheet!
There are also a number of control messages which apparently have to be sent over the parallel data interface.
But what I am most interested in is the MIDI implementation for the common range of MIDI messages, the most useful of which (to me) are listed below.
MIDI MessageHEXNotesCompatibilityNote On9n kk vvMIDINote Off8n kk vvMIDIPitch BendEn ll hh14-bit pitch bend data hhllGMProgram ChangeCn ppGM/GSChannel AftertouchDn vvMIDIControl ChangeBn cc ddSee table below for specific control change messagesRPNBn 65 …Registered parameter numbers (see datasheet)MIDI/GMNRPNBn 63 …Non-registered parameter numbers (see datasheet)GS/DREAMSysExF0 7E 7F 09 01 F7MIDI ResetGMSysExF0 7F 7F 04 01 00 vv F7Master volumeGMSysExF0 41 00 42 12 … F7Range of GS specific SysEx messages (see datasheet)GSSysExF0 00 20 00 00 … F7Dream specific “port write” commandDREAMMIDI Control Change Messages
CommandHEXDefaults / NotesBank SelectBn 00 cc0ModulationBn 01 cc0 (Rate/Depth set via SysEx)Portamento TimeBn 05 ccChannel VolumeBn 07 cc100PanBn 0A cc64ExpressionBn 0B cc127Sustain PedalBn 40 cc0 (>63 ON)PortamentoBn 41 cc0 (>63 ON)Sostenuto PedalBn 42 cc0 (>63 ON)Soft PedalBn 43 cc0 (>63 ON)ReverbBn 50 vv4 (0..7 = reverb effects)ChorusBn 51 vv2 (0..7 = chorus effects)Reverb SendBn 5B vvChorus SendBn 5D vvAll Sound OffBn 78 00Reset All ControllersBn 79 00All Notes OffBn 7B 00Mono OnBn 7E 00Poly OnBn 7F 00Defaults to poly on power upCC1Bn cc vvcc=00..5F, Fn set by SysExCC2Bn cc vvcc=00..5F, Fn set by SysExTo be honest, I’m not sure I quite understand those last two, but that seems to be what it is saying in the datasheet…
There are a /lot/ of parameters accessible over NRPN or SysEx relating to the routing of signals in the device, the effects and the equaliser. At this point I’m just experimenting with the basics above.
Any of the MIDI interfaces allows me to test it out, but using a XIAO SAMD21 in USB MIDI device mode is the easiest as I can just plug it into a computer and fire up MIDIOx and start messing around with some of the above.
Closing Thoughts
There is a lot to the SAM2695, so I can see why it has captured interest once again after a few years seeming almost forgotten.
It would be nice to build some kind of knob-based interface that supports many of the parameters in the synth, but I guess the major application is meant to be for when some kind of “compatible” sound card is required “off the shelf”. For that, it would appear that the SAM2695 can be a General MIDI Synth, a Roland “General Sound” (GS) Synth or even a Roland MT-32.
Not bad for a small, relatively easily integrated component!
Kevin
-
XIAO ESP32-C3 MIDI Synthesizer – Part 3
So, now that the basics are out of the way I’m going to dive into the specifics of the Dream SAM2695 chip itself.
- Part 1 – Getting started and getting code running.
- Part 2 – Swapping the ESP32-C3 for a SAMD21 to get USB MIDI.
- Part 3 – Taking a deeper look at the SAM2695 itself.
- Part 4 – A USB MIDI Synth Module using the SAMD21 again as a USB MIDI Host.
- Part 5 – A Serial MIDI Synth Module using the original ESP32-C3.
- Part 6 – Pairs the Synth with a XIAO Expansion board to add display and potentiometers.
Warning! I strongly recommend using old or second hand equipment for your experiments. I am not responsible for any damage to expensive instruments!
These are the key tutorials for the main concepts used in this project:
- Getting Started with the XIAO MIDI Synthesizer
- XIAO SAMD21, Arduino and MIDI
- CircuitPython USB to Serial MIDI Router
- XIAO USB Device to Serial MIDI Converter
If you are new to microcontrollers, see the Getting Started pages.
The Dream SAM2695
I first encountered this device on a breakout board several years ago, called a “GM Mini Module”. Various tutorials at the time showed how to hook this up to an Arduino. For example, my specific module had the following suggested application:
The breakout was essentially just the SAM2695 with an additional MIDI IN circuit and DIN socket.
At the time it was a component of the “fluxamasynth” – an Arduino shield containing the chip. Whilst the shield is now discontinued, a number of resources still remain online about it: https://github.com/fluxly/Fluxamasynth
Since then there have been a number of modules released that use this neat synth chip, probably the most recognisable of which is perhaps the M5 MDI Synth: https://shop.m5stack.com/products/midi-synthesizer-unit-sam2695
There is also a M5 module with built-in MIDI DIN socket too.
This latest XIAO device follows in the footsteps of all these other variations but adds the microcontroller, and ESP32-C3, to make a complete “system”.
I happen to have three of these devices – the original Dream “GM mini module”, M5 synth and the XIAO, so I’ll do a post about them together at some point, but the all work in essentially the same way.
This series of posts is mostly taking a detailed look at the XIAO MIDI Synthesizer, but the following post shows how to use a XIAO SAMD21 to talk to the M5 Stack Synth: XIAO USB Device to Serial MIDI Converter.
The datasheet for the SAM2695 describes its capabilities:
- MIDI control processor, serial and parallel interface
- Synthesis, General MIDI wavetable implementation
- General MIDI compatible effects: reverb + chorus
- Spatial Effect
- 4-band stereo equalizer
- Stereo DAC. DR: 86dB typ, THD+N: -75dB typ
- Mike input. DR: 86dB typ, THD+N: -75dB typ
- Mike echo
- 64-voice polyphony (without effects)
- 38-voice polyphony + effects
- On-chip CleanWave™ wavetable data, firmware, RAM delay lines
- Audio stereo line output
Interestingly it supports a parallel or serial MIDI access. But using serial is by far the easiest as it can link up directly to another microcontroller’s UART or an opto-isolator of a standard MIDI IN circuit.
The GM Sound Engine
The SAM2695 has two complete instrument banks and a drum set. The banks are as follows:
- CH1-9,11-16: BANKSEL 0: Full General MIDI Sound set
- CH1-9,11-16: BANKSEL 127: MT-32 Compatible Sound set
- CH10: General MIDI Drum Sound set:
- Program 1: Normal kit, notes 35-81
- Program 17: “Power Set”, Normal set + note 38 only
- Program 41: “Brush”, Normal set + notes 35-40 changed
- Program 49: “Orchestra”, Normal set + notes 27-30, 38-53, 88 changed
- Program 128: “CM 64/32 Partial”, range of effects and things – MT-32 like
The device also supports effects and an equaliser. All additional controls are configured using either MIDI NRPN or SysEx message. And there are a lot of messages defined in the datasheet!
There are also a number of control messages which apparently have to be sent over the parallel data interface.
But what I am most interested in is the MIDI implementation for the common range of MIDI messages, the most useful of which (to me) are listed below.
MIDI MessageHEXNotesCompatibilityNote On9n kk vvMIDINote Off8n kk vvMIDIPitch BendEn ll hh14-bit pitch bend data hhllGMProgram ChangeCn ppGM/GSChannel AftertouchDn vvMIDIControl ChangeBn cc ddSee table below for specific control change messagesRPNBn 65 …Registered parameter numbers (see datasheet)MIDI/GMNRPNBn 63 …Non-registered parameter numbers (see datasheet)GS/DREAMSysExF0 7E 7F 09 01 F7MIDI ResetGMSysExF0 7F 7F 04 01 00 vv F7Master volumeGMSysExF0 41 00 42 12 … F7Range of GS specific SysEx messages (see datasheet)GSSysExF0 00 20 00 00 … F7Dream specific “port write” commandDREAMMIDI Control Change Messages
CommandHEXDefaults / NotesBank SelectBn 00 cc0ModulationBn 01 cc0 (Rate/Depth set via SysEx)Portamento TimeBn 05 ccChannel VolumeBn 07 cc100PanBn 0A cc64ExpressionBn 0B cc127Sustain PedalBn 40 cc0 (>63 ON)PortamentoBn 41 cc0 (>63 ON)Sostenuto PedalBn 42 cc0 (>63 ON)Soft PedalBn 43 cc0 (>63 ON)ReverbBn 50 vv4 (0..7 = reverb effects)ChorusBn 51 vv2 (0..7 = chorus effects)Reverb SendBn 5B vvChorus SendBn 5D vvAll Sound OffBn 78 00Reset All ControllersBn 79 00All Notes OffBn 7B 00Mono OnBn 7E 00Poly OnBn 7F 00Defaults to poly on power upCC1Bn cc vvcc=00..5F, Fn set by SysExCC2Bn cc vvcc=00..5F, Fn set by SysExTo be honest, I’m not sure I quite understand those last two, but that seems to be what it is saying in the datasheet…
There are a /lot/ of parameters accessible over NRPN or SysEx relating to the routing of signals in the device, the effects and the equaliser. At this point I’m just experimenting with the basics above.
Any of the MIDI interfaces allows me to test it out, but using a XIAO SAMD21 in USB MIDI device mode is the easiest as I can just plug it into a computer and fire up MIDIOx and start messing around with some of the above.
Closing Thoughts
There is a lot to the SAM2695, so I can see why it has captured interest once again after a few years seeming almost forgotten.
It would be nice to build some kind of knob-based interface that supports many of the parameters in the synth, but I guess the major application is meant to be for when some kind of “compatible” sound card is required “off the shelf”. For that, it would appear that the SAM2695 can be a General MIDI Synth, a Roland “General Sound” (GS) Synth or even a Roland MT-32.
Not bad for a small, relatively easily integrated component!
Kevin
-
First steps with the XIAO ESP32-C3 and SAM2965 based Synth module.
https://diyelectromusic.com/2025/06/26/xiao-esp32-c3-midi-synthesizer/
-
heise+ | Musik machen mit Midi: Wie Sie mit dem MIDI-Protokoll Klänge produzieren
Das äußerst sparsame MIDI-Protokoll ist zwar betagt, aber nach wie vor die erste Wahl, wenn man elektronische Klangerzeuger steuern will.
Musik machen mit Midi: Wie Sie mit dem MIDI-Protokoll Klänge produzieren