Skip to content

marcel-licence/esp32_midi_sampler

Repository files navigation

esp32_midi_sampler

ESP32 Audio Kit Sampling MIDI Module - A little DIY Arduino based audio/synthesizer project

⚠️ Note: This project might be outdated and is no longer actively maintained. Development has continued in a new repository, which covers the ESP32 and other boards as well. Please check out the latest version of the project here: ml_synth_sampler_example

The project is written for the ESP32 Audio Kit V2.2 Arduino Settings:

  • Board: ESP32 Dev Module
  • PSRAM: Enabled

ESP32 LittleFS Data Upload is required to upload samples into flash.

Compile information:

  • board 'esp32' Version 1.0.6
  • core 'esp32' Version 1.0.6

Following libraries are used:

  • FS in Version 1.0
  • LittleFS_esp32 in Version 1.0.6
  • SD_MMC in Version 1.0
  • WiFi in Version 1.0
  • AC101 in Version 0.0.1
  • Adafruit_NeoPixel in Version 1.7.0
  • Wire in Version 1.0.1
  • ML_SynthTools (https://github.com/marcel-licence/ML_SynthTools)

Configuration of the Audio Kit:

  • Set DIP 2, 3 to on and all other DIP switches to off (required for SD card access)

To store samples on the ESP32 you can upload them using the Arduino plugin:

A WS2812 8x8 led matrix can be connected to IO12, 3V3, GND (defined by LED_STRIP_PIN in config.h) ref: https://hackaday.com/2017/01/20/cheating-at-5v-ws2812-control-to-use-a-3-3v-data-line/

MIDI should be connected to IO18 (you can modify the define MIDI_RX_PIN in config.h)

AS5600 can be now used for scratching. To use it, set the define "AS5600_ENABLED" in config.h as active. The connection is defined below:

  • SDA: IO21
  • SCL: IO22 Note: MIDI_RX_PIN changed from IO18 to IO19 on the ESP32 Audio Kit. In that case you can attach a 160x80 display but its connection will change to:
  • MOS: IO23
  • SCLK: IO18
  • CS: IO5
  • DC: IO0
  • RST -> should be connected to RST / EN of the ESP32

A controller mapping can be found in z_config.ino.

Keys can be used with only one IO by a little modification of the ESP32 Audio Kit (ref: https://youtu.be/r0af0DB1R68)

  • move R66-70 to R60-R64 (0 Ohm resistors, you can also put a solder bridge)
  • place at R55-R59 a 1.8k resistor Finally the define AUDIO_KIT_BUTTON_ANALOG in config.h is required

If you have questions or ideas please feel free to use the discussion area!


External resources: reverb_module.ino is a ported from stm32 code (src. https://github.com/YetAnotherElectronicsChannel/STM32_DSP_Reverb/blob/master/code/Src/main.c) A great video explaining the reverb can be found on his channel: https://youtu.be/nRLXNmLmHqM

Specifications and datasheets:

ESP32-A1S (AC101 variant): https://www.makerfabs.com/desfile/files/ESP32-A1S%20Product%20Specification.pdf ESP32-A1S (ES8388 variant): https://github.com/marcel-licence/esp32_midi_sampler/files/7075076/esp32-a1s_v2.3_specification.pdf AC101 user manual: http://www.x-powers.com/en.php/Info/down/id/96 ES8388 datasheet: http://www.everest-semi.com/pdf/ES8388%20DS.pdf ES8388 user guide: https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf

Derived projects

If you like please let me know if you want to get your project listed here which is based on the esp32_midi_sampler project.

Releases

No releases published

Packages

No packages published