» Müzik aletleri »Arduino Uno'da dört sesli sentezleyici

Arduino Uno'da dört sesli sentezleyici



Instructables isimli kullanıcının rgco isimli yazarı, dört sesli bir 1.5 oktav synthesizer ile geldi. Arduino Uno. Karşılaştırma için, birbirinden sadece tasarımda farklı olan ve aynı çip tarafından yapılan yaygın çocuk sentezleyicileri üç seslidir. Doğru, müziğe otomatik olarak ritim ile eşlik edebilir, tek sesli melodileri ezberleyebilir ve hayvanların seslerini taklit edebilirler. Ama sonra ev yapımı ürün kulağa hoş geliyor. Neden?



Her şey parametrelerle ilgilidir. Örnekleme frekansı 31 kHz, 9 bit, 4 ses, zamanla değişen tarama ile FM sentezi, ADSR zarf, 12 sanal enstrüman, 1,5 oktav alan 18 tuş.

Master Fritzing'de sentezleyici devresini oluşturur:



İçinde, bir breadboard tipi breadboard üzerindeki bileşenlerin konumunu ve aralarındaki bağlantıları simüle eder:



Ve düzeni gerçek hayatta toplar:



Sadece “dök ve kullan” tasarımla yapabileceğiniz en basit şeydir. 18 tuş (dördüncü oktavdan FA beşinciye kadar) - on dokuzuncu çalmak için sanal enstrümanları bir halkada değiştirir: piyano, ksilofon, gitar, santur, çan, korkak, vibrato, metal, keman, bas, trompet, akordeon. Sesin doğası, profesyonel sentezleyicilerin aksine tuş vuruşlarının süresinden etkilenir, ancak çabadan etkilenmez. Ancak geliştirici, sanal araçlarınızı da programlamayı denemenizi istiyor. Her biri on parametre ile verilir. Sihirbaz hangi parametreye bağlı olduğunu size söyler.

ldness - hacim

Bu parametre 64'ten düşükse, aşırı yük ve ilgili bozulmalar hariç tutulur. Ancak, uzun süre maksimum ses seviyesinde ses çıkarmayan böyle bir sanal enstrümanı programlarsanız, bu parametrenin değeri 64'ü aşabilir, çünkü dört ses de aynı anda seyrek olarak duyulur.

pitch0 - adım kaydırma

Bu parametreyi 12 olarak ayarlarsanız aralık yukarıdakilere karşılık gelir. Hareketleri azaltın, artırın. Sıfır, tam olarak bir oktav, 24 - tam olarak bir oktav aşağı kaydırmaya karşılık gelir.

ADSR_a - hacim dönüş hızı sıfırdan maksimuma

Daha küçük, daha yavaş.Örneğin, 8192, 4 ms, 256 ila 128 ms'ye karşılık gelir.

ADSR_d - sesi ADSR_s parametresi tarafından belirtilen maksimum değere düşürmek için hız.

İlke aynı.

ADSR_s - tuşa uzun süre basıldığında sesin azaldığı değer

Örneğin, 256 - tuş basılı tutulurken ses seviyesi her zaman maksimum kalır. 192 - ses seviyesi yüzde 80'e düşer ve tuş basılı tutulurken öyle kalır. 0 - tuş basılı tutulsa bile ses seviyesi sıfıra düşer.

ADSR_r - tuşu bıraktıktan sonra sesi sıfıra düşürme hızı

İlke, ADSR_a ve ADSR_d parametreleri ile aynıdır.

FM_inc - modülasyon frekansının tona oranı

256 değeri ile, bu oran 1: 1, 512 - 2: 1, 128 - 1: 2 ile, geri kalanı benzetme ile ortaya çıkıyor. Bu parametre 64'ün katları olarak ayarlanırsa, ses anarmonik olacaktır.

FM_a1 - bir notun başlangıcındaki frekans modülasyonu aralığı

256, çok çeşitli harmoniklere karşılık gelir. Bir azalma ile ton daha temizdir, harmoniklerde bir artışla daha fazla olur.

FM_a2 - notun sonunda tarama frekansı modülasyonu

İlke aynı. Çoğu gerçek enstrüman için, harmonikler temel tondan daha hızlı bozulur. Tersini yaparsanız, olağandışı sesler alırsınız.

FM_dec - frekans modülasyon aralığının FM_a1 tarafından ayarlanandan FM_a2 tarafından ayarlanana geçiş hızı

İlke, ADSR_a, ADSR_d ve ADSR_r parametreleriyle aynıdır.

31.250 Hz'lik bir PWM frekansı, saat frekansının (16 MHz) 512'ye bölünmesiyle elde edilir. Program, olayların kesintisiz bir şekilde zamana bağlanacağı şekilde tasarlanmıştır. Bunun yerine, bir zamanlayıcı taşma biti söz konusudur. Programın gerekli olan her şeyi yapabilmesi için sadece 8 ve 16 bit uzunluğunda tamsayılar kullanılır. Sinüs dalgası, 8 bitlik sayılar tablosu şeklinde sunulur. Yardımcı işlemler - anahtar durumların okunması, sanal enstrümanların değiştirilmesi, seslerin seçilmesi, zaman içinde değişen not parametrelerinin hesaplanması - toplam 0.48 ms süren 15 prosedür arasında dağıtılır. Şu anda, bazı işlemler iki adet 16 bit ikili sayıyı çarpmak için gerekli olan 32 bit hassasiyetle gerçekleştirilir.

Basit bir sinüs dalgası donuk geliyor çünkü spektrumunda harmonik yok. FM sentezi, gerçek enstrümanların sesini simüle ederek bunları almanıza ve zaman içinde spektrumlarını değiştirmenize izin verir. Çoklu frekanslar, örneğin çanlarda meydana gelen anharmonik bir ses verir. Cihaz, bazı harmonikler diğerlerinden daha hızlı bozulduğunda, zaman içinde gerçek enstrümanlarda bulunan spektrumdaki değişikliği taklit eder.
10
9.3
8.4

Yorum ekle

    • gülümsegülümsemelerxaxatamamdontknowyahoonea
      patronçizikaptalevetevet-evetagresifgizli
      üzgünümdansdance2dance3pardonyardımiçecekler
      Durarkadaşlariyigoodgooddüdükbaygınlıkdil
      dumanzırıltıcraybeyanalaycıDon-t_mentionindir
      ısıöfkelilaugh1mdatoplantımoskingnegatif
      Not_ipatlamış mısırcezalandırmakokumakkorkutmakkorkutuyorarama
      alaythank_youbuto_clueumnikakutanlaşmak
      kötübeeeblack_eyeblum3kızarmakövünçcan sıkıntısı
      sansürlüşakasecret2tehdit etmekzaferyusun_bespectacled
      shokrespektlolPrevedkarşılamaKrutoyya_za
      ya_dobryiyardımcıne_huliganne_othodiFludyasakyakın
1 açıklama
kiril_vihrov7892
İlginç bir proje.
Son zamanlarda "Arduino'da Synthesizer" projesini anahtar olarak gördüm, neredeyse tüm PC klavyesi kullanılıyor
Tüm Arduino'nun ayrıntılarından bir hoparlör ve bir bilgisayar.
PC uygulaması tüm işi yapar, com port üzerinden Arduino'yu kontrol eder
her şey yolunda gidiyor. Bak yardımcı olabilir

Okumanızı tavsiye ederiz:

Akıllı telefon için verin ...