[PYTHON] Ton erzeugen durch Programmieren von Teil 2

Verstehen Sie die digitale Darstellung von Ton

Dieses Mal werden wir untersuchen, wie sich die Schwingung von Waren, die sehr analog ist, in der Welt der digitalen Signale ausdrückt.

Was bedeutet 16bit / 44,1 kHz?

Was bedeutet 16bit / 44,1 kHz, der im vorherigen Artikel erwähnte digitale Standard für CDs?

Dies ist abschließend das Format der CD,

Es kann als Index verwendet werden, um die Klangqualität so anzuzeigen, wie sie ist.

Entwickler sind möglicherweise mit der Bittiefe vertraut. Dies zeigt die Anzahl der Bits pro fester Einheit und bekanntlich die Anzahl der Farben pro Punkt in Bildern von PCs.

Die Bittiefe in der Welt des digitalen Klangs gibt an, wie fein die durch die Wellenform angezeigten Punkte zerlegt und in einer Einheit auf der Zeitachse ausgedrückt werden können. Und die Abtastrate zeigt, wie fein ein bestimmter Punkt auf der Zeitachse zerlegt und ausgedrückt werden kann.

Das ist eine vorläufige Definition, aber ich denke, dass die obige Erklärung allein nicht zur Not kommt, deshalb möchte ich sie visuell anhand einer Sinuswelle als einfachere Probe erklären.

Sinuswellenform

Was ist eine Sinuswelle?

Zunächst werde ich kurz erklären, was als "Sinuswelle" bezeichnet wird, die als Beispielerklärung behandelt wird.

Die Sinuswelle, auch Sinuswelle genannt, hat die einfachste Wellenform, um den Klang darzustellen.

sine-wave.png

Die obige Abbildung ist eine allgemeine Sinuswellenform. Die horizontale Achse ist die Zeitachse und die vertikale Achse zeigt die Amplitude, die später beschrieben wird. Wie Sie wissen, kann die Tonhöhe durch die Frequenz ausgedrückt werden. In dieser Abbildung ist die Frequenz jedoch umso niedriger, je steiler der Winkel des Diagramms ist, je höher die Frequenz und je sanfter die Frequenz.

Diese Sinuswelle ist die einfachste Wellenform und kann als die reinste Darstellung von Klang bezeichnet werden.

Ein wenig entgleist hier, aber in der Natur existieren diese reinen Sinuswellenklänge nicht wirklich. Stellen Sie sich zum Beispiel den Klang eines Klaviers vor. Wie viele von Ihnen vielleicht wissen, wird der "do" -Sound auf dem Klavier tatsächlich als "do" -Skala bezeichnet, was als "Grundton" bezeichnet wird, aber auch als "harmonisch". Beinhaltet Sounds, die ein Vielfaches der Frequenz des Grundtons sind. Zum Beispiel 3. Harmonische (so), 5. Harmonische (mi) usw. Der Klang des Klaviers und der Klang der Orgel sind auch bei gleichem "do" völlig unterschiedlich. Es hängt davon ab, wie diese Harmonische enthalten ist. Mit anderen Worten, es sind die Harmonischen, die den Charakter des Klangs bestimmen.

Eine Sinuswelle ist eine streng reine Tonhöhe, die keine der oben genannten "Harmonischen" enthält. Das Klanggefühl ähnelt übrigens dem Gefühl von "zwei zu zwei", wenn das Telefon auflegt. Es existiert möglicherweise nicht in der Natur und ist Ihnen vielleicht nicht vertraut, aber da Einfachheit ein gutes Beispiel ist, werden wir diese Sinuswelle als Beispiel verwenden.

Ausdruck für Sinuswelle

Wie einige von Ihnen vielleicht als "Sinuskurve" in der Mathematik gelernt haben, wird die obige Sinuskurve durch die folgende Formel dargestellt.

koushiki.png

Dabei ist t die Zeit, A die Amplitude (maximale Abweichung vom Wellenmittelpunkt), ω die Winkelfrequenz und −φ die Anfangsphase (Phase bei t = 0). Von diesen hat die Anfangsphase nichts mit der Zukunft zu tun, daher werden wir sie immer auf 0 setzen, und von nun an wird die Sinuswellenkurve durch die folgende Formel ausgedrückt.

y =Amplitude*sin(Frequenz*Tageszeiten)

Mit dieser Formel können Sie eine Kurve der Sinuswelle zeichnen. Wenn die Sinuswelle jedoch tatsächlich vorhanden ist, sind unendliche Punkte erforderlich, um die Wellenform auszudrücken, die die Schwingung so wie sie ist, und es handelt sich um einen digitalen Graphen. Es kann nicht ausgedrückt werden durch, aber es wird durch Annäherung ausgedrückt. Diese Annäherung ist näher an der tatsächlichen Kurve, wenn die Anzahl der Abtastwerte an den Punkten, die die Kurve bilden, zunimmt und je feiner sie wird. Die Anzahl und Feinheit dieser Anzahl von Abtastwerten ist die Abtastrate und Bittiefe, die als Indikatoren für den Klangausdruck in der digitalen Welt verwendet werden.

Abtastrate und Bittiefe

Im vorherigen Abschnitt haben wir erklärt, dass die Wiedergabetreue für die digitale Darstellung einer Kurve, die eine Wellenform darstellt, durch die Abtastrate und die Bittiefe angegeben wird.

Aus Gründen der Klarheit werden wir weiterhin Sinuswellen als Beispiel verwenden. Schauen Sie sich die Kurve unten an.

sine-wave-10.png

Es heißt würdevoll "Zeichenwelle", aber was ist die Zeichenwelle in diesem Rasseln! Es ist eine miserable Sache, die Sie dazu bringt, Ihre Stimme laut zu machen. Oder besser gesagt, es hat nicht einmal eine Kurve.

Warum bist du so traurig geworden?

Tatsächlich setzt dies die Zerlegungsgenauigkeit der horizontalen Achse, die die Zeitachse ist, auf 10. Nehmen wir hier an, dass die horizontale Achse insgesamt 1 Sekunde darstellt. Dann kann es als eine Kurve betrachtet werden, die gezeichnet wird, indem alle 1/10 Sekunde eine Probe mit der Sinuswellenformel entnommen wird.

Wie macht man diese Kurve anständiger? Natürlich müssen Sie nur die Probengenauigkeit verbessern.

1/20 Sekunden

sine-wave-20.png

Die Probenstationen sind zur Verdeutlichung markiert. Sie können sehen, dass es viel näher an der Kurve liegt als in der vorherigen 1/10 Sekunde.

1/100 Sekunde

sine-wave-100.png

Wenn Sie die Abtastgenauigkeit in 1/100 Sekunde auf 1 einstellen, können Sie eine Kurve zeichnen, die Sie erheblich ausdrücken möchten. Eine Abtastung von 100 Mal pro Sekunde auf diese Weise kann als ** Abtastrate 100 Hz ** ausgedrückt werden.

** Mit anderen Worten bedeutet eine CD-Abtastrate von 44,1 kHz, dass die Abtastung mit einer Genauigkeit von 44100 Mal pro Sekunde durchgeführt wird. ** ** **

Die Genauigkeit der horizontalen Achse (Zeitachse) wurde bisher als Beispiel angesehen, aber das Gleiche gilt für die vertikale Achse (Amplitude). Die Reproduzierbarkeit der Kurve wird dadurch bestimmt, wie fein die Amplitude der vertikalen Achse am Beobachtungspunkt einer bestimmten Abtastperiode ausgedrückt werden kann. Dies ist für Entwickler leicht zu verstehen.

** Eine CD-Bittiefe von 16 Bit bedeutet, dass die Abtastperiode mit einer Auflösung von 2 bis 16 Potenzen oder 65.536 ausgedrückt werden kann. ** ** **

Für das nächste Mal

Bisher haben wir gesehen, wie Wellenformen in der Welt der digitalen Signale dargestellt werden können.

Es stellte sich heraus, dass es beim Ausdrücken einer Sinuswelle mit der Klangqualität einer CD ausreicht, eine Kurve mit einer 16-Bit-Genauigkeit von 44100 Mal pro Sekunde zu zeichnen. Vielleicht stehen die Programmierer bereits im Rampenlicht.

** Das bedeutet, dass der Klang der CD-Klangqualität für 1 Sekunde durch ein 16-Bit-Float-Array mit 44100 Elementen ausgedrückt werden kann! !! ** ** **

Nun, es kommt! Nächstes Mal werde ich die Sinuswelle programmgesteuert schreiben.

Bonus

Alle Diagramme in diesem Artikel werden mit den folgenden Python-Bibliotheken erstellt. Einfach und bequem.

Recommended Posts

Ton erzeugen durch Programmieren von Teil 2
Lerne Mathematik und Englisch durch Programmieren (Teil 2)
[Programmieren lernen] Logikvergleich nach Sprache Teil 3 (bedingte Verzweigung)
Effiziente Programmierung durch bequeme Verkettung von Zeichenfolgen mit VBA
Versuchen Sie es mit normaler Linux-Programmierung Teil 7
Aussprache Memo durch Programmierung geprüft
Versuchen Sie es mit normaler Linux-Programmierung Teil 2
Versuchen Sie es mit normaler Linux-Programmierung Teil 4
Versuchen Sie es mit normaler Linux-Programmierung Teil 6
Versuch einer normalen Linux-Programmierung Teil 1
Lineare Programmiermethode nach Automarkierungsmethode
[Programmieren lernen] Logikvergleich nach Sprache Teil 2 (Variablen: Zahlenwerte, Zeichenketten)
Beobachtermuster von Nyanko Teil 1 verstanden
Beobachtermuster, das in Nyanko Teil 2 zu sehen ist
Lesen Sie die normale Linux-Programmierung (nur Teil 1).