Bu müzik dizilerini oluşturuyorum .
Sadece tam bir sıralayıcı değil, sıralayıcı için fiziksel bir arayüz. Sıralayıcı, sıralayıcının bağlandığı bir dizüstü bilgisayarda çalışan bir uygulamadır, bu şey kullanıcının anında davul döngüleri yapmasına izin verir. Oldukça eğlenceli, ancak bir dizüstü bilgisayar gerektiriyor çünkü sıralayıcı 'yerleşik' değil.
Seveceğim şey sıralamayı cihazımda yapmaktır.
Şimdi USB MIDI bağlantısı için sınıf uyumluluğunu nasıl çözeceğimizi bildiğimi varsayalım ve ayrıca 5 pinli DIN bağlantı noktasından MIDI notları göndermek için bir arduinoyu nasıl bağlayacağımı da varsayalım. En çok endişelendiğim şey, olay döngüsünün her çalışması sırasında dakika miktarlarındaki tutarsız zamanlama nedeniyle zamanla tempo kayması.
Bildiğim bazı şeyler:
delay()
Tempo döngüsünü kontrol etmeye güvenmemelisiniz . Gecikme, bellenimin tüm çalışmasını durdurur ve bu işlem yapılamaz çünkü sıra çalışırken fiziksel kullanıcı arabirimini değişiklikler için yoklamam gerekir.Baz alınan hesaplamalar
millis()
daha iyidir çünkü bellenim belirli bir sayı geçtiğinde çalışmaya devam edebilir.Fiziksel kontrollerimin hiçbiri kesme rutinlerini tetiklemese de, bazı işlemler ana ünitenin çalışmasını geciktirebilir
loop()
. Kullanıcı girdisini bekleyen bir işlev tasarlarsam, bumillis()
sayım çoktan sona erdiğinde harekete geçmek için bir "son teslim tarihi" eksikliğine neden olabilir . Bu sorunun kendi tasarımım olduğunu biliyorum ...
Sorular:
A. AVR tabanlı arduino, bir kullanıcı arabirimini yoklamak ve kritik bir zamanlama döngüsü çalıştırmak için uygun bir mikrodenetleyici midir? ARM tabanlı bir Arduino olduğunu biliyorum, bu çok daha hızlı. Teensy 3.0 daha iyi bir alternatif olabilir mi? Her ikisi de 3.3V panoları, bu yüzden çalışmak için başka bir sorun kümesi ... ama şimdilik bunu görmezden geleceğim.
B. Görevi iki mikroişlemciye ayırmalı mıyım? Biri yoklama ve kullanıcı arayüzünü güncellemek için ve diğeri kritik görev zamanlama döngüsü için.
c. Başka bir şey?
Asıl amacım hiç bilgisayar kullanmak zorunda kalmak değil. Ayrıca salıncak için hesaplamak istiyorum, ancak bu durumda, kilitli ve zamanlama doğru bir tempo yoksa, salıncak bir şey ifade etmiyor. Tavsiyeniz için teşekkürler!
noInterrupts();
titremeyi durdurur, ancak istenen tüm kesintileri de durdurur.