1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SPIKE-RT】SPIKE-RTでMIDIを演奏したい!

1
Posted at

0.初めに

この記事ではmidiをもとにspike-rtのコードに変換するオリジナルpythonソフトを紹介します。
前提としてまず、spike-rtを環境構築する必要があります。こちらの記事をもとにspike-rtの環境構築を行ってください。

音を鳴らす文法についてはこちらをご覧ください。

1.環境構築

フォルダを作成する

まず、こちらのリポジトリをクローンし、実際に使用できるようにします。

そのために、まずはクローン元の入れ物のようなフォルダを作ります。
エクスプローラー(フォルダアイコンのもの)を開いて、一番下にスクロールしてください。
すると、このような「🐧Linux」というタブがあるはずです。
このようになるはずです。
このlinuxをクリックしてください。
image.png
そして、この「Ubuntu-24.04」をクリックし、開いてください。
このように中身が見れます。
image.png
その後、真ん中にある「root」というところをクリックしてください。

rootとは、フォルダを置いておく作業スペースみたいなものです。

すると、このような画面が表示されます。
image.png
その後、右上にある「+新規作成」というボタンを押してください。
image.png
ここから、「フォルダー」を押してください。
そうするとこのように名前を入力ところがあるので、名前を付けてください。
image.png
ここでは、名前を「spike-rt-midi」としたことにします。
次にフォルダーに入って、何もないところから左クリックしてください。
image.png
その後、「codeで開く」を選択してください。自動でVScodeが起動します。

リポジトリのクローン

つぎに、先ほど用意したフォルダーに実際に動かすためのgithubのリポジトリをいれます。

こちらのリポジトリをクローンします。
「ctrl + Shift + @」でターミナルを開いて、
まず、githubをインストールします。(おそらく入っていると思いますが、念のため行ってください。)

Ubuntu
sudo apt update
sudo apt install git -y

「sudo」とは管理者権限で実行するという意味です。

Ubuntu
git clone https://github.com/keikyufun/SPIKE-RT_midi

その後、このコマンドでクローンをしてください。
そうするとこのようにファイルが展開されるはずです。
image.png

pythonを使えるようにする

次に、pythonのコードを動かすために、pythonのインストールをします。
ターミナルアプリ(VSコードのやつではない)を開いて、+のよこにある「∨」を押して、「コマンドプロンプト」を選択してください。
image.png
その後、

cmd(ターミナルアプリ)
winget install Python.Python.3.13

を入力してください。
次に再びVSコードを開いて、拡張機能を選択してください。(左側にある田のようなアイコンをクリック)
そこで、「python」と検索してください。
すると、このような画面が表示されるはずです。
image.png
「インストール✓」を押して、インストールしてください。
インストールが完了したら、「ctrl + shift + P」でコマンドプロンプトを開いてください。

コマンドパレットとは、VSコードの機能にアクセスする、「設定」のようなものです。

そこで、

コマンドパレット
Python: Select Interpreter

を入力して、エンターを押してください。
その後、
image.png
このような画面が出てくるので、「Python 3.12.3」をクリックしてください。
これでpython関連は終了です。

実行権限の付与

次に、SPIKE-RT_MIDIに含まれているシェルスクリプトを実行するために実行権限をそれぞれに付与します。

シェルスクリプトとは、ターミナルで実行する複数のコマンドをまとめ、自動化することができるショートカットのようなものです。

VSコードのターミナル(ctrl + shift + @)で、これを実行してください。

Ubuntu
chmod +x ./convert_c.sh
chmod +x ./convert_py.sh

これで実際にシェルスクリプトが使えるようになります。
これで環境構築は終了です。

2.MIDIを用意する

まず、midifileを用意してください。
まだ開発途中で、単音の楽譜しか読み込めないので、パートが一つのMIDIfileを用意してください。
その後、ダウンロードしたMIDIfileを切り取り(ctrl + x)、フォルダにコピー(ctrl + c)してください。

フォルダへの行き方

エクスプローラー(フォルダアイコンのもの)を開いて、一番下にスクロールしてください。
すると、このような「🐧Linux」というタブがあるはずです。
このようになるはずです。
このlinuxをクリックしてください。
image.png
そして、この「Ubuntu-24.04」をクリックし、開いてください。
このように中身が見られます。
image.png
その後、真ん中にある「root」というところをクリックしてください。
すると、このような画面が表示されます。
image.png
ここから、フォルダに移動できます。自分の作ったspike-rt_MIDI用のフォルダにコピー(ctrl + c)してください。
image.png

3.機能

このmidiをSPIKE-RTに変換するプログラムは、pretty midiというpythonベースのmidiリーダーを使用しており、このコードは私がC言語で書いた物をcopilot(githubじゃないほう)にpythonベースとして改良してもらった物です。
python版、C版、HTML版の3つがあります。

4.python版

説明

pythonベースの変換ツールです。
フォーク元のprettymidiがpythonなので、一番エラーが少ないかと思います。
Cよりおすすめです。

使い方

まず、VSコードのターミナル(ctrl + shift + @)で、元から入ってるシェルスクリプトを実行します。

bash
./convert_py.sh

これを実行すると、フォルダ内のmidiファイルが、

bash
root@XXXXXX-XXXXXXXX:~/spiek-rt-midi# ./convert_py.sh
MIDI files list:
[0] *〇〇.mid
[1] *××.mid
[2] *△△.mid
:::::::
Select number (all = all): 

のように出てきます。
これで、変換したいmidifileの番号を入力して、エンターを押してください。
allと入力すると、全部変換されます。
その後、

bash
root@XXXXXX-XXXXXXXX:~/spiek-rt-midi# ./convert_py.sh
MIDI files list:
[0] *〇〇.mid
[1] *××.mid
[2] *△△.mid
:::::::
Select number (all = all): 0
Enter track number for *.mid (default 0): 

のように
表示されるので、トラックナンバーを選んでください。こちらも、allと入力すると、全部変換されます。ここではallとしたことにします。
これで、
spike-rt_midi内に、〇〇というフォルダーが作られます。
このフォルダに

〇〇
↪track0
 ↪part0
   ↪output.txt(実際のコード)
   ↪play.html(試聴用のウェブページ)
  ↪part1
↪track1
↪track2
↪track3
↪track4
↪play.html(一括で聴ける試聴用のウェブページ)
::::

このようなフォルダが生成されるので、ここからoutput.txtの中身を、.cにコピペすることで、spikeprimeでMIDIの選択したパートが流れます。

5.C版

説明

C言語ベースの変換ツールです。
私が作った物なので、デバッグがしやすいです。是非バグがあれば編集リクエストで教えてください!
ほぼ使い方は変わりません。

使い方

まず、VSコードのターミナル(ctrl + shift + @)で、元から入ってるシェルスクリプトを実行します。

bash
./convert_c.sh

これを実行すると、フォルダ内のmidiファイルが、

bash
root@XXXXXX-XXXXXXXX:~/spiek-rt-midi# ./convert_py.sh
MIDI files list:
[0] *〇〇.mid
[1] *××.mid
[2] *△△.mid
:::::::
Select number (all = all): 

のように出てきます。
これで、変換したいmidifileの番号を入力して、エンターを押してください。
allと入力すると、全部変換されます。
その後、

bash
root@XXXXXX-XXXXXXXX:~/spiek-rt-midi# ./convert_py.sh
MIDI files list:
[0] *〇〇.mid
[1] *××.mid
[2] *△△.mid
:::::::
Select number (all = all): 0
Enter track number for *.mid (default 0): 

のように
表示されるので、トラックナンバーを選んでください。こちらも、allと入力すると、全部変換されます。ここではallとしたことにします。
これで、
spike-rt_midi内に、〇〇というフォルダーが作られます。
このフォルダに

〇〇
↪track0
 ↪part0
   ↪output.txt(実際のコード)
   ↪play.html(試聴用のウェブページ)
  ↪part1
↪track1
↪track2
↪track3
↪track4
↪play.html(一括で聴ける試聴用のウェブページ)
::::

このようなフォルダが生成されるので、ここからoutput.txtの中身を、.cにコピペすることで、spikeprimeでMIDIの選択したパートが流れます。

6.HTML版

説明

一番使うのが簡単です。
ボタンをポチポチするだけで終わります。
テンポ設定機能のあるconvert.htmlがメインですが、変換の早いconvert_old.htmlもあります。

使い方

ここでは開き方について書きます。
まず、convert.htmlを左クリックしてください。
image.png
そうすると、上の画像のように、「エクスプローラーで表示する」という欄が出てくるので、クリックしてください。
そうするとこのような画面が表示されます。
image.png
これをダブルクリックすることで、ウェブページが開きます。
image.png
※色は私の好みです。気に入らない人は、HTMLコードを変更することで、変えることが出来ます。
ブックマークに保存しておくと便利です。
これで後はボタンをポチポチすれば変換されます。

7.終わりに

現在2週間ほどspike-rtにUSB機能を入れるのに奮闘していて、かなり忙しいので、あまりエラーは読めないかもしれません。すみません。
是非音楽をspikeprimeで楽しんでみてはいかがでしょうか。
midiをダウンロードするところのおすすめはここです。

ダウンロードしたいMIDIをえらんで、下の「MIDI」を押すとダウンロードが開始されます。
image.png
是非ダウンロードしてはいかがでしょうか。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?