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
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.
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?
Jan R. schrieb:> 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?
362,816/363 da ist die Abweichung kleiner als 0,05%.
Ich glaube nicht, daß man das hört...
Maik
Jan R. schrieb:> Rechne ich mit 136 habe ich 1153,4 Hz das ist ein Großer Fehler.
Aber nur für jemandem mit einem 'absoluten Gehör'.
Wieviele Personen kennst du, die die genaue Frequenz einer
Lokomotivpfeife kennen und vor allen Dinge auch wiedererkennen?
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?
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