جدول المحتويات:

اللحن التلقائي: 7 خطوات
اللحن التلقائي: 7 خطوات

فيديو: اللحن التلقائي: 7 خطوات

فيديو: اللحن التلقائي: 7 خطوات
فيديو: كيفية الغناء بال AutoTune وماهي الوزنية الصحيحة لصوتك 2024, شهر نوفمبر
Anonim
ضبط تلقائي
ضبط تلقائي

Bienvenue dans notre projet Autotune

Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composée de 3 élèves ingénieurs de Polytech Sorbonne en EISE4 (4ème année du cycle ingénieur en électronique informatique systèmes embqués).

نوتر بروجيت يتألف من émettre un son capter par un micro، émit par un haut parleur et afficher la FFT sur un écran PC. من الممكن تعديل الصوت إلى الحجم والصوت والصورة.

C'est parti pour les explications !!

الخطوة 1: المواد المركبة Utilisés

  • كارت DEO-Nano-SoC
  • خرج البطارية 2 à 5V2A
  • مجهري
  • أوت بارلور 8 أوم
  • ريجولاتور: MAX660
  • Capteur IR: GP2Y0E02A
  • Ampli Audio: LM386N-1 / NOPB
  • DAC: MCP4821-E / P.
  • الصمام الثنائي: 1N4148
  • ترانزيتور: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • المقاومات
  • المكثفات
  • واي فاي: ESP8266EX
  • 4 مفاتيح
  • 3 المصابيح دي couleurs

الخطوة الثانية: الهندسة المعمارية

هندسة معمارية
هندسة معمارية

Voici ci-dessus notre schéma block représentant l'architecture de notre projet Autotune.

Comme vous pouvez le voir، notre projet va pouvoir capter un son à l'aide du micro dont le signal analogique capté sera converti en un un signal numérique dont l'ADC est intégré dans la carte FPGA. تعديل إشارة المرور بشكل سلبي يؤدي إلى الاختيار على مستوى الكابتن بالقرب من المفاتيح والمفاتيح. Enfin ، تعديل الإشارات ، إعادة تحويل الإشارات الانتقائية في إشارة إلى تناظرية وسلسلة تنقل عبر الإنترنت.

الخطوة 3: Partie Analogique

جزء انالوجيك
جزء انالوجيك
جزء انالوجيك
جزء انالوجيك
جزء انالوجيك
جزء انالوجيك

Notre partie analogie est Composée de 2 Circles:

إن الدائرة الأولى التي يتم عرضها على الأطراف الجزئية ، ذات الجودة المتفرعة في CAN de la carte FPGA ، مؤلفة من تضخيم تضخيم الكسب وتثبيت إشارة المرور.

Un deuxieme Circuit qui repésentera la partie haut parleur، qui sera Branché à la sortie de la carte FPGA، composé du DAC، d'un diviseur de التوتر وتضخيم الصوت.

Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.

الخطوة 4: الانطباع Des PCBs

الانطباع ديس ثنائي الفينيل متعدد الكلور
الانطباع ديس ثنائي الفينيل متعدد الكلور
الانطباع ديس ثنائي الفينيل متعدد الكلور
الانطباع ديس ثنائي الفينيل متعدد الكلور
الانطباع ديس ثنائي الفينيل متعدد الكلور
الانطباع ديس ثنائي الفينيل متعدد الكلور

صيانة ، غير موجودة في الكلور.

A l'aide du logiciel Alitum، nous avons pu creer deux PCBs، c'est à dire la partie micro et haut parleur. مراسل موقع Voici au tutoriel Altium qui peut المؤكد vous aider!

الخطوة 5: Partie Numérique

Partie Numérique
Partie Numérique

Après تجنب طباعة ثنائي الفينيل متعدد الكلور ، vous pouvez enfin متفرعة من قائمة طعام انتقائية FPGA!

Pour la partie numérique، nous avons créer un code C qui est séparé en deux en utilisant un thread. D'un coté ، على إشارة récupère le modifie et on l'envoie vers le DAC en spi. D'un deuxième côté ، على حساب la fft et on envoie le résultat par wifi. Cette Séparation permet d'éviter les ralentissements sur la première partie.

عند الاستفادة من Qsys et quartus للحصول على المتفرعة من HPS لتركيبات مختلفة. عند استخدام بطاقة IP SPI للحصول على اتصال مع خدمة الاتصال اللاسلكي بالإنترنت عبر بروتوكول الإنترنت (IP UART) من أجل الاتصال بشبكة wifi انتقائية.

الخطوة 6: لو كود

Voici le lien où nous avons récuperé le code pour faire la fft.

عند استخدام رمز se pour calculer la fft:

// Création de la configuration et des buffers in et out pour s (t) et S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT، 0، NULL، NULL) ؛

kiss_fft_cpx * in = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)) ؛ kiss_fft_cpx * out = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)) ؛

لـ (j = 0 ؛ j <NFFT ؛ j ++) {القيمة = * h2p_lw_adc_addr ؛ // recupère la valeur proofant du pcb du microin [j].r = Value-2000.0 ؛ // on retire l'offset de cette valeurfor (i = 0؛ i <2100؛ i ++) {} // حضور un temps bien précis pour تجنب une fréquence d’échantillonnage connue}

// Calcul de la FFT depuis in verskiss_fft (config، in، out)؛ bzero (C_val، 110)؛ // remet à zero le tableau qui nous sert de buffer que l'on va envoyer par wififor (t = 0؛ t <(NFFT / 4)؛ t ++) {// pour limiter la taille du buffer on limite la sortie de la fft à des valeurs entre 0 et 9 tmp_log = 20 * (log (abs (out [t].r / 1000.0))) * 9 ؛

tmp_log = tmp_log / 50 ؛ إذا (tmp_log <0) {tmp_log = 0 ؛ } إذا (tmp_log> 9) {tmp_log = 9 ؛ } sprintf (tmp_val، "٪ d"، tmp_log) ؛ strcat (C_val ، tmp_val) ؛ // ajoute au buffer la nouvelle valeur

} send_wifir (C_val) ؛ // على envoi le buffer par wifi

fonction ترسل wifir:

send_wifir باطلة (char * com_AT) {int num، z ؛ لـ (z = 0؛ z <22000000؛ z ++) {} لـ (num = 0؛ num <(int) strlen (com_AT)؛ num ++) {* (h2p_lw_rs232_addr) = com_AT [num] ؛ }}

قم بتهيئة شبكة wifi حسب الطلب عند استخدام رمز le suivant:

send_wifi ("AT + RST / r / n") ؛ // requeste de reset à la cartesleep (3) ؛ // حضور qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r") ؛ // choisit le mode de la cartesend_wifi ("AT + CWJAP = \" wifiNom / "، \" MotDePasse / "\ r / n")؛ // على lui demande de se connecter au wifisleep (15) ؛ // عند الحضور qu'elle se connectesend_wifi ("AT + CIPSTART = \" UDP / "، \" 192.168.43.110 / "، 32003 / r / n")؛ // On lui requeste de se connecter en udp avec le serveur ouvert sur un autre ordinateursleep (3)؛ // الحضور la connexionsend_wifi ("AT + CIPMODE = 1 / r / n") ؛ // on se met en mode envoie en continueleep (3)؛ send_wifi ("AT + CIPSEND / r / n")؛ // عند البدء في الإرسال

fonction ترسل wifi:

إرسال باطل (char * com_AT) {int num، z؛ for (num = 0؛ num <(int) strlen (com_AT)؛ num ++) {* (h2p_lw_rs232_addr) = com_AT [num] ؛ لـ (z = 0؛ z <2500000؛ z ++) {}}}

كود du serveur:

Affichage de la fft:

int i ، j ، القيمة = 0 ؛ نظام ("مسح") ؛

لـ (i = 0؛ i <41؛ i ++) {if (i <40) {for (j = 0؛ j <BUFSIZE؛ j ++) {if (table [j] * 4> (40 - i)) {if (الجدول [j] * 4> 35) printf (RED "|" RESET) ؛ وإلا إذا (الجدول [j] * 4> 28) printf (L_RED "|" RESET) ؛ وإلا إذا (الجدول [j] * 4> 21) printf (YEL "|" RESET) ؛ وإلا إذا (الجدول [j] * 4> 14) printf (L_YEL "|" RESET) ؛ وإلا إذا (الجدول [j] * 4> 7) printf (L_GRN "|" RESET) ؛ آخر printf (GRN "|" RESET) ؛ } else printf ("")؛ } printf ("\ n")؛ } else {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n")؛ / * لـ (j = 0 ؛ j <(BUFSIZE / 2) ؛ j ++)

موصى به: