2017-02-18 1 views
1

Je cherchais de l'aide avec un bug qui semble se produire sur certains appareils ASIO lors de la lecture audio directement sur le périphérique ASIO. Si l'audio WAV n'est pas arrêté avant que la fin ne soit atteinte, l'application se bloque et joue continuellement des bouffées rapides du dernier son (cela sonne comme un effet de bégaiement). À ce stade, le thread de l'interface utilisateur va se bloquer et l'application devra être forcée.NAudio ASIO Lecture se bloque sur certains appareils

Ce problème peut être recréé à l'aide de la "démo ASIO directe" fournie par le site github de NAudio. Tout ce que je fais est d'ouvrir un fichier WAV dans la démo et cliquez sur Lecture. Une fois l'audio atteint la fin, l'application se bloque.

J'ai testé ce problème et constaté qu'il se produit sur Behringer X-Air x18 mais pas sur M-Audio M-Track MKII. Je me demandais si quelqu'un a trouvé un moyen de coder autour de ce bug? Je vous remercie. PS - NAudio est un framework AMAZING et Mark Heath (l'auteur) propose de superbes tutoriels sur pluralsight qui valent vraiment le prix d'abonnement.

+0

En guise de note ... ma solution de contournement actuelle est de faire tourner un thread observateur qui arrête l'audio si la position actuelle approche de la position totale mais j'espérais qu'il y avait une manière plus élégante. –

Répondre

0

Certaines personnes ont signalé des problèmes avec l'arrêt automatique dans ASIO (lorsque vous atteignez la fin de votre saisie et que vous essayez d'arrêter la lecture depuis le rappel ASIO). Donc, une solution de contournement simple consiste à passer un flux sans fin à AsioOut, et de détecter quand il a dépassé la fin de votre audio, puis d'arrêter la lecture depuis l'extérieur.

+0

Bonjour Mark, merci pour la réponse rapide et pour le bon cadre. J'ai vu une réponse similaire sur un autre post mais je n'ai trouvé aucune implémentation d'un flux interminable. Avez-vous des billets de blog ou des réponses qui décrivent comment cela peut être fait. J'espère pouvoir créer le flux et le transmettre au multiplexingaudioprovider sur un canal de sortie existant. –

+0

Plusieurs flux dans NAudio sont interminables. WaveChannel32 peut être configuré de cette façon, et je pense que la plupart des flux de mixage aussi. Il est vraiment facile d'écrire votre propre IWaveProvider qui, dans sa méthode Read, lit à partir d'une source, puis retourne juste le silence après la fin de la source –