Hallo liebes Forum,
seit neustem habe ich eine Projekt-Idee die sich damit beschäftigt eine
Audiosequenz aufzunehmen, abzuspeichern und wiederholt auszugeben. Das
Grundprinzip eines Loop-Effekts einer Gitarre.
Die Aufnahmedauer sollte mindestens 20 Sekunden lang sein und auch ein
gewisses Maß an Qualität aufweisen (44/22kHz Abtastrate, 32bit Tiefe).
Meine Grundidee war dabei: ADC -> Mikrocontroller -> DAC
Daraufhin konnte ich schnell feststellen, dass das allein aufgrund der
Speicherkapazitäten schwierig ist.
Habt ihr einige Erfahrungen, Ansätze oder Ideen wie ich ein solches
Projekt am besten umsetzen kann?
Vielen Dank!
Mein Ansatz dazu ist, einen Computer zu benutzen, der ohne großartige
Hürden geeignet ist.
Du hast schon korrekt erkannt, das die Probleme schon beim Speicher
anfangen. Dicht gefolgt von der Performance. Einfach nur aufnehmen und
wiedergeben ist ja langweilig. Für die Berechnung von Effekten fehlt
jedoch Rechenleistung.
Für sowas eignen sich ARM Controller schon eher - vorzugsweise mitsamt
Multu-Threading fähigem Betriebsystem, Audio Treiber und Hardware.
Wie wär's mit einem Raspberry Pi + USB Soundkarte?
Unter Linux Programmieren ist bei derartigen Projekten ohnehin viel
einfacher, als ohne OS.
Raphael H. schrieb:> Die Aufnahmedauer sollte mindestens 20 Sekunden lang sein und auch ein> gewisses Maß an Qualität aufweisen (44/22kHz Abtastrate, 32bit Tiefe).> Meine Grundidee war dabei: ADC -> Mikrocontroller -> DAC> Daraufhin konnte ich schnell feststellen, dass das allein aufgrund der> Speicherkapazitäten schwierig ist.
Verabschiede Dich von den 32Bit Samplingtiefe. 16Bit sind völlig
ausreichend und damit ist Dein Vorhaben überhaupt kein Problem.
Mittlerweile gibt es serielles SRAM (8-Pinner mit SPI) mit 1Mbit
Speichertiefe. Da passen 0.7s Sound rein. Kaskadiere genügend davon, um
auf Deine benötigt Zeit zu kommen.
Raphael H. schrieb:> seit neustem habe ich eine Projekt-Idee die sich damit beschäftigt eine> Audiosequenz aufzunehmen, abzuspeichern und wiederholt auszugeben.
Was ist das denn für eine "Idee"? Mit Sicherheit eine, die schon seit
vielen Jahrzehnten immer wieder andere Leute hatten und mit den Mitteln
ihrer jeweiligen Zeit realisiert haben. Jedes Jahrzehnt auf's neue...
Also entschuldige mal: Das ist keine "Idee". Der Audio-Recorder mit µC
existiert seit fast zwei Jahrzehnten und kann inzwischen in Stückzahlen
als fertiges, voll funktionsfähiges Modul mit Flash-Speicher für etliche
Minuten für unter 1 Euro gekauft werden.
Das kann man selbst ganz sicher nicht billiger und wohl auch kaum besser
bauen.
Scheiß-Idee. Null-Idee.
Das ist nicht zufällig sowas hier:
Beitrag "AVR Orgel Eigenbau"c-hater schrieb:> d kann inzwischen in Stückzahlen> als fertiges, voll funktionsfähiges Modul mit Flash-Speicher für etliche> Minuten für unter 1 Euro gekauft werden.
Link?
Danke schon mal für eure Antworten. Ich habe mir schon gedacht, dass der
Raspberry eine gute Möglichkeit darstellt, hatte lediglich gehofft eine
günstigere Variante zu finden.
@c-hater
Mir ist bewusst, dass das keine neue Idee ist. Es soll schließlich ein
Effektgerät für eine Gitarre werden, nur eben DIY. Übrigens sind die von
dir erwähnten Mikrocontroller qualitativ für Musik der letzte Mist, also
entschuldige mal.
Linux mit Jackrack oder http://rakarrack.sourceforge.net/.
Brauchst halt ne vernünftige Soundkarte und nen einigermaßen flotten
Rechner.
Oder du musst eben doch alles selbst entwickeln und mit DSPs und/oder
FPGAs auf das Problem werfen.
Das hat man früher mit DSP gemacht, der 56k Symphony von Motorola war
beliebt und es gibt viele fertige Programme für ihn.
Heute will man nicht unbedingt mehr eine ganze Platine, der ADAU1701 ist
beliebt, der AK7757 .
Leider reichen die Eval Boards Symphony SoundBite bzw.
EVAL-ADAU1701MINIZ dir vom Speicherausbau her nicht, auch AKD7757-A
reicht mit seinem internen RAM nicht an deine Anforderung, also musst du
vielleicht doch was selber bauen.
Ein Overkill in die andrer Richtung wären FPGA basierte DSP wie
http://www.devboards.de/startseite/boards/produkte-details/article/dbm-soc1/
, da bekommt man gleich Gigabyte an RAM und mehrere DSP mit fast 1 GHz
Takt, das ist dann wohl doch eher für die NSA.
Und nen STMF4 Discovery nehmen, mit ner SD-Karte zum Puffern der Daten?
Einen DSP hat das Board doch schon mit drauf, nur halt etwas wenig
Speicher. Aber eine SD-Karte, die sich einfach anschliessen lässt,
sollte doch schnell genug sein, um gleichzeitig einen Audio-Stream zu
speichern und wieder zu lesen.
Hi,
ST STM32F429I DIscovery hat Display, Cortex M4 mit DSP-Befehlen
und schon on Board 64MBit SDRAM. Kostet um die 30 EUR.
Das sollte doch eine ganz nette Entwicklungsplatform ergeben.
Für richtig gute Gitarreneffekte werden heute sogar TigerSHARC DSPs
genommen, google mal nach AxeFX ... damit wäre dann sogar Steve Vai
zufrieden.
LG Karl (selber Gitarrist)
Was einen Versuch wert sein könnte: Teensy 3.1 und das dazugehörige
Audio-Board. Der Teensy 3.1 hat einen Cortex M4 mit bis zu 96MHz, das
Audio-Board hat ADC/DAC 16bit/44.1kHz, Line-In/Out und SD-Slot. Gute
SD-Karten sollen angeblich genug Bandbreite für 2 WAV-Dateien liefern,
aber da steht nur was von lesen, keine Ahnung ob das für Lesen+Schreiben
reicht. Andererseits brauchst Du für Gitarreneffekt nur Mono, dann
sollte das kein Problem sein.
Kannst Dich ja mal auf http://www.pjrc.com/ umsehen, ob das was wäre; es
gibt eine Library für das Audio-Board, hat auch schon ein paar Effekte.
Der Preis für Teensy 3.1 + Audio-Board zusammen bei Watterott momentan
31,13€.
karlchen-m schrieb:> ST STM32F429I DIscovery hat Display, Cortex M4 mit DSP-Befehlen> und schon on Board 64MBit SDRAM. Kostet um die 30 EUR.
Dazu ein UDA1380 Board als Codec (von EBay, so um 9€). Dann muss man
erstmal fast nichts mehr löten und kann sich auf die Software
konzentrieren.
Das LPC4357-EVB hätte alles drauf:
externes 32 MiB SDRAM, 32 MiB Flash, UDA1380 Audio-Codec,
SD-Karten-Anschluss, vorbereitet (Steckverbinder etc.) für TFT mit Touch
de.farnell.com/Lpc4357Evb
oder z.B. eine deutlich leistungfähigere und teurere Variante von XMOS:
http://www.xmos.com/products/reference-designs/dj
Arc Net schrieb:> Das LPC4357-EVB hätte alles drauf:
Das Board ist sicher auch nicht schlecht. Allerdings könnte man bei dem
Preis (ca 76,- € netto) über ein CubieBoard2 (DualCore A7) nachdenken.
Für das gibt es low-latency-patches ->
http://linux.autostatic.com/2013/09/17/exit-beaglebone-black-hello-cubieboard2
Die Frage ist halt, ob du lieber eine fertige Lösung mit Linux möchtest
(CubieBoard) oder alles low-level selbst machen willst. Linux und
Multitasking frist sicher einiges an Perfomance, für einen reinen Looper
ist sowas sicher Overkill.
klausro schrieb:> Arc Net schrieb:>> Das LPC4357-EVB hätte alles drauf:>> Das Board ist sicher auch nicht schlecht. Allerdings könnte man bei dem> Preis (ca 76,- € netto) über ein CubieBoard2 (DualCore A7) nachdenken.> Für das gibt es low-latency-patches ->> http://linux.autostatic.com/2013/09/17/exit-beaglebone-black-hello-cubieboard2>> Die Frage ist halt, ob du lieber eine fertige Lösung mit Linux möchtest> (CubieBoard) oder alles low-level selbst machen willst. Linux und> Multitasking frist sicher einiges an Perfomance, für einen reinen Looper> ist sowas sicher Overkill.
Mir würde Low-Level bei solchen Sachen mehr Spaß machen, aber jeder wie
sie/er mag...
Anforderungen waren: 44.1 kHz mit 16-Bit bis 24-Bit, also maximal wenn
es Stereo sein soll 264600 Bytes/s insg. 5292000 Bytes.
Wenn kein SDRAM-Layout gemacht werden soll, dürfte es auch mit einem
"alten" NAND-Flash gehen z.B. NAND02G maximale Schreibdauer 700 us pro
Page (2048 + 64), Löschdauer max 2 ms pro Block (128 kiB + 4 kiB).
2 ms / 128 kiB ~ 15 ns pro Byte, 0.7 ms / 2048 Bytes ~ 342 ns pro Byte
1/264600 Bytes/s ~ alle 3.78 us kommt ein Byte an.
Bis jeder Block 100000 Mal gelöscht und geschrieben wurde dürfte der
Rest des Gerät schon in den ewigen Jagdgründen sein...
Arc Net schrieb:> Mir würde Low-Level bei solchen Sachen mehr Spaß machen, aber jeder wie> sie/er mag...
Low-Level auf einem uC hat noch den Vorteil, dass man das Timing
wesentlich besser im Griff haben kann. Das berüchtigte "Stottern" wegen
Buffer Underruns kann man komplett vermeiden, da das ganze System
wesentlich deterministischer sein kann als ein Multitasking (Linux)
System. Allerdings hat man auch mehr Verantwortung bei dem
System-Design.
Der Vorteil eines Linux Systems ist halt, dass man das ganze innerhalb
weniger Stunden mit einer Vielzahl an Möglichen Effekten am Laufen haben
kann.