見出し画像

17.SimpleMIDIFileとQuarks(SC3の機能拡張)

先日SuperColliderについてWEB検索していると、tn8さんがSC3に関するblogを最近も更新されていることを見つけました。なんと嬉しい。

僕はこれまでSuperColliderを学ぶなかで、tn8さんがWEB上に残してくださっている情報にとてもお世話になってきました。僕はブログラミングに接したことのない人でしたので、SuperColliderコーディングの初歩的な情報や勉強会のLOGなどとても役に立ち、何度も読んだものです。(SuperCollider勉強会の関係者の方々にも感謝です。)

そしてそのblogでもやっぱりお役立ち情報を残してくれていて、まだ全部読んでないですが、目に飛び込んできたのは「SimpleMIDIFlieというクラスでSMF(.midファイル)を読み込むことができる」というメモ書きでした。

なにー!!
これ以前から僕がやりたかったことで
「誰かSMFからPbindに変換してくれるツール作ってくれないかな」と思ったりしたものです。
さっそく、試すことにしました。

[MIDIファイルの再生(tn8)]
(blogへの直接のリンクを貼らせてもらいました!)

コードをコピーして実行してみたのですが、どうやらこのSimpleMIDIFileクラスはデフォルトでは使えないんですね。

少し調べてみるとQuarksに入っていることがわかりました。
ググってみるとこんなページが見つかります。
https://github.com/supercollider-quarks/wslib-classes

Quarksは目的別に機能追加するプラグインのようなもの、だと思います。
上記のページから、SimpleMIDIFileはwslibというQuarksに入っていることがわかりますので、早速wslibを入れます。
Quarksのインストールは簡単です。
SuperColliderのエディタ部分に下記のように書いて実行します。

Quarks.gui;

するとインストール用のウィンドウが開きます。
下記のようなウィンドウです。

この画像ではwslibが上の方にありますが、abc順になっているので本来は下の方にあります。

2024.07.12追記

もし「ウィンドウが開いたけど中身が表示されない」という状態の人は、gitなどのコマンドラインツールがMacにインストールされていないのだと思います。
その場合、以下のようなアラートウィンドウが表示されているはずです。
(私の場合、SuperColliderの裏に、ひっそりと表示されてました。)

促されるままに[インストール]ボタンを押します。
少し時間がかかりますが、インストール完了するのを待って、もう一度
Quarks.gui;
を実行します。
するとウィンドウ内にリストが表示されるはずです。

(2024.07.12追記、ここまで)


リストをスクロールして目的の機能(今回はwslib)を探します。

wslibを見つけたら、[+]の部分をクリックします。
すると[+]が緑色のレ点に変わり(インストールが完了した印になり)ます。

上から7個目がwslibです。インストールが完了した画面です。

これだけでOK。SuperColliderを再起動したら、wslibの機能を使うことができます。

(2024.07.12追記部分参照願います。手動でgit導入する必要ないことがわかりましたので、以下は取り消し線といたします。)
もし上記手順で(ウィンドウ内にリストが現れないなど)うまくいかない場合、mac(またはWindowsPC)にgitを入れる必要があるかもしれません。
gitの導入はこちらから。
http://git-scm.com/


さて、早速SimpleMIDIFileを使ってみると、鳴りました!MIDIファイルの再生ができました。
自作SynthDefの音色を指定することもできます。

下記のようにすると、pauseやresumeもちゃんと効きました。
x = m.p( \organ ).play;
x.pause;
x.resume;
x.stop;
小節数指定などして途中からの再生はできなさそうなので、ちょっと残念。
でも”Simple”MIDIですからね。再生だけのシンプル機能、これだけでも十分です。

ちなみに、SMFが単一トラックの場合、複数トラックを同時再生させることができました。
(
m.p(\syn1, 0.2).play;
n.p(\syn2, 0.5).play;
o.p(\organ, 0.5).play;
)
m、n、o、それぞれに1トラック文のSMFを読み込ませています。
0.2や0.5の数字は、各トラックの音量です。


マルチトラックのSMFでも再生はうまくいったのですが、音色が全トラック同じになってしまいます。

2トラックまでなら配列にすることでトラック別の音色指定がようでした。
m.p( [\syn1, \syn2] ).play;
まぁでもこれはドキュメントに書いていたわけではないので正しい方法とはいえないですが。。
ちなみに、この方法で3トラックでも音色指定できるかと思ったら、、、
m.p( [\syn1, \syn2, \organ] ).play;
これだとうまくいかなかったです。
というわけで2トラックでうまくいったのも謎ではあります。

〜独り言〜
メソッドpをコマンド+IでLook Up Implementationsしてみたら、Pparで複数トラック(複数チャンネル)のPbindを鳴らしてるっぽいんですよね。
各トラックのPbindの\instrumentが正しくSynthDefの名前を受け取ることができればトラック別の音色指定が実現するような気もするんですが〜。
〜〜〜〜〜


それと、MIDIファイルの書き出しはうまくいかなかったです。
やり方がよくなかったのだと思いますが、原因特定に至らなかったです。


そんなところで。
今日はSimpleMIDIFileとの奮闘LOGと、Quarksのインストールについて書きました。


<目次へ>
https://note.com/sc3/n/nb08177c4c011

この記事が気に入ったらサポートをしてみませんか?