Jump to content

AVR-Synthesizer "WAVE 1"


rolfdegen

Recommended Posts

Hallo Thorsten

 

Interessehalber hatte ich mir vor einigen Monaten das sehr preiswerte STM32F4DISCOVERY Evaluation Board gekauft und ein wenig damit experimentiert (siehe Link unten) Leider sind die wirklich guten Entwicklungstools dafür etwas teuer. Ich programmiere gerne mit ATMEL Studio. Es hat viele Vorteile wzB leichte Bedienung, keine Codegrößenbeschränkung und ist Freeware. Es ist mir schon bewusst, das die ATMEL MCU's nicht zu den schnellsten ihrer Gattung zählen. Aber Geschwindigkeit ist halt nicht alles was zählt. Die ATMEL MCU's haben ihren Vorteil in der Menge der angebotenen internen Peripherie und sowie einen großen Funktionsumfang. Im Vergleich dazu sieht so ein schneller STM32F4 etwas alt aus.

 

Link: Meine ersten Erfahrungen mit dem STM32F4DISCOVERY Evaluation Board

 

Gruß Rolf   

Edited by rolfdegen
Link to comment
Share on other sites

Hallo Rolf,

 

wenn Du bereits ein STM32F4DISCOVERY Board hast, koenntest Du bspw. mit diesem Tutorial direkt loslegen, einen Synthesizer zu programmieren: http://svnmios.midibox.org/listing.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Ftutorials%2F024_i2s_synth%2F

 

MIOS32 bietet ja schon alles was man dafuer braucht. Vor allem die I2S und MIDI (USB und UART basierend), scannen von Buttons, Encodern, LEDs, verschiedene LCD typen (character oder graphisch), SD Card, usw. usw.

 

Die Toolchain basiert auf gcc mit nanolib: http://www.midibox.org/mios32_toolchain/

Und zum Aufladen von Code, sowie zum Debuggen via printf verwendet man MIOS Studio: http://www.ucapps.de/mios_studio.html

 

Alternativ koennte man auch mit Eclipse debuggen (falls Du eine IDE suchst, mit der man bspw. Breakpoints setzen kann, waehrend der Laufzeit Variablen abrufen kann, usw) - irgendwo gab es mal ein Thread zu diesem Thema.

 

 

Die ATMEL MCU's haben ihren Vorteil in der Menge der angebotenen internen Peripherie und sowie einen großen Funktionsumfang. Im Vergleich dazu sieht so ein schneller STM32F4 etwas alt aus.

 

Welche Peripherals bietet die Atmel MCU, die nicht im STM32F4 enthalten sind?

(wenn man mal vom Audio DAC absieht, doch ein externer DAC ist u.U sogar vorteilhaft, weil man die Spannungsversorgung besser gegen Stoerungen aus der digitalen Spannungsdomaene isolieren kann)

 

Gruss, Thorsten.

Link to comment
Share on other sites

Hallo Thorsten

 

Erst einmal vielen Danke für die guten Infos. Ist wirklich interessant was sich in Bezug auf die STM32 MCUs dieses Jahr so getan hat. Das sah letztes Jahr bei meinen ersten Gehversuchen mit dem STM32F4 Discovery Board noch etwas mager aus. Wenn ich mein Synth Project in den nächsten Wochen abgeschlossen habe, plane ich eine verbesserte 2.Version. Das Kind hat auch schon einen Namen.. "WAVE 2". Vielleicht mit einem STM32. Schaun wir mal .. :smile:

 

Ãœbrigens bin ich gerade dabei, die Loop-Funktion für die Wavesamples in meinem Synth zu programmieren. Gute Ideen und Anregung für die Umsetzung verschaffe ich mir aus dem Bedienungshandbuch des PPG Waveterm A  und einigen Demos auf Youtube.

 

PPG WAVETERM A 2.2

 

 Schon geil die Sounds  :smile:  Die Loopfunktion funktionier bei mir ähnlich. Nur mit dem einzigen Unterschied das ich statt 64KByte ganze 1Mbyte Samplespeicher habe, dazu noch 2x VCF's (OTA13700) und 2x VCA's (OTA13700).  

 

Gruß Rolf

Edited by rolfdegen
Link to comment
Share on other sites

Hallöchen..

Obwohl Weihnachten vor der Tür steht und noch so viele Dinge zu tun sind (wir wollen am 24. eine kleine Weihnachtsparty geben), habe ich noch etwas Zeit gefunden an meinem Synthesizer zu arbeiten.

Wie in meinem letzten Beitrag schon erzählt, programmiere ich gerade an einem simplen Wave Editor in meinem Synthesizer. Zur Zeit können nur Loop-Punkte für die Wiedergabe der Wavefiles gesetzt werden. Später werden noch mehr Funktionen folgen.
Man glaubt gar nicht, wieviel Entwicklungsarbeit hinter so simplen Funktionen wie zB einer Cursorsteuerung für ein Grafikdisplay stecken und die Auswahl eines Loop-Pointers für die Wellenform. Es reicht leider nicht aus, eine einfach senkrechte Linie für den Cursor auf dem Display zu zeichnen. Bevor das geschieht, muss als erstes der Bildschirmhintergrund gerettet werden, damit beim späteren Ändern der Cursorposition der alte Hintergrund (Wellenform) wieder restauriert werden kann.

Wave-Editor
WaveEditor.jpg

Youtube: 




Viel Gedankenschweiß hat mich auch die Zoom-Funktion für die Darstellung der Wellenform gekostet. Wenn man bei einer kleineren Auflösung der Wellenform zB nur jeden 10.Sample darstellt, dann enstehen große Lücken in der Amplitudenabbildung der Wellenform und somit auch eine fehlerhafte Darstellung auf dem Display. Das könnte man sicherlich in "Hoher Mathematik" lösen, aber Rechenzeit auf dem Xmega-Prozessor ist kostbar. Also habe ich nach einer anderen Lösung gesucht. Nach etlichen Überlegungen und viel Gedankenschweiß bin ich mit Hilfe von "Audacity" (Audioeditor) auf eine annehmbare Lösung gestoßen. Mal angenommen der 1.Sample hätte einen Amplitudenwert von 10, der 5. von 255, der 10. von 18. Dann würde bei einer Sampleabtastung von nur jedem 10.Samplewert der 2. Wert (255) mit der höchten Amplitude fehlen. Also liegt es doch nahe, aus der Gruppe von den 10 Samples nur diesen zu nehmen, der die höchsten Amplitude hat. Und genau das ist die Lösung. Die Abbildung entspricht jetzt einer Hüllkurve dieser Wellenform.

Gruß Rolf 
Link to comment
Share on other sites

Hallo zusammen..

Ich wünsche allen meinen Lesern und den Machern des MidiBox Forums ein schönes und fröhliches Weihnachtsfest. Last euch reich beschenken und seit nicht traurig, wenn ihr wiedermal ein Paar Socken von Tante Hildegard geschenkt bekommt, oder ein neues Topfset vom lieben Ehemann. Freut euch trotzdem, es ist schließlich Weihnachten smile.gif 

Um die Zeit zur Bescherung zu überbrücken hier noch ein schönes musikalisches Weihnachtsvideo. Viel Spaß und Frohe Weihnacht holy-willi.gif 

A Synthesizer for Christmas von Ambar Navarro
http://vimeo.com/81973720



Lieben Gruß aus Wuppertal. Rolf 

Edited by rolfdegen
Link to comment
Share on other sites

Hallo zusammen..

In den Elektronik-Scene scheint momentan viel los zu sein. Da tanzt der Bär wie man im Volksmund so sacht. Die "Alten" und "Jungen" haben wieder mehr Lust bekommen etwas selber zu machen und zu basteln. Das liegt vermutlich darin Begründet, dass die Elektronikbauteile durch den Import aus Fernost sehr preiswert geworden sind und zum anderen, dass die Hersteller kostenlose oder preiswerte Entwicklungswerkzeuge zur Verfügung stellen und die Communities im Netz besser unterstützen. Zum Beispiel sei genannt die Firma ATMEL mit ihrem kostenlosen Entwicklungumgebung (IDE) "Atmel Studio" und das Forum "AVRFreaks". Ich selber arbeite seit zwei Jahren mit Atmel Studio. Meine bevorzugten Communities sind "www.mikrocontroller.net", "www.avrfreaks.net", "Mutable Instruments" und das MidiBox Forum.


Die Loop Funktion im Synthesizer
Mein Synthesizer ist jetzt mit einem 1MByte großen Wellenform Ram ausgestattet. Dadurch lassen sich auch sehr große Samples abspielen. Aber nur das einfache Abspielen eines Samples im Synthesizer und die Steuerung der Abspielgeschwindigkeit (Tonhöhe) wäre musikalisch gesehen etwas zu langweilig. Aus diesem Grund hat man das "Loopen" erfunden. Es handelt sich dabei um das wiederholte Abspielen eines bestimmten Sample Bereiches. Als es noch keine Sample-Player gab, hat man ein an beiden Enden zusammengeklebtes Stück eines Tonbandes genommen und wiederholt abgespielt. Eine ähnliche Technik ist im Jahre 1963 im Mellotron, dem Vorläufer des modernen Samplers angewendet worden.

Mellotron
Mellotron.jpg



Die Loop-Funktion für die Samples habe ich in einer Unterseite des Osc-Menüs integriert und kann über die Funktionstaste am Synthesizer aufgerufen werden. Ob ein Menü eine Unterseiten besitzt, sieht man an einem kleinen eingeblendeten Symbol (Fensterrahmen mit Pfeil) oben rechts neben der Seitennummer. An einer Funktion zum Laden verschiedener Wellenform-Files wird noch gearbeitet.

Loop Funktion
Loop_01.jpg



Um die Bedienung für die Loop Einstellung zu vereinfachen, habe ich die Cursorsteuerung über drei Encoder realisiert. Mit dem 1. Encoder steuer man den Cursor über die Wellenform. Befindet sich der Cursor jeweils am linken oder rechten Rand, dann wird automatisch der Wellenformauschnitt verschoben. Der 2. Encoder ist für die Zoom Funktion zuständig. Gezoomt wird immer an der aktuellen Cursor Position und in Bildschirmmitte. Mit dem 3. und 4. Encoder lässt sich der Loop-Anfang (LoopA) und das Loop-Ende (LoopB) einstellen. Zur Veranschaulichung habe ich ein Video auf Youtube hochgeladen. 

Bis zum nächsten mal und lieben Gruß. Rolf  Edited by rolfdegen
Link to comment
Share on other sites

Hallo Thorsten

 

Die Granularsynthese ist schon sehr interessant. Hab dazu ein tolles Programm Namens "GranuLab" gefunden (Real-time control over time-stretching and pitch of a sound.).  Eine ähnliche Synthes baue ich vielleicht in den Nachfolger meines Synths ein (WAVE 2). Dieser wird einen leistungsstärkeren Prozessor besitzen und damit für solche Syntheseberechnungen besser geeignet sein als mein jetziger Xmega Chip mit 8Bit und 32MHz :smile:

 

Es ist auf jeden Fall schon erstaunlich, was man aus dem Xmega an Leistung alles rauskizzeln kann. 

 

In dem Sinne auf ein interessantes und schönes neue Jahr 2014. 

 

Gruß Rolf

Edited by rolfdegen
Link to comment
Share on other sites

Anyone seriously interested in granular synthesis should check out the Hadron Particle Synthesizer that a colleague of mine is developing here in Trondheim. There are some really great sound demos on the Download page under Resources, too. Hadron itself is free, you only pay for the expansion packs (should you need them).

  • Like 1
Link to comment
Share on other sites

Hallo zusammen. Ich wünsche allen ein schönes und interessantes neues Jahr 2014

Zur Zeit arbeite ich an einer Soundverwaltung für meinen Synthesizer. Für die Datenspeicherung benutze ich eine handelsübliche 4Giga Byte große SDCard, auf der maximal 12800 Sounds verwaltet werden können. Von der SD Karte werden alle Soundparameter, Wellenformen und Samples in den Synthesizer geladen.Es ist schon erstaunlich, wenn man die Synthesizer und Sampler aus den 80er Jahren mit der heutigen Technologie vergleicht. Das Laden von Wellenformen und Samples dauerte damals je nach Datengröße schon mal etwas länger und nebenbei hatte man noch Zeit für eine Tasse Kaffee (siehe Video). Bevorzugte und preiswerte Speichermedien für die Synthis und Sampler waren damals 5.25 Zoll oder 3.5 Zoll Disketten. Die größeren und teuren Systeme hatte sogar schon Festplatten mit einer "sagenhaften" Kapazität von 10MByte. Die heutige Speichertechnologie ist im Vergleich dazu in astronomischer Größe gewachsen und auch wesentlich schneller und einfacher in ihrer Handhabung geworden. Eine Speichergröße von 64Giga Byte auf einer winzigen SD Karte wäre zur damaligen Zeit undenkbar gewesen.

PPG WAVETERM aus den 80er Jahren
PPG_Disk.PNG 

Youtube: 




Ich habe versucht, das Laden und Abspeichern von Sounddateien in meinem Synthesizer etwas zu vereinfachen. Dafür habe ich eine einfache Datenstruktur mit drei Hauptordnern auf der SD Karte entwickelt (siehe Bild). Im Ordner "Sound" befinden sich 100 Sound Bänk. Jede Soundbank  enthält die Klangparameter für 128 Sounds. Pro Sound sind 256 Byte für die Klangparameter reserviert, das macht insgesamt pro Soundbank also 256*128 = 32KByte an Daten. Der Ordner "WAVE" beinhaltet alle Wellenformen für die Klangsynthese wzB Sinus, Rechteck, Sägezähn uvm. Der Ordner "Sample" beinhaltet, wie der Name schon sagt, alle ladbaren Samples. Maximal können in 100 Sample Bänken mit jeweils 128 Samples verwaltet werden. Das gleiche gilt natürlich auch für den Wellenform Ordner. Wellenformen und Samples können in der jetzigen Softwareversion im Synthesizer nur geladen werden. Erstellen kann man diese aber ohne große Probleme mit dem Audioeditor "Audacity" unter Windows und auf die SD Karte kopieren. So ist dem Klangbastler kaum eine Grenze gesetzt.

 

 


Datenstruktur auf der SD Karte

(Kleiner Fehler in der Zeichnung: sollten 100 statt 99 Bänke sein).
Datenstruktur.jpg 

Datei Menü in meinem Synthesizer
Files_01.jpgFiles.jpg

SD Karte Interface in meinem Synthesizer
Wave1Disk.jpg


Wer sich näher mit der Benutzung einer SD Karte für ein eigenes Projekt mit einem Mikrocontroller wzB ATmega oder Arduino beschäftigen möchte hier ein paar nützliche Links:

http://www.ulrichradig.de/home/index.php/avr/mmc-sd
http://www.mikrocontroller.net/articles/AVR_FAT32
http://arduino.cc/de/Reference/SDCardNotes

Bis zum nächsten Mal und lieben Gruß. Rolf 

Edited by rolfdegen
Link to comment
Share on other sites

  • 3 weeks later...

Hallöchen..

Zur Zeit wird mal wieder viel gelötet, gezeichnet und es werden Stücklisten geschrieben. Eine kleine Änderung gibts in der VCA Schaltung. Diese hat eine Lautstärkeregelung bekommen. Hab auch hier eine "low cost" Variante gewählt, weil der benötigte Platz für einen zusätzlichen Operationsverstärker als Audiobuffer hinterm Poti auf der Platine einfach fehlt. 

VCA Schaltung mit Lautstärkeregelung
MultiFilter13a.jpg

Gruß Rolf 

Link to comment
Share on other sites

Hallöchen..

Ich bin gerade dabei das endgültige Layout für meinen Synthesizers auf einer Lochrasterplatte zu löten und dann ein PCB Board zu entwerfen. Dabei spielt die Positionierung der Bauteile eine wichtige Rolle. Die Platine habe ich in zwei Hälften unterteilt. Auf der linken Seite ist der ganze Analoge Teil wzB Stromversorung und der analoge Multimode Filter untergebraucht. Auf der rechten Seite der komplette Digitalteil wzB Prozessor, Ram und SD-Karte. Das soll den Störeinfluss der Digitalschaltung auf die analoge Filterschaltung vermindern. Die Position des SD-Karteneinschubs habe ich zwecks besserer Bedienbarkeit nach vorne an die Gerätefront verlegt.


Prototyp Synthesizer "WAVE 1"

PCB_04.jpg

PCB_05.jpg

PCB_03.jpg

PCB_01.jpg

Die Filterschaltung ist noch nicht ganz bestückt. Im Moment arbeite ich daran.

Bis zum nächsten mal. Lieben Gruß aus Wuppertal smile.gif

Edited by rolfdegen
Link to comment
Share on other sites

Hallöchen..

Durch die Veränderung der Betriebsspannung im neuen Prototyp von +-5 Volt auf +-8 Volt musste ich am Filter ein paar Änderungen vornehmen.
Die Veränderung der Betriebspannung verursachte eine höhere Audiosignalspannung am VCA-Eingang (> 9 VAC) und übersteuerte damit den Ausgang (Video 1).
Durch die Verkleinerung von Widerstand R6 wurde die Filterverstärkung reduziert und damit auch das Eingangssignal am VCA. Das Audiosignal ist jetzt ok. Positiver Nebeneffekt ist ein geringeres Filterrauschen icon_smile.gif

Filter Resonanz:
Um einen Frequenz Bereich von 15 Hz bis 20 kHz für die Filter Resonanz zu erhalten, wurde R25 angepasst. 

VCF Channel 1 im "WAVE 1"
VCF_p.jpg


VCA im "WAVE 1"
VCA_P.jpg


Video 1: Verzerrungen am VCA Ausgang (

)

Video 2: Optimierter Filter ( http://www.youtube.c...n5MXSkyDo6PZ4Cw)

Die schlechte Tonqualität (Verzerrungen) im Video bitte ich zu entschuldigen. Dies wird durch die Audiokompression im Video selber verursacht . Für meinem Logitech HD Webcam C525 habe ich leider kein gutes Tool für die Aufzeichnung von Audio und Video.

Einen bessere Soundcheck gibts auf soundcloud: https://soundcloud.c...of-my-diy-synth



Gruß Rolf Edited by rolfdegen
Link to comment
Share on other sites

  • 3 weeks later...

Hallo liebe Gäste im midibox Forum bueb.gif 

Im Moment gehts leider nur wenig voran. Einerseits mach ich mir noch Gedanken über eine zusätzliche Filterfunktion als Ersatz für die Filtermodulation in meinem Synthesizer. Und dann will ich noch einen kleiner StepSequenzer integrieren. Damit wäre der Synthesizer dann für viele Fälle einsetzbar. Schwerpunkt ist und bleibt aber die Klangerzeugung mit Wavetables. Die Anzahl der einstellbaren Soundparameter beträgt z.Zt. ca. 133. Eine andere Idee ist die Realisierung einer Update-Funktion des Betriebssystem für den Synthesizer über die SD Karte. Man hat dann die Möglichkeit die Software übers Internet als Download herunterzuladen und auf die SD Karte zu speichern. Das erleichtert die Behebung von Softwarefehlern beim User bzw es wird dafür kein Programmiergerät erforderlich sein.

So.. jetzt wieder an die Arbeit, damit endlich fertig wird. Freu mich schon auf mein nächstes größeres Projekt den "WAVE 2" mit 16Bit Sound und 8 Stimmen.

Lieben Gruß aus Wuppertal. Rolf

Link to comment
Share on other sites

Hallo ihr Lieben..

Die vergangenen Tage hatte ich im Mutable Intruments Forum viele Ideen und Anregungen für die Filterschaltung in meinem Synthesizer erhalten. Da war u.a. auch die Rede von einer Distortion Schaltung (Verzerrer) oder einer Delay Schaltung für Echo und Hall. Beides sehr interessante Dinge, die den Filter auf jeden Fall noch interessanter machen könnten. Die Distortion Schaltung habe ich dank zur Verfügung stehender Bauteil schnell aufgebaut und getestet. Für die Delay Schaltung ist der Schaltungsaufwand etwas größer. Ich musste erst ein spezielles Bauteil, einen PT2399, bestellen. Bei dem PT2399 handelt es sich um einen Audio Prozessor mit Echo Funktionen. Der Stückpreis liegt bei 1,50€.

Filter Schaltung mit Distortion
VCF_Dist02.jpg

Funktionsbeschreibung Distortion Schaltung
Das Eingangssignal wird über den Spannungsteiler R30 und R31 an den OTA geführt. Der Operationsverstärker IC 5B und die beiden Transistoren sind als Spannungsbegrenzer (Limitter) geschaltet und begrenzen die maximale Ausgangsspannung des Operationsverstärkers auf ca 1.0 Volt (VPP). IC 5C hat die Aufgabe das Signal zu verstärken. Über den Trimmer R28b wird die Ausgangsspannung am Operationverstärker IC 5B so eingestellt, das im Ruhezustand (Steuereingang 0V) das Ausgangssignal unterhalb der Spannungsbegenzung von 1.0 Volt liegt. Über den Steuereingang an R28 kann jetzt die Verstärkung im OTA IC3B bzw die Verzerrung am Ausgang stufenlos geregelt werden und.

Signalkurven Distortion (unterer Oscilloskop Kanal ohne Distortion)
Saw01.jpgSaw02.jpgSaw03.jpg

Soundcload.png
Sound Demo Distortion: https://soundcloud.com/rolfdegen/distortion

Wie gesagt, die Distortion Schaltung habe ich bereits aufgebaut und getestet und bin mit dem Ergebnis sehr zufrieden (Demosound). Da beide Schaltungen auf dem MCU-Board keinen Platz haben, muss ich mich leider für eine Schaltung entscheiden. Ich hoffe das ich diese Woche noch die Bauteile für die Echo Schaltung erhalte und kann dann mit dem Aufbau und Test der Echo Funktion beginnen. Bin gespannt auf den Synthi-Sound mit dem zusätzlichen Echo. Ein sehr gutes Soundbeispiel mit dem PT2399 habe ich auf Youtube gefunden (siehe unten).


Youtube.png



Gruß Rolf
Link to comment
Share on other sites

Sehr schoener Chip!

 

Hast Du schonmal daran gedacht, das analoge Filter in den Feedback-Pfad einzubauen? Wenn Du dann auch noch die CutOff-Frequenz modulierst, ergeben sich mit wenig Aufwand sehr interessante (pseudo-polyphone) Klangtexturen.

 

Gruss, Thorsten.

Link to comment
Share on other sites

  • 2 weeks later...

Hallo zusammen..

 

Danke für die Tips. Bin gerade dabei eine Panoramaregelung für das Delay Signal zu integrieren. In der jetzigen Schaltung wird das Delay Signal beiden Ausgangskanälen gleichmäßig zugemischt (siehe Delay und VCA Schaltung). Die Idee mit dem Filter im Feedback des Delays ist mit Sicherheit eine sehr interessante Variante. Da die MCU Platinen des Synthesizers schon sehr voll ist, weis ich nicht ob ich diese Funktion noch integrieren kann. Muss mal schaun was für einen Hardware Aufwand  dafür notwendig ist (Analog Schalter IC's 4066 o. ä).

 

Aktuelle Delay Schaltung

Delay_13.jpg

 

 

Aktuelle Filter Umschaltung und VCA

VCA_002.jpg

 

 

Aktueller Filter Kanal 1 von 2

MultiFilter13.jpg

 

 

Synthesizer MCU Board

MCUBoard13.jpg

 

 

Gruß Rolf

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...