Sammlung Teensy - Anfängerfragen

Solar Chrome

Electro Synth Maniac
Hallo zusammen,

ich habe vom Weihnachtsmann einen Teensy 4.1 + Audioshield bekommen. :frolic:
Seit vielen Jahre verfolge ich immer wieder die Idee einen kleinen, eigenen Synthesizer zu entwickeln - da ich aber weder Elektronikerin bin, noch die physikalischen Grundlagen exakt kenne, blieb das bisher nur ein Traum. Mit dem Teensy ist da allerdings eine Plattform entstanden, mit der ich sowas auch als Musikerin umsetzen kann. Ich habe viel in PHP gecodet und C++ kenne ich ja. Da komme ich wieder rein. Mit Mikrocontrollern hatte auch schon zu tun. Grundlagen sind da und das Spannende ist ja eben auch das Lösen von Problemen.

Den Teensy 4.1 (lange Version mit SD) habe ich via USB angeschlossen. Die IDE läuft tadellos. Die ersten Steps mit der Ansteuerung der LED konnte ich super gut nachvollziehen und funktioniert auch. Als nächstes wollte ich den WavPlayer ausprobieren. Der wird auch entsprechend kompiliert und hochgeladen. Im Monitor sehe ich, dass die WAVs abgespielt werden. Allerdings habe ich noch nicht den Audioshield installiert, weil ich noch auf bestellte Teile warte. Dennoch hätte ich zum Verständnis zwei Fragen:

  1. Pin 14 ist bei der langen Version S/PDIF-Out. Über das Board habe ich dort mal testweise eine Cinch-Verbindung angeschlossen, Masse auf GND gelegt. Das ganze ging dann in einen externen DA-Wandler. Im Code vom WavPlayer-Beispiel habe ich als Output SPDIF definiert. Er spielt die Wavs von der SD-Karte ab, aber ich höre nichts am Ausgang des Konverters. Hat jemand eine Idee, woran das liegen könnte?

  2. Im zweiten Versuch habe ich versucht beim WavPlayer den Audiostream über USBOut auszugeben. Funktioniert sowas auch, er spielt die WAVs, das USB-Gerät sehe ich unter Win11. Aber wie genau läuft das denn? Wenn der Teensy die Daten über USB ausgibt, ist das doch für den Rechner ein Eingabegerät?! Ich habe dann auch versucht in der DAW den Teensy als ein Input anzugeben - geht auch, aber es blieb auch hier stumm.
Bisher habe ich keinen Ton aus dem Teensy bekommen. Mit dem Audioshield habe ich ja einen normalen AUX-Ausgang, aber ich wollte das eben mal probieren, um das Board schon mal kennenzulernen. Als nächstes wollte ich mal das Audio-Tutorial durchspielen. Bauteile und Patchkabel habe ich fürs Board bestellt, auch Taster und 4 Encoder (mag ich mehr als normale Potis, weil es keine Parameter-Sprünge gibt).

Danke im Voraus, falls jemand da ein paar Ideen hat.
LG, Nika
 
Hallo Nika,

ich kann Dir deine Fragen leider nicht beantworten. Ob Du hier die erhoffte Hilfe finden kannst stelle ich leicht in Zweifel, aber es gibt u.a. ein Teensy Forum


da würde ich es probieren, wenn Du hier keine ausreichende Hilfe bekommen kannst.

Gruß

GwB
 
Ich kann dir leider nicht weiterhelfen, aber ich finde, das klingt super spannend! Musst du alles komplett selbst coden, oder gibt es bereits Sound-Generatoren, die du verwenden kannst?

Ich bin gespannt, was aus dem Projekt wird!
 
…ich verstehe nicht: warum Teensy statt Daisy?…

…gibt es Vorteile wie Flexibilität oder unabhängige Plattform oder sowas?…wenn ich das richtig sehe lassen sich Daisy und Teensy mit den gleichen Sprachen programmieren…
 
…ich verstehe nicht: warum Teensy statt Daisy?…

…gibt es Vorteile wie Flexibilität oder unabhängige Plattform oder sowas?…wenn ich das richtig sehe lassen sich Daisy und Teensy mit den gleichen Sprachen programmieren…
So was ähnliches wollte ich auch empfehlen. Mit der Daisy-Plattform hast Du offensichtlich viel niedrigere Einstiegshürden und kannst mit verschiedenen Sprachen und Umgebungen direkt loslegen. Sogar “grafisch” programmieren mit Pure Data ist möglich.
 
Hallo Nika,

hier im Forum kann dir eventuell @rolfdegen weiterhelfen.

Er arbeitet ja mit an dem TubeOhm Jeannie-Synthesizer, der auch auf dem Teensy aufgebaut ist.
Und falls es mit dem Teensy zu schwierig ist, kannst Du aus dem immer noch eine Jeannie oder Microdexed Touch bauen 🙂
Update: Deren offenen Quellcode Du natürlich auch zur Inspiration und Hilfe analysieren/kopieren kannst.
 
Zuletzt bearbeitet:
Hallo zusammen,

ich habe vom Weihnachtsmann einen Teensy 4.1 + Audioshield bekommen. :frolic:
Seit vielen Jahre verfolge ich immer wieder die Idee einen kleinen, eigenen Synthesizer zu entwickeln - da ich aber weder Elektronikerin bin, noch die physikalischen Grundlagen exakt kenne, blieb das bisher nur ein Traum. Mit dem Teensy ist da allerdings eine Plattform entstanden, mit der ich sowas auch als Musikerin umsetzen kann. Ich habe viel in PHP gecodet und C++ kenne ich ja. Da komme ich wieder rein. Mit Mikrocontrollern hatte auch schon zu tun. Grundlagen sind da und das Spannende ist ja eben auch das Lösen von Problemen.

Den Teensy 4.1 (lange Version mit SD) habe ich via USB angeschlossen. Die IDE läuft tadellos. Die ersten Steps mit der Ansteuerung der LED konnte ich super gut nachvollziehen und funktioniert auch. Als nächstes wollte ich den WavPlayer ausprobieren. Der wird auch entsprechend kompiliert und hochgeladen. Im Monitor sehe ich, dass die WAVs abgespielt werden. Allerdings habe ich noch nicht den Audioshield installiert, weil ich noch auf bestellte Teile warte. Dennoch hätte ich zum Verständnis zwei Fragen:

  1. Pin 14 ist bei der langen Version S/PDIF-Out. Über das Board habe ich dort mal testweise eine Cinch-Verbindung angeschlossen, Masse auf GND gelegt. Das ganze ging dann in einen externen DA-Wandler. Im Code vom WavPlayer-Beispiel habe ich als Output SPDIF definiert. Er spielt die Wavs von der SD-Karte ab, aber ich höre nichts am Ausgang des Konverters. Hat jemand eine Idee, woran das liegen könnte?

  2. Im zweiten Versuch habe ich versucht beim WavPlayer den Audiostream über USBOut auszugeben. Funktioniert sowas auch, er spielt die WAVs, das USB-Gerät sehe ich unter Win11. Aber wie genau läuft das denn? Wenn der Teensy die Daten über USB ausgibt, ist das doch für den Rechner ein Eingabegerät?! Ich habe dann auch versucht in der DAW den Teensy als ein Input anzugeben - geht auch, aber es blieb auch hier stumm.
Bisher habe ich keinen Ton aus dem Teensy bekommen. Mit dem Audioshield habe ich ja einen normalen AUX-Ausgang, aber ich wollte das eben mal probieren, um das Board schon mal kennenzulernen. Als nächstes wollte ich mal das Audio-Tutorial durchspielen. Bauteile und Patchkabel habe ich fürs Board bestellt, auch Taster und 4 Encoder (mag ich mehr als normale Potis, weil es keine Parameter-Sprünge gibt).

Danke im Voraus, falls jemand da ein paar Ideen hat.
LG, Nika

Hallo Nika und fröhliche Weihnachten 🎄🎅

Ich habe am Anfang meiner Synthesizer Entwicklung auch mit dem Teensy 4.1 und PJRC Audio Board gearbeitet.
Mit Hilfe der Audio Engine von Paul Stoffregen und dem Audio System Design Tool habe ich die Jeannie (Polyhoner DIY Synthesizer) entwickelt.

Zu deinem Problem mit dem Audioshield schau dir mal die Audio Projektseite von PJRC an. Zur Info: vom Audioshield gibt es zwei Versionen C und D. Sie unterscheiden sich etwas an den Anschlüssen. Audio Über USB funktioniert auch in 16Bit Qualität. Im Audio System Design Tool lässt sich das einfach mit dem hinzufügen von USB im Output Menü erreichen.

Links:
Audio Output on Teensy 4.x Boards: https://melp242.blogspot.com/2020/10/audio-output-on-teensy-4x-boards.html
Teensy SPDIF: https://forum.pjrc.com/index.php?threads/spdif-input-and-output.45394/#post-148671
Teensy 4.1 Board: https://www.pjrc.com/store/teensy41.html#pins
Teensy Audioshield: https://www.pjrc.com/store/teensy3_audio.html
Teensy Audio Library von P.Stoffregen: https://github.com/PaulStoffregen/Audio
Teensy Audio Design Tool: https://www.pjrc.com/teensy/gui/?info=AudioControlWM8731
Audio with Teensy: https://www.pjrc.com/teensy/td_libs_Audio.html

Gruß Rolf
 
Zuletzt bearbeitet:
Danke für das zahlreiche Feedback. :idea:

@rolfdegen Deine Links haben mir in der Tat weitergeholfen. Im Blog über die Audio Outputs bin ich auf den analogen MQS-Output gestoßen, der auf der normalen Teensy-Seite irgendwie gar nicht richtig dokumentiert wird. Für die ersten Gehversuche reicht der doch völlig aus. Das Audioshield ist derzeit noch gar nicht verbaut. Wie erwähnt warte ich noch auf Bauteile, die ich bestellt habe. Den Teensy betreibe ich aktuell also "nackt", der MQS-Output geht direkt in den Mixer. Funktioniert super.

Ich konnte jetzt auch schon einiges erreichen: Der SD-Card-WavPlayer funktioniert jetzt. Da war das Problem, dass die WAVs alle 16bit und 44Khz haben mussten. Dann habe ich mal Oszillatoren probiert. Begonnen beim Dauerton, habe ich jetzt schon einen kleinen Basic-Synth zusammen mit 2 Osc (SAW+PULSE) + Filter, der über USB-MIDI gespielt werden kann. Filter über CC geht auch schon. Die Struktur hatte ich über das GUI-Tool anlegt. Die Envelope will noch nicht ganz, aber für die ersten beiden Tage ist das schon mal toll. Hätte ich so nicht erwartet.


…ich verstehe nicht: warum Teensy statt Daisy?…

…gibt es Vorteile wie Flexibilität oder unabhängige Plattform oder sowas?…wenn ich das richtig sehe lassen sich Daisy und Teensy mit den gleichen Sprachen programmieren…

Ich hatte mir beide angeschaut und mich dann für den Teensy entschieden. Das Audio-GUI-Tool find ich sehr spannend und auch die Community ist größer, als die von Daisy. Mir ist es wichtig die einzelnen Komponenten mal zu Fuß zu implementieren und keine fertige Platine mit Potis und Tastern zu kaufen. Mir geht es also vor allem auch darum diese Dinge zu verstehen und eigene Projekte aufzubauen. Der Weg ist hier das Ziel.


So was ähnliches wollte ich auch empfehlen. Mit der Daisy-Plattform hast Du offensichtlich viel niedrigere Einstiegshürden und kannst mit verschiedenen Sprachen und Umgebungen direkt loslegen. Sogar “grafisch” programmieren mit Pure Data ist möglich.

Ich finde den Teensy durchaus einsteigerfreundlich. Es ist ja alles gut dokumentiert und es gibt zahlreiche Beispiele. Der Code ist auch recht gut verständlich. Grafisch programmieren geht beim Teensy mit dem GUI-Tool: https://www.pjrc.com/teensy/gui/ ... das wollte ich schon gern so benutzen. Aus meiner berufliche Tätigkeit weiß ich zudem, dass eine aktive Community sehr, sehr viel Wert ist. Bisher klappt das überraschend gut.


Hallo Nika,

hier im Forum kann dir eventuell @rolfdegen weiterhelfen.

Er arbeitet ja mit an dem TubeOhm Jeannie-Synthesizer, der auch auf dem Teensy aufgebaut ist.

Das habe ich tatsächlich schon einkalkuliert und das Projekt mit großem Interesse verfolgt.
@rolfdegen Tut mir leid, ich werde Dich bestimmt nochmal das eine oder andere Mal nerven. *lach*
 
Pin 14 ist bei der langen Version S/PDIF-Out. Über das Board habe ich dort mal testweise eine Cinch-Verbindung angeschlossen, Masse auf GND gelegt. Das ganze ging dann in einen externen DA-Wandler. Im Code vom WavPlayer-Beispiel habe ich als Output SPDIF definiert. Er spielt die Wavs von der SD-Karte ab, aber ich höre nichts am Ausgang des Konverters. Hat jemand eine Idee, woran das liegen könnte?
Wenn ich die Infos zu S/PDIF bzw Toslink richtig verstehe, dann muss bei der Cinch/Coax Verbindung das Signal symmetrisch mit +-0.5V Amplitude sein. Nach Norm/Spezifikation wird dazu ein Übertrager benutzt wodurch das ganze auch gleich galvanisch getrennt ist. Man kann wohl ein bischen tricksen und das Signal mit einem RC Hochpass / Spannungsteiler hinbiegen. Das Problem mit der Masseschleife bleibt dann jedoch. Wenn Du einen optischen Eingang/Toslink am DA Wandler hast, dann könnte es mit einer Led funktionieren, die einfach in den Toslink Eingang gesteckt wird so dass diese auf den Sensor leuchtet. Die Led dann mit Vorwiderstand entsprechend an den Teensy anschließen.

Für S/PDIF über Coax gibts hier ein paar Idden, das mit dem RC Hochpass steht ganz am Ende der Seite:
 
Wenn ich die Infos zu S/PDIF bzw Toslink richtig verstehe, dann muss bei der Cinch/Coax Verbindung das Signal symmetrisch mit +-0.5V Amplitude sein. Nach Norm/Spezifikation wird dazu ein Übertrager benutzt wodurch das ganze auch gleich galvanisch getrennt ist. Man kann wohl ein bischen tricksen und das Signal mit einem RC Hochpass / Spannungsteiler hinbiegen. Das Problem mit der Masseschleife bleibt dann jedoch. Wenn Du einen optischen Eingang/Toslink am DA Wandler hast, dann könnte es mit einer Led funktionieren, die einfach in den Toslink Eingang gesteckt wird so dass diese auf den Sensor leuchtet. Die Led dann mit Vorwiderstand entsprechend an den Teensy anschließen.

Für S/PDIF über Coax gibts hier ein paar Idden, das mit dem RC Hochpass steht ganz am Ende der Seite:

Danke für Dein Feedback. Du scheinst auch ziemlich viel Ahnung davon zu haben! :eek:

Den S/PDIF wollte ich nur temporär "anzapfen" und die Zeit überbrücken, bist die restlichen Bauteile da sind. Über den MQS-Output habe ich aber nun eine Lösung gefunden, mit der ich erstmal arbeiten und prüfen kann, was der Teensy macht. Als Controller verwende ich einfach meinen MIDI-Controller über Bitwig. Das soll natürlich dann später auch am Gerät über Encoder editierbar sein. Aber das ist noch alles Zukunftsmusik ...


Kein Problem. Helfe gerne :)

Hier ein älteres Schaltbild mit dem Audio Design Tool des Jeannie Synthesizers (eine Stimme)

Anhang anzeigen 198815

Anhang anzeigen 198818

Danke Dir für Deine Hilfe!
Das Schaltbild ist schon sehr beeindruckend ... ich beginne erstmal mit ganz simplen Vernetzungen und arbeite mich dann vor.
 
UPDATE: Nachdem ich einen kleinen, rudimentären Bass-Synth entwickelt habe, liefen heute die ersten Arbeiten für einen kleinen Drumsynth an.

Ich habe bisher keine konkreten Vorstellungen und nutze das Projekt, um mich mehr mit der Materie vertraut zu machen. Die Idee ist es einen 4-stimmigen Drumsynth zu entwickeln, der je Voice ein Samples, als auch keine Synthdrum bereitstellt. Die Basics konnte ich heute dazu schon umsetzen und auch erste Grooves erzeugen. Das macht schon irre viel Spaß!

Die Controls sind noch stark vereinfacht, weil man da etliche Parameter hat. Hier muss ich mal schauen, wie man die sinnvoll kombinieren kann, damit der Synth gut benutzbar bleibt. Die Samples habe ich via Sample2Sketch direkt in den Quellcode eingebunden, was sehr gut funktionier hat. Der eigentliche Herausforderung aber ist die Drumsynthese für Bassdrum, Snare, Hihat usw. - bisher klingt das gar nicht so schlecht. Die Anteile Sample + Synthese lassen sich separat hinzumischen.

Gibt es eigentlich noch weitere Oszillatoren oder Module, die außerhalb des Audio Design Tools verfügbar sind?
Soundmäßig würde ich ja sehr gern Richtung Microtonic gehen.


1703828916279.png
 
Ich wünsche Euch ein gesundes, neues Jahr 2024

Zwischenzeitlich sind meine Bauteile von Eckstein eingetroffen. Um das Arbeiten mit diesen externen Komponenten kennenzulernen, habe ich weiter am Bass-Synth gearbeitet. Eine Drummachine mit 4 Voices erfordert doch eine recht komplexe Steuerung, was mir als Einsteigerprojekt ungeeignet erscheint.

Erwartungsgemäß haben sich bereits einige Fragen aufgetan. Seltsamerweise laufen die eher schwierigen Komponenten bereits. Die beiden Encoder konnte ich nach einiger Bastelei integrieren - laufen prima, genauso wollte ich das. Und auch das Display war gar nicht so schwierig, wie ich annahm. Mit der I2C-Library ging das sehr gut.

1704086539638.png





Die beiden Taster allerdings machen nach mehrerer Versuchen immer noch Probleme.

Zunächst hatte ich den Aufbau vom Teensy-Audiotutorial (https://www.pjrc.com/store/workshop_t4.pdf) probiert. Dabei wird ein Pin mit GND gelegt, der andere mit einem Eingangs-Pin vom Teensy verbunden. Den Aufbau habe ich in mehreren Varianten probiert, aber es tut sich absolut nichts. Ich bekomme keine Rückmeldung oder irgendwelches Feedback.

1704086674917.png



Im zweiten Anlauf habe ich einen Aufbau aus der Arduino-Bibliothek ausprobiert, bei der der Taster einen Pullup-Widerstand erhält. Das alles habe ich nach dem Schema auf dem Bild aufgebaut. Über die Bouce-Library in der IDE bekomme ich immerhin ein Feedback und irgendwie wir das Event auch ausgelöst - allerdings sehr, sehr unregelmäßig. Außerdem bootet sich der Teensy nach mehrmaligen Drücken des Tasters neu. Irgendwie ist also auch das nicht.

1704086703767.png


Vielleicht kann mir ja jemand im Detail erklären, wie ich einen Taster mit dem Teensy einbinde, damit es auch funktioniert. Ich verstehe selbst nicht, dass die einfachste Komponente bei mir Probleme macht. Irgendwo gibt es aber einen Fehler ...



Das zweite Problem betrifft das Audioshield.

1704086973593.png


Hier hatte ich eine Buchsenleiste aufgelötet, um den Teensy "huckepack" nehmen zu können. Das funktionierte auch auf Anhieb prima. Den Code braucht man ja nur minimal umzustellen. Nachdem ich allerdings versuchte die Taster zu integrieren und den Aufbau mehrere Male verändert hatte, lieferte das Audioshield kein Signal mehr. Das habe ich ausgiebig getestet und bekomme da keinen Ton mehr raus. Die Götter wissen warum ...

Um das zu überprüfen habe ich mir kurzerhand ein neues Audioshield bestellt - als auch nochmal einen Teensy ohne SD und Board. Ich möchte nicht immer den aktuellen Synthaufbau vom Board nehmen, um eine neue Funktion oder Komponente auszuprobieren. Mit zwei Boards habe ich eines zum Testen, eines für den Synth.


Danke schonmal für jeden Tipp!
 
Zuletzt bearbeitet:
Finde es auch klasse, dass @Solar Chrome neben den bereits schon sehr coolen Musikproduktionen sich da in die Entwicklung reinfuchst. Meine absolute Hochachtung. Bin sicher, da kommt was Geniales bei raus und hoffentlich wird es ein Open Source DIY Ding 😉
 
Ich wünsche Euch ein gesundes, neues Jahr 2024

Zwischenzeitlich sind meine Bauteile von Eckstein eingetroffen. Um das Arbeiten mit diesen externen Komponenten kennenzulernen, habe ich weiter am Bass-Synth gearbeitet. Eine Drummachine mit 4 Voices erfordert doch eine recht komplexe Steuerung, was mir als Einsteigerprojekt ungeeignet erscheint.

Erwartungsgemäß haben sich bereits einige Fragen aufgetan. Seltsamerweise laufen die eher schwierigen Komponenten bereits. Die beiden Encoder konnte ich nach einiger Bastelei integrieren - laufen prima, genauso wollte ich das. Und auch das Display war gar nicht so schwierig, wie ich annahm. Mit der I2C-Library ging das sehr gut.

Anhang anzeigen 199490





Die beiden Taster allerdings machen nach mehrerer Versuchen immer noch Probleme.

Zunächst hatte ich den Aufbau vom Teensy-Audiotutorial (https://www.pjrc.com/store/workshop_t4.pdf) probiert. Dabei wird ein Pin mit GND gelegt, der andere mit einem Eingangs-Pin vom Teensy verbunden. Den Aufbau habe ich in mehreren Varianten probiert, aber es tut sich absolut nichts. Ich bekomme keine Rückmeldung oder irgendwelches Feedback.

Anhang anzeigen 199491



Im zweiten Anlauf habe ich einen Aufbau aus der Arduino-Bibliothek ausprobiert, bei der der Taster einen Pullup-Widerstand erhält. Das alles habe ich nach dem Schema auf dem Bild aufgebaut. Über die Bouce-Library in der IDE bekomme ich immerhin ein Feedback und irgendwie wir das Event auch ausgelöst - allerdings sehr, sehr unregelmäßig. Außerdem bootet sich der Teensy nach mehrmaligen Drücken des Tasters neu. Irgendwie ist also auch das nicht.

Anhang anzeigen 199492


Vielleicht kann mir ja jemand im Detail erklären, wie ich einen Taster mit dem Teensy einbinde, damit es auch funktioniert. Ich verstehe selbst nicht, dass die einfachste Komponente bei mir Probleme macht. Irgendwo gibt es aber einen Fehler ...



Das zweite Problem betrifft das Audioshield.

Anhang anzeigen 199493


Hier hatte ich eine Buchsenleiste aufgelötet, um den Teensy "huckepack" nehmen zu können. Das funktionierte auch auf Anhieb prima. Den Code braucht man ja nur minimal umzustellen. Nachdem ich allerdings versuchte die Taster zu integrieren und den Aufbau mehrere Male verändert hatte, lieferte das Audioshield kein Signal mehr. Das habe ich ausgiebig getestet und bekomme da keinen Ton mehr raus. Die Götter wissen warum ...

Um das zu überprüfen habe ich mir kurzerhand ein neues Audioshield bestellt - als auch nochmal einen Teensy ohne SD und Board. Ich möchte nicht immer den aktuellen Synthaufbau vom Board nehmen, um eine neue Funktion oder Komponente auszuprobieren. Mit zwei Boards habe ich eines zum Testen, eines für den Synth.


Danke schonmal für jeden Tipp!
Ich habe schonmal die Erfahrung gemacht, dass die Kontakte in so einem Breadboard nicht wirklich gut sind. Zur Sicherheit vielleicht doch mal anlöten? Die meisten Probleme, die ich bisher mit meinem DIY Geraffel hatte waren Kontaktprobleme. Gerade heute morgen habe ich bei meinem Microdexed Touch ein paar Encoder-Pins nachgelöste und siehe da: Er läuft wieder stabil.
Update: Alternativ zum Anlöten auch einfach mal mit Messgerät “durch piepsen”.
 
Zuletzt bearbeitet:
Vielleicht kann mir ja jemand im Detail erklären, wie ich einen Taster mit dem Teensy einbinde, damit es auch funktioniert. Ich verstehe selbst nicht, dass die einfachste Komponente bei mir Probleme macht. Irgendwo gibt es aber einen Fehler ...
Kommt drauf an, was die Library die Du verwenden möchtest erwartet. Es gibt zwei Möglichkeiten:
  • "High Active" D.h. die library erwartet, das während Tastendruck das Signal von "0" auf "1" geht. Dazu wird die Signalleitung per Pull-Down Widerstand nach GND gezogen und der Taster zwischen Vcc und Signalleitung gelegt. (Das entspricht der Beschaltung des Arduino)
  • "Low Active", D.h. ein Tastendruck bewirkt eine Signaländerung von "1" nach "0" Hier wird Die Signal-Leitung per Pull-Up nach "+Vcc" gezogen und der Taster zwischen Signalleitung und GND gelegt. Das wird die Variante aus dem Teensy-Tutorial sein. s.U.
Fast alle Mikrocontroller haben heutzutage eingebaute "Pull" Widerstände an den Ports. Diese lassen sich oftmals konfigurieren, meistens hat man zuschaltbare "Pull-Up" Widerstände. (Deswegen fehlen bei dem Teensy-Tutoral auch die Widerstände) Es könnte bei Dir an Kontaktproblemem mit dem Breadboard gelegen haben oder die Taster waren falsch angeschlossen. Bei diesen kleinen Tastern muss man aufpassen, es sind je zwei der Pins dauerhaft miteinander verbunden. (Im Prinzip werden je zwei Pins aus einem einzigen Stück Draht gebogen).

Wenn du ein Multimeter hast, dann kannst Du elektrische Probleme ausschließen indem du die Spannung an der Signalleitung misst und dann mal den Knopf drückst. Für die Teensy-Schaltung muss die Spannung bei ungedrücktem Knopf ca +3.3V sein und bei gedrücktem Knopf 0V. (Damit prüfst du auch den internen Pull-Up des Teensy) Ganz ohne den Teensy geht das auch: Du brauchst dann aber einen Pull-Up Widerstand an der Signalleitung. Mit letzterem Test kannst du schauen, ob der Taster richtig angeschlossen ist.

Natürlich kann es auch an Kontaktproblemem im Taster selbst liegen, gerade bei älteren oder günstigen Tastern oxidieren die Kontaktflächen gerne mal. Evtl ist der interne Pull-Up im Teensy zu klein, müsste man mal die Datenblätter studieren. Bei den Tastern sollte im Datenblatt ein "Minimum current" stehen.
 
Das habe ich ausgiebig getestet und bekomme da keinen Ton mehr raus. Die Götter wissen warum ...
Naja, Einige Pins des Teensy sind dann ja auch mit dem Audioshield verbunden. Wenn es dumm läuft und der Taster falsch verbunden war, hast Du evtl. irgend einen Pin des Teensy oder des Audioshield mit "GND" verbunden. Oder eventuell mit 5V? Das ist fast noch schlimmer: mit Kurschlüssen nach GND kommen die meisten ICs heutzutage zurecht, nicht aber wenn man mehr als die erlaubte Betriebsspannung anlegt. Der Teensy und vermutlich der Schield auch arbeiten mit 3.3V. An den Teensy gibt es aber irgendwo einen Pin wo ca 5V rauskommen, vom USB-Port.
 
Und zu guterletzt: Jumperwires können auch ein Problem sein. Die günstigen Jumperwires haben keine Kupferdrähte, sondern Eisendrähte. Das ist bei weitem nicht so flexibel, die Äderchen brechen sehr schnell bei Bewegung, manchmal sind die schon defekt wenn man die aus der Schachtel holt. Man kann das testen, wenn man so einen Jumpwire mal in der Mitte zerschneidet, abisoliert und versucht wieder zusammenzulöten oder irgendwo anzulöten. Eisen ist fast nicht lötbar, das merkt man ganz schnell.
 
Naja, Einige Pins des Teensy sind dann ja auch mit dem Audioshield verbunden. Wenn es dumm läuft und der Taster falsch verbunden war, hast Du evtl. irgend einen Pin des Teensy oder des Audioshield mit "GND" verbunden. Oder eventuell mit 5V? Das ist fast noch schlimmer: mit Kurschlüssen nach GND kommen die meisten ICs heutzutage zurecht, nicht aber wenn man mehr als die erlaubte Betriebsspannung anlegt. Der Teensy und vermutlich der Schield auch arbeiten mit 3.3V. An den Teensy gibt es aber irgendwo einen Pin wo ca 5V rauskommen, vom USB-Port.
Auf die Tour habe ich mir sogar schon einen Teensy zerstört. Das geht leider sehr schnell. Muss man echt höllisch aufpassen.
 
Ich wünsche Euch ein gesundes, neues Jahr 2024

Zwischenzeitlich sind meine Bauteile von Eckstein eingetroffen. Um das Arbeiten mit diesen externen Komponenten kennenzulernen, habe ich weiter am Bass-Synth gearbeitet. Eine Drummachine mit 4 Voices erfordert doch eine recht komplexe Steuerung, was mir als Einsteigerprojekt ungeeignet erscheint.

Erwartungsgemäß haben sich bereits einige Fragen aufgetan. Seltsamerweise laufen die eher schwierigen Komponenten bereits. Die beiden Encoder konnte ich nach einiger Bastelei integrieren - laufen prima, genauso wollte ich das. Und auch das Display war gar nicht so schwierig, wie ich annahm. Mit der I2C-Library ging das sehr gut.

Anhang anzeigen 199490





Die beiden Taster allerdings machen nach mehrerer Versuchen immer noch Probleme.

Zunächst hatte ich den Aufbau vom Teensy-Audiotutorial (https://www.pjrc.com/store/workshop_t4.pdf) probiert. Dabei wird ein Pin mit GND gelegt, der andere mit einem Eingangs-Pin vom Teensy verbunden. Den Aufbau habe ich in mehreren Varianten probiert, aber es tut sich absolut nichts. Ich bekomme keine Rückmeldung oder irgendwelches Feedback.

Anhang anzeigen 199491



Im zweiten Anlauf habe ich einen Aufbau aus der Arduino-Bibliothek ausprobiert, bei der der Taster einen Pullup-Widerstand erhält. Das alles habe ich nach dem Schema auf dem Bild aufgebaut. Über die Bouce-Library in der IDE bekomme ich immerhin ein Feedback und irgendwie wir das Event auch ausgelöst - allerdings sehr, sehr unregelmäßig. Außerdem bootet sich der Teensy nach mehrmaligen Drücken des Tasters neu. Irgendwie ist also auch das nicht.

Anhang anzeigen 199492


Vielleicht kann mir ja jemand im Detail erklären, wie ich einen Taster mit dem Teensy einbinde, damit es auch funktioniert. Ich verstehe selbst nicht, dass die einfachste Komponente bei mir Probleme macht. Irgendwo gibt es aber einen Fehler ...



Das zweite Problem betrifft das Audioshield.

Anhang anzeigen 199493


Hier hatte ich eine Buchsenleiste aufgelötet, um den Teensy "huckepack" nehmen zu können. Das funktionierte auch auf Anhieb prima. Den Code braucht man ja nur minimal umzustellen. Nachdem ich allerdings versuchte die Taster zu integrieren und den Aufbau mehrere Male verändert hatte, lieferte das Audioshield kein Signal mehr. Das habe ich ausgiebig getestet und bekomme da keinen Ton mehr raus. Die Götter wissen warum ...

Um das zu überprüfen habe ich mir kurzerhand ein neues Audioshield bestellt - als auch nochmal einen Teensy ohne SD und Board. Ich möchte nicht immer den aktuellen Synthaufbau vom Board nehmen, um eine neue Funktion oder Komponente auszuprobieren. Mit zwei Boards habe ich eines zum Testen, eines für den Synth.


Danke schonmal für jeden Tipp!

Schau mal hier: https://www.pjrc.com/teensy/td_libs_Bounce.html

Tip: Einen externen Pullup Widerstand für die Tastenabfrage benötigst du nicht. Dieser ist im Teensy bereits vorhanden und muss nur aktiviert werden:

pinMode(buttonPin, INPUT_PULLUP);

Gruß Rolf
 
Zuletzt bearbeitet:
Problem ist lokalisiert:
Die Pins von den Buttons sind zu kurz und haben auf dem Breadboard keinen Kontakt nach unten. Sowas wird einem als spezieller Arduino-Button verkauft. Prima! Das hat mir jetzt mehrere Tage Nerven gekostet. Ich kann da natürlich Kabel ranlöten, aber gerade Drucktaster hätten sich direkt auf dem Board gut gemacht. Vielleicht geht eine Buchsenleiste drunter.

Danke für Eure Hilfe! Ihr seid toll! :frolic:
@amesser Super erklärt. Genau das wollte ich mal wissen.


Naja, Einige Pins des Teensy sind dann ja auch mit dem Audioshield verbunden. Wenn es dumm läuft und der Taster falsch verbunden war, hast Du evtl. irgend einen Pin des Teensy oder des Audioshield mit "GND" verbunden. Oder eventuell mit 5V? Das ist fast noch schlimmer: mit Kurschlüssen nach GND kommen die meisten ICs heutzutage zurecht, nicht aber wenn man mehr als die erlaubte Betriebsspannung anlegt. Der Teensy und vermutlich der Schield auch arbeiten mit 3.3V. An den Teensy gibt es aber irgendwo einen Pin wo ca 5V rauskommen, vom USB-Port.

Der Teensy funktioniert noch einwandfrei, nur das Audioshield macht Probleme. Mit den 5V hatte gar nicht arbeitet, aber vielleicht ist da wirklich etwas schiefgelaufen. Aus diesem Grund habe ich es neu bestellt. Im Zweifelsfall habe ich dann 2 Audioshields. Für das normale Herumtesten reicht aber der analoge Ausgang vom Teensy. Man hat dann auch mehr Übersicht zum Stecken der Jumperkabel.
 
1704171495025.png

Da ich den Fehler der Buttons finden konnte, geht die Arbeit am Synthie weiter. Ich habe jetzt 3 Buttons implementiert, die die Wellenformen der Oszillatoren einstellen und das Tuning zwischen den Osc1 und Osc2. Langsam nicht das alles Form an. Geplant ist aber, dass man mit den Buttons jeweils Pages aufrufen kann, die Parameter auf die Encoder legen. Das kommt aber später, wenn die Soundstruktur an sich stimmt.

Allerdings habe ich gemerkt, dass die Ausgabe auf das Display via I2C den Audiostream verzögert. Das bedeutet, dass man bei jedem Dreh am Encoder den Audiostream unterbricht. Das geht natürlich nicht - so kann man den Synth ja nicht live spielen. Ich habe verschiedene Ansätze probiert. Auch das Austauschen der Wire-Bibliothek gegen die I2C-Wire von https://github.com/Richard-Gemmell/teensy4_i2c konnte das Problem nicht lösen.

Letztlich habe ich es so gemacht, dass das Display nur bei einem NoteOn aktualisiert wird und das funktioniert eigentlich ganz gut. Die Soundparameter werden ja auch erst mit der nächsten Note aktualisiert. Vielleicht hat noch jemand eine Idee, wie man I2C-Displays ohne Unterbrechung des Audiosignals nutzen kann.

@rolfdegen Was nutzt Du denn für ein Display? Kennst Du das o.g. Problem?
 
Allerdings habe ich gemerkt, dass die Ausgabe auf das Display via I2C den Audiostream verzögert. Das bedeutet, dass man bei jedem Dreh am Encoder den Audiostream unterbricht. Das geht natürlich nicht - so kann man den Synth ja nicht live spielen. Ich habe verschiedene Ansätze probiert. Auch das Austauschen der Wire-Bibliothek gegen die I2C-Wire von https://github.com/Richard-Gemmell/teensy4_i2c konnte das Problem nicht lösen.
Das Problem bei den vielen fertigen Bibliotheken ist, das dort oft nicht auf Echtzeitfähigkeit geachtet wird. Um richtige Echtzeitfähigkeit zu bekommen, muss man sich Gedanken über die Abläufe und deren Verteilung im ganzen System machen. Da spielen dann Interrupte, deren Prioritäten und wenn verfügbar - Threads eine große Rolle. Da gibt es dann viele Randbedingungen, u.a. die begrenzten Resourcen. Ich kenn mich mit dem Teensy-Zeug nicht so gut aus, aber nehmen wir mal an, das die ganze Audio-Verarbeitung im Interrupt stattfindet. Dann kann diese die anderen Aufgaben unterbrechen. Aber das funktioniert nur dann, wenn die Interrupt-Prioritäten korrekt eingestellt sind und an keiner anderen Stelle im Code die Interrupte für längere Zeit global gesperrt werden. Ich könnte mir vorstellen, das die I2C Bibliotheken ebenfalls Interruptroutinen verwenden. Wenn diese eine höhere Priorität haben als die Audio-Interrupte, dann können die I2C Interrupt die Audio-Interrupte unterbrechen und somit für Verzögerungen im Datenstrom sorgen.
Solche Echtzeitanwendungen zu programmieren ist nicht einfach, weil man viele Sachen beachten muss. Am Ende des Tages muss man sich auch mit asynchronen Abläufen beschäftigen, was das ganze nochmal komplizierter macht. Asynchron bedeutet, das ein Funktion nicht sofort fertig ist, nachdem an sie aufgerufen hat. z.B. beim I2C könnte man sich eine Funktion "Write_Request" vorstellen, die einen Schreibvorgang zwar startet, aber zurück kommt noch bevor der I2C Bustransfer fertig ist. Wenn der Transfer dann später fertig ist wird dann ein Event/Callback erzeugt auf den man dann wiederum reagieren muss damit es weiter geht. Man kann dann im code natürlich nicht einfach "Write_Request" mehrfach hintereinander schreiben, sondern muss warten bis man den "Complete" Event bekommt. Typischerweise braucht man dann eine State-Machine mit der man die I2C Sequenzen in einzelne Requests aufteilt und gestückelt abarbeitet.
Als ersten Schritt könntes Du mal die Interrupt-Prioritäten prüfen und so einstellen, das die Audio-Interrupte eine höhere Priorität haben als der Rest. (ARM CPUs wie die im Teensy haben typischerweise 8 - 16 Prioritätslevel für Interrupte)

Vielleicht hilft das hier weiter:

 


News

Zurück
Oben