Écrivez une note de ce que vous avez appris de nouveau lors de la sortie de musique avec un micro-ordinateur
En réalisant la technologie, je me suis référé à l'article suivant de "M. Chikuwa". http://nn-hokuson.hatenablog.com/entry/2017/09/01/092945
Pour le moment, je savais que le son était un composite de sinusoïdes de différentes fréquences. J'ai commencé par le vérifier en Python.
D'une manière ou d'une autre, cela ressemble à un signal vocal.
Le code réalisé est indiqué ci-dessous.
import numpy as np
import matplotlib.pyplot as plt
#la fréquence[Hz]
f1 = 100
f2 = 500
f3 = 1000
f4 = 10000
f = [f1,f2,f3,f4]
#amplitude[V]
A1 = 5
A2 = 3
A3 = 1
A4 = 0.1
A = [A1,A2,A3,A4]
#temps
t = np.arange(0,0.01,0.00001)
#une fonction
fig = plt.figure()
#Ajouter des axes
ax = fig.add_subplot(111)
y = []
for i in range(4):
y.append(A[i]*np.sin(2*np.pi*f[i]*t))
plt.plot(t,y[i])
#Exécution de dessin
#Paramètres d'étiquette d'axe
ax.set_xlabel("time[s]", size = 14, weight = "light")
ax.set_ylabel("Volatage[V]", size = 14, weight = "light")
plt.show()
La synthèse des ondes est réalisée par la somme des ondes sinusoïdales de chaque fréquence
plt.plot(t,sum(y))
Si vous faites vibrer l'air avec une sorte de signal, il doit être reconnu comme une sorte de son.
Nous utilisons un haut-parleur comme méthode pour faire vibrer l'air. (Il semble que ce haut-parleur convertit les signaux électriques en vibrations)
Un signal PWM est généralement utilisé pour donner un signal électrique à un haut-parleur.
** Image de l'onde composite appliquée comme entrée au haut-parleur **
Cette fois, nous visions à produire des fichiers MP3 sous forme audio. J'ai utilisé M5STACK comme micro-ordinateur pour la commande vocale.
** 1. Convertir le format de fichier MP3 ** En faisant ce travail, je me suis référé au site suivant. http://nn-hokuson.hatenablog.com/entry/2017/09/01/092945
J'ai préparé le fichier MP3 que je veux lire et je l'ai converti sur le site suivant. https://audacity.softonic.jp/
Ici, changez le format de fichier des données originales (fichier MP3 préparé) Il est possible de déterminer une fréquence d'échantillonnage arbitraire et de créer des données avec une capacité plus légère que les données d'origine. Parce que la capacité de la mémoire est limitée lors du montage sur un micro-ordinateur tel que M5STACK Il est nécessaire de consulter la durée de lecture et la fréquence d'échantillonnage.
** 2. Convertir en fichier texte **
Prenant comme exemple la musique échantillonnée Enregistrer dans le format d'enregistrement suivant
Ensuite, le nom de fichier .raw sera généré. Mettez-le sur le terminal Linux
xxd -i nom de fichier.raw
(Nommez provisoirement le fichier sound.raw)
unsigned char sound_raw[] ={
//Le résultat de l'échantillonnage de la musique
}
unsigned int sound_raw_len = xx
Il est sorti avec. Transformez ce résultat en un script Arduino En copiant, le fichier audio est stocké dans la mémoire d'Arduino. Vous pouvez maintenant l'enregistrer.
** 3. Implémenté dans M5 STACK **
Avec M5STACK, il était possible de réaliser avec le code suivant.
#include <M5Stack.h>
unsigned char sound_raw[] ={
//Entrez le résultat de l'échantillonnage de la musique
}
unsigned int sound_raw_len = xx; //Nombre d'échantillons
unsigned char pwm;
void play() {
for (int i = 0; i < sound_raw_len; i++) {
pwm = sound_raw[i];
dacWrite(25, pwm); //Pour M5STACK, 25PIN est connecté au haut-parleur.
delayMicroseconds(xx);// xx:Dépend de la fréquence d'échantillonnage
}
dacWrite(25, 0); //speakeroff
}
void setup() {
M5.begin();
delay(500);
M5.Lcd.fillScreen(WHITE);
}
void loop()
{
if(M5.BtnA.wasPressed())//Son lorsque vous appuyez sur le bouton A
{
play();
}
M5.update();
}
** Supplément ** J'ai exécuté ce code sur Arduino Nano et cela n'a pas fonctionné. En termes simples, c'était comment définir la fréquence porteuse et la séquence de pwm. J'espère pouvoir écrire à ce sujet dans un autre article.
Recommended Posts