Recreation of SparkFun's Musical Instrument shield with ESP32 not outputting any audio

Thread Starter


Joined Sep 14, 2020
I tested all the voltages (5, 3.3 and 1.8) and they are where they should be. There are two crystals on my PCB, to change to the smaller one eventually. But I only put one crystal on (which only one should be put on).


Eagle board file

For the next version, I'll put in a ground plane. Here is what it was created from:
1689698105621.png Music Shield-v13.pdf

Paired minimal program that chimes a bell every three seconds:

#define RXD2 16      // was 2, not needed
#define TXD2 23      // was 3 MIDI-In
#define resetMIDI 22 //Reset line

byte note = 0; //The MIDI note value to be played
int  instrument = 0;

void setup()
  //Setup soft serial for MIDI control
  Serial2.begin(31250, SERIAL_8N1, RXD2, TXD2);

  pinMode(resetMIDI, OUTPUT);
  digitalWrite(resetMIDI, LOW);
  digitalWrite(resetMIDI, HIGH);
  talkMIDI(0xB0, 0x07, 120); //0xB0 is channel message, set channel volume to near max (127)

void loop()

  talkMIDI(0xB0, 0, 0x00); //Default bank GM1
  talkMIDI(0xC0, 98, 0);   //Set instrument number. 0xC0 is a 1 data byte command
      //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
      noteOn(0, 98, 60);

      //Turn off the note with a given off/release velocity
      noteOff(0, 98, 15000);



//Send a MIDI note-on message.  Like pressing a piano key
//channel ranges from 0-15
void noteOn(byte channel, byte note, byte attack_velocity) {
  talkMIDI( (0x90 | channel), note, attack_velocity);

//Send a MIDI note-off message.  Like releasing a piano key
void noteOff(byte channel, byte note, byte release_velocity) {
  talkMIDI( (0x80 | channel), note, release_velocity);

//Plays a MIDI note. Doesn't check to see that cmd is greater than 127, or that data values are less than 127
void talkMIDI(byte cmd, byte data1, byte data2) {

  //Some commands only have one data byte. All cmds less than 0xBn have 2 data bytes
  //(sort of:
  if( (cmd & 0xF0) <= 0xB0)

This program does not output any audio on the PCB I designed. But it does output a bell sound when the ESP32 is connected to the shield:


Any ideas on how to troubleshoot or anything seemingly wrong with the circuit I created?
Last edited: