こんにちは。河野由香です。
Raspberry PiをHDMIケーブルでディスプレイにつないだ状態で、Scrartchで音を出そうとすると、音が出ないことがあります。実際には音は出ているのですが、HDMI接続の場合、音の先頭が切れる、短い音だと聞こえない、ということが起こります。これはアナログ→デジタル変換に時間がかかってしまうためのようです。
対処方法を調べているうちに、Raspberyy Pi にプリインストールされているScratch(Scratch 1.4 for Linux)は、MIDI音源に対応しておらず、楽器の音が変更できないという課題も見つかりました。
MIDI音源を使えるようにすれば、楽器の音変更もできるし、HDMI接続でも音がちゃんと出るはず。
ということで、MIDIが使えるScratchをインストールする方法を下記にまとめます。
1. 準備
Raspberry Piをネットワークに接続する。Raspberry PiにLANケーブルを挿してインターネットに接続できるようにしておきましょう。
コンソール画面を開く。デスクトップ左上のアイコンをクリックするとコンソール画面が開きます(図1)。
2. Scratch with MIDIのインストール
ここからはコンソール画面に入力していきます。
まずディレクトリを移動します。
cd /home/pi
次に、Scratch with MIDI (楽器の音が変更できるScratch)をインストールします。下記を入力し、Enterキーを押すとインストールが始まります(図2)。
curl https://naominix.github.io/scratchmidiinstall.sh | sh
インストールが完了(図3)。
再起動してくださいと言われているので、下記のコマンドを入力し、再起動しましょう。
sudo reboot
デスクトップにScratch MIDIのアイコンが作成されます。そのままにしておきましょう。
3. Scratchを起動して音を出してみましょう
いつもの手順「Menu」→「プログラミング」→「Scratch」でScratchを起動します。ディスプレイによっては、Scratchを起動すると「遠隔センサ接続が有効になりました」と表示されるようです。OKをクリックします。
Scratchの「音」を使って音を出してみましょう。楽器の変更やドラムの音の変更もできるか確認してみましょう。
4. 音が出ない場合
音の出力先の確認をします。コンソールに下記のコマンドを入力します。
amixer cget numid=3
図4のように表示されます。
出力内容の最後の行「: values=2」の数字「2」が音の優先出力先を示します。下記のように数字により設定内容を識別します。
- アナログ出力を優先する:1
- HDMIを優先する:2
- 自動判別:0
今回は、HDMIを優先と思いますので、2に設定されていれば変更の必要はありません。変更が必要な場合は下記のコマンドを入力します。
HDMIを優先するように設定する。
sudo amixer cset numid=3 2
5. 補足1:アナログ音源の出力
今回は、デジタル音源を出力することを優先しています。HDMI接続の場合、アナログ音源は出力に遅延が発生することに変わりありません。アナログ音源の出力のためにはスピーカーまたはヘッドフォンを接続してください。
6. 補足2:音の優先出力先の変更方法
音の出力先の変更方法、「アナログ優先」「自動判別」のコマンドを含めて下記にまとめておきます。
アナログ出力を優先する場合
sudo amixer cset numid=3 1
HDMIを優先する場合
sudo amixer cset numid=3 2
自動判別にする場合
sudo amixer cset numid=3 0
raspberrypiを始めた初心者です。モニターからの音がひどいので、外付けスピーカを購入したが、楽器選択ができない問題があり約1週間の悪戦苦闘となた。しかしこのブログのお陰でようやく決着できました。大変ありがとうございました。
実は以前にも、解像度の設定で行き詰まりYUKA先生のブログのお世話になりました。合わせてお礼申し上げます