PythonでTENORI-ONを動かすblog(仮)

PythonでMIDIを作ってYAMAHAのTENORI-ONをごにょごにょするよ。

PythonとMIDIで電子楽器を鳴らそう

この記事は PyLadies Advent Calendar 2018 12月14日の記事です。

 

Advent Calendarもそろそろ折返しということで、ちょっと一服。
本日は実用性の薄いニッチなネタを書かせていただきます。

 

詳しい方からはマサカリが飛んで来そうですが、、ご家庭のキーボード(楽器のほう)などで自動演奏してみたい!という酔狂な方はご一読いただければ幸いです。

 

[自己紹介]

  • 「自動演奏&自動作曲をやろう!」という試みの一環で、TENORI-ONという電子楽器にPythonMIDI信号を作って流してます。(2018年8月〜)
  • 若い頃にテレビで明和電機を見て「こんな大人になりたい」と思った結果、何かを間違えました。

[今日のお品書き]

  • そもそもMIDIってなんぞ?(超絶ざっくり)
  • 電子楽器にMIDIファイルを流して自動演奏してみよう
  • Pythonで作ったMIDI信号を楽器に流してみよう

 

はい。本題入ります。

 

●そもそもMIDIってなんぞ?(超絶ざっくり)

主に音楽演奏や制作に使われる、MIDIプロトコルという規格。「Musical Instrument Digital Interface」の略。
=>キーボード、シンセサイザー等、ドレミファソの音をデジタルな音階で持っている楽器は概ねMIDIに対応している、と捉えてください。
※奥が深すぎるので豪快に割愛します。

●電子楽器にMIDIファイルを流して自動演奏してみよう

Pythonは関係ないです。簡単に、既存のMIDIファイルを電子楽器に流す方法を紹介します。

<用意するもの>

MIDI端子があるorUSB接続可能な電子楽器(主にキーボード)
=> 製品マニュアル要確認ですが、、本体外周を見回して、外部接続できそうな端子をチェックして見てください。(ヘッドホン端子
以外)
今回のサンプルは、USB接続可能な「ポケットミク」です。


・(入出力がMIDI端子の場合)USB-MIDIインターフェース
=> 製品の相性があるようですが、、ヤマハUX-16など。

 

・(入出力がUSBの場合)USBケーブル
=>本体-PC接続可能なもの。旧型のtype-Bなどの場合もあり。

 

MIDI音源 => ゲーム音楽が数多め。検索 "MIDI {ゲームのタイトル}"や"MIDI フリー素材" でhitします。


・PC => mac/windowsどちらでも。


MIDIプレーヤーソフト => フリーソフト「MidiTrail」がおすすめです。

<MidiTrailで流す!>

1)PCと電子楽器をUSB接続。両方とも電源ONにしておく
2)MidiTrailを起動
3)メニュー "Option" -> "MIDI OUT"でdefault portに"NSX-39"を指定

f:id:bastardeyes:20181214014349p:plain


4)メニュー "File" -> "Open"で、MIDI音源を選択
5)メニュー "PlayBack" -> "Play/Pause" 、または スペース で音源再生

f:id:bastardeyes:20181214014412p:plain

 

流してみました。

 

Pythonで作ったMIDI信号を楽器に流してみよう

<ライブラリについて>

・ガチ音楽なMIDIのファイルを作成する場合
=> ライブラリ「pretty_midi」が良さげ。音色がデフォルトで何種類か選べる。
 ドレミは[60, 62, 64]などノートナンバーで定義する必要はあり。
 ※リアルタイムでのMIDI信号生成には不向きな様子

 

・とりあえず気楽にリアルタイムで単音を出したい場合
=> ライブラリ「pygame.midi」がおすすめ。動的に信号を出して遊べる。
※自分はもっぱらこちらを使用。

 

<音の出し方>

・ざっくり言うと、note_onで音がでる。note_offになるまで残る。
・ピッチ(音の高さ)は60でド。1増えるごとに半音上がる。
・ベロシティ(音の立ち上がりまでの速度)は、とりあえず80ぐらいで設定して、あとはお好みで。

 

下記、欽ちゃんの仮装大賞のような音が作れるPythonのサンプルコードです。

 

 肝心なPython部分がざっくりすぎるのでアレですが、正直Python書くよりも環境周りの知識のなさにものすごく苦戦しました。。

楽器さえ繋げられればあとは楽しみながら試行錯誤できるはず!!

 

 

一応、来年のMaker Faire Tokyo2019に向けて、これらを使った新作を予定しております。ひとまず勉強せねばです。

合間にRaspberry Piもくもく会向けにライトなものも考えているので、どこかでTENORI-ONを持って出没するかもしれません。