Arama butonu
Bu konudaki kullanıcılar: 1 misafir
7
Cevap
513
Tıklama
0
Öne Çıkarma
Arduino ile SD Kartsız Ses Çalma
R
2 yıl
Er
Konu Sahibi

Merhaba. Ben Arduino ile ek bir modül, SD kart falan kullanmadan ses çalmak istiyorum ama internette hep SD kart kullanarak ses çalmak üzerine yazılar ve videolar buldum. Ben ses verilerinin Arduino'nun program hafızasında durmasını istiyorum. Arduino'nun program hafızasının sıkıştırmasız veya uzun sesler için çok küçük olduğunu biliyorum, zaten düşük kaliteli ve kısa ses dosyaları hedefliyorum. Hesaplamalarım sonucunda sıkıştırma yapmadan koyulabilecek dosyanın ya anlaşılmayacak kadar kalitesiz ya da çoğunlukla işe yaramayacak kadar kısa olacağını bildiğimden sıkıştırmalı veriler koymayı, format olarak ise özellikle MP3, Vorbis, ADPCM ve Asao'yu hedefliyorum. Çıkışı özel bir PWM olarak almak istiyorum (yerleşik PWM özellikleri çok düşük frekanslı) ve çıkışı düzeltmek için bobin kullanmamın iyi olacağını biliyorum, ve ses çıkışında dalga yumuşatma istemiyorum (çıkış kare dalga formunda olmalı, bu kısım PWM ile karıştırılmamalıdır). Bununla birlikte bobinle PWM düzeltme esnasında 18-20KHz civarından daha aşağısını kesmek istemiyorum ve PWM frekansının da buna göre olması gerekiyor. Ayrıca sanırım ses çalarken aynı anda başka işlemleri yapmak için de bir yönteme ihtiyacım var. Bu konuda yardımcı olabilecek birileri var mı?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi rikkoooooo -- 11 Haziran 2023; 23:31:34 >


R
geçen yıl
Er
Konu Sahibi

Aylar sonra yeniden merhaba, muhtelif nedenlerle uzun süredir buraya gelemedim fakat şimdi geldim çünkü aklıma bazı fikirler geldi ve ayrıca bazı fikirlerim de değişti. @scapegoat111 benzer bir fikriniz olduğu için sizi de bilgilendirmiş olayım.

Öncelikle, belirtmeliyim ki ses formatları konusundaki fikrim değişti. Vorbis'in aynı bit hızı için gerçekten de çok kötü bir kalite verdiğini fark ettim ve ondan tamamen vazgeçtim, MP3'ten de umudum kalmadı çünkü canlı olarak çalamayacağımı düşünüyorum (saat hızı yetmeyecek gibi). Aslında bu projeyi SD kart kabul etmeyen bir yapıda değil de SD kart kabul eden fakat SD kart olmadan da çalışan bir yapıda yapmayı planlıyorum, yani SD kartın kullanılacağı bir durum için yine de gerçek zamanlı olmayarak MP3 decode etmek isteyebilirim (mesela Adobe Flash Player emülasyonu için MP3 şart). Nellymoser Asao konusunda daha umutluyum zira daha kolay decode edebileceğimi düşünüyorum (mesela MP3 çerçeveleri 1152 örneklik iken Nellymoser Asao çerçeveleri 256 örneklik), fakat Asao'nun patentinin süresinin dolmamış olabileceğini düşünüyorum. MP3'ünkiler dolduğu için bir belge bulabilme umudum halen daha var, hatta http://www.diva-portal.org/smash/get/diva2:830195/FULLTEXT01.pdf adresindeki bilgiler bile gayet detaylı. Muhtemelen birçok görev için 2 bit, 1.5 bit, ya da 1 bit ile kodlanmış ADPCM veya DPCM'ler kullanacağım.

IMA ADPCM decoding konusunda da yardıma ihtiyacım var zira index-table ve stepsize-table konusunda kafam karıştı. index-table sadece sonraki örnekleri ilgilendiriyor ve şimdikini alakadar etmiyorsa hangi sekiz örneği alacağımı nereden bileceğim? Şimdikini de ilgilendiriyorsa -1,-1,-1,-1 kısmı iki tarafla beraber altı farklı olasılığın ziyanı anlamına gelmiyor mu? Ayrıca ilk örnekte hangi stepsize öğesini kullanmalıyım? Bu konuda da yardımcı olabilecek birileri varsa iyi olur. Hatta MS ADPCM bilen varsa daha da iyi olur. (Ekleme: Bunu ChatGPT'ye küçük bir kod yazdırarak kendim buldum, stepsize değeri MSB'nin tetiklediği değermiş ve diğer bitler LSB'ye doğru birer birer kaydırarak tetikliyorlarmış, ayrıca emin değilim ama galiba çoğunlukla ortadaki index değerinden başlanıyormuş. Fakat halen MS ADPCM bilmiyorum, bilen varsa yanıtlasın lütfen.)

Açıkçası örnekleme oranı ve bit derinliği konusunda da fikrim değişti. Uygun müziklerle çoğu zaman 1378.125Hz ve 2756.25Hz gibi değerlerin bile yeterli olduğunu fark ettim. Öte yandan, farklı oranları aynı anda çalmak için bir "kaptan" örnekleme oranına ihtiyacım olacak ve hem 4 hem 8 bitle 32000Hz, 31250Hz, 22050Hz, 16000Hz, 15625Hz, 11025Hz, 8000Hz, ve 7812.5Hz kaptan örnekleme oranlarını kullanarak 16 farklı kaptan olasılığın uygun olacağını düşündüm. 31250Hz, 15625Hz, ve 7812.5Hz oranlarını muhtemelen daha fazla tercih edeceğim çünkü bunlar Arduino'nun çalışma hızının ikinin tam üssüyle çarpılmasıyla oluşan değerler ve bu sesin daha stabil çıkmasını sağlar diye düşünüyorum (sesin "tadı" 1378.125Hz, 2756.25Hz, 5512.5Hz, 11025Hz vb. oranlarda daha güzel oluyor fakat bu da dinlenemez değil). Tabii ki Adobe Flash filmlerini yürütmek için 5512.5Hz, 11025Hz, ve 22050Hz hızlarını kullanmaktan başka çarem yok.

Ses çalma işinin icrasını Arduino'nun 62500Hz hızlı PWM'iyle yapmayı ve bunu bir de interrupt için kullanmayı düşünüyorum, böylece interrupt'ı tam zamanında gerçekleştirmiş olacağım fakat Arduino sanyiede 62500 defa interrupt edilmeyi kaldırır mı bilmiyorum. Örnekleme oranlarını tutturmak için ise sayaç, eksiltme, ve eşik kullanan bir sistem yapmayı düşünüyorum. Mesela 22050Hz örnekleme oranı için doğru hesapladıysam her interrupt'da 441 ekleyip eşiği geçince 1250 çıkartmak stabil olmasa da (örnekleme oranı 31250Hz ile 15625Hz arasında sürekli gidip gelecek) ortalama olarak 22050Hz'i tutturur diye düşünüyorum. Bu değerler mesela 31250Hz için 1 ve 2 olacak (bu örnekleme oranı 100% stabil olacak demektir).

Bunu yumuşatmak için bobin veya kondansatör kullanmanın sinyalin köşelerini bozacağını biliyordum, aslında hedeflediğim sadece insan işitme aralığını çok fazla boğmamaktı ve görsellerin temsili olduğunu söylerken kastettiğim de buydu. Yumuşatmak için 50nf kondansatör kullanmayı düşünüyordum (işitme aralığını biraz bozsa da çok fazla boğmayan bir değer, tabii ki yumuşaklık mükemmel olmayacak) fakat RC filtre için gereken direncin ne kadar olduğunu bilmiyorum. Aslında hiç filtrelemeden bile geçirmeyi düşünebilirim, özellikle de amfi yerine doğrudan hoparlöre bağlayacağım durumlarda.





< Bu mesaj bu kişi tarafından değiştirildi rikkoooooo -- 1 Nisan 2024; 15:34:51 >


Bu mesajda bahsedilenler: @scapegoat111 , @rafet32
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.