2014-05-01 24 views
5

Eğlence için basit bir müzik kompozisyon sistemi inşa ederek etraftayım. Müziği hafızada temsil edebilirim, ama gerçek sesleri çıkarabilmeyi isterdim (tabii ki)! Biçimin ne olduğu umrumda değil (MIDI, mp3, ogg, neyse). Sadece örnekleri programa yükleyebilmek ve bunları mümkün olan en basit şekilde oynamak istiyorum. Bir çözüm için etrafta arama yaptım, ancak gördüğüm her şey ya a) ihtiyaçlarım için çok karmaşık (baş üstü), b) aktif olarak desteklenmiyor, ya da c) iyi belgelenmemiş. Bir ses çıktısı örneği veya başka bir şekilde, bunu yapmanın en basit yolunun bazı yönlerini görmeyi çok isterim.Haskell'de ses örneği çalmanın en kolay yolu nedir?

+1

MIDI bir ses formatı değildir. – leftaroundabout

+0

@leftaroundabout MIDI verilerinde okuyabilseydim ve oynatırsam, bu bana yardımcı olur. –

+0

Eğer linux veya osx üzerindeyseniz, en basit yol bir ses dosyasını belleğe (muhtemelen 'libsndfile' kullanarak) yüklemek ve'/dev/audio'ya yazmaktır. Ya da "sox" ya da benzerlerini dışarda tut ve bir ses dosyası çal. –

cevap

1

MIDI kullanarak ve Mac OSX'te SimpleSynth'e olayları göndererek sona erdim. Bu, hmidi paketi ve the bindings to OSX's CoreMIDI by bkomuves kullanılarak sağlandı. En son GHC ile çalışmak için here'dan hmidi paketinin bir çatalını takmak zorunda kaldım. Daha sonra SimpleSynth'u yükledim ve OSX'deki Audio MIDI Setup yardımcı programını kullanarak bir IAC Sürücüsünü etkinleştirdim. Daha sonra kurduğum IAC sürücüsünü dinlemek için SimpleSynth'i ayarladıktan sonra Destination'u Destination'u kapmak ve 'u send kullanarak MidiEvents'a göndermek için enumerateDestinations işlevini bkomuvres 'bindings'ten CoreMIDI'ye kullanabiliyordum. Bir çekicilik gibi çalışır!

0

Haskell ile, kodunuzdaki diğer kütüphaneleri/uygulamaları kullanarak dil üzerinde bir tutamaç elde etmek isteyebilirsiniz, ancak aşağıdaki link, müzik ve ses kütüphaneleri için bir linktir.

http://www.haskell.org/haskellwiki/Applications_and_libraries/Music_and_sound

başka bir fikir C/C++ ile OpenAL'le yakınlık kazanmak ve daha sonra oradan (aslında OpenAL'in DLL/SO aramaları OpenAL'in bağlanması Haskell'e) HOpenAL yapısı konusunda biraz bilgi sahip olacaktır.

OpenAL için basit bir eğitici ile bağlantıya geçin! umarım bu yardımcı olur

http://enigma-dev.org/forums/index.php?topic=730.0;wap2 ...

2

Sen Hackage üzerinde değil Euterpea, ister fakat yüklemek için bir esinti oldu ve oldukça ayrıntılı belgeleri (buna bir tanıtım Haskell çekirdeğini oluşturan görünüyor sahiptir olabilir Yale dersi. Daha fazla bağlantı/talimat bulmak için üstteki menüde "Euterpea" kelimesinin üzerine gelin.

+0

Kullandığım çözüm bu değildi, ama bana onu yönlendirdi, teşekkürler! –

+0

@BenjaminKovach çözümünüzün ne olduğunu hatırlıyor musunuz? Dokümanlara bir göz attım ancak ses çalmanın herhangi bir yolunu, sadece bir wav dosyasına işleyebilme yeteneğini bulamıyorum. –

+0

@Chris Aşağıda yazdığı cevaplara bir göz atın! –

İlgili konular