2009-12-10 27 views
6

.NET 3.5 altında basit bir ses uygulamasına (tercihen VB.NET'te ancak mutlu bir şekilde C# kullanacak) başladım. Ne yapmak istiyorum geçerli:.NET uygulamalarında sesle çalışmanın önerilen yolu nedir?

(varsayılan) Sürekli kayıt ses 8-bit başına numunenin PCM formatı
  • her N için Windows ses giriş aygıtı yakalanan bayt
    • , bazı analizler yapmak işlenmemiş ses (bazı RMS ve/veya SPL hesaplamaları - temelde güzel bir VU çubuk grafiği için ihtiyacınız olan şey)
    • Analizden sonra ses parçası ilginç görünüyorsa, sıkıştırılmış bir dosya formatı kullanarak kaydedin (örn. MP3

    Fark ettiğim ilk şey, temel .NET Framework'teki ses desteğinin hemen hemen hiç yok. Biraz Googling, çoğunlukla Yönetilen DirectX kullanarak, bazı örnek kod bulundu. Gevşek çevirir düşünüyorum hangi ...

    Message: DLL 'Microsoft.DirectX.dll' is attempting managed execution inside 
    OS Loader lock. Do not attempt to run managed code inside a DllMain or image 
    initialization function since doing so can cause the application to hang. 
    

    : Ancak, MSDN belge eksikliği, kütüphaneler (2004) ve VS.NET 2008'de aşağıdaki tehditkar MDA istisna bağbozumu, bu bir çıkmaz beni ikna " bile bunu kullanmamak için'u deneyin." Burada bir şeyi mi özlüyorum yoksa Yönetilen DirectX gerçekten öldü mü? Another StackOverlow question, XNA'nın Managed DirectX'in yerine geçtiğini, ancak ihtiyacım olan düşük düzeyli işlevlerden yoksun olduğunu önerir.

    Peki hangi API veya üçüncü taraf kitaplığı .NET altında ses gelişimi için gerçekten yararlıdır? COM birlikte çalışabilir veya P/Invoke kullanarak kabul edilebilir, şu anda işe yarayacak bazı iyi .NET örnek kodu var ...

  • cevap

    4

    NAudio on CodePlex içine baktınız mı? İhtiyacınız olan özelliklere sahip gibi görünüyor.

    +0

    +1, çok umut verici görünüyor! Şu anda bir deneyin ... – mdb

    1

    DirectX tabanlı bir ses çözümünü denemek isterseniz SlimDX'u kullanabilirsiniz. DirectSound ve XAudio arayüzlerini destekler.

    +0

    Zayıf benim Google-fu bir şekilde göz ardı başka bir umut verici çözüm, – mdb

    2

    Bir .NET API'si olan BASS library'un hayranıyım.

    +0

    Onun lisansı benim için bir ölçüde yetersizdir. Yine de, işaretlenmiş ... – mdb

    1

    Biri FMOD.

    +0

    Teşekkürler - ticari kullanım için biraz pahalı olsa da. Bu arada bulduğum bir başka şey de http://www.ambiera.com/irrklang/irrklang_pro.html, ki bu da – mdb

    +0

    tuhaf lisansından muzdariptir. IrrKlang'ın lisansının bu garip olduğunu sanmıyorum ... geliştirici size Durumunuza en uygun olan lisansı seçme seçeneği. –

    İlgili konular