XIAO SAMD21, Arduino and MIDI – Part 8

This post brings together some custom PCB designs for use with a Seeedstudio XIAO SAMD21.

Other parts in this series:

  • Part 1 – Introduction to the XIAO SAMD21 and some projects to get started.
  • Part 2 – Looking at accessing additional serial ports and using them for MIDI.
  • Part 3 – Mozzi FM synthesis using the DAC on the XIAO.
  • Part 4 – USB MIDI on the XIAO.
  • Part 5 – XIAO as a USB MIDI Host.
  • Part 6 – MIDI control using the expansion board.
  • Part 7 – XIAO Expansion I2C MIDI control
  • Part 8 – XIAO MIDI PCBs.

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:

If you are new to microcontrollers, see the Getting Started pages.

XIAO MIDI Interface

IMG_7111

Design Notes: XIAO MIDI Proto PCB

Build Notes: XIAO MIDI Proto PCB – Part 2

This is a general prototyping board for the XIAO series with MIDI IN/OUT connected to the hardware UART on A6/A7.  All other pins are broken out onto additional headers and also available from the prototyping area.

This could be used as the basis for many of the projects described so far.

XIAO MIDI Synth IO Board

IMG_7123

Design Notes: XIAO MIDI Synth Board PCB

Build Notes: XIAO MIDI Synth Board PCB – Part 2

This takes the basic MIDI interface and adds eight potentiometers and an audio out interface.  The board is configurable and should support a range of XIAO modules, many of which will only have four ADC inputs.

If used with the XIAO SAMD21 though, it can support eight pots and the DAC.

Mozzi Synth Update.

This is an alternative configuration (to that already discussed in part 3) required to load up my Arduino Multi-pot Mozzi FM Synthesis code and use it:

#define WAVT_PIN 1 // Wavetable
#define INTS_PIN 2 // FM intensity
#define RATE_PIN 3 // Modulation Rate
#define MODR_PIN 4 // Modulation Ratio
#define AD_A_PIN 10 // ADSR Attack
#define AD_D_PIN 9 // ADSR Delay
#define FREQ_PIN 5 // Optional Frequency Control

As described previously, there is one other additional change required too – MIDI initialisation needs updating to use Serial1 not Serial as follows:

MIDI_CREATE_CUSTOM_INSTANCE(HardwareSerial, Serial1, MIDI, MySettings);

Step Sequencer

Here is the pot configuration required to use my Arduino MIDI Step Sequencer:

int pots[NUM_POTS] = {A1, A2, A3, A4, A10, A9, A8, A5};

XIAO Pi USB MIDI Device

IMG_7136

Design Notes: XIAO Pi USB MIDI Device PCB

Build Notes: XIAO Pi USB MIDI Device PCB – Part 2

This is an add-on IO board for the Raspberry Pi that adds USB MIDI Device functionality by including a XIAO SAMD21.  It supports serial MIDI and USB MIDI and redirects both to the Raspberry Pi’s UART.

The idea is that it can be used to add USB MIDI device functionality to synthesizer projects using the Raspberry Pi. I’ve used it with MiniDexed and it can be seen here in use with my MiniDexed Raspberry Pi IO Board.

Closing Thoughts

This is the final part in this series of posts about the XIAO and I wanted to round it off with some recent PCB designs that can be used to support some of the projects I’ve been talking about.

This won’t be the end of my experiments with the XIAO, but it is the end of this series for now.

These boards have been sent for manufacturing using the Seeed Fusion PCB service, which I am happy to continue to recommend. They have been supported with discount vouchers that I’ve been sent by Seeed for my previous projects.

Kevin

Leave a comment