赤い(Tcl) UNHANDLED ERRORと不安定な音の出力
Windows PCでPd 0.49.0をインストールした後、Mediaメニュー – [Audio Setting]を開こうとすると、Pd ウィンドウに以下の赤字のエラーメッセージ表示されて設定画面が開けないトラブルについて確認しました。
(Tcl) UNHANDLED ERROR: extra characters after close-brace
while executing
“lappend audio_indevlist {ƒ}ƒCƒN (High Definition Audio }
global audio_outdevlist; set audio_outdevlist {}
lappend audio_outdevlist {ƒXƒs [ƒJ […”
(“uplevel” body line 2)
invoked from within
“uplevel #0 $docmds”
また、Windows PCにヘッドフォンをさしても音が鳴らない・スピーカーから音が鳴ってヘッドフォンに切り替わらない、またはその逆の現象が発生する状態も確認しました。
先日、他の方の複数台のPCで頻発しているのに遭遇したのですが、自分の所有するWindows PCでも同様の症状を再現でき、確認しました。
この解決・対応方法について紹介します。
解決のきっかけとなったのは、以下のブログです。
可燃ゴミ箱
Pure Data 設定メモ(Windows 7用)
https://drugscore.blog.fc2.com/blog-entry-194.html
ここで示されている方法で解決しました。(感謝!)
以下、自分のPCでも確認したのでその手順をこちらでもスクリーンショットとともに示します。
システムロケールを英語に変更する
Tclはパスの設定と使用言語に絡む処理をしているようで、何らかの原因でサウンドデバイスを正しく認識できないと、出てくるエラーのようです。(ただし、この状態でも音は出力されます)
Audio Settingが開かないので、Pdでの音の出力先などの設定ができないというのが不便です。
上記のブログでは、日本語OSを使用しているとサウンドデバイス名に日本語が使われることになり、Pdで動くTclが判別できない文字コードを含むパスとなるのが原因という推測でした。(ただし、これだけが原因ではなさそうで、その詳細については後に書きます)
私がテストしたのは全4機種で、そのうち赤字エラー現象を確認したのは以下のPCです。
Lenovo T430(2012年): Windows7 Pro 64bit
HP Omen by HP 15inch(2017年): Windows10 64bit
ここでのスクリーンショットはWindows7のものになりますが、基本的にWindows10もやっていることは同じです。
手順
- コントロールパネル – [地域と言語] -[管理]タブを開く。(Windows10の場合はコンパネ-[地域]-[管理]タブ)
- [Unicode対応ではないプログラムの言語]欄の[システムロケールの変更]ボタンをクリックする。
- [現在のシステムロケール]を日本語から英語にする。
- Windowsを再起動する。
これで赤字エラーが出なくなり、Audio Settingが表示されるようになります。
サウンドデバイスの名前の先頭が「???」になっていますが、問題ありません。めでたく解決です!
※注意
コンパネに記述されている「この設定(システムロケール)によりUnicode対応ではないプログラムでテキストを表示するときに使われる言語を制御します。」とあるように、アプリの文字表示のための設定です。Windows OS自体の文字コードはunicodeで制御されています。Pd以外のソフトウェアに影響を与える場合がありますので、変更は自己責任でお願いします。
この赤字エラーメッセージですが、以下のPdフォーラムでも議論がありました。
[PD] Japanese Language Problem
https://lists.puredata.info/pipermail/pd-list/2018-07/123056.html
ただ、このスレッドで紹介されているPdを起動する際に言語セットをja_jp.utf-8で指定するという方法は効果がありませんでした。
ヘッドフォンから音が鳴ったり鳴らなかったりする
次にヘッドフォンやスピーカーからの音の出力が不安定な現象について見ていきましょう。
この現象はPdが起動した後に、ヘッドフォンをヘッドフォンジャックにさしたり抜いたりしても自動的にスピーカー←→ヘッドフォンの切り替えが行われないというものです。
そしてヘッドフォンをさしているのにスピーカーから鳴り続けたり、抜き差しをしているうちにどちらからも音が鳴らなくなったりします。
これを解消するにはPdの再起動をしてください。
考えられる対応策はヘッドフォンの抜き差しはPdの起動前に行う、起動した後は抜かないということです。
これは特定の機種で発生する現象のようで、私の所有するWindows PCの中ではLenovo T430でのみ発生しました。(検証したPCの詳細は後述)
この音の出力が見失われる現象と前述のTclの赤字エラーとの関連は明確にはありません。赤字エラーが出ているすべてのPCにこのヘッドフォンのエラー現象があるわけではないからです。
しかし、T430の場合は赤字エラーを解決する前と解決した後では、ヘッドフォンの抜き差しに関連する音の出力が少し違っていました。(最初からヘッドフォンをさしていてもスピーカーから鳴る。最初はヘッドフォンから聞こえていたが、ヘッドフォンを抜いたら音が消えた等)
なので、何らかの関係はあるのかもしれませんが、詳細は不明です。
ついでに、T430でYoutubeを再生し、Pdを同時に音を鳴らしながらヘッドフォンを抜き差しをしたところ、Youtubeのみ正常に切り替わりました。Pdの音は消えました。
同じことを他の3機種でやったところ、問題なくYoutubeもPdも切り替わりました。
音の出力を確認する
ここまでやってもそもそも音が鳴っていない、または音の鳴るパッチがなくて確認できない場合があります。
Pdからの音の出力が鳴っているのかどうかをテストして確認する方法は以下の通りです。
- Pdの[Media]メニュー – [Test Audio and MIDI]をする。
- testtone.pdというパッチが開く。左端の「TEST TONES」のラジオボックスを60または80にする。
これでも音が聞こえない場合は、Pdのオーディオ設定やPCのオーディオ設定を確認しましょう。
- Mediaメニュー – [Audio Settings]を開いて、[Output Devices]のサウンドドライバが、PCの音出力の適切なサウンドに設定されているかを確認する。デフォルトのサウンドドライバは、Windowsでは[Realtek High Definition Audio]や[High Definition Audio]、Macでは[Buit-in Output]が代表的なものです。。
- PCのサウンドパネルを確認してシステム音量を確認する。ここが極端に小さい、または0になっていると、Pdで音が鳴っていても聞こえない。
- 外部のオーディオインターフェイスを接続している場合や追加で別のサウンドドライバをインストールしている場合はそちらが選択されている可能性がある。適切なサウンドドライバを設定する。
なぜTclエラーが出る/出ないがあるのか(考察)
実は、赤字のTclエラーはすべての日本語OSのWindowsPCで発生するわけではありません。中にはシステムロケールが日本語のままでも動作するケースがありました。
テストしたWindows PCたち
HP by Omen 15inch (16GB) 2017年:Win10 Home 64bit※
Lenovo T430 (8GB) 2012年: Win7 Pro 64bit※
Thinkpad X201 (8GB) 2010年: Win7 Pro 64bit
Gateway MX6953j (4GB) 2006年: Win7 HomeEdition 32bit
上記のうち、前者2台(HP, T430)で赤字エラーが発生して、対処が必要でしたが、後者2台(X201, MX6953j)はシステムロケールが[日本語]でもエラーは発生しませんでした。
コンパネ-デバイスマネージャー
- HP by Omen: Realtek High Definition Audio, NVIDIA Virtual Audio Device(Wave Extensible)(WDM), インテル(R)ディスプレイ用オーディオ
- T430: High Definition Audio デバイス、インテル(R)ディスプレイ用オーディオ
- X201: High Definition Audio デバイス、Conexant 20585 SmartAudio HD
- MX6953j: High Definition Audio デバイス、ユニモデム半二重モデム
いずれも日本語OSです。サウンドデバイス名には「デバイス」などの日本語が含まれているものもあれば、ローマ字だけのものもあります。
すると、これは日本語OSとサウンドデバイス名に日本語が含まれているかいないかだけの問題ではなく、文字コードの持ち方、機種ごとのハードウェア構成(サウンドカード)も何らか関係している可能性があります。
しかし、どういう組み合わせがエラーのある/なしを分けているかは不明です。
国産メーカーか海外メーカーの違いというのも関係なさそうです。同じThinkpadブランドでも機種によってエラーがあったり、なかったりします。
なので、これはもうPdに対するPCのサウンドドライバとハードウェアの組み合わせ次第、いわばPdにとっての「アタリハズレ」になるのかもしれません。
まとめ
- PCの赤字の(Tcl) UNHANDLED ERRORが出たら、システムロケールを英語にして解決。
- ヘッドフォンの抜き差しで音の出力がおかしくなる場合は、Pd動作中に抜き差しを行わない。
- 赤字エラーは日本語OSが原因の可能性が高い。ただし、機種ごとに出たり出なかったりする。
ピンバック: Windows PCでヘッドフォンから音が鳴らない時のチェックポイント | Pure Data Japan
いつも参考にさせていただいております。
Audio SettingsがWindowsで開けない件ですが、解決できました。(Windows 10)
以下のScrapboxに詳細を書きました。
https://scrapbox.io/SoundDesign/Pure_Data_Windows%E7%89%88%E3%81%A7%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%8C%E9%96%8B%E3%81%91%E3%81%AA%E3%81%84%E3%80%90%E8%A7%A3%E6%B1%BA%E3%80%91
よろしければご利用ください。