Programm für Soundmodul.

Gast #3620933
Lesenswert?

Hi,

für ein Projekt im Modellbaubereich habe ich mal angedacht, einen 
Soundgenerator mit einem AVR zu bauen. Dafür sollen auf einem 
Speichermodul wahrscheinlich MikroSD, PCM Modulierte Samples sein. Der 
Speicher soll ähnlich eines Arrays aufgebaut sein.

Die Samples sollen mithilfe eines Interrupts aufgerufen werden, der 
Genau mit der Sampelrate aufgerufen wird. Hier gibt es ein Problem. Mein 
Prozessor hat 16Mhz Taktrate die Samplerate ist 44,1Khz
16Mhz/44,1Khz=362,816 das kann ich nicht teilen, da es keine Ganze zahl 
ist. Glaubt ihr man hört, wenn ich das ganze zu 363 aufrunde?
Dann hätte ich 44,077Khz? Wie machen das eigentlich soundchips haben die 
extra taktgeber dafür? VCO, wäre ja praktisch..)





 Im Interrupt steckt ein Schleifenzähler, sobald der Sound abgespielt 
wurde, meldet dieser das, das Interrupt wird nichtmehr ausgelöst, bis 
dem Prozessor gesagt wird, der Audioschnippsel soll wieder gespielt 
werden.

Ist das ansich so ok, mit der Programmidee, oder gibt es was 
einfacheres?
(möchte kein fertiges Modul kaufen oder MP3 verwenden).


Danke Schonmal
Gast #3620999
Lesenswert?

Martin Wende schrieb:
> Warum überhaupt sone hohe Samplerate?
> Musst die Datei ja eh iregdnwie bearbeiten um Mono PCM WAV zu bekommen,
> dann kannste ja zB auf 32kHz oder weniger downsamplen.

Ja stimmt, mache ich dann, aber theoretisch, würde man diesen Fehler 
hören?

Und wie ist das bei Mikroprozessor Functionsgeneratoren?
(anderes Thema aber irgendwie ja auch nicht)

Wenn die ne Prozessorfrequenz von 40Mhz habe und nen 8Bit DA. Und mann 
will 1151Hz

rechenweg 1151*255=293505

40*10^6/293505=136,284

Rechne ich mit 136 habe ich 1153,4 Hz das ist ein Großer Fehler. Wie 
schafft man dann eineFreqzenzgenauigkeit von 1mHz
Wenn ich 400Mhz habe bekomme ich 1150,9Hz also 1mHz


wie machen fgs ddas?
#3621430
Lesenswert?

Es gibt durchaus Personen, die so genau hören, aber die meisten mit 
absolutem Gehör haben sogar dass Problem, dass sie mit ihren Emfindungen 
daneben liegen, weil in Kozerten andere Tonlagen gespielt werden. Der 
Kammerton z.B. ist nicht an allen Orten überall gleich und im Laufe 
eines Konzertes verändern sich auch die Grundtöne durch die schwankende 
Temperatur. Die Musiker stellen es dann nach Gehör nach und passen sich 
auf die anderen an, dabei stellen sie meistens minimal zu hoch. Deshalb 
kommen manche Orchester hinten immer etwas höher raus, als sie 
angefangen aben.

Für das Soundmodul kann man eine DDS benützen, dann stimmen die 
Frequenzen wenigstens im Mittel. Wenn die 44,1kHz auch exakt stimmen 
sollen, darf man nicht viel abweichen, weil die digitalen Empfänger 
nicht viel Fehler vertragen. Wird es analog gesendet, bleibt nur das 
Problem der genau Hörenden.

Wie kompliziert soll das Programm werden?
Persönliche Seite #3623804
Lesenswert?

Rolf S. schrieb:
> Die Musiker stellen es dann nach Gehör nach und passen sich
> auf die anderen an, dabei stellen sie meistens minimal zu hoch. Deshalb
> kommen manche Orchester hinten immer etwas höher raus
Kaum vorstellbar in Zeiten, wo es elektronische Stimmhilfen für kleines 
Geld gibt. Ich habe übrigens schon Musiker gehen, die mit Stimmhilfe im 
Konzert nachjustieren / prüfen. Ausserdem stimmen sie spätestens in den 
Pausen nach.


Jan R. schrieb:
> Dann hätte ich 44,077Khz?
Für Deine Apllikation sollte das egal sein, Hauptsache Dein Wandler 
kommt mit dem Takt klar. Du kannst eigentlich JEDE Sample Rate 
verwenden, wenn Du sie nicht ausgibst. Musst eben die Tonhöhen intern 
anpassen.

> Wie machen das eigentlich soundchips haben die
> extra taktgeber dafür? VCO, wäre ja praktisch..)
Es wird ein passendes Quarz verwendet. Die Tongeneration erfolgt aber 
meist nicht durch ganzzahliges Teilen eines festen Taktes sondern durch 
DDS, bei der - abgesehen von jitter - die Tonfrequenz von der 
Samplefrequenz unabhängig ist. Das Funktionsprinzip ist hier 
dargestellt:
http://home.arcor.de/jusuihe/pldsynthesizer.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren