Forum: Mikrocontroller und Digitale Elektronik Audioaufnahme, Verarbeitung und Ausgabe mit Mikrocontroller


von Lesna S. (Gast)


Lesenswert?

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!

von stefanus (Gast)


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch User
von stefanus (Gast)


Lesenswert?

> Kaskadiere genügend davon, um auf Deine benötigt Zeit zu kommen.

Das soll ein Scherz sein, oder?

von c-hater (Gast)


Lesenswert?

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.

von T.R. (Gast)


Lesenswert?

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?

von Lesna S. (Gast)


Lesenswert?

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.

von Matthias Larisch (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Sabine W. (sabine_w)


Lesenswert?

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.

von karlchen-m (Gast)


Lesenswert?

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)

von Christian P. (chrp)


Lesenswert?

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€.

von klausro (Gast)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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

von klausro (Gast)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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...

von klausro (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.