ホットキーでASIOドライバを解放するAHKスクリプト

ASIO の特性上、Cubase なんかの ASIO ドライバを占有動作する音楽ソフトは起動中に WDM や DirectSound といった OS 経由のサウンドドライバからの出力ができなくなる。そのため Cubase の起動中に Winamp などで mp3 を再生したり、外部の波形編集ソフトを使っての音声確認はできない。ASIO は排他なので ASIO ドライバで動作させたソフトも不可。とどのつまり、Cubase 起動中は Cubase からしか音は出せない。不便である。
Cubase の起動中に他のソフトから音声を再生するためには "Device - Setup" から "アプリケーションがバックグラウンド時にドライバを解放する" オプションをチェックすれば良い。が、このオプションを付けての作業はかなり危険である。アクティヴウィンドウが Cubase から他に移ると再生中であっても強制的にドライバの解放が行われるため、何かポップアップウィンドウが出現した時や、ちょっとエクスプローラやブラウザを確認しようとタスクバーをクリックした時などにいちいち再生がストップしてしまう。それも通常のストップではなくドライバ強制解放による音声処理断絶であり、いい確率でクラッシュする。何度か痛い目を見た。
以上によりこのオプションを常時付けておくのは剣呑極まりない。しかし使わないと Cubase の使用中に他のソフトから音を出せない。要はユーザーが必要な時だけ任意に手早くドライバを解放できれば良いのだが、生憎そんな気のきいたショートカットは用意されていない。そこで AutoHotkey の出番である。
下準備として "Device - Setup" を呼び出すキーコマンドを作成しておく。今回は”Alt & Shift & D” とした。

; Release Driver
Pause::
	Send, !+D	; Open Device Setup
	WinWait, ahk_class SteinbergModalWindowClass
	WinMove, ahk_class SteinbergModalWindowClass, , 0, 0
	Sleep, 50
	MouseClick, Left, 100, 220
	MouseClick, Left, 310, 100
	Send, {Enter}
return

Pause / Break キーを押すたびにバックグラウンド時のドライバ解放オプションをチェック/解除する。外部のソフトで音声を確認したい時だけ手動でドライバを解放できるようになる。
"Device - Setup" オプションは前回終了時に選択していたとサブメニューとウィンドウ表示位置を記憶しているが、どのサブメニューを選んでいるかによってサブメニューへフォーカスを移すのに必要な Tab キーの押下回数が変わってしまうため一律なキー操作では自動化できない。よってウィンドウの表示位置補正とマウス操作をオートメーションする力技。動作はすこぶる快適だがスクリプトとしては美しくない。