DIY Multieffekt auf Basis eines Raspberry Pi

Etna
Etna
Helpful & Friendly User
HFU
Zuletzt hier
31.12.23
Registriert
13.01.11
Beiträge
2.175
Kekse
26.423
Moin!

Nicht lang schnacken, erst mal zwei Bilder vom guten Stück:

R0001.JPG

R0002.JPG


Man kann gut erkennen, dass das Gehäuse mal ein Big Muff Pi gewesen ist. Dieser rostete in meiner Werkstatt munter vor sich hin und hatte eh keine Funktion mehr. Für den Zustand war ich allerdings nicht verantwortlich, da man mir den so bereits vermacht hat. Da dachte ich mir, kann ich das gute Stück retten, indem ich ihn mit einem Raspberry Pi B+ wieder zum Leben erwecke. Dies ist auch der Grund, weshalb sich bei meinem DIY Mics nichts mehr getan hat. Ich brauchte ein Studienprojekt und da habe ich mir das hier ausgedacht, damit ich hinterher auch einen Nutzen vom ganzen Aufwand habe.

Der Lack ist einfach Hammerite in blau und sieht recht okay aus. Ich habe mit viel Arbeit das Blech mit einer Messingbürste als Akkuschrauberaufsatz wieder vom Rost befreit. Danach musste es unbedingt sowas sein, sonst hätte man alles mögliche an Spuren von dieser Arbeit durch den Lack hindurch gesehen. Das Blau passt auch recht gut zum Display. Das untere Blech war zum Glück nicht so stark angegriffen. Das hat nur eine kurze Reinigung und 4 neue Gummifüße aufgeklebt bekommen. Ich mag diesen Kunstlederüberzug sehr. Schade, dass dieser auf der Unterseite sein Dasein fristet.

Gedacht ist der Raspberry Pi als Multieffekt. Die Effekte sind über das Netzwerkkabel frei programmierbar. Hierbei habe ich mich meiner Studentenlizenz von Matlab / Simulink bedient, um den Pi zu konfigurieren, programmieren und die Effekte einzubinden. Das war aufwendiger als Gedacht. Ins besondere die Ansteuerung des Displays war nicht so trivial wie erhofft.

Apropos Display, die Anbindung sieht wie folgt aus:

R0003.JPG


Bei den Potis handelt es sich um Drehimpulsgeber, die die reine Drehbewegung weiter geben. Den ganz rechten Knopf kann man zudem als Taster verwenden. Er dient dem Speichern des eingestellten Werts. Das Problem bei "digitalen Potis" ist ja, dass man sich die Einstellungen merken muss, damit man nicht alle eingegebenen Parameter erneut einstellen muss, ehe man losrockt. Darauf hat denke ich mal niemand wirklich Lust.

Zu beachten ist, dass die Potis keine Beschriftung haben. Die Beschriftung und auch der Wert sind in der ersten Zeile des Displays angezeigt. So kann man alle einstellbaren Parameter stets frei wählen. Man muss nur jedes mal das Display umkonfigurieren, um dies zu erreichen. Mit dieser Lösung war ich freier was die Paramtervergabe anbelangt. In der unteren Zeile steht klar der Effektname. Man will ja manchmal auch ohne zu hören wissen, was gerade aktiv ist.

Bisher wurden nur drei Effekte Programmiert. Es sind ein Delay, ein Faser und Distortion am Start. Aber die Effekte an sich sind sehr einfach in Simulink erstellbar. Das aufwändige an der Arbeit war eindeutig das Grundkonzept und den Weg dahin bis zur Basis der Effekte. An eigentliche Effekte habe ich nur zum Schluss gedacht.

Die Anschlüsse sehen wie folgt aus:

R0005.JPG


Von Links nach Rechts sind das: Output, Lan, Power und Input.

Hier der Schaltplan:

R0004.png


Dieser Schaltplan ist alles andere als Komplett. Er zeigt nur den Anschluss der LED, dem Display und der drei Drehimpulsgeber. Die Taster fehlen komplett, sowie die Soundkarte, der Netzwerkanschluss und noch so manch anderes. Aber die Schaltung musste ich als Ansatz für meinen Bericht anfertigen. Als er dann lief, wurde es obsolet und ich war bis Dato einfach zu faul das noch zu erweitern. Aber Taster über die GPIO-Ports anzubinden ist sehr einfach. Wer das nachmachen möchte, einfach ein Widerstand nehmen und dann als Drop Down verlöten. Easy!

Hier mal ein paar Bilder vom Inneren:

R0006.JPG


Das Bild wirkt für den Anfang recht wust und ist mit vielen Kabeln recht durcheinander. Aber ich versuche es mal ein wenig zu erklären. Ich hoffe die Folgenden Detailansichten veranschaulichen das Innenleben dann noch einmal.

Oben Links sieht man die vielen Bunten Anschlusskabel, die zum Header der GPIOs des Pi führen. Unter den Kabeln ist ein Fußtaster verbaut, der den Wechsel der Effekte ermöglicht.

In der Mitte Links sieht man den Pi. Unter dem Pi findet man die RGB-LED die an zwei Anoden im Wechsel über den Fußschalter betrieben wird.

Der Pi B+ hat den Vorteil von 4 statt früherer 2 Bohrungen. Leider sind die Bohrlöcher vom 3,3mm auf 2,8mm geschrumpft. Daher ist er nur für M2,5 ausgelegt. Leider fand ich auf die Schnelle keinen Gewindeschneider in der Größe. Da musste ich dann zwecks hübscher Befestigung eine kleine Acrylplatte ausschneiden, die von der LED-Fassung getragen wird. Aufgrund der Passgenauigkeit konnte sich die Platte auch nicht mehr verdrehen. So sind dann M2 Gewinde in alle 4 Ecken gekommen und zum Glück sind die Köpfe der Schrauben groß genug gewesen den Pi zu halten. Zwischen dem Pi und der Acrylplatte sind noch Abstandhalter, damit er auch die richtige Höhe hat.
Die Entscheidung für den B+ sind nur dem neuen Formfaktor und der Mehrzahl an GPIO-Ports geschuldet. Da er das gleiche gekostet hat wie der normale Pi, war das kein Argument.

Links Unten sieht man den Fußschalter, der sowohl einen True-Bypass ermöglicht, als auch an der LED kenntlich zeigt, ob der Effekt eingeschliffen ist oder nicht. Links neben dem Fußschalter ist ein USB-Stecker, dessen anderes Ende an der Buchse für die Stromversorgung sorgt. Die 4 gelben Kabel vom Schalter aus sind die Audio-Kabel.

Rechts neben dem Pi in der Mitte sieht man die kleine USB-Soundkarte, auf der ein Poti klebt. Dieses Poti stellt die Helligkeit des Displays ein. Man kann stattdessen auch einfach irgendwelche Widerstände einlöten. Unter der Soundkarte versteckt sich das Display, dessen Schrauben auch so gut wie möglich die Kabel ein wenig feststrapsen ließen. Unter der Soundkarte ist das LAN-Kabel zu einer LAN-Buchse geführt, um den Pi auch ohne angeschlossenes Display oder Tastatur bedienen und programmieren zu können.

Was bei der Soundkarte unbedingt zu beachten ist, dass diese keine LED hat. Solche Soundkarten gibt es zwischen 2 und 20 Euro und funktionieren quasi alle gleich. Allerdings hatte ich bei den ersten beiden das Problem, dass der Treiber unter Linux sagt: "Hey, klasse das du funktionierst! Aber, damit es jeder weiß, sollst du permanent blinken." Optisch stört das Geblinke nicht, aber man hört es leider. Bei dem Kabelsalat induziert sich das bis in den Amp. Da hat selbst das Abknipsen der LED und Abschirmen mit Alu-Folie nicht geholfen, um es aus der Welt zu schaffen. Darum musste ich mir auch 5 Soundkarten kaufen, ehe ich eine fand, bei der das Phänomen nicht mehr auftritt.

Ganz Rechts ist das Anschluss- oder Bedienfeld. Da sieht man alle Buchsen und deren Verdrahtung. Darunter befinden sich die Drehimpulsgeber.

Bei den Anschlüssen bin ich in folgende Fallen getappt: Der AC97 Standart sollte beachtet werden. Das bedeutet, dass an der Soundkarte 5V Gleichspannung am Eingang anliegen. Diese verursacht an der Gitarre lautes Rumpeln bei Poti-Bewegung. Daher habe ich mit einem großen Folienkondensator den Gleichspannungsanteil mal weg genommen. Zudem sollten unbedingt Stereo-Stecker in der Soundkarte vorhanden sein. Die verweigert sonst den Dienst, wenn Kontakte gebrückt werden. Sie geht zwar nicht kaputt, aber es ist ebenso doof, wenn kein Ton mehr raus kommt. Zudem ist unbedingt bei der Polung der Stromversorgung auf die Farbcodierung des USB-Kabels zu achten. Der Pi ist da recht zimperlich, was die Versorgung angeht.

Hier nochmal ein paar Impressionen des Innenraums en Detail:

R0007.JPG


Das ist der Pi nochmal nah.

R0008.JPG


Hier habe ich den Header mit den nötigen Anschlussleitungen nochmal.

R0009.JPG


Hier sieht man den Fußtaster. Dessen Kontakte musste ich nach dem Löten dick mit Heißkleber einpacken, weil mir die Litze immer abgerissen ist.

R0011.JPG


Airwire for the win! Die Drehimpulsgeber habe ich unter Freiluft verdrahtet. Das Gehäuse und die umliegenden Teile haben es erlaubt und somit Aufwand gespart.

R0012.JPG


Hier sieht man das Display nochmal mit seinem Header und den angeschlossenen Kabeln.

R0013.JPG


Das ist der besagte Kondensator zum Entkoppeln der Gleichspannung von der Gitarre oder davor liegenden Effekten.

Zum Sound kann ich nicht viel Sagen. Er hängt davon ab, was man erreichen möchte und wie man es programmiert. Durch die Soundkarte treten zumindest keine Hörbaren Verluste auf. Selbst, wenn die Wandler nicht von der besten Sorte gibt, macht mir eher etwas anderes Sorgen. Das ist die Latenz. Ich frage mich, wie es andere Leute bei Ihren Projekten unter Linux geschafft haben diese runter zu schrauben. Die Latenz ist nämlich nicht einstellbar und fester Bestandteil der Audio-Treiber. Die Datei der ALSA musste erst mal gefunden und dann darin der Verantwortliche Parameter gesenkt werden. Danach muss die .c Datei wieder kompiliert und auf das Image gezogen werden. Da fand viel Trial and Error statt, da es ab einem Wert nur noch Ausreisser gab und es merkbar knackte. Mitlerweile ist die Latenz erträglich gering. Aber ich sehe dieses Pedal auch eher als Versuchsobjekt zur Algorithmusfindung, als das ich das Pedal live auf der Bühne verwenden wollen würde. Dazu ist mir das Ergebnis noch nicht stabil genug.
Wenn man damit recorden mag, kann man damit auch seine eigenen speziellen Effekte verwenden, die kein Hersteller in Petto hat. Oder man verwendet standart-Algorithmen, um mal alle Effekte auszuprobieren, ehe man diese in analoger Form kauft. Usw... Da sind wirklich viele Möglichkeiten mit diesem Aufbau gegeben, die ich gar nicht aufschreiben kann.

Derzeit ist der Pi 2 auf dem Markt. Ich habe bereits zwei Exemplare davon zuhause und prüfe den auf Herz und Nieren. Leider wird er noch nicht von Matlab / Simulink unterstützt. Aber ich hoffe das kommt beim nächsten Update. Ich bin zudem gespannt, was sich mit dem kleinen Teil unter Windows 10 anstellen lässt. Das Projekt liegt damit quasi erst in den Kinderschuhen. Vielleicht packe ich den Pi auch bald in ein Rack, damit es sich leichter dran arbeiten lässt. Zum Austausch der SD-Karte muss ich ihn immer komplett demontieren und das nervt auf Dauer, wenn man herum spielt und einem dabei ein Fehler unterläuft. Aber es war interessant ein so kompaktes Multieffekt zu bauen. Normalerweise sind sie doch meist größer.

Puh, das war wieder viel Text. Für Anregungen, Kritik und Fragen bin ich wie immer offen.

Gruß,
Etna
 
Eigenschaft
 
  • Gefällt mir
Reaktionen: 30 Benutzer
Schöne Bastelei :great:.

Wie hast du denn die Effekte programmiert? In Simulink als Block-Diagramm oder als 'normales' MatLab-Skript?


PS: Ist eigentlich das modulare Rack-Projekt noch aktuell? Schon ewig nichts mehr von gehört...
 
Moin!

Danke für die Blumen! Das Programm ist rein auf Simulink mit den Blöcken entstanden. Selbst das Display ist nur in Simulink drin. Alleine Arrays und Parameter sind in Matlab als Variablen hinterlegt. Ich weiß nur nicht wie das mit der Lizenz aussieht, ob ich mal einen Screen vom Grundaufbau posten kann. Diese Studentenlizenzen sind da leider recht strickt und ich mag nichts riskieren.

Öhm... das Multieffekt. Das ist leider bereits verkauft worden, als es fertig war. Das hatte ich als Test mit auf nem Gig und jemand meinte es kaufen zu müssen. Das Angebot war leider zu gut.
Zwar habe ich schon wieder genug Teile gesammelt, um damit wieder anzufangen, allerdings kann ich mich dafür noch nicht wieder motivieren. Die Zeit ist halt auch immer ein Faktor. Leider kann man nicht immer alles machen. Das nächste kommt dann aber mit Midi. Ist hier aber OT. ;)

Gruß,
Etna
 
Jaja..Lizenzen. Da blickt doch heutzutage keiner mehr durch was er eigentlich darf. Und wenn man meint es wär alles in Ordnung steht in §1337 Abs. 17 3/4c) dass das nur auf einem Bein bei Vollmond gilt :weird:.

Ich denke so langsam muss ich mir doch auch nen eigenen Pi zulegen. Du hast das Bastelfieber geweckt :D.
 
Respekt und danke für die Details! Das Projekt sieht sehr interessant und aufwändig aus. Ich hatte auch mal daran gedacht, mich in dieses Thema reinzuarbeiten, nachdem ich ein paar Arduino-Videos gesehen hatte. Einen Pi B+ habe ich auch schon seit einiger Zeit. Der dient mir aber bisher nur zum Streamen von Medien auf den TV. Ich habe von Programmieren einfach zu wenig Ahnung, deshalb überlasse ich solche Audio-Basteleien lieber den Könnern und schaue mit Interesse zu.
 
Ich hab echt den falschen Job gewählt... Sehr toll gemacht und auch klasse zu lesen. Mehr davon und dann bitte in bezahlbarer Serienversion MIGermany ;)
 
macht mir eher etwas anderes Sorgen. Das ist die Latenz. Ich frage mich, wie es andere Leute bei Ihren Projekten unter Linux geschafft haben diese runter zu schrauben.
Wenn du spürbar die Latenz unter Linux senken willst, wird kaum ein Weg an einem eigenen Kernelmodul vorbei führen.
 
Moin!

Du hast das Bastelfieber geweckt :D.

Das freut mich! So sollte es auch gedacht sein. Naja, ab und an macht es Spaß mal was völlig anderes als sonst zu machen und ein wenig out of the box denken zu müssen.

Ich hab echt den falschen Job gewählt... Sehr toll gemacht und auch klasse zu lesen. Mehr davon und dann bitte in bezahlbarer Serienversion MIGermany ;)

Hehe, danke! Als Serienversion wird davon aber leider niemand glücklich. Entweder man hat die Software und weiß wie man sie bedient und macht es dann eh allein oder man überfordert seine komplette Kundschaft. Und MIGermany klingt toll, aber wenn man dann die Platine aus Italien, das Gehäuse aus den USA und die restliche Elektronik aus China kommt, wird das nichts. Und ich bin kein Schuhhersteller, der sich das MIGermany durch das Umverpacken der Schuhe in die Kartons verdienen mag. ;)

Wenn du spürbar die Latenz unter Linux senken willst, wird kaum ein Weg an einem eigenen Kernelmodul vorbei führen.

Japp... es gibt viele Anleitungen, was man da normal machen kann. Ich kann ja via Putty mit der Shell vieles anstellen. Aber da hast du recht. Ich fummel ab und an immer noch bei ALSA rum und naja... komplett steige ich da noch nicht durch. Es ist mitlerweile auch erträglich geworden. Alleine kann man zumindest damit spielen. Im Bandkontext ist das Pedal sowieso zu empfindlich. Da stürzt gerne mal das Programm ab.

Der Grundgedanke war ja eine DSP Anwendung auf externer Hardware via Matlab zu realisieren. Den Pi habe ich dann aus Kostengründen genommen. Wenn ich es richtig gemacht hätte, müsste ein Beagle Board oder anderes her. Wobei der neue Pi mit seinem Cortex A7 auch floats in einem Tackt durchjagen kann. Aber der wird noch nicht unterstützt. Zudem soll ende des Jahres Windows 10 auf dem Pi 2 verfügbar sein und da öffnen sich wahrscheinlich noch andere Welten, wenn man mit ASIO Treibern spielen darf. Da wird sicherlich die eine oder andere App dafür auf dem Markt kommen.

Gruß,
Amadeus
 
Eins muss ich jetzt fragen: Wenn Du von Multieffekt sprichst, meinst Du dann, dass Du mehrere Dffekte gleichzeitig verwenden kannst (wie viele) oder Du kannst einfach per Software verschiedene Effekte aufspielen aber eben immer nur einen?
 
Beides. Wenn du aber mehrere Effekte gleichzeitig betreiben möchtest, musst du die dann quasi als ein Effekt programmieren. Das bedeutet einfach mit Copy und Paste in Kaskade verschalten.

Hier vielleicht zur Veranschaulichung ein File wie sowas abgeht: Digital Audio Effects Based On Delay and Implementation on FPGA

Zwar soll in dem Paper ein FPGA programmiert werden, allerdings sie die Schemata identisch. Die Grafiken mit den Kästchen, Pfeilen, Kreisen und Bezeichner sind dabei schon das Programm. Das wird so auch eins zu eins in Simulink mit den Bausteinen aus der Liste zusammen geclickt und das wars vom Prinzip her schon. Die Variablen in den Blöcken werden dann als Solche mit einem eindeutigen Bezeichner bei Matlab im richtigen Datenformat (Bsp.: Gain, g als integer) hinterlegt und vom Systemblock eines der Drehimpulsgeber variiert. Falls intensiveres Interesse besteht, dem kann ich nur Literatur zur Signalverarbeitung empfehlen. Dazu eignet sich eigentlich jedes Buch, dass mit "Signale und Systeme" oder Ähnlichem betitelt wurde. Dort lernt man auch die Bedeutung dieser Blöcke kennen und wie die einzelnen Filteranordnung funktionieren.

Bei mir habe ich das Programm so gestaltet, dass alle Effekte gleichzeitig aktiv sind. Der Fußtaster triggert dann eine Art Toggle in der Software selbst und schaltet dann einfach alles Vorhandene nacheinander durch.

Wie man sieht, ist die eigentliche Programmierung der Effekte ziemlich einfach. Im Grunde bestehen die ja nur aus wenigen Kästen, die verschaltet sind. Der eigentliche Aufwand bestand darin das ganze Pedal zu konfigurieren, damit man überhaupt ein Effekt laden kann. Ich würde ja Screenshots hochladen. Aber ich glaube, wenn man die Software nicht kennt, ist das alles sowieso nichtssagend. Zudem ist das Programm alles andere als übersichtlich.

Ich hoffe das hilft weiter.

Gruß,
Etna
 
Moin!

Ich wollte ein kleines schriftliches Update des Pedals schnell posten, da die Entwicklung dieser kleinen Bastelei nicht aufhört, ich derzeit aber knapp mit meiner Zeit kalkulieren muss.

Das oben genannte Stabilitätsproblem konnte gemildert werden. Der Pi hatte sich im Einsatz des öfteren abgeschaltet. Die Ursache war der schlecht sitzende Kontakt der Stromversorgung. Eine andere baugleiche Buchse eines anderen Herstellers wurde daher aufgetrieben und eingebaut. Der Kontakt ist wesentlich besser, da auch der Stecker satter in die Buchse geschoben werden muss. Zudem habe ich noch ein 47uF großen Elko parallel dazu gelötet, um kurze Kontaktverluste durch Stöße oder beim simplen drehen des Steckers abzufangen. Dadurch hat sich dieses Problem wesentlich verbessert. Es ist allerdings noch nicht so stabil geworden wie Pedale vom Hersteller.
Dazu habe ich mir vom guten Inc. hier im Forum inspirieren lassen und sitze derzeit an einen DC/DC Wandler, um zum einen die gängigen 9-18V Eingangsspannung zulässig zu gestalten und zum anderen selbst bei kurzen Kontaktabbrüchen und bei Unterspannung die 5V konstant liefern zu können. Wie ich das noch ins Pedal kriege weiß ich nicht, aber wenn ich es geschafft habe, zeige ich Bilder davon.

Was auch interessant ist, dass endlich Win 10 für IoT endlich zum Download verfügbar ist und auf dem Pi 2, der mit dem echt genialen Cortex A7 bestückt ist, in dessen Herz ganze 4 Kerne bei 900MHz laufen und Gleitkommaoperationen in einem Takt erledigt werden, läuft. Also der Pi 2 ist schon da, Win 10 auch am Start und Simulink hat auch schon ein Update für den Pi 2 draußen. Jetzt heißt es ausprobieren, was sich als performanter heraus stellt und wie ich jetzt diese elendigen Buffer-Größen so verkleinern kann, dass ich kaum noch merkliche Latenz im Effektweg habe. Das wird aber noch ein paar Monate dauern ehe ich da zu einem Ergebnis komme.

Gruß,
Etna
 
  • Gefällt mir
Reaktionen: 2 Benutzer
Find ich sehr spannend dein Projekt!

Ich hab ja mal in Matlab eine Art Kemper angefangen zu programmieren. Deine Arbeit motiviert mich gerade, dies weiterzuführen und dann evtl mit nem Rasperry o.ä. als Hardware zu realisieren!
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Moin!

Also gleich ein Kemper? Da sag ich mal Chapeau! Da wird es nicht reichen einen Pi zu verwenden. Ich habe ja schon Latenzprobleme bei einfachsten Effekten. Die siend zwar Systembedingt aber durchaus vorhanden. Es gibt schon seine Gründe warum solche Effekte einen potenten DSP an Board haben. Gerade bei Verzerrungen benötigt man möglichst viele Harmonische in der Berechnung, um sie halbwegs realistisch darzustellen. Da sind Frequenzmodulationen wesentlich einfacher handzuhaben. Da habe ich mich schnell in dieses kleine Board verguckt, aber die physikalische Größe als auch das nötige Budget sind derzeit nicht so attraktiv. Aber damit hätte ich sicherlich keine Probleme mehr. Man darf dabei nicht vergessen, dass das meiste Geld in die beigelieferte Software fließt, um überhaupt gescheit damit coden zu können. Die vielen Bibliotheken dabei sind schon arg nützlich. Ich durfte mit diesem Board schon herum spielen, aber leider nicht privat.
Wenn man es darauf anlegt, kann man sicherlich die Chips auf einem eigenen Board stecken. DSP samt Decoder liegen bei 40,-. Hinzu kämen noch ein wenig Periferie und Speicher. Machbar, aber nicht wirklich lohnenswert, da man die Zeit dann hinterher nicht nur beim Routen und Bestücken, sondern vorallem auch beim Coden wieder doppelt und dreifach reinstecken muss.

Nur eine kleine Idee. ;)

Gruß,
Etna
 
Hi Etna,

danke für den Beitrag! WIchtig wär mir halt, dass ich Matlab weiternutzen könnte. Wenn ich auf ne andre Sprache umsteigen müsste, könnte ich auch gleich am VST dafür weiterarbeiten =) Oder kann ich Matlab den entsprechenden Code für den DSP generieren lassen?! Und wäre der effizient genug? Der Raspberry Pi scheint mir schon etwas schwachbrüstig zu sein für die Anwendung. Mal schauen, obs noch andere Alternativen gibt. Oder könnte man die Ampsim auf der GPU des Raspberry rechnen lassen?

Gruss - Timo
 
Zuletzt bearbeitet:
Moin!

Matlab ist groß und mächtig. Bist du Student? Falls ja, könntest du einfach alle PlugIns erhalten. Wenn nicht, müsste ich wissen was du für Lizenzen hast, um dir konkret einen Hinweis zu geben.

Es ist nämlich so, dass ich in Matlab selbst nichts geschrieben habe und der gesammte Code in Simulink verfasst ist. (Das ist nebenbei bemerkt die Kästchen mit den Pfeilen zueinander, falls jemand unbewandertes mitliest.) Das hatte den Nachteil, dass ich die Initialisierung des Displays und der anderen Ports in einem riesigen Schwall aus einer Copy und Paste Arie abarbeiten durfte. Aber als das alles erledigt war, began der Spaß. Ich konnte willkürlich das gesamte System miteinander verrouten wie ich wollte. Für den Pi gibt es einzelne Blöcke als I/O die man einfach hinzufügt ohne sich Gedanken machen zu können und die einzelnen Effekte sind sehr sehr schnell geschrieben, sodass es Spaß macht vieles auszuprobieren. Nach dem Motto: Was passiert wenn ich die Delay-Time über den gleichen Regler wie das Wah-Pedal parallel betreibe?

Ich habe ja weiter oben dazu ein englisches Skript verlinkt in dem das sehr aufschlussreich und vorallem kurz beschrieben steht. Zwar richtet es sich direkt an die Verwendung von FPGAs, aber die ganzen Diagramme kannst du eins zu eins in Simulink nachbauen und an den Parametern spielen.

Das Problem ist allerdings die Verwendung von einem Linux Kernel, den Mathworks dann auch noch selber gebastelt hat und dessen Code leider nicht offen ist. Unter Windows verwendet man ja ASIO-Treiber im Normalfall und die erlauben eine leichte Anpassung des Buffers für Audio-Signale. Und in dieser Konstellation Matlab/Simulink und Linux auf einem Pi ist der Buffer leider unveränderlich in seiner Größe um in allen Anwendungen stabil laufen zu können und keine unerwünschten Verzerrungen zu verursachen. Darum gibt er auch erst das erste Ergebnis aus, wenn eine bestimmte Anzahl an Samples im Buffer sitzt. Die Verzerrungen kommen immer daher, dass etwas aus dem Speicher gelesen wird, was noch gar nicht darauf geschrieben wurde und somit unbekannte zufälligen Werte ausgelesen wurden, die natürlich nicht sinnvoll ausgewertet werden konnten.
Die einzige Lösung dieses Problems besteht daher darin einen eigenen Treiber für exakt diesen Kernel zu schreiben und das ist mir einfach zu viel Arbeit für solch eine Spielerei. Das Problem hat wie man sieht nichts mit den Muckis des Pis zu tun, sondern ist ein reines Softwareproblem. zudem kann man den Pi locker auf 1,5GHz übertakten. Kleiner Kühlkörper drauf und gut.

Darum hoff ich, dass die Leute bei Microsoft einen anderen Kurs eingeschlagen haben, der auch immer noch so einfache Eingriffe in dieser Ebene ermöglichen. Zwar muss ich höchst wahrscheinlich alles in C oder einer anderen Hochsprache schreiben, aber das ist ebenfalls das nützliche an Simulink. Du kannst nämlich mit der passenden Lizenz dein gesamtes Projekt, dass du schon hast nehmen und dir daraus C-Code generieren lassen, den du dann mit dem passenden Compiler auf der Maschine deiner Wahl zum laufen bringen kannst. Ob das wirklich frei von Bugs ist, kann ich nicht sagen. Ich kann nur so viel sagen, dass die Jungs damit sehr viel Geld verdienen und das dies sicherlich nicht daran liegt, dass was die machen fehleranfällig ist.

Mal sehen wie das wird. Ich habe derzeit wie gesagt nicht wirklich viel zeit, sodass ich nur ab und an damit herum spielen kann.

Gruß,
Etna
 
Cooles Projekt! Aber:

Warum RPi? Gerade das DSP on top Linux ist doch was Optimierung angeht bestimmt nicht das Gelbe vom Ei. Hast ja schon die Latenz angesprochen, ist bestimmt eine Folge dessen, RPi wirkt nicht als wär das Teil für DSP gemacht worden.
Schau dir mal den Teensy an (https://www.pjrc.com/teensy/teensy31.html), der hat einen Cortex M4 verbaut hat welcher ein paar DSP Befehle kann, außerdem gibt's für den Teensy auch ein Block-Flowchart Design Tool https://www.pjrc.com/teensy/td_libs_Audio.html. Wäre vielleicht besser geeignet als Effektgerät als so ein RPi. LCD kannste ja einfach mit I²C oder so ansteuern, ist ja mit Arduino ziemlich leicht.
 
Moin!

Ähm... was soll ich dazu antworten? Einen M4 anstatt des A7 zu vorschlagen ist irgendwie wie zu sagen: "Hier, nimm meinen Trabbi, wenn dein Porsche nicht anlaufen will. Der hat immerhin auch einen Motor." Zwar kann man letztendlich mit jedem uC alles realisieren, doch ich würde dann eher zu sowas greifen als zum Teensy. Man darf dessen Design-Tool keineswegs mit Simulink vergleichen. Simulink ist einfach viel mächtiger und optimiert das Programmierte auf die verwendete Hardware. Warum ich es ausprobiert habe, hatte ich ja bereits geschrieben und woran die "Probleme" liegen auch. Das hat nichts mit dem Pi zu tun.

Gruß,
Etna
 
Ah okay, hab mich damit nicht so sehr auseinander gesetzt. Ich weiß nur dass der Audiothingies P6 Synth zum Beispiel auf einem M4 läuft und da hat man so gut wie gar keine spürbare Latenz. Dachte dass die M-Serie besser für sowas optimiert sei als der A7 auf dem Rpi.
 
Moin!

Latenz, Latenz, wer kennts?

Ich hole diesen Thread nur aus dem Grabe, um ein herrliches Update zum Thema beizusteuern. Und zwar ist es doch möglich die Latenz der Simulink Applikation zu ändern. Folgende Schritte sind nötig:

1.: Man braucht einen ALSA Playback Block in seinem File, dass man mit Drag n Drop einfügt
2.: Man drücke STRG + L, uin der Bibliothek aufzurufen, um diese zu entsperren
3.: Dann geht man via STRG + M in die Maske des ALSO Blockes
4.: Im Parameter Dialog überprüft man die Länge des Que und macht diese sichtbar (Haken setzen)
5.: Nun speichert man die Bibliothek

Auf diese Weise ist es nun möglich die Länge des Arrays zu manipulieren, die als Buffer genutzt wird. Dabei sollte man vorsichtig sein, da ein zu kleiner Buffer zu Soundfraqmenten führt, wenn der Pi nicht in der Lage ist die neuen Samples schnell genug zu berechnen. Und bei zu langem Buffer wird die Latenz unerträglich. Da muss man eine Zwischenlösung finden und diese experimentell mal ausprobieren.

Ich bin jedenfalls glücklich nach all der Zeit einen funktionierenden Pi als Multieffekt mein eigen zu nennen.

Schicken Gruß,
Etna
 
  • Gefällt mir
Reaktionen: 2 Benutzer

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben