Windows-on USB-s hangkártya akad

Sziasztok!

Adott a következő rendszer leegyszerűsítve:
- HP Z800 gép 24 GBram 8core
- MOTU 828mkII USB hangkártya
- Windows 10

A hibám az hogy ha pl foobar 2000-el zenét próbálok kicsalni a gépből akkor időnként (300-600 sec-enként), modemhangok keretében elhallgat, majd kb 10 sec után mintha misem történt volna folytatja a munkát, és szépen szól. Más programmal is csinálja.
A fenti hibát még asio-val nem tapasztaltam, de zavar hogy wdm-en keresztül akad. Próbáltam különböző mintavételezéseken is (44.1, 48, 88.2, 96 khz), de a hiba megmarad.

Van valami tippetek hogy merre induljak el, hibakeresés gyanánt?

Előre is köszönöm.

balazsasd

Szerk:

Fejlemény: Egy x201-es notin kipróbáltam a hangkártyát brahiból, win10. Tökéletes, szaggatás nélkül megy minden. Csak ez egy sokkal gyengébb gép.

Hozzászólások

Előre szólok, se Windows-om, se ilyen hangkártyám nincs. Arra gondolok, hogy valamiért szétesik az USB kommunikáció, erre a szerkezet rájön, s az egész újra inicializálja magát. Az első kérdésem, hogy ez a külső USB-s eszköz specifikáció szerint kap-e tápfeszültséget, valamint az USB kábel milyen hosszú, továbbá, ugye nincs toldva?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Két irányban, esetleg zenéléshez használod ezt a hangeszközt? Azért kérdezem, mert 4096 minta még 0.1 másodperc sincs, tehát zene hallgatás esetén semmi jelentősége. Persze lényegtelen, hiszen ettől sem jobb.

Ez a „modem hangok” két dolgot jelenthet szerintem. Vagy egy pointer száll el, így valami RAM szemét megy a kártya felé, a másik, hogy rossz parancsot kap a kártya, definiálatlan állapotba kerül, vagy versenyhelyzetben a lock-olások rosszul lettek megoldva, s egy parancson belülre beszúródik egy másik, s ebből zagyvaság jön ki. Ezen lehetőségek mindegyike driver hibát feltételez. Nyilván az audio device firmware hibáját sem szabad teljesen kizárni.

Az a kérdésem, ha ASIO driverrel működik, akkor miért nem azzal használod? Vagy csak nekem furcsa, hogy a dolgokat úgy érdemes használni, ahogyan működnek? :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

ASIO-val az a probléma, hogy egyszerre csak egy alkalmazásnak lehet hozzáférése a hangkártyához, ez pedig igen kényelmetlen. (A 4096 minta MIDI beviteli eszközök esetén óriási, 10-20ms az elfogadható (= nem észrevehető) késleltetés.) - szerk. ja most esett le az első mondat :)

Persze, ha interaktív a dolog, akkor sok. Tegyük hozzá, noha Mac-kel, PC-vel is zenélnek, de szerintem nem erre való a PC. A zenéhez valós idejű folyamatok kellenek, a PC-ben pedig a kernel ütemezője eldönti, mi hogyan legyen. Sőt, vannak hardware akadályok, például nagyobb adatmennyiség DMA-zása, magas I/O terhelés, amikor a CPU még a buszt sem látja. Kívánatos lenne tehát a nagy buffer használata, csak akkor pedig igen nagy lesz a késleltetés, az meg mégsem járja, hogy ki kell adni egy hangot, az meg megszólal fél másodperc múlva. Az a gyanúm, Lennart Poettering a Pulseaudio hangszerverben éppen ezért írt erre egy adaptív, öntanuló algoritmust, amelynek nagyjából az a lényege, hogy ha kiszalad a bufferből az adat, akkor automatikusan megnöveli a bufferméretet.

Szóval nehéz ügy, mert kívánatos lenne a minél kisebb buffer, de annál merevebb, valós idejű ütemezés kell, s annál nagyobb a valószínűsége a buffer alulcsordulásnak, így a recsegő-ropogó hangnak.

ASIO-val az a probléma, hogy egyszerre csak egy alkalmazásnak lehet hozzáférése a hangkártyához, ez pedig igen kényelmetlen.

Itt azért érzékelek egy igen nagy problémát. Szerintem az audio device-hoz egyszerre csak egy alkalmazásnak szabad hozzáférnie. Amennyiben többre van igény, úgy ezt egy köztes rétegben egy hangszervernek - ilyen a Pulseaudio - kell megoldani újramintavételezéssel, keveréssel. Ebben az esetben a kevert hangot kell az audio device-hoz eljuttatni egyedül a hangszervernek. A hangszerverhez már csatlakozhat több alkalmazás.

A másik gond a kártyának adott parancsokkal van. Jellemzően egy parancs több byte-os, paraméterekkel rendelkező valami. Ebből következően nem lehet csak simán összemultiplexelni az alkalmazások felől jövő parancsokat, mert abból óriási felfordulás lesz. A driver-nek felsőbb rétegben kell értelmezni a parancsokat, s csak az értelmezés után multiplexelhet. Ebből következően vagy szabványos a protokoll, vagy eszközspecifikus, de akkor a driver-nek is annak kell lennie, az nem lehet általános.

Nem lehet, hogy azért esik szét a kommunikáció, mert ez a driver alsó rétegben, a protokoll értelmezése nélkül multiplexeli a parancsokat? Mondom, mire gondolok:

1. alkalmazásból:

command1 param1_c1 param2_c1

2. alkalmazásból:

command2 param1_c2 param2_c2 param3_c2

Protokoll értelmezés nélkül, alsó rétegben multiplexelés után például:

command2 param1_c2 param2_c2 command1 param1_c1 param2_c1 param3_c2

Ezzel például command1 parancskód valójában command2 harmadik paramétereként értelmeződik, param1_c1 pedig parancs kódként, noha ő eredetileg valamilyen adat volt.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Öszintén a driver működésébe nem látok bele. A multiplex folyamatot ( nem értek ehhez az ablakoshoz annyira ) úgy tudom tesztelni hogy két alkalmazás egyidejűleg küld hangot a kártyára, az megy, a hibajelenség megmarad. De nem összeköthető ezzel. Teszteltem : winamp, foobar, youtube, vlc. mindegyiknél jelentkezik a hiba. Ha ezek egyike fut csak akkor is. Ha cubase, ni kontakt, ni guitar rig programok egyike fut, akár egy napig is akadás mentes.

Magam is arra jutottam, hogy nem erre való a PC - illetve maga a Windows. Ugyanis azonos vason OS X-nel kisebb késleltetést lehet elérni, ráadásul mindezt teljesen automatikusan, konfigurálás nélkül. (Pedig itt köztes réteg is van, hiszen nem okoz gondot lejátszani vagy felvenni azonos ki- és bemenetekre, tetszőleges számú programmal egyszerre.) Vajon a Core Audio tervezésénél kezdettől fogva számoltak ezzel, netán a Darwin kernel felépítéséből fakadó előnyöket tudták kihasználni?

Windowson a hangszerver, mint megoldás teljesen jogos felvetés, vannak is megoldások (ASIO multi, netán JACK), nekem egyiket sem sikerült működésre bírnom, ettől még a topikindítónak több sikere lehet, talán érdemes erre elindulni. (Még azzal is megbékéltem volna, hogy egyszerre nem lehet lejátszani, de a helyzet sajnos az, hogy ameddig nyitva van az eszközt használó program, addig le is foglalja magának a kimenetet, ha küld rá jelet, ha nem.)

A Windows 10 hangrendszerében valamit nagyon elbarmoltak, más kártyákkal is sok baj volt, nálam is előfordult, lehet, hogy neked is ez van:
http://www.tenforums.com/drivers-hardware/15284-windows-10-no-sound-sol…

Egyébként vicces, hogy Microsoft-fórumokon is kerestem erre a problémára, a "hivatalos" válaszok:
- bootolj újra
- telepítsd újra a drivert
- telepítsd újra a Windowst
- térj vissza egy mentési pontra

Win 7 alatt is akad. Azt vettem észre hogy az audiófolyam elindítását követően 2x megszakad egy percen belül, utána a következő számig nem akad el. De a következőnél kezdődik előröl az idegesítésem.

Egy x201-es notin kipróbáltam a hangkártyát brahiból, win10. Tökéletes, szaggatás nélkül megy minden. Csak ez egy sokkal gyengébb gép.