.flac umwandeln in festen std_logic_vector

Moderator (Firma: Titel) Persönliche Seite #4455395
Lesenswert?
• ▲
▼
Jan schrieb:
> Gibt es eine Möglichkeit
Drehen wir den Spieß mal um, dann wird ein Schuh daraus:
Warum sollte es keine Möglichkeit geben so was zu tun? Allerdings 
wirst du kaum ein fertiges Tool finden, das das kann. die Arbeit wirst 
du selber machen müssen...

> Gibt es eine Möglichkeit fertige codierte.flac Dateien in eine feste
> vhdl st_logic_vector Datei umzuwandeln (also nur die audio sampels)?
Gibt es eins Möglichkeit, diese Datei in eine WAV-Datei umzuwandeln? 
Denn ab dort ist es ungemein einfacher, die Daten einzulesen...

> Gibt es eine Möglichkeit fertige codierte.flac Dateien in eine feste
> vhdl st_logic_vector Datei umzuwandeln (also nur die audio sampels)?
Wofür? Für eine Simulation? Oder willst du die Audio-Daten auf diese Art 
ins FPGA packen?
#4455763
Lesenswert?
• ▲
▼
Kennst du Matlab? Ich denke das sollte da recht einfach gehen, audioread 
ließt deine n samples lange .flac Dateie und wandelt sie dir in eine 2xn 
Matlab-Matrix.

Schreib nun ein Skript, welches zuerst die Matrix a mit deinen Samples 
anlegt, danach ein textfile anlegt und öffnet. File ID abspeichern und 
dann in einer for-Schleife mit der Zählvariable i einen String an nach 
der Art
1
vector = ['signal sample_left' num2str(i) ':  std_logic_vector(' num2str(length(de2bi(a(1:1))-1) ' downto 0) := "' mat2str(de2bi(a(1:i))) '";'];
anlegen.
Danach noch in der for Schleife diesen String mit irgendwas wie
1
fprintf(File_ID, '%s /n', vector)
Zeile für Zeile in deinem Textfile ablegen. Damit hättest du dann alle n 
linken Samples in n verschiedenen Std_logic_vector umgewandelt und der 
Inhalt deines Textfiles sähe z.B. so aus (für die Unwahrscheinliche 
Bitbreite von 8 Bit in der .flac Datei :D ):

signal sample_left1: std_logic_vector (7 downto 0) := "01001101";
signal sample_left2: std_logic_vector (7 downto 0) := "01001010";
signal sample_left3: std_logic_vector (7 downto 0) := "01011100";
signal sample_left4: std_logic_vector (7 downto 0) := "10000010";

usw...

Ich hab oben stehendes jetzt nur mal eben so aus dem Kopf geschrieben 
und nicht laufen lassen, da ich gerade hier kein Matlab habe und 
garantiere somit nicht für einen Flüchtigkeitsfehler. Aber ich denke der 
Ansatz wird damit deutlich?
Persönliche Seite #4455764
Lesenswert?
• ▲
▼
Reden wir hier von offline- oder realtime-Konversion?

Einen flac-decoder in VHDL zu machen ist sicher nicht so ohne, gfs gibt 
es da was. Wäre auch für meine aktuelle Anwendung interessant. Offline 
geht das mit jedem flac-Player, den man auf eine wave-Datei richtet, 
oder mit den einschlägigen Audioprogrammen.

Die WAVE-Datei kann man mit SOC in ein binary verwandeln und (z.B. mit 
Excel) dann in eine Const-Struktur verwandeln.

Viel wird da aber in einen FPGA nicht reinpassen. Wenn, muss das per 
Software direkt in ein RAM geschrieben werden und auch das ist ja 
begrenzt. Also WAV in ein DDR-RAM.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.