İçindekiler:

Arpej Sentezleyici (Sivrisinek I): 6 Adım
Arpej Sentezleyici (Sivrisinek I): 6 Adım

Video: Arpej Sentezleyici (Sivrisinek I): 6 Adım

Video: Arpej Sentezleyici (Sivrisinek I): 6 Adım
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Temmuz
Anonim
Arpej Sentezleyici (Sivrisinek I)
Arpej Sentezleyici (Sivrisinek I)

Mosquito I, Arduino Nano ve Mozzi ses sentez kitaplığını kullanan küçük bir arpej sentezleyicidir. Yirmiden fazla 8 adımlı diziyi çalabilir, ancak istediğiniz kadar özel dizi ekleyebilirsiniz. Kurulumu nispeten basittir ve çok fazla parça gerektirmez.

Gereçler:

  • Arduino Nano (veya herhangi bir Arduino gerçekten çalışmalı)
  • 5 adet Potansiyometre (10K Lineer)
  • 2 adet Buton
  • 1 adet LED
  • 1 adet Direnç (330 ohm)
  • 2 adet Direnç (1K)
  • 1 adet Direnç (2K)
  • 1 adet Elektrolitik Kondansatör (100 uF)
  • 1 adet Seramik Kondansatör (33 nF)
  • 1 adet Stereo Jak
  • Bağlantı teli
  • ekmek tahtası

Adım 1: Arduino'yu Kurmak

Arduino'yu Kurmak
Arduino'yu Kurmak
Arduino'yu Kurmak
Arduino'yu Kurmak

İlk olarak, Nano'yu breadboard'a alalım ve gücümüzü ayarlayalım:

  1. Nano'yu breadboard üzerine yerleştirin. Yukarıdaki resimde gösterildiği gibi yerleştirin. Breadboard'un orta kanalını geçmeli. USB bağlantı noktası o tarafa bakacak şekilde, devre tahtasının bir ucuna doğru yerleştirilmesini isteyeceksiniz. Bu şekilde kablo, prize taktığımızda aramıza girmez. Uno veya Mega gibi daha büyük bir Arduino kullanıyorsanız, elbette onu devre tahtasına monte etmeyeceksiniz.
  2. Güç raylarını Arduino'ya bağlayın. Breadboard'unuzun pozitif (kırmızı) raylarından birini tel veya atlama telleri kullanarak Arduino'nun 5V pinine bağlayın. Ardından negatif (mavi) raylardan birini Nano'nun GND pinlerinden birine bağlayın.
  3. Güç raylarını birbirine bağlayın. Breadboard'un her iki tarafındaki raylar boyunca güç elde etmek için, bir taraftaki pozitif raydan diğer taraftaki pozitif raya bir tel geçirerek devre tahtasının her iki tarafındaki rayları birbirine bağlayın. Bunu negatif raylarla tekrarlayın.

2. Adım: Kontrolleri Ekleme

Kontrolleri Ekleme
Kontrolleri Ekleme

Sivrisinek I, kontroller için beş potansiyometre ve iki düğme kullanır.

Potansiyometreler:

  1. Tencereleri breadboard üzerine yerleştirin. Tencereleri, her pim kendi sırası üzerinde olacak şekilde yerleştirin.
  2. Tencereleri güç raylarına bağlayın. Her bir tencerenin sol taraftaki pimini (düğme tarafına bakıyorsanız) devre tahtasındaki negatif raylardan birine bağlayın. Her bir tencerenin sağ tarafındaki pimi, devre tahtasının pozitif raylarından birine bağlayın.
  3. Tencereleri Arduino'ya bağlayın. Her bir tencerenin orta pimini Arduino'daki analog pimlerden birine bağlayın. İlk potun merkez pimi A0'a bağlanır, ikinci pot A1'e ve böylece son pot A4'e bağlanır.

Düğmeler:

  1. Düğmeleri breadboard'a yerleştirin. İki basmalı düğmeyi devre tahtasına, orta kanalı çaprazlayacak şekilde yerleştirin.
  2. Olumlu tarafları birleştirin. Breadboard'un bir tarafında, basmalı düğmenin pimlerinden birini pozitif raya bağlayın.
  3. Negatif tarafları bağlayın. 1K dirençlerden birini devre tahtasına yerleştirin, böylece bir ucu basma düğmesinin kullanılmayan pimine ve direncin diğer tarafı negatif raya bağlanır.
  4. Düğmeyi Arduino'ya bağlayın. Düğmeyi negatif raya ve D2 pinine bağlayan sıraya bir tel geçirin. Aynısını diğer düğmeyle yapın, ancak onu D3'e bağlayın.

Adım 3: Çıktıları Ekleme

Çıktı Ekleme
Çıktı Ekleme

Her dizinin ilk adımında bir LED'i yakmanın yanı sıra pim 9'dan ses çıkışı yapıyoruz. Bunun için donanımı nasıl kuracağınız aşağıda açıklanmıştır.

LED

  1. Breadboard üzerinde boş bir alana bir LED yerleştirin.
  2. LED'in negatif (kısa) ayağını negatif raya bağlayın.
  3. Akım sınırlayıcı direnci yerleştirin. 330 ohm'luk bir direncin bir tarafını LED'in pozitif (uzun) ayağına bağlayın. Direncin diğer tarafını Arduino'nun D4 pinine bağlayın.

Ses çıkışı

  1. RC ağını yerleştirin. Arduino'dan çıkış sinyali pin 9'dan geliyor ancak sinyal bazı hoparlörlerin kaldırabileceğinden biraz daha sıcak olabilir. Çizgi düzeyine daha yakın bir seviyeye getirmek için bir RC ağı ekledim (Notes & Volts'un tasarımına dayalı). 33nF ve 100uF kapasitörleri, resimde/şematikte gösterildiği gibi 2K dirençle birlikte yerleştirin. Elektrolitik 100 uF kapasitörün doğru polariteye bağlı olduğundan emin olun (artı/uzun bacak Arduino'daki pim 9'a ve eksi/kısa bacak jaka bağlanır).
  2. Ses jakının negatif tarafını toprağa bağlayın. Ses jakı bağlantıları, kullandığınız türe bağlı olarak biraz değişecektir, ancak genellikle hepsi aynı şekilde çalışır. Krikonun manşonunu toprağa bağlamamız gerekiyor. Bu bazen bir eksi sembolü ile işaretlenir veya "kol", "halka" veya "gnd" olarak etiketlenir. Ses jakınızda etiket yoksa, veri sayfasına başvurmanız veya jakı yakından incelemeniz ve jakın kovanına veya dış halkasına hangi pimin bağlı olduğunu belirleyip belirleyemeyeceğinize bakmanız gerekebilir.
  3. Ses jakının pozitif tarafını 100uF kapasitörün negatif tarafına bağlayın. Ses sinyalimiz artık Arduino'nun 9 numaralı pininden RC ağı üzerinden akıyor ve 100uF kapasitörün negatif tarafından çıkıyor. Bunu ses jakımızın pozitif tarafına bağlayacağız. Bu genellikle bir artı sembolü ile işaretlenir veya "bahşiş" olarak etiketlenebilir. Yine, etiketli değilse, jakın ucuna hangi pimin bağlanacağını anlamak için incelemeniz gerekebilir. Ayrıca stereo jak kullanıyorsanız L ucu ve R ucu bağlantısı olabilir. Bir mono sinyal çıkışı sağladığımız için, uç bağlantılarından herhangi birine bağlanabilirsiniz.

Önemli: Sesin çok sessiz olduğunu fark ederseniz, 1. adımda RC ağını ortadan kaldırabilir ve doğrudan Arduino'nun 9 pininden gelen sese bağlanabilirsiniz. Sesi, bir ses düğmesinin bulunduğu harici bilgisayar hoparlörleri gibi bir ön amplifikatörlü bir şeye bağlıyorsanız bu sorun olmaz, ancak kulaklık, kulakiçi kulaklık veya doğrudan bir hoparlöre kablolama gibi şeyler için tavsiye etmem. RC ağını ortadan kaldırmaya karar verirseniz, Arduino'yu çalıştırmadan önce hoparlörlerinizin sesini tamamen kısmanızı ve ardından hoparlörlerinizin patlamasını önlemek için sesi kademeli olarak artırmanızı öneririm.

Her şeyi ayarladıktan sonra, tüm bağlantıların doğru göründüğünü ve yukarıdaki resim ve şema ile eşleştiğini iki kez kontrol edin.

Adım 4: Kodu Yükleme

Artık donanım tamamen kurulduğuna göre, yazılım tarafını ele almaya hazırız:

  1. Arduino IDE'yi başlatın. Bilgisayarınızda Arduino IDE'yi başlatın (eğer yoksa https://www.arduino.cc/en/software adresinden indirebilirsiniz).
  2. Mozzi kütüphanesini indirin. Mozzi kütüphanesi, Arduino'muzu sentezleyici olarak kullanmamızı sağlayan şeydir. Bu kitaplığı IDE'nize almak için Mozzi github sayfasına gidin https://sensorium.github.io/Mozzi/download/. Yeşil "Kod" düğmesine tıklayın ve ZIP İndir'i seçin.
  3. Mozzi kitaplığını zip dosyasından yükleyin. Arduino IDE'de Sketch->Include Library->Add. ZIP Library…'ye gidin. Eklemek için indirdiğiniz zip dosyasına gidin. Şimdi Mozzi'nin Sketch->Include Library bölümünün altında listelendiğini görmelisiniz.
  4. Sivrisinek I Arduino kodunu indirin. Bunu github sitemden https://github.com/analogsketchbook/mosquito_one alabilirsiniz. (Kablolama referansı için ihtiyacınız varsa şemaların orada da mevcut olduğunu unutmayın.
  5. Arduino'yu bilgisayara bağlayın ve kodu yükleyin.

Adım 5: Ortalığı Karıştırmak

Bu kadar. Hoparlörlerinizi ses jakına bağlayabilmeli ve o ittybitty Nano'dan arpejli sentezin tatlı sesini duyabilmelisiniz! İlk başta hiçbir şey duymazsanız, iyi başlangıç değerleri aldığınızdan emin olmak için tüm kaplardaki düğmeleri ortalamayı deneyin.

İşte kontrollerin yaptıkları:

Tencere:

Rate: Bu, sıralayıcının ne kadar hızlı oynatılacağını kontrol eder. Kısmak, ayrı notaları sırayla çalar. Yukarı çevirmek, tamamen yeni dalga formları oluşturmak için notaları birbirine bulaştırır.

Legato: İkinci pot, legato veya nota uzunluğunu kontrol eder. Daha fazla sola çevirmek kısa, sticatto notalar, sağa çevirmek ise daha uzun notalar üretir.

Pitch: Bu, dizinin temel perdesini ayarlar. Perde kontrolü MIDI değerlerini ayarlar, bu nedenle perdeyi sürekli bir perde kaydırması yerine yarım tonda artırır/azaltır.

Aşama: Bu düğmeyi sağa çevirmek, ince bir aşama efekti sağlar. Teknik olarak konuşursak, bu Mosquito I'deki iki osilatörün biraz bozulmasına neden oluyor ve bu da fazlamaya neden oluyor. Bununla birlikte, perde ile takip edilmez, bu nedenle aşamalı efekt muhtemelen daha düşük perde notalarında daha belirgindir.

Filtre: Bu düğme, Düşük Geçişli Filtrenin kesme frekansını kontrol eder. Sola çevirmek yüksek frekansları keserek daha boğuk bir ses üretirken, sağa çevirmek daha parlak bir ses üretir.

Düğmeler:

Sivrisinek, varsayılan olarak oynayabileceği yirmiden fazla farklı diziye sahiptir. Basmalı düğmeler, hangi dizinin oynatılacağını seçmenizi sağlar. Bir düğme sizi diziler listesinde yukarı taşır ve diğeri listede aşağı iner.

6. Adım: Özelleştirme

özelleştirme
özelleştirme

Çoğunlukla farklı ölçekler olmak üzere bir dizi varsayılan dizi ekledim, ancak çalınan notaların sırasını değiştirmek, yenilerini eklemek veya bir dizideki notaların sayısını değiştirmek için kodu oldukça kolay bir şekilde özelleştirebilirsiniz. Aşağıda, özelleştirmek istemeniz durumunda bunun nasıl yapıldığının ayrıntıları verilmiştir.

Mevcut Sıradaki Notları Değiştirme

Diziler, NOTES adı verilen bir dizi dizide saklanır. Her nota bir MIDI nota değeri olarak saklanır, bu nedenle belirli bir sıradaki notları değiştirmek istiyorsanız, o sıra için MIDI nota numaralarını değiştirmeniz yeterlidir. Varsayılan kurulum, dizi başına 8 adım oynatmaktır, böylece bir dizide yalnızca 8 MIDI değerine sahip olabilirsiniz (farklı dizi uzunluklarına sahip olmak istiyorsanız aşağıya bakın).

Unutulmaması gereken bir şey, perde düğmesi, NOTES dizisinde belirtilen MIDI değerlerine bir nota ofseti ekler. Düğme ortalandığında, dizide belirtilen MIDI notalarını çalar, ancak perde düğmesini çevirdiğinizde çalınan notalara yarım ton ekler veya çıkarır.

Yeni Diziler Ekleme

Listenin sonuna 8 notalı yeni bir dizi ekleyerek NOTES dizisine yeni diziler ekleyebilirsiniz. Yine de bunu yaparsanız, yeni dizi sayısıyla eşleşmesi için numSequences değişkeninin değerini de değiştirmeniz gerekir. Örneğin, NOTES dizisinde varsayılan olarak 21 dizi bulunur, bu nedenle numSequences değişkeni 21'e ayarlanır. Yeni bir dizi eklerseniz, numSequences değişkenini 22 olarak değiştirmeniz gerekir.

İstediğiniz kadar yeni dizi ekleyebilirsiniz.

Sıra Uzunluğunu Değiştirme

Dizilerinizin uzunluğunu değiştirmek istiyorsanız (4 adımlı veya 16 adımlı bir dizi söylemek istiyorsanız), bunu yapabilirsiniz, ancak tek uyarı, tüm dizilerin aynı uzunlukta olması gerektiğidir. Ayrıca, dizilerinizin uzunluğuna uyması için numNotes değişkenini ayarlamanız gerekir.

Diğer Değişiklikler

Bu eğitimin kapsamı dışında olan, dalga biçimi türleri, filtre ayarları/değerleri arasında geçiş yapmak gibi mümkün olan bir dizi başka özelleştirme vardır. Mozzi kodunu bulmak ilk başta biraz zor olabilir, ancak kodun çeşitli bölümlerinin ne yaptığını göstermek için kodu mümkün olduğunca belgelemeye çalıştım.

Mozzi kodunun oldukça spesifik kullanımları olan birkaç ana bölümü vardır ve bunları size ve ne için kullanıldığına dair fikir vermesi için aşağıda listeledim:

  • setup() - Bu fonksiyona aşina olmadan önce Arduinos için programladıysanız ve Mozzi'de hemen hemen aynı şekilde kullanılıyorsa. Bunu çoğunlukla osilatörler, filtreler vb. için varsayılan ayarları yapmak için kullanırız.
  • updateControl() - Mozzi kodundaki aslan payının işini yaptığı yer burasıdır. Pot ve buton değerlerini okuduğumuz, bu değerleri sentezleyiciye beslemek için haritalandırdığımız ve dönüştürdüğümüz ve sıralamanın yapıldığı yerdir.
  • updateAudio() - Bu, Mozzi kitaplığından son çıktıdır. Tipik olarak buradaki kod çok küçük ve yalındır, çünkü bu fonksiyon Mozzi tarafından mümkün olan tüm saat döngülerini en üst düzeye çıkarmak için kullanılıyor. Sivrisinek kodunda görebileceğiniz gibi, bu biraz şifreli olabilir, ancak temelde yaptığımız tek şey çeşitli dalga formlarımızı birleştirip/çarparak ve ardından bunları belirli bir sayı aralığına uyacak şekilde bit kaydırmak. Bu işlevi çok hafif tutmak (Seri çağrılar veya okuma pinleri değil) ve bunun yerine çoğu şeyi controlUpdate() işlevine koymak en iyisidir. Mozzi belgeleri bunu daha ayrıntılı olarak detaylandırıyor.

Önerilen: