ESP32 Stomper – mehr als SPD:Kick oder Horsekick

Ich hatte mir eigentlich nur einen Stomper mit einem ESP8266 bauen wollen. Den Gitarristen im Freundeskreis gefiel der Stomper auch, wenngleich einige Kommentare zu Latenz und Soundauswahl vielen. .. ok, nochmal Anforderungen sammeln.

Es gab viel Diskussion und neue Wünsche …

Ich hatte nur noch ein ESP32-Development-Board, bei dem ich mir vorstellen kann, einen internen Webserver zu bauen, über den man dann die Sounds editieren kann.

Die Anfoderungen sehen nun so aus:

  • WLAN bei Bedarf aktivieren und Webserver anbieten um über ein Webfrontend dann die 20 Presets/Samples zu editieren, – das könnte nur mit der zweiten CPU des ESP32 gehen.
  • optional 2 Rotary Encoder und OLED Display um Preset/Sound-Editieren am Stomper zu ermöglichen
  • I2S PCM5102A-DAC mit Line-Out
  • optional SD-Card-Slot um 100 Ordner mit  je 100 Samples zu bieten .. ggf. werden nur weniger angeboten, denn die Dateiauswahl mit einem Rotary-Encoder ist nicht so einfach
  • optional polyphones Triggern von mehreren Sounds für zweiten externen Trigger oder Sample-Layering
  • Soundumschalter per Fußtaster ( wie Hihat-Schalter: Closed / Open Hihat)
  • Velocity-based-Sample-Switch
  • Niedrigere Verzögerung beim Triggern
  • Anpassung des Samples: Pitch, Velocity, Decay, Attack
  • Anpassungsmöglichkeit der Empfindlichkeit und Velocity
  • Preiswert !! So billig wie möglich.
  • Weitere Wünsche:
    • Reverb
    • LowPass-Filter mit Resonanz
    • High-Pass-Filter
    • Velocity als Modulator
    • Bit-Reducer
  • Webserverfiles und Preset-Konfigurationen werden auf der SD-Card gesichert
  • Hardwarekodierung, so dass mit dem gleichen Code unterschiedliche Ausstattungen ermöglicht werden:
    • Basic Stomper„, – nur Taster zur Soundauswahl,. Kein OLED, keine Rotary Encoder, kein SD-Card-Slot, 10 – 20 Presets. ggf. kein richtiger DAC, sondern 1Bit PDM. Ggf auch auf Basis eines ESP8266 Boards
    • OLED-Stomper„, ( für Drummer) wie  „Basic Stomper“ aber mit OLED, – Taster zur Soundauswahl, 0.96″ OLED, Schalter für Webfrontend,
      Micro-SD-Card-Slot, 20 Presets, keine Rotary Encode“Basic Stomper“, – nur Taster zur Soundauswahl, Schalter für Webfrontend. Kein OLED, keine Rotary Encoder
      Micro-SD-Card-Slot, 20 Presets oder mehr
    • Plus Stomper„, – nur Taster zur Soundauswahl, Schalter für Webfrontend. kleines OLED, 2 Rotary Encoder
      Micro-SD-Card-Slot, 40 Presets, 16Bit DAC
    • Pro Stomper„, – ein Taster zur Soundauswahl, Schalter für Webfrontend. kleines OLED, 2 Rotary Encoder. Externer Anschluss für zweiten Trigger, Externer Anschluss für Sound-Wechselschalter (Hihat), Volume-Regler (Analog), 40 Presets, 16Bit DAC

Wie man sieht, werden sich die unterschiedlichen Modell durch ihre Hardwareausstattung unterscheiden und nicht durch beschnittene Software.

Nach dieser Liste habe ich dann angefangen die wichtigsten Software-Bestandteile zu programmieren oder per Google in anderen Projekten zu suchen.

Es funktioniert schon:

  • Liste von WaV-Dateien von SD-Card auslesen
  • Sound mit unterschiedlicher Pitch und Velocity abspielen

Das AUDIO-Projekt von Earle F. Philhower stand Anfang Januar 2018 nur für ESP8266 zur Verfügung. Also musste ich die benötigten Klassen einzeln auf den ESP32 portieren.
Auch die Pinbelegung zur Anschaltung eines SDCard-Adapters ist nicht auf Anhib zu finden.
Aktuell bin ich noch nicht ganz fertig mit allen Tests,  Sounds aus dem RAM und der SDCard kann ich aber schon abspielen.  Meine Zwischenergebnisse der Portierung habe ich an Earle zum Review geschickt und es sind nun einige Funktionen seiner Library für beide Plattformen verfügbar.

Danach ging es an die Bestellung weiterer Hardware für Tests. Ich warte nun auf verschiedene Boards, DAC PCM5102 und Displays. Es gibt auch einige interessante Boards, die direkt ein Display integriert haben. Von diesen habe ich 2 geordert, aber noch nicht erhalten.

stomper_lolin32_esp32
Wemos Lolin32

Die Lolin-Boards fand ich interessant, denn damit könnte man wohl einen Stomper mit integrierter Batterie bauen,

stomper_esp32_pcm85102
I2S DAC – Board

Neben richtigen DACs werde ich auch die PWM-Funktion „AufioOutNoDac“ mal testen. Wenn der Sound eines einfachen Transistors ausreicht und alle bisherigen Funktionen erhalten bleiben, dann werde ich ggf. auf einen DAC verzichten.

ESP32 Pin-Belegung für MicroSD-Cards:

ESP32 – SD-Card
Bei MicroSD-Adaptern mit Spannungswandler AMS117 dann auf VSS auf VIN/5 Volt setzen, diese funktionieren nicht direkt mit 3.3Volt als VSS !

*  Pinout:
ESP32    SD-Card – Adapter (aktive Adapter für Microsd-Cards)

5V  oder 3.3V        = VSS ( je nachdem ob ein eigener Spannungswandler auf der Platine sitzt!)
GPIO 23 = MOSI
GPIO 19 = MISO
GPIO 18 = CLK / SCLK
GPIO 05 = CS
GND = GND

Eine Verwendung von SD-Card auf MicroSD-Adaptern direkt an den Pins des ESP funktionierte nie. Es gibt noch den Tip, dass man je 10kOhm als Pullup verwendet und somit einen preiswerten passiven Adapter aufbaut.

Diese Konfiguration habe ich bisher nicht getestet!! (SPI-Mode)

Test auf eigene Gefahr!

MOSI            – 10KOhm Pullup !
MISO            – 10KOhm Pullup !
SCK/CLK / SCLK  – 10KOhm Pullup !
CS        (  … not used in 1-line SD Mode, but cards D3 – pin must have a – 10KOhm Pullup !    )
GND = GND

Anschaltung des DACs:

ESP32 – DAC98357A or PCM5102
GPIO 26  – BCK-Pin
GPIO 25, – LRCK-Pin
GPIO 33, : DIN-Pin
Vin/5V or 3.3V

Bei Verwendung des DAC98357A sollte zwischen GPIO33 und DIN-Pin ein Widerstand eingebaut sein. Die Spannung sollte geringer als die Versorgungsspannung sein.

Pins des PCM5102-Boards: (Funktion noch nicht verifiziert!)

VCC – not connected!
3.3V -> 3.3 Volt (analog side)
GND -> ( Analog or Digital GND??)
FLT (Filter)  -> GND
DMP (DEMP?) -> GND (eigentlich analog Ground)
SCL -> GND
BCK -> GPIO 26
DIN  -> GPIO 33
LCK -> GPIO 25
FMT -> GND
FMT(Filter) -> GND
XMT -> 3.3V (0V = Mute, 3.3V = unmute)

Und dann noch 3 Pins, die auf eine Klinkenbuchse gelegt werden und den analogen Ausgang  bilden: L, G, R

Hier muss ich noch prüfen, ob der Ping „G“ noch mit der digitalen Masse verbunden werden musss.

—-

So weit erstmal.


Posted

in

,

by

Tags: