ラズベリー-Pi-OSA-MIDI-Board-LOGO

Raspberry PiOSAMIDIボード

ラズベリー-Pi-OSA-MIDI-Board-PRODUCT

MIDI用のRaspberryPiのセットアップ

このガイドでは、新しくインストールしたRaspberry Piを使用して、OSで検出可能なMIDI I/Oデバイスとして動作させる方法を説明します。 それはまたいくつかの元を提供しますampさまざまなPythonライブラリを使用してMIDIデータをプログラミング環境に出し入れするファイル。 更新– 11年2021月XNUMX日:このガイドは、最新のRaspberry Pi OSバージョンのいくつかの問題を修正するために更新されました。また、プリインストールされたスクリプトを含む完全なイメージをダウンロードして、ここで完全に構成することもできます。

必要なもの

  • ラズベリーパイA+/ B + / 2 / 3B / 3B + / 4B
  • RaspberryPi用のMIDIボード
  • MicroSDカード•4本のナイロンM2.5ネジのセット
  • 4ナイロンM2.5*11mmメス-メススタンドオフのセット
  • 4ナイロンM2.5*5mmオス-メススタンドオフのセット

組み立て

下の画像に示すように、ナイロン製のネジとスタンドオフを使用して、RaspberryPiをMIDIボードと一緒に組み立てます。

ラズベリー-Pi-OSA-MIDI-Board-1

初回セットアップ

私たちはすべての元をテストしましたampこのドキュメントのファイルは、Rasperry PiOSを使用するPi4B、バージョン2020年XNUMX月)です。 初めて、Piを設定するために画面とキーボードを使用する必要があります。 その後、選択した方法を使用してPiのOSにアクセスします。 特に明記されていない限り、すべての手順は必須です

インストール

更新/アップグレード
ここで説明されているように、更新とアップグレードを実行します。 https://www.raspberrypi.org/documentation/raspbian/updating.md

ネットワーク構成(オプション)
別のマシンからPiにSSHで接続する場合は、Piに固定IPアドレスを指定する価値があります。 https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Piにネットワークセキュリティ設定を追加して、Piが自動的にネットワークに接続するようにすることもお勧めします。 https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

PiUpをUSBOTGガジェットとして設定する
Piでターミナルを開き、次の手順に従います。

  • USBドライバーをdwc2に設定します
    エコー「dtoverlay=dwc2」| sudo tee -a /boot/config.txt
  • dwc2ドライバーを有効にする
    エコー「dwc2」| sudo tee -a / etc / modules
  • libコンポジットドライバーを有効にする
    エコー「libcomposite」| sudo tee -a / etc / modules
  • MIDIガジェットを有効にする 
    エコー「g_midi」| sudo tee -a / etc / modules

構成スクリプトを作成します。

  • 作成する file
    sudo touch / usr / bin / midi_over_usb
  • 実行可能にする
    sudo chmod + x / usr / bin / midi_over_usb
  • Nanoで編集する
    sudo nano / usr / bin / midi_over_usb

以下をに貼り付けます file、必要に応じて製品とメーカーの文字列を編集します。 cd / sys / kernel / config / usb_gadget / mkdir -p midi_over_usb cd midi_over_usb echo 0x1d6b> idVendor#Linux Foundation echo 0x0104> idProduct#多機能コンポジットガジェットecho 0x0100> bcdDevice#v1.0.0 echo 0x0200> bcdUSB#USB2 mk 0x409エコー「fedcba9876543210」>文字列/0x409/シリアル番号エコー「OSAエレクトロニクス」>文字列/0x409/メーカーエコー「MIDIUSBデバイス」>文字列/0x409/製品ls/sys / class /udc>UDC終了Nanoおよび保存 file (Ctrl + X、Y、戻る)。 スクリプトへの呼び出しをrc.localに追加して、起動するたびに実行されるようにします。 sudonano/etc/rc.local「exit0」の前に次の行を追加します/usr/ bin / midi_over_usb Nanoを終了し、 file Piを再起動します。 sudoreboot使用可能なMIDIポートを一覧表示します。 amidi -l MIDIが正しく設定されている場合、最後のコマンドは次のようなものを出力するはずです。Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi

Pythonライブラリをインストールする

このセクションでは、Python2.x用の推奨ライブラリをインストールする方法について説明します。

ミドー

Midoは、MIDIデータを処理するための使いやすいライブラリです。 これは、rt-midiバックエンド、asoundライブラリ、およびJackに依存しています。 次のコマンドを順番に入力します。出力には、16つの「MIDIスルー」ポートと0つの追加ポートが表示されます。 この場合、すべてが順調です。 *注:Midoでは、ポート名は一重引用符で囲まれた文字列全体ですが、名前をコロンの前の文字列に切り捨てることができます。 このマシンでは、文字列は'f_midi:f_midi XNUMX:XNUMX'です。 例ample、これらのXNUMXつのコマンドは同等です

ピグピオ

ピグピオライブラリを使用して、GPIOピンとインターフェイスします。 このライブラリは、Piのハードウェア(RPi.GPIO)とインターフェイスする標準的な方法よりも安定していて柔軟性があることがわかりました。 別のライブラリを使用する場合は、それに応じてコードを編集します。 pigpioライブラリをインストールするには、次の手順に従ってください。 http://abyz.me.uk/rpi/pigpio/download.html 元のすべてを実行する前にamp以下のファイルでは、完了していない場合は、pigpioサービスを開始する必要があります。

パイソンエクスampレ

元amplesはまた、XNUMXつの範囲間をマッピングする簡単な方法としてnumpyライブラリのinterp関数を使用します。 Reaperを使用してデータを送受信しました。 Piは、Reaperの設定メニューでハードウェアMIDI出力として構成されます。

ノートデータでGPIOを制御する(例:ample_1_key_press.py)この例ampleは次の方法を示しています。

  • 単純な条件を使用して、3つの特定のノートオンおよびノー​​トオフイベントをリッスンします
  • 非ノートデータがPiに送信されるときに発生する例外をキャッチします(たとえば、シーケンサーからのトランスポートデータ)
  • ノートベロシティを出力ピンのPWMにマッピングします

関連するライブラリをインポートし、pigpioライブラリからpiオブジェクトを作成し、出力ポートを開きます。try/ catchブロックは、送信される他のタイプのMIDIデータ(トランスポートコントロールなど)から発生するエラーをキャッチするためのものです。 while True:try:#これは、port.iter_pending()内のmsgのすべての非ノートデータを除外します:#保留中のメッセージがある場合if(msg.type =='note_on'):#ノートオンメッセージアウトの場合= interp(msg.velocity、[0,127]、[0,255])#速度を0-127から0-255にスケーリング#ノート番号でデータをフィルタリングif(msg.note == 53):pi1.set_PWM_dutycycle(2、out )elif(msg.note == 55):pi1.set_PWM_dutycycle(3、out)elif(msg.note == 57):pi1.set_PWM_dutycycle(4、out)else:#メッセージがNote Onでない場合(例:Noteオフ)if(msg.note == 53):pi1.set_PWM_dutycycle(2、0)elif(msg.note == 55):pi1.set_PWM_dutycycle(3、0)elif(msg.note == 57):pi1。 set_PWM_dutycycle(4、0)属性エラーをエラーとして除く:print( "エラーを除く")pass

ModホイールとピッチホイールでGPIOを制御する(例:ample_2_wheels.py)
この元ampleは次の方法を示しています。

  • ピッチデータとModデータをリッスンし、タイプでフィルタリングします
  • データを出力ピンのPWMにマッピングします

この元ampleは上記と似ていますが、次のメッセージタイプがあります。

  • ピッチホイールは、値がmsg.pitchのタイプピッチホイールです。
  • Mod Wheelは、msg.control = 1(CC番号)の制御パラメーターとmsg.valueの値を持つ連続コントローラータイプのcontrol_changeです。

GPIOイベントからのMIDIデータの出力(gpio_event.py)

この元ampleは次の方法を示しています。

  • ボタンが押されたことを検出するには、割り込みを使用します
  • Piから別のデバイスにMIDIデータを送信する

出力ポートを開き、XNUMXつのメッセージを作成し、GPIOピンを入力として設定します。 この元ampleは、ピン21に関連付けられたボタンがあることを前提としているため、ボタンが押されるとピンがHIGHになります。ボタンが押されるか離されると呼び出されるコールバック関数は次のとおりです。 出力ポートのsend()関数は、単にメッセージをポートから送信します。コールバックリスナーはバックグラウンドで実行され、これ以上注意する必要はありません。

MIDIを再生する File

この元ampleは次の方法を示しています。

  • MIDIをロードする file プログラミング環境で
  • 再生 file .

この元amplesはあなたがMIDIを持っていることを前提としています file midi_と呼ばれるfilePythonスクリプトと同じディレクトリにある.mid:MidoからMidoをインポートするMidiをインポートするFile midoからインポートMetaMessageポート=mido.open_output('f_midi')mid = MidiFile('ミディ_file.mid')while True:Midiのmsgの場合File('ミディ_file.mid')。play():port.send(msg)

ドキュメント / リソース

Raspberry PiOSAMIDIボード [pdf] ユーザーマニュアル
OSA MIDI、ボード

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *