{"id":285,"date":"2018-01-27T16:10:49","date_gmt":"2018-01-27T15:10:49","guid":{"rendered":"http:\/\/www.hman-projects.de\/?p=285"},"modified":"2018-01-27T16:59:33","modified_gmt":"2018-01-27T15:59:33","slug":"esp32-stomper-mehr-als-spdkick-oder-horsekick","status":"publish","type":"post","link":"http:\/\/www.hman-projects.de\/?p=285","title":{"rendered":"ESP32 Stomper &#8211; mehr als SPD:Kick oder Horsekick"},"content":{"rendered":"<p>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. .. <em>ok, nochmal Anforderungen sammeln<\/em>.<\/p>\n<p>Es gab viel Diskussion und neue W\u00fcnsche &#8230;<\/p>\n<p><!--more--><\/p>\n<p>Ich hatte nur noch ein ESP32-Development-Board, bei dem ich mir vorstellen kann, einen internen Webserver zu bauen, \u00fcber den man dann die Sounds editieren kann.<\/p>\n<p>Die Anfoderungen sehen nun so aus:<\/p>\n<ul>\n<li>WLAN bei Bedarf aktivieren und Webserver anbieten um \u00fcber ein Webfrontend dann die 20 Presets\/Samples zu editieren, &#8211; das k\u00f6nnte nur mit der zweiten CPU des ESP32 gehen.<\/li>\n<li>optional 2 Rotary Encoder und OLED Display um Preset\/Sound-Editieren am Stomper zu erm\u00f6glichen<\/li>\n<li>I2S PCM5102A-DAC mit Line-Out<\/li>\n<li>optional SD-Card-Slot um 100 Ordner mit\u00a0 je 100 Samples zu bieten .. ggf. werden nur weniger angeboten, denn die Dateiauswahl mit einem Rotary-Encoder ist nicht so einfach<\/li>\n<li>optional polyphones Triggern von mehreren Sounds f\u00fcr zweiten externen Trigger oder Sample-Layering<\/li>\n<li>Soundumschalter per Fu\u00dftaster ( wie Hihat-Schalter: Closed \/ Open Hihat)<\/li>\n<li>Velocity-based-Sample-Switch<\/li>\n<li>Niedrigere Verz\u00f6gerung beim Triggern<\/li>\n<li>Anpassung des Samples: Pitch, Velocity, Decay, Attack<\/li>\n<li>Anpassungsm\u00f6glichkeit der Empfindlichkeit und Velocity<\/li>\n<li>Preiswert !! So billig wie m\u00f6glich.<\/li>\n<li>Weitere W\u00fcnsche:\n<ul>\n<li>Reverb<\/li>\n<li>LowPass-Filter mit Resonanz<\/li>\n<li>High-Pass-Filter<\/li>\n<li>Velocity als Modulator<\/li>\n<li>Bit-Reducer<\/li>\n<\/ul>\n<\/li>\n<li>Webserverfiles und Preset-Konfigurationen werden auf der SD-Card gesichert<\/li>\n<li>Hardwarekodierung, so dass mit dem gleichen Code unterschiedliche Ausstattungen erm\u00f6glicht werden:\n<ul>\n<li>&#8222;<strong>Basic Stomper<\/strong>&#8222;, &#8211; nur Taster zur Soundauswahl,. Kein OLED, keine Rotary Encoder, kein SD-Card-Slot, 10 &#8211; 20 Presets. ggf. kein richtiger DAC, sondern 1Bit PDM. Ggf auch auf Basis eines ESP8266 Boards<\/li>\n<li>&#8222;<strong>OLED-Stomper<\/strong>&#8222;, ( f\u00fcr Drummer) wie\u00a0 &#8222;Basic Stomper&#8220; aber mit OLED, &#8211; Taster zur Soundauswahl, 0.96&#8243; OLED, Schalter f\u00fcr Webfrontend,<br \/>\nMicro-SD-Card-Slot, 20 Presets, keine Rotary Encode&#8220;Basic Stomper&#8220;, &#8211; nur Taster zur Soundauswahl, Schalter f\u00fcr Webfrontend. Kein OLED, keine Rotary Encoder<br \/>\nMicro-SD-Card-Slot, 20 Presets oder mehr<\/li>\n<li>&#8222;<strong>Plus Stomper<\/strong>&#8222;, &#8211; nur Taster zur Soundauswahl, Schalter f\u00fcr Webfrontend. kleines OLED, 2 Rotary Encoder<br \/>\nMicro-SD-Card-Slot, 40 Presets, 16Bit DAC<\/li>\n<li>&#8222;<strong>Pro Stomper<\/strong>&#8222;, &#8211; ein Taster zur Soundauswahl, Schalter f\u00fcr Webfrontend. kleines OLED, 2 Rotary Encoder. Externer Anschluss f\u00fcr zweiten Trigger, Externer Anschluss f\u00fcr Sound-Wechselschalter (Hihat), Volume-Regler (Analog), 40 Presets, 16Bit DAC<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Wie man sieht, werden sich die unterschiedlichen Modell durch ihre Hardwareausstattung unterscheiden und nicht durch beschnittene Software.<\/p>\n<p>Nach dieser Liste habe ich dann angefangen die wichtigsten Software-Bestandteile zu programmieren oder per Google in anderen Projekten zu suchen.<\/p>\n<p>Es funktioniert schon:<\/p>\n<ul>\n<li>Liste von WaV-Dateien von SD-Card auslesen<\/li>\n<li>Sound mit unterschiedlicher Pitch und Velocity abspielen<\/li>\n<\/ul>\n<p>Das <a href=\"https:\/\/github.com\/earlephilhower\/ESP8266Audio\" target=\"_blank\">AUDIO-Projekt von Earle F. Philhower<\/a> stand Anfang Januar 2018 nur f\u00fcr ESP8266 zur Verf\u00fcgung. Also musste ich die ben\u00f6tigten Klassen einzeln auf den ESP32 portieren.<br \/>\nAuch die Pinbelegung zur Anschaltung eines SDCard-Adapters ist nicht auf Anhib zu finden.<br \/>\nAktuell bin ich noch nicht ganz fertig mit allen Tests,\u00a0 Sounds aus dem RAM und der SDCard kann ich aber schon abspielen.\u00a0 Meine Zwischenergebnisse der Portierung habe ich an Earle zum Review geschickt und es sind nun einige Funktionen seiner Library f\u00fcr beide Plattformen verf\u00fcgbar.<\/p>\n<p>Danach ging es an die Bestellung weiterer Hardware f\u00fcr 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.<\/p>\n<figure id=\"attachment_283\" aria-describedby=\"caption-attachment-283\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_lolin32_esp32.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-283 size-medium\" src=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_lolin32_esp32-300x225.jpg\" alt=\"stomper_lolin32_esp32\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_lolin32_esp32-300x225.jpg 300w, http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_lolin32_esp32-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-283\" class=\"wp-caption-text\">Wemos Lolin32<\/figcaption><\/figure>\n<p>Die Lolin-Boards fand ich interessant, denn damit k\u00f6nnte man wohl einen Stomper mit integrierter Batterie bauen,<\/p>\n<figure id=\"attachment_282\" aria-describedby=\"caption-attachment-282\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_esp32_pcm85102.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-282 size-medium\" src=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_esp32_pcm85102-300x225.jpg\" alt=\"stomper_esp32_pcm85102\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_esp32_pcm85102-300x225.jpg 300w, http:\/\/www.hman-projects.de\/wp-content\/uploads\/2018\/01\/stomper_esp32_pcm85102-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-282\" class=\"wp-caption-text\">I2S DAC &#8211; Board<\/figcaption><\/figure>\n<p>Neben richtigen DACs werde ich auch die PWM-Funktion &#8222;AufioOutNoDac&#8220; mal testen. Wenn der Sound eines einfachen Transistors ausreicht und alle bisherigen Funktionen erhalten bleiben, dann werde ich ggf. auf einen DAC verzichten.<\/p>\n<p><strong>ESP32 Pin-Belegung f\u00fcr MicroSD-Cards:<\/strong><\/p>\n<p>ESP32 &#8211; SD-Card<br \/>\nBei MicroSD-Adaptern mit Spannungswandler AMS117 dann auf VSS auf VIN\/5 Volt setzen, diese funktionieren nicht direkt mit 3.3Volt als VSS !<\/p>\n<p>*\u00a0 Pinout:<br \/>\n<strong>ESP32\u00a0\u00a0\u00a0 SD-Card &#8211; Adapter<\/strong> (aktive Adapter f\u00fcr Microsd-Cards)<\/p>\n<p>5V\u00a0 oder 3.3V \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = VSS ( je nachdem ob ein eigener Spannungswandler auf der Platine sitzt!)<br \/>\nGPIO 23 = MOSI<br \/>\nGPIO 19 = MISO<br \/>\nGPIO 18 = CLK \/ SCLK<br \/>\nGPIO 05 = CS<br \/>\nGND = GND<\/p>\n<p>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.<\/p>\n<p>Diese Konfiguration habe ich bisher nicht getestet!! (SPI-Mode)<\/p>\n<p>Test auf eigene Gefahr!<\/p>\n<p>MOSI\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; 10KOhm Pullup !<br \/>\nMISO\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; 10KOhm Pullup !<br \/>\nSCK\/CLK \/ SCLK\u00a0 &#8211; 10KOhm Pullup !<br \/>\nCS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (\u00a0 &#8230; not used in 1-line SD Mode, but cards D3 &#8211; pin must have a\u00a0&#8211; 10KOhm Pullup ! \u00a0\u00a0 )<br \/>\nGND = GND<\/p>\n<p><strong>Anschaltung des DACs:<\/strong><\/p>\n<p>ESP32 &#8211; DAC98357A or PCM5102<br \/>\nGPIO 26\u00a0 &#8211; BCK-Pin<br \/>\nGPIO 25, &#8211; LRCK-Pin<br \/>\nGPIO 33, : DIN-Pin<br \/>\nVin\/5V or 3.3V<\/p>\n<p>Bei Verwendung des DAC98357A sollte zwischen GPIO33 und DIN-Pin ein Widerstand eingebaut sein. Die Spannung sollte geringer als die Versorgungsspannung sein.<\/p>\n<p>Pins des PCM5102-Boards: (Funktion noch nicht verifiziert!)<\/p>\n<p>VCC &#8211; not connected!<br \/>\n3.3V -&gt; 3.3 Volt (analog side)<br \/>\nGND -&gt; ( Analog or Digital GND??)<br \/>\nFLT (Filter)\u00a0 -&gt; GND<br \/>\nDMP\u00a0(DEMP?) -&gt; GND (eigentlich analog Ground)<br \/>\nSCL -&gt; GND<br \/>\nBCK -&gt; GPIO 26<br \/>\nDIN\u00a0 -&gt; GPIO 33<br \/>\nLCK -&gt; GPIO 25<br \/>\nFMT -&gt; GND<br \/>\nFMT(Filter) -&gt; GND<br \/>\nXMT -&gt; 3.3V (0V = Mute, 3.3V = unmute)<\/p>\n<p>Und dann noch 3 Pins, die auf eine Klinkenbuchse gelegt werden und den analogen Ausgang\u00a0 bilden: L, G, R<\/p>\n<p>Hier muss ich noch pr\u00fcfen, ob der Ping &#8222;G&#8220; noch mit der digitalen Masse verbunden werden musss.<\/p>\n<p>&#8212;-<\/p>\n<p>So weit erstmal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00fcnsche &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,35],"tags":[],"class_list":["post-285","post","type-post","status-publish","format-standard","hentry","category-esp32","category-sample-player-diy"],"_links":{"self":[{"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts\/285"}],"collection":[{"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=285"}],"version-history":[{"count":6,"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts\/285\/revisions"}],"predecessor-version":[{"id":291,"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=\/wp\/v2\/posts\/285\/revisions\/291"}],"wp:attachment":[{"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=285"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.hman-projects.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}