Forum: Mikrocontroller und Digitale Elektronik Teensy Synth "Shruthi 2"


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Hallöchen zusammen..

Ich entwickel zur Zeit einen neuen DIY Synthesizer auf Basis eines 
Teensy 4.0 Boards. Der Synthesizer wird ähnlich aussehen wie der kleine 
Shruthi Synthesizer von Mutable Instruments. Im Vergleich zum Shruthi 
wird dieser Synth mehrstimmig sein, ein farbiges TFT Display besitzen 
und noch andere Dinge wzB ein 2Channel 16Bit DA-Wandler, digitale und 
analoge Filter. Das Gehäuse- und Platinen-Format wird ähnlich dem 
Shruthi sein (siehe Bild). Deshalb habe ich für das DIY Project auch den 
Namen "Shruthi 2" gewählt.

Display Test am Teensy: https://youtu.be/14eL3NDJccw

Gruß Rolf

: Bearbeitet durch User
von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kleines Update..

"Bald wird wieder Musik gemacht.."  :))

Ich habe das 2.2 Zoll große TFT Display gegen ein kleineres 1.8 Zoll 
Display ersetzt. Ich bin der Meinung das passt besser zu dem kleinen 
Shruthi Format. Das 2.2 Zoll Display hat doch etwas überladen 
ausgesehen. Wellenformdarstellungen und Menütexte passen auch auf so 
einem kleinen Farbdisplay mit einer Auflösung von 128 x 160 Pixel.

Das Teensy 4.0 Board habe ich auf die Rückseite gesetzt. Was noch fehlt 
ist der 16Bit 2Ch. DA-Wandler PT8211. Dieser ist bestellt. Mit den 4 
Potis steuert man die Parametereinstellung. Der Encoder ist mit einer 
Tastenfunktion ausgestattet und steuert die Menüfunktionen. Es gibt 4 
analoge Eingänge für Modulation. Midi-Buchsen und 6 Tasten und 8 LED's.

Es wird die Möglichkeit geben, den "Shruthi 2" mit oder ohne Filterboard 
zu betreiben. Man hat dann die Möglichkeit, die digitalen Filter im 
Teensy zu nutzen.

Gruß Rolf

: Bearbeitet durch User
von tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rolf D. schrieb:

> "Bald wird wieder Musik gemacht.."  :))

Kannst Du etwas zur Latenz sagen?
Bzw. ist der Teensy auch für Eurorack interessant, in interaktion mit 
CV?

Schön wäre, wenn man bei deinem Synth die Form der Hüllkurven einstellen 
oder gar modulieren könnte.
Das ist eine sehr mächtige Funktion, die auch im Mix sehr wichtig ist 
und letztlich Kompressoren oft überflüssig macht.
Unterschätze niemals das Anpingen von Filtern ...

Was für eine Syntheseform wird es?

von Rolf D. (rolfdegen)


Bewertung
0 lesenswert
nicht lesenswert
Wellenform-, Wavetable-, Granular-, FM-, PWM-, Subtraktive-, Additive-, 
16Bit Samples, Digitale und Analoge Filter, Delay und Hall Effekte. Mal 
schaun was der kleine Professor so alles kann. Sound 16Bit DAC mit 
44.1KHz und Oversampling. Hülkuven: DAHDSR (Delay Attack Hold Decay 
Sustain Release), Sequencer, TFT color Display, Shruthi-Filterboards 
uvm..

von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
tom schrieb:
> Kannst Du etwas zur Latenz sagen?
> Bzw. ist der Teensy auch für Eurorack interessant, in interaktion mit
> CV?

Hallo Tom

Ich habe jetzt Midi integriert und die Latenz gemessen. Sie liegt im 
Bereich von 5ms. Die ADC-Eingänge im Teensy 4.0 und Teensy 4.1 rauschen 
sehr. Eine 12Bit Auflösung für Modulationszwecke dadurch kaum machbar. 
Ich benutze 4 Potis an den ADC Eingängen mit einer 7Bit Auflösung. Das 
funktioniert gut. Für meine 4 Modulationseingänge werde ich einen 
externen 12Bit AD-Wandler zB den MCP3208 benutzen. Der hat einen 
Referenzspannungseingang. Beim Teensy 4.0 und 4.1 ist die 
Referenzspannung für den ADC direkt mit der Versorgungsspannung im Chip 
verbunden. Einen externen Referenzspannungseingang gibt es leider nicht.

Gruß Rolf

von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
First sound on my Teensy Synth "Shruthi 2" . Der Sound ist nicht 
besonders gut da er vom Handy aufgenommen wurde. Die Hardware besteht 
jetzt aus einem Teensy 4.1 Board und SGTL5000 2ch. 16Bit DAC. Zur Zeit 
ist der Shruthi2 noch einstimmig. Er soll später aber 6stimmig werden.

Video: https://youtu.be/ffCMaR70G6g

Gruß Rolf

: Bearbeitet durch User
Beitrag #6439961 wurde vom Autor gelöscht.
von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hallöchen..

Zur Zeit beschäftige ich mich viel mit der Entwicklung des kleinen
"Shruthi 2" Synthesizer. Ein häufiges Problem bei Entwicklungen von
Musikelektronik Projekten am PC, ist ein störendes 50Hz Brummen im
Audiosignal. Schuld ist eine Masseschleife die durch eine Doppelerdung
durch das Tonsignalkabel zwischen PC, Mischpult, USB-Schnittstelle und
Oszilloskop, sowie dem Schutz-
kontaktleiter in der Elektroanlage entsteht.

Um das Brumm-Problem an meinem Arbeitsplatz in den Griff zu kriegen,
habe ich einen NF-Übertrager (Niederfrequenz-Übertrager) und USB
Isolator enutzt. Beide Geräte trennen das Signal galvanisch vom Synth
zum Mischpult und der USB-Schnittstelle am PC. Jetzt kann ich ohne
störendes Brumm mit dem geerdeten Oszilloskop am Synthesizer messen. Der
vewendete USB-Isolator von Meilhaus ist USB-1 und USB-2 kompatibel und
funktioniert unter Windows 10
problemlos. Ohne Probleme konnte ich auch mein Teensy 4.1 Board über den
USB-Isolator programmieren.

1.Bild: USB Isolator
Link:
https://www.reichelt.de/meilhaus-usb-isolator-me-usb-iso-me-usb-iso-p266402.html?search=ME+USB

2.Bild: NF-Übetrager
Link:
https://www.monacor.de/produkte/beschallungstechnik/signalverarbeitung/signaloptimierung/fga-40hq/

Gruß Rolf

von Bülent C. (mirki)


Bewertung
1 lesenswert
nicht lesenswert
schönes Projekt!
In meinen Audio Projekten hatte ich vieles immer auf Differential 
ausgelegt. Dadurch hatte ich die "Erdungsprobleme" nicht.

von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ab heute tanzen wir mehrstimmig :)

Der "Shruthi 2" hat jetzt 6 Stimmen und spielt polyphon. Ich denke man 
kann das noch auf 8 Stimmen ausbauen, da die Prozessorauslastung 
inklusiv der Filterberechnung unter 6% liegt. Zur Zeit gibt es nur einen 
Oszillator pro Stimme. Es werden später aber 2 pro Stimme. Die 
Oszillator Funktionen sind noch nicht integriert. Das ist jetzt mein 
nächster Schritt. Am Klang wird noch gearbeitet. Es ist halt noch viel
zu programmieren. Packen wirs an ;-)

1.Bild: Der Synth Block
2.Bild: Prototyp "Shruthi 2"

Video Link: https://youtu.be/Oj_5WZgwOww

Gruß Rolf

: Bearbeitet durch User
von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen :)

Ich habe die Potentiometer-Abfrage in den Setup-Einstellungen noch etwas 
optimiert. Das verhindert das zufällige Springen der Potiwerte in den 
Menüseiten.
#include <ResponsiveAnalogRead.h>

//init ADC inputs fom Teensy in Setup function
  pinMode(14, INPUT_DISABLE);
  pinMode(16, INPUT_DISABLE);
  pinMode(17, INPUT_DISABLE);
  pinMode(22, INPUT_DISABLE);
        ResponsiveAnalogRead analog1(A0, true);
        ResponsiveAnalogRead analog2(A2, true);
        ResponsiveAnalogRead analog3(A3, true);
        ResponsiveAnalogRead analog4(A8, true);
  analog1.setActivityThreshold(16);
  analog2.setActivityThreshold(16);
  analog3.setActivityThreshold(16);
  analog4.setActivityThreshold(16);
  analog1.enableEdgeSnap();
  analog2.enableEdgeSnap();
  analog3.enableEdgeSnap();
  analog4.enableEdgeSnap();

//*************************************************************************
// read Potentiometers 
//*************************************************************************
boolean read_pots (void)
{
  boolean pot_change = false;
  
  // read Potentiometer 1
  if (analog1.hasChanged() == true){
    pot_1 = ((analog1.getValue())>> 3);
    pot_1_change = true;
    pot_change = true;
  }
  
  // read Potentiometer 2
  if (analog2.hasChanged() == true){
    pot_2 = ((analog2.getValue())>> 3);
    pot_2_change = true;
    pot_change = true;
  }
  
  // read Potentiometer 3
  if (analog3.hasChanged() == true){
    pot_3 = ((analog3.getValue())>> 3);
    pot_3_change = true;
    pot_change = true;
  }
  
  // read Potentiometer 4
  if (analog4.hasChanged() == true){
    pot_4 = ((analog4.getValue())>> 3);
    pot_4_change = true;
    pot_change = true;
  }
  
  boolean temp_flag = pot_change;
  pot_change = false;
  return temp_flag;
}

Im Anhang der komplette Arduino Code. Alles noch in Arbeit ;)

Gruß Rolf

von tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rolf D. schrieb:
> Midi integriert und die Latenz gemessen. Sie liegt im
> Bereich von 5ms. Die ADC-Eingänge im Teensy 4.0 und Teensy 4.1 rauschen
> sehr. Eine 12Bit Auflösung für Modulationszwecke dadurch kaum machbar.

Danke für die Angtwort. 5ms sind ja gerade an der Grenze des Virtuosen.
Vielleicht rauscht alles mit einer linearen Spannungsversorgung weniger 
als mit USB-Strom?
Da ich jetzt Deine Grafik der Hüllkurve gesehen habe und du es 
viellleicht überlesen hast oder nach wie vor unterschätzt:

tom schrieb:
> Schön wäre, wenn man bei deinem Synth die Form der Hüllkurven einstellen
> oder gar modulieren könnte.
> Das ist eine sehr mächtige Funktion, die auch im Mix sehr wichtig ist
> und letztlich Kompressoren oft überflüssig macht.
> Unterschätze niemals das Anpingen von Filtern ...

Einfach die Hüllkurve mit sich selbst rückgekoppelt positiv oder negativ 
multiplizieren.
Oder die einzelnen Stufen

hoch 1  linear,
hoch >1 konkav,
hoch <1 konvex.

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sehr schönes Projekt! :)

Rolf D. schrieb:
> Die ADC-Eingänge im Teensy 4.0 und Teensy 4.1 rauschen
> sehr. Eine 12Bit Auflösung für Modulationszwecke dadurch kaum machbar.

..man könnte zumindest das Rauschen modulieren.
Beim Yamaha TX16W ließen sich die Filtertables ganz gut modulieren, der 
hatte auch nur 12Bit. (Allerdings erst viele Jahre später..)
(und außerdem hatte der eine (für seine Zeit) ziemlich gute 
Tonhöhen-Erkennung bei Eingangssignalen.)

von Rolf D. (rolfdegen)


Bewertung
0 lesenswert
nicht lesenswert
Hallöchen aus dem schönen Wuppertal (:

Für die vier externe Modulationsbuchsen werde ich einen MCP3204 oder 
MCP3208 verwenden. Der hat 12Bit und einen externen 
Referenzspannungsanschluss.

Gruß Rolf

von Rolf D. (rolfdegen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen..

Heute habe ich das KeyTracking für den Filter implementiert. Der 
Digitale Multimode-Filter hat einen Steuereingang mit der Bezeichnung 
octaveControl(). Darüber lässt sich die Filtereckfrequenz steuern.

An diesen Steuereingang wird das Signal für Filter Envelope und für das 
KeyTracking über einen Mixer angeschlossen (siehe SynthBlock).

Die Filtereckfrequenz (cutoff) wird über den Parameter frequency() 
eingestellt und die Resonanz über den Parameter resonance().

1.Bild: Digital Multimode-Filter 
https://i.ibb.co/pP9N6Ts/Shruthi2-Synth-Block.jpg
2.Bild: SynthBlock

Später gibts noch eine Hörprobe.

Gruß Rolf

: Bearbeitet durch User
von Audiomann (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rolf D. schrieb:
> Wellenform-, Wavetable-, Granular-, FM-, PWM-, Subtraktive-, Additive-
Geht mit der Wavetable auch Wave-Guide-Synthese?

Ich würde gerne sowas nachbauen:
Beitrag "Tonerzeugung und Klangformung mit wenig Rechenbedarf"
(siehe Beispielklang)

von tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
klar geht das.
hier ist die GUI zum einfachen Patchen im Teensy:
https://www.pjrc.com/teensy/gui/index.html?info=AudioSynthWaveform

Je nachdem, was deine Ansprüche sind, wieviel Zeit Du hast und wie es am 
Ende genau aussehen soll, würde ich dir jedoch eine mächtigere 
Entwicklungsumgebung wie Pure Data (läuft auch embedded) oder 
SuperCollider oder Csound oder Faust oder Python empfehlen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.