ASIO
少于1分钟
A. Introduction
其实张佩的文章已经写得很详细了,但是如果没有任何概念的时候,还是会被众多的经典概念绕晕。 所以我的方法是:先去steinberg的forum去看一些英文原版的介绍, 然后去下载asio 的sdk下来看文档,看代码,跑代码 下载cubase下来,验证asio驱动。
B. Concepts
a. Structure 各层的结构
1.应用程序
(cubase、dorico、nuendo、wavelab等都是被明确指出需要ASIO driver的)
2.操作系统-用户空间-windows
windows驱动
Steinberg built-in ASIO Driver(win10 x64 & win11 only)
早期是Generic Low Latency ASIO Driver
第三方的ASIO4ALL- from Michael Tippach
3.操作系统-内核空间-windows
4.硬件层
ASIO是需要声卡硬件支持的 其实关于这一点,暂时还没有确定的答案,硬件上做什么样特殊的处理吗? 但是走到操作系统的内核空间层,windows内核需要为ASIO这样一个第三方的公司定制一些特殊的模块,就像Linux那样,驱动目录下有各个不同厂商单独的文件夹。 从理论上来看,当然是可能的。但是好像还没有看到ASIO有任何这方面的资料。 如果在内核空间,所有的驱动模块都是通用的,即与AC97、Realtek等声卡所调用的驱动模块是完全一致的,那么ASIO就并不需要硬件支持了。 用另一个方式来说,ASIO的特殊之处是在用户空间的驱动里,不论是WDM还是其他windows的库,ASIO推出一套标准,用不同的方法去调用内核空间给用户空间的API。 它只是在用不同的方式或逻辑调用相同的内核API,与内核通信而已。
C. ASIO SDK
a. ASIO API试图提供的性能(From ASIO SDK 2.3)
1.High data throughput
2.synchronization
3.low latency
4.extensibility on the audio hardware
5.no limitation on the number of i/o channels
6.no limitation on the sample rate
7.no limitation on sample format
D. Conclusion
今天一天,到下午四点的时候,终于用cubase试验了自己修改过的asio driver。
虽然看起来很简单,但是其实是要仔细的去看asio sdk 2.3的整个包里面的文档。
市面上对于asio驱动、支持asio声卡、asio 硬件等概念的介绍并没有特别有针对性的。
asio应该理解为一种协议,cubase这类的软件都只识别这种协议的音频设备。
它并没有太神奇的地方,就是在软件层面的一种封装罢了。
E. Appendix
01. [***]在逃技术百晓声-ASIO、WDM和MME驱动的区别(一个比较简练的介绍)
02. [**]Steinberg Email:info@steinberg.de
05. [仔细的介绍 *****]张佩的文章-ASIO音频驱动开发指南
06. [仔细的介绍 *****]张佩的文章-ASIO音频驱动开发指南 2.0
07. Steinberg built-in ASIO Driver: information & download