Windows zelf heeft redelijk wat latency. ASIO is volgens Wikipedia slechts een hack deze te omzeilen, door het OS tijdens de communicatie tussen audiosoftware en audiohardware zo veel mogelijk te omzeilen:
Dat moet je in de juiste context plaatsen.
Destijds had Windows alleen de WinMM-audio interface. Die was inderdaad niet geschikt voor low-latency.
Pas later kwam DirectSound, die daar wel geschikt voor is (met de juiste geluidskaart natuurlijk. Goedkope onboard-kaartjes hebben gewoon hoge latency omdat de hardware niet snel is).
Maar toen was ASIO er al.
Een 'hack' is overigens geen goede benaming. Het is gewoon een alternatieve driver, net zoals bv OpenGL 'naast' het standaard Direct3D-model hangt, zonder dat daarbij iets aan Windows 'gehackt' moet worden. Het is gewoon een normale Windows-driver. Je werkt om de oude (Windows 3.x) WinMM-laag heen, niet om de kernel zelf (mooi bewijs is
ASIO4ALL, dat kan ASIO zelfs op non-ASIO-hardware redelijk goed emuleren, met gewoon Win98/2k WDM-drivers, dat is dus ook snel genoeg).
ASIO moet je dus eerder vergelijken met zoiets als ALSA, een driver-laag die de hardware abstraheert.
Bij linux is het wel een hack, je moet immers je kernel patchen. ALSA alleen is niet goed genoeg, daarmee krijg je de latencies niet laag genoeg. Met ASIO wel.
WinMM, DirectSound en ASIO zijn gewoon ieder met een eigen doel ontworpen, en hebben daarom allen bestaansrecht. Ze draaien alledrie echter op dezelfde ongemodificeerde kernel.
Je had op z'n minst kunnen opzoeken wat die
KMixer dan wel niet is
Dat is de kernel-mixer die softwarematige mixing doet. Dat heb je dus niet nodig op een geluidskaart die zelf hardware-mixing heeft, welke je via DirectSound kunt aanspreken, maar dat bestond nog niet. Deze software-mixer was destijds nodig, omdat de meeste Soundblaster-compatible kaarten maar 1 digitaal kanaal hadden. Kortom, lang vervlogen tijden, moet je niet gaan vergelijken met de linux van nu... Destijds HAD je op linux amper audio, laat staan dat je een mooie kernel-mixer had die multichannel audio toestond ongeacht de hardware die je gebruikte, en geen code in iedere applicatie nodig had (en gewoon meerdere applicaties door elkaar heen kon mixen, waar je voorheen altijd exclusief 1 applicatie kon horen. Dus geen geluidje als er mail binnenkomt, als je een mp3tje op de achtergrond wil luisteren).
Bij linux komt audiobewerking pas sinds heel kort om de hoek kijken. Logisch dat het beter is dan wat Windows ruim 10 jaar geleden had. Zowel de hardware als de software is vandaag de dag veel geavanceerder.
Desondanks is linux degene die kernel-patches nodig heeft, niet Windows.
Sowieso klopt jouw info niet. De KMixer werd pas in Win98/Win2k toegevoegd in het
WDM-drivermodel. Voor die tijd was er geen mixing, en kon je maar zoveel streams openen als je hardware ondersteunde. ASIO is echter al geintroduceerd op Windows 95/NT4 (met Cubase VST), die het WDM-model niet ondersteunen. Dus hoe kan ASIO ontworpen zijn om het probleem van de KMixer te omzeilen als WDM/KMixer nog niet bestond?
Zie ook hier:
http://www.heise.de/ct/english/97/14/068/
Ik denk dat je ergens het woord 'kernel' hebt gelezen, en dat werkt als een rode lap op linux-fanboys. Maar zeg nou zelf... Als je systeem-brede software-mixing gaat toepassen, zodat alle applicaties tegelijk audio kunnen afspelen, ongeacht of de hardware dit aan kan of niet, zou je die mixing dan ergens anders willen dan bovenop de audio-hardware? In de kernel dus? Het lijkt mij in ieder geval de meest logische optie, zeker in die tijd, waar elke cycle telde.
In Vista is de KMixer overigens verdwenen. Hij is niet meer nodig. Dus enige kritiek op de KMixer in de kernel is achterhaald.
Om de latency in de kernels zélf aan te pakken in plaats van deze te omzeilen, heb je echter een gepatchte kernel nodig. Wat Windows betreft ben je dan afhankelijk van en slechts van Microsoft.
Windows heeft dus geen gehackte kernel nodig. De latencies zijn in de standaard-kernel al laag genoeg, in tegenstelling tot linux.
Als de Windows-kernel al voor applicaties wordt gebruikt waar een korte antwoorttijd belangrijk is, dan is dit meestal een Windows-CE kernel, die nogal verschilt van de grote lompe Windows-XP kernel.
Alsof die embedded-systemen precies dezelfde linux-kernel en omliggende OS-software draaien als een 'gewone' PC desktop-distributie. Dat is ook een soort Linux-CE.
Verder heb je helaas het idee van CFS verkeerd begrepen; het idee is juist om bij vele tegelijk-draaiende processen toch de 'reageertijd' op gebeurtenissen (in abstracte zin; events) laag te houden, zoals in de jaren oude CK-patches.
In welk opzicht heb ik het dan verkeerd begrepen?
Ik heb gezegd dat het een 'eerlijk' verdelende scheduler is, en niet realtime in de zin van soft/hard realtime-systemen.
Het is logisch dat een aantal Tweakers niet weet hoe de Windows/Cubase etc. stack werkt, want deze kost honderden euro's wil je hem legaal op je PC hebben,
Helemaal niet. Cubase LE (danwel Cakewalk Sonar LE) krijg je kado bij de wat luxere Audigy en X-Fi kaarten (en vast ook vele andere merken), alsmede de meeste USB/FireWire interfaces. Kost weinig hoor. Sowieso moet je een dergelijke kaart aanschaffen, wil je van low-latency gebruikmaken, ongeacht welk OS je kiest. Een onboard kaartje is gewoon niet snel genoeg.
Maar het is niet erg als je niet weet hoe het werkt... Maar kom dan niet hier met je grote mond even vertellen dat je onder Windows geen realtime audio-bewerking kan doen.
Wat ik niet begrijp is dat hier de pot de ketel schijnt te verwijten: Iemand die zelf niet zoveel van gratis te testen Linux-geluidsdistributies (Met low-latency kernel patches!) weet loopt in een nieuwsbericht over Linux te verwijten dat anderen niet weten hoe geluid in Windows werkt?
Ik heb nergens iets over linux beweerd dat niet klopt, in tegenstelling tot jullie twee over Windows.
[Reactie gewijzigd door Verwijderd op 23 juli 2024 00:12]