تعديل الصوت

بعض النظرية التي أعرفها عن الصوت - الصوت هي:
موجة ، التذبذبات ، التذبذبات المثبطة ، موجة يمكن وصفها من وجهة نظر الفيزياء ، يمكن وصف الموجة من وجهة نظر الرياضيات.

قم بتنزيل واختبار البرنامج


نظرًا لأننا نمثل نموذجًا على جهاز كمبيوتر ، يتم وصف موجتنا باستخدام تسلسل (سلسلة فورييه) من البايتات (الأرقام من -128 إلى 127 والصفر) ، أي مجموعة من البايتات.

أفضل وصف للمعادلة الاهتزازية بواسطة دالة SIN.

موافق ، سيكون الأمر بسيطًا جدًا إذا قمنا بتشغيل وظيفة SIN عبر الصفيف.

لذلك ، مسترشدة بمقالات حول وصف جهاز المزج Yamaha ، كتبت الخوارزمية التالية:

1. باستخدام وظيفة SIN ، يتم إنشاء موجة رئيسية أو نمذجة ، فيما يلي صيغة قد تكون مفيدة للمطورين الآخرين:

for(int k = 0; k < SoundLabVisual.player.data.length;k++){ double sinusoid = amplitude1 * Math.sin(2 * (3.14/1 ) * k * frequency1 + faza); } 

حيث:
السعة 1 - السعة
تردد 1 - تردد التذبذب
فزة - المرحلة الأولى من التذبذبات

2. باستخدام دالة SIN الثانية ، يتم إنشاء موجة رئيسية ، حيث تكون قيمة الموجة الأولى هي:

 //c   double a1 = 0.1f; //c   double c1 = 0.1f; //c   double d1 = 0.1f; sinusoid = a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 )); 


لقطة شاشة للبرنامج

الصورة

لقد قمت بتحميل أصوات الاختبار في برنامج lmms.

الصورة

استمع mp3

سيتم تنفيذ خوارزمية أخرى ستعمل على القنوات ، إذا أمكن ، سأكتب عنها في المقالة الثانية.

تحديث:
وفقًا لتعليقات المعلقين ، يمكن الآن مضاعفة الخوارزميات بأنفسهم وفيما بينهم.

 if(jCheckBox8.isSelected()){ sinusoid = (a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 ))) * (a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 ))); }else{ sinusoid = a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 )); } 


التحديث 2: تم تحديث البرنامج ، والآن يمكن خلط الموجة مع الصوت.

Source: https://habr.com/ru/post/ar431488/


All Articles