ASIO

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

$$PCI firewire$$

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

$$32khz 96khz higher$$

7.no limitation on sample format

$$16 24 32 bit 32/64 bit floating point formats$$

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

03. [***]Steinberg Forum

04. [**]无独立声卡玩转Cubase

05. [仔细的介绍 *****]张佩的文章-ASIO音频驱动开发指南

06. [仔细的介绍 *****]张佩的文章-ASIO音频驱动开发指南 2.0

07. Steinberg built-in ASIO Driver: information & download

08. Audio card latency

09. 跳羚科技 - Buckhorn之音频asio驱动开发

10. 什么是 ASIO 声卡驱动?

11. WASAPI介绍