[PYTHON] Faire du son en programmant la partie 2

Comprendre la représentation numérique du son

Cette fois, nous verrons comment la vibration des marchandises, qui est une chose très analogique, s'exprime dans le monde des signaux numériques.

Que signifie 16 bits / 44,1 kHz?

Que signifie 16 bits / 44,1 kHz, qui est la norme numérique pour les CD mentionnée dans l'article précédent?

Voici, en conclusion, le format du CD,

Il peut être utilisé comme un index pour montrer la qualité sonore telle qu'elle est.

Les développeurs connaissent peut-être la profondeur de bits. Cela montre le nombre de bits par unité fixe, et comme chose familière, cela montre le nombre de couleurs par point dans les images d'ordinateurs personnels.

La profondeur de bits dans le monde du son numérique indique avec quelle finesse les points indiqués par la forme d'onde peuvent être décomposés et exprimés dans une certaine unité sur l'axe des temps. Et la fréquence d'échantillonnage montre avec quelle finesse un certain point sur l'axe des temps peut être décomposé et exprimé.

C'est une définition provisoire, mais je ne pense pas que l'explication ci-dessus à elle seule viendra au premier plan, je voudrais donc l'expliquer visuellement en utilisant des ondes sinusoïdales comme un échantillon plus simple.

Forme d'onde sinusoïdale

Qu'est-ce qu'une onde sinusoïdale?

Tout d'abord, je vais expliquer brièvement ce qu'on appelle une «onde sinusoïdale», qui est traitée comme un exemple d'explication.

L'onde sinusoïdale, également appelée onde sinusoïdale, a la forme d'onde la plus simple pour représenter le son.

sine-wave.png

La figure ci-dessus est une forme d'onde sinusoïdale générale. L'axe horizontal est l'axe du temps, et l'axe vertical montre l'amplitude, qui sera décrite plus loin. Comme vous le savez, la hauteur peut être exprimée par fréquence, mais sur cette figure, plus l'angle du graphique est raide, plus la fréquence est élevée et plus la fréquence est douce, plus la fréquence est basse.

Cette onde sinusoïdale est la forme d'onde la plus simple et peut être considérée comme la représentation la plus pure du son.

Un peu déraillé ici, mais dans la nature, ces sons d'onde sinusoïdale pure n'existent pas vraiment. Par exemple, imaginez le son d'un piano. Comme beaucoup d'entre vous le savent peut-être, lorsque vous jouez le son "do" sur le piano, on l'appelle en fait la gamme "do", qui est appelée le "ton de base", mais on l'appelle aussi "harmonique". Inclut les sons qui sont des multiples entiers de la fréquence du son de base. Par exemple, 3e harmonique (so), 5e harmonique (mi), etc. Le son du piano et le son de l'orgue sont complètement différents même avec le même "do". Cela dépend de la façon dont cette harmonique est incluse. En d'autres termes, ce sont les harmoniques qui déterminent le caractère du son.

Une onde sinusoïdale est une hauteur strictement pure qui ne contient aucune des «harmoniques» mentionnées ci-dessus. À propos, la sensation du son est similaire à la sensation de «deux contre deux» lorsque le téléphone raccroche. Elle n'existe peut-être pas dans la nature et ne vous est peut-être pas familière, mais la simplicité étant un bon exemple, nous utiliserons cette onde sinusoïdale comme exemple.

Expression pour onde sinusoïdale

Comme certains d'entre vous l'ont peut-être appris comme une «courbe sinusoïdale» en mathématiques, la courbe sinusoïdale ci-dessus est représentée par la formule suivante.

koushiki.png

Où t est le temps, A est l'amplitude (écart maximal par rapport au centre de l'onde), ω est la fréquence angulaire et −φ est la phase initiale (phase à t = 0). Parmi ceux-ci, la phase initiale n'a rien à voir avec l'avenir, nous la fixerons donc toujours à 0, et à partir de maintenant, la courbe sinusoïdale sera exprimée par la formule suivante.

y =amplitude*sin(la fréquence*Heures du jour)

Avec cette formule, vous pouvez dessiner la courbe de l'onde sinusoïdale, mais si l'onde sinusoïdale existe réellement, des points infinis sont nécessaires pour exprimer la forme d'onde montrant la vibration telle qu'elle est, et il s'agit d'un graphique numérique. Il ne peut pas être exprimé par, mais il sera exprimé par approximation. Cette approximation est plus proche de la courbe réelle à mesure que le nombre d'échantillons aux points formant la courbe augmente et plus elle devient fine. Le nombre et la finesse de ce nombre d'échantillons sont le taux d'échantillonnage et la profondeur de bits utilisés comme indicateurs de l'expression sonore dans le monde numérique.

Taux d'échantillonnage et profondeur de bits

Dans la section précédente, nous avons expliqué que la fidélité pour représenter numériquement une courbe qui représente une forme d'onde est indiquée par la fréquence d'échantillonnage et la profondeur de bits.

Par souci de clarté, nous continuerons à utiliser les ondes sinusoïdales comme exemple. Regardez la courbe ci-dessous.

sine-wave-10.png

On dit dignement «signe vague», mais quel est le signe vague dans ce cliquetis! C'est une chose misérable qui vous donne envie de faire entendre votre voix. Ou plutôt, il n'a même pas de courbe.

Pourquoi es-tu devenu si triste?

En fait, cela définit la précision de décomposition de l'axe horizontal, qui est l'axe du temps, à 10. Ici, supposons que l'axe horizontal représente 1 seconde au total. Ensuite, il peut être considéré comme une courbe dessinée en prélevant un échantillon avec la formule sinusoïdale toutes les 1/10 de seconde.

Alors, comment en faire une courbe plus décente? Bien sûr, il vous suffit d'améliorer la précision de l'échantillon.

1/20 secondes

sine-wave-20.png

Les stations d'échantillonnage sont marquées pour plus de clarté. Vous pouvez voir qu'il est beaucoup plus proche de la courbe que celui du 1/10 de seconde précédent.

1/100 seconde

sine-wave-100.png

Si vous définissez la précision de l'échantillon sur 1 en 1/100 de seconde, vous pouvez dessiner une courbe que vous souhaitez exprimer considérablement. L'échantillonnage 100 fois par seconde de cette manière peut être exprimé en ** taux d'échantillonnage 100 Hz **.

** En d'autres termes, une fréquence d'échantillonnage de CD de 44,1 kHz signifie que l'échantillonnage est effectué avec une précision de 44100 fois par seconde. ** **

La précision de l'axe horizontal (axe du temps) a été vue comme un exemple jusqu'à présent, mais il en va de même pour l'axe vertical (amplitude). La reproductibilité de la courbe est déterminée par la précision avec laquelle l'amplitude de l'axe vertical peut être exprimée au point d'observation d'une certaine période d'échantillonnage. C'est facile à comprendre pour les développeurs.

** Une profondeur de bits CD de 16 bits signifie que la période d'échantillonnage peut être exprimée avec une résolution de 2 à la 16e puissance, soit 65 536. ** **

Pour la prochaine fois

Jusqu'à présent, nous avons vu comment représenter les formes d'onde dans le monde des signaux numériques.

Il s'est avéré que lors de l'expression d'une onde sinusoïdale avec la qualité sonore d'un CD, il suffit de dessiner une courbe avec une valeur de précision 16 bits 44100 fois par seconde. Peut-être que les programmeurs sont déjà à l'honneur.

** Cela signifie que le son d'une seconde de qualité sonore CD peut être exprimé par un tableau de type float 16 bits avec 44100 éléments! !! ** **

Eh bien, ça s'en vient! La prochaine fois, j'écrirai en fait l'onde sinusoïdale par programmation.

prime

Tous les graphiques de cet article sont créés à l'aide des bibliothèques Python suivantes. Facile et pratique.

Recommended Posts

Faire du son en programmant la partie 2
Apprenez les mathématiques et l'anglais grâce à la programmation (partie 2)
[Apprentissage de la programmation] Comparaison logique par langue partie 3 (branchement conditionnel)
Programmation efficace en facilitant la concaténation de chaînes avec VBA
Essayez la programmation Linux normale, partie 7
Mémo de prononciation examiné par programmation
Essayez la programmation Linux normale, partie 2
Essayez la programmation Linux normale, partie 4
Essayez la programmation Linux normale, partie 6
Essayer la programmation Linux normale Partie 1
Méthode de programmation linéaire par méthode de marqueur de voiture
[Apprentissage de la programmation] Comparaison logique par langue partie.2 (variables: valeurs numériques, chaînes de caractères)
Modèle d'observateur compris par Nyanko Partie 1
Modèle d'observateur qui peut être vu dans Nyanko Partie 2
Lire la programmation Linux normale (partie 1 uniquement)