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.