Fedora で、DTM, Desktop Music をやるおぼえがき

Here are unofficial Japanese translation, screen shots, and supplementally information for Fedora Musicians' Guide.

DTMは初めてです。http://docs.fedoraproject.org/en-US/Fedora/14/html/Musicians_Guide/index.html - Fedora 14 Musicians' Guide にしたがって、遊んでみようと思います。Qjackctl, Qsynth, Fluidsynth, Rosegarden, Qtractor, jack-keyboard などの使い方を画面の例を含めて紹介します。Musicians' Guide とあわせて読んでください。

Musicians' Guideの訳も作成中です。

2011/05 追記。Fedora 15 のミュージシャンズガイド http://docs.fedoraproject.org/en-US/Fedora/15/html/Musicians_Guide/index.html が公開されました。今度は、チュートリアルのファイルもダウンロードできるようです。http://soundcloud.com/fedoraproject/sets/fmg-ardour-tutorial 他。あいかわらず、リンクが切れているものもあります。
2011/07 追記。ミュージシャンのガイドの訳が、http://docs.fedoraproject.org/ja-JP/Fedora/15/html/Musicians_Guide/index.html に公開されました。原著者は Fedora 16 用に改訂版を作成中で、今まで聴けなかった Qtractor の MIDI チュートリアル演奏なども公開されました。

まとめ

1 LilyPond は、フリーの、楽譜記述ソフトウエアとファイル形式で、MIDI や pdf への変換もできる。ファイルは .ly で終わる。

2 Qtractor/Rosegarden で、MIDIファイルが演奏できる。編集や新規作成もできる。こんなふうにつなぐ。
 Qtractor/Rosegarden =>  Fluidsynth =>  jackd =>  ALSA =>  サウンドカード
 MIDIシーケンサ  シンセサイザー  サウンドサーバ  Linux カーネル  ハードウエア

3 上の図の箱のつなぎめのところの設定が間違っていると音が出ない。両側のソフトウエアの設定と、Qjackctl の Connect 画面に注意すること。

4 jack-keyboard と、 fluidsynth で、コンピュータのキーボードで、曲を弾ける。

5 Fluidsynth には、あらかじめ、ピアノやバイオリンの音が用意してある。MIDIのチャネルに、プログラムを設定することで、楽器を変えられる。

6 portmidi で、MIDIのノートオンメッセージを fluidsynth に送れば、自作プログラムから音を出せる。

によると、チュートリアルで使うファイルのURLが間違っていて、ダウンロードできない。
Audacity のファイルも、間違ったものだった。とのことです。

環境:
 Fedora 14 on Thinkpad R50e。 外部機器、なし。リアルタイムカーネル、使わず。音がぶつぶつ切れるときもあるが、まあ、ごあいきょう。
qtractor-0.4.7-1.fc14.i686 これだけは、 RPM Fusion リポジトリからもってきたもの
qsynth-0.3.5-1.fc14.i686 fluidsynth-libs-1.1.3-1.fc14.i686 fluidsynth-1.1.3-1.fc14.i686 qjackctl-0.3.6-1.fc14.i686 
jack-audio-connection-kit-1.9.6-2.fc14.i686 rosegarden4-10.10-1.fc14.i686

時系列

にいうと、最初にやったのは、12. LilyPond で、たまたまダウンロードした楽譜がシンタクスエラーで困ったが、次のは大丈夫で、MIDIができ、 Timidity++ で音も鳴った。
Audacity のチュートリアルをやった。
次が、 Qtractor + Qsynth だったけど、まるで音が鳴らずじまい。
pulseaudio を削除して、 rosegarden をインストールしたら、あっさり鳴った。チュートリアルをやって、MIDIで作曲もした。
Qsynth で、楽器をいろいろ変えて、遊んだ。
Qtractor をもいちどやったら、今度はOK。
以下の記述は、ほぼ、Musicians' Guide の章立てにならいますが、文脈が飛び、前提や記述の詳細度がゆらぐのは、こういう理由です。
番外、と書かれた項や、付録の jack-kyeoard, portmidi などの項は、Musicians' Guide に対応するものはありません。私がやって、面白かったので/覚えておきたいので、記述します。

トラブルシュート

1 現象: Qjackctl で、エラーメッセージが出て、 jack サーバーが上がらない。
Could not connect to JACK server as client.
解析:コマンドラインから、デバッグオプションつきで、 jackd を上げる。他のオプションは、~/.jackdrc にあるのを使う。
$ /usr/bin/jackd -v -dalsa -dhw:0 -r48000 -p1024 -n2
jackdmp 1.9.6
。。。
creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
Using ALSA driver ICH4 running on card 0 - Intel 82801DB-ICH4 with AD1981B at irq 11
the playback device "hw:0" is already in use. Please stop the application using it and run JACK again

つまり、他のアプリケーションが、デバイス hw:0 を使用中。
対策: TiMidity++ を上げていました。演奏してなくても、だめらしい。 

2 現象:Audacity で、マイクロフォンをつないで、録音して、 mp3 形式で保存して、
$ madplay hoge.mp3 
audio: /dev/dsp: そのようなファイルやディレクトリはありません
対策:# modprobe snd-pcm-os
出典:http://old.ikoinoba.net/wiki/?Linux/Fedora/11/memo1#vc0d44f4 今は ALSA だけど、昔の、OSS のデバイスファイルを期待するアプリが多いわけね。

3 現象:音が出ない
最初、 Qtractor と Qsynth をつないで、MIDIファイルをならそうとしたが、音が出なかった。今となっては詳細は不明だが、 Qjackctl で、MIDI のタブを見て,何もないから何もしなかったのが悪かったのかもしれない。 ALSA のタブで、2つをつないだら、音が出た。

一般論として、
スピーカは電気的につながっているか。パソコンのミュートボタン、ボリュームの設定を確かめる。アプリケーション、サウンドサーバ、ALSAで、ハードウエアをとりあってないか。プログラムの出力デバイスの設定を確認する。jack を使っているなら、 Connect ボタンで、オーディオ、MIDI、ALSAのタブで、意図した接続がされているか見る。
できるだけ簡単なかたちで、音が出るはずのことをしてみる。jack, サウンドサーバは止める。直接ALSAに出す。
$ /usr/bin/speaker-test
$ aplay /usr/share/sounds/alsa/Noise.wav
Audacity の、5.2.5. Post-Installation Test: Playback にしたがってもよい。

https://wiki.ubuntulinux.jp/UbuntuTips/Hardware/SoundTroubleshooting ウブンツの Wiki のこの記事も参照。

用語

ALSA: Linux カーネルのサウンドデバイスドライバのフレームワーク。/dev/snd, /proc/asound などを使って操作する。これらを使う snd_pcm_writei などのAPIを提供するライブラリ /lib/libasound がある。例は、http://ameblo.jp/fadis/entry-10401645869.html
MIDI用語:
MIDIプログラム、パッチ:楽器の音色を決める。
チャネル:パート
ベロシティ:音の大きさ
音楽英語:
movement: 楽章。 section: 楽節。measure:楽譜の小節。 note:音符。 mode: 旋法。 register: 音域。scale: 長調、短調の音階。
参照:http://www.geocities.jp/shonan_strings/dictionary.html - 音楽用語英和辞典 湘南弦楽合奏団

以下、しばらく、Musicians' Guide にそって。

2.2. Sound Servers

で、 PulseAudio をインストールするようにすすめられているが、このガイドで紹介されているプログラムのほとんどは、 jack を前提としていて、そちらのサウンドサーバですむらしい。
Pulseaudio サウンドサーバを、インストールしたが、Qtractor で音が出なくて.いろいろやっているときにアンインストールした。

2.3.1. Installing and Configuring JACK

で、 jackuser, pulse-rt グループに、 jack を使うユーザを入れるように、と書いてあるが、やらなくても、今のところ、困ったことは起きていない。pulse-rt グループというのはなかった。

こういうエラーも出るが、だめでもそれなりに動くようです。
Cannot create thread 1 Operation not permitted
Cannot lock down memory area (Cannot allocate memory)
Cannot use real-time scheduling (RR/20)(1: Operation not permitted)
Jack: Create non RT thread

jack と、リアルタイムについて:
Fedora の普通のカーネルでよいです。リアルタイムカーネルは不要です。root ユーザでなくても、リアルタイムスケジュールは得られるそうです。インストール時に、 jackuser というグループが作られ、 /etc/security/limits.d/99-jack.conf により、リアルタイムスケジューリングと、メモリロックの特権が与えられています.http://jackaudio.org/linux_rt_config を参照。

デフォルトサウンドカードを変更する話は、サウンドサーバを使わないでALSAを直接使う話とこんがらがっているようです。

4. Planet CCRMA at Home

は、スタンフォード大学のプロジェクトで、数多くの音楽ソフトウエアを提供している。私は一度、リポジトリを追加したが、後から削除した。同じものが Fedora 本家にあるなら、それを使う方がトラブルがない。
RPM Fusion のリポジトリは今でも使っている。設定の仕方は、以下を参照。http://rpmfusion.org/Configuration/ 要するに、http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm をもってきて、 rpm でインストールする。システム>管理>ソフトウエアリポジトリに、表示されれば、よし。

5. Audacity


5.2.5. Post-Installation Test: Playback, Recording
5.6. Creating a New Login Sound (Tutorial)
を、やった。あれはマーラーの交響曲だな。実は、違うファイルだったんだって。ログインサウンドにしては変だと思った。

7. Ardour

録音、ミキシング、マスタリングができる。チュートリアルをやろうとしたが、例によって、ファイルのリンクが切れていてダウンロードできない。追記。http://soundcloud.com/fedoraproject/sets/fmg-ardour-tutorial/ に公開されました。

8. Qtractor

1 Qjackctl の Connect>ALSA タブで、Qtractor 0:Master と、FLUID Sync 0:Synth input port を Connect する。
2 Track>Import Tracks>MIDI で下記 12 LilyPond の項で生成したバッハのインベンション1、BWV772 bach-invention-01.midi をインポートして、再生ボタンを押したら、音が出た。

Track Properties > MIDI/Intrument Channel に、 No instrument と表示されているけど、ピアノの音が出ているのはなぜ?

Qtractor - Qsynth がMIDIコネクションのタブでつながらない
1 Qsynth の Setup>MIDI driver を、 jack にする。
2 Qjackctl の Connect 画面で、Writable Clients に、 qsynth port が出る。期待値。
3 Qtractor の Connection 画面の MIDI タブで、 Readable Clients に、自分、 Qtractor が出る。これもよし。
4 お互いの画面に、相手のMIDIポートがあらわれないので、接続できず、音も鳴らない。 
バグでないの?

8.3.3. Using JACK with Qtractor
に、Qtractor's "MIDI" tab displays the devices on QjackCtl's "ALSA" tab. とありました。なんだそりゃ。

10.4.4. MIDI Input Configuration
に、 Qsynth Setup>MIDI Driver を、 Rosegarden などを使うときは、 jack に、MIDI キーボードを直接つなぐときは、 alsa_seq にするように、ありますが、この記述は間違いで、 rosegarden, qtractor のときも alsa_seq にするべきなのでしょうか。それが、 Qtractor の章で一言も述べられてないのはまずいでしょう。

こんな理由で、 Qtractor はあまり使ってません。

8.4. Creating a MIDI Composition (Tutorial)
ベートーヴェンのピアノソナタに、MIDIで作ったランダムな伴奏を重ねて、現代音楽風にするというもの。著者の作曲した曲がダウンロードできなくて聴けないこともあってあまり面白くなかった。オーディオトラックそのものをいじれる訳ではないですし。
2011/07 追記。http://soundcloud.com/fedoraproject/fmg-qtractor-export に、公開されました。

のだけど、選択した音符をランダムにする、つまり、音程や長さ、開始時刻をランダムにずらす、という機能があって、驚きました。Rosegarden にはありませんでした。MIDIの既存の曲をインポートして、まるごとランダムにすると笑えます。こんなのを使う音楽ジャンルは限られますな。

9. Rosegarden

番外。バッハのインベンションを聞く、編集する。

1 9.2.1. Setup JACK and Qsynth にしたがって、Qjackctl を上げ、Qsynth を上げ、 Setup から、 MIDI Driver を alsa_seq に変更。Rosegargen を上げ、 Qjackctl の、 Connect ウインドウの ALSA タブで、FLUID Synth の input port を右クリックして、 rosegarden の3つのポートと、Connect する。
これ、毎回やらないといけないみたい。 Patchbay で ALSA の入出力ポートを add して、 connect しようとしたが、うまく線が引かれなかった。 Connect ウインドウでは、入力と出力のポートを選択すると、両方がハイライトされて Connect で線が引かれるのだが、 Patchbay の画面では、ポートがハイライトされない。色が変わらない。バグ?

2 rosegarden の、ファイル、メニューから、 MIDI ファイルをインポート、で、下記 12 LilyPond の項で生成したバッハのインベンション1、BWV772 bach-invention-01.midi を開く。

3 Play の右むき矢印ボタンで、音が出ました。

4 演奏中は、 Qsynth の、左下の QSynth1 というボタンが緑色に点滅します。 しないときは、接続がおかしい。
その他の設定:Qsynth, Setup, Audio タブの Audio driver は、 jack

マトリクスエディタと譜面エディタを開く

2つめのトラック、 one と書いてあるのを選択して、左上のボタンで、MIDI のマトリクスエディタと、譜面エディタが開ける。

なお、3つめのトラック、 two の、水色のボタンは、ツールチップが示す通り、ミュート、無音なので、選択して、one の編集中は最初のパートだけ、聞けるようにしましょう。

マトリクスエディタの左端には、鍵盤があって、押せば、音も出る。黄色い四角をマウスで持って、音程を変えることができる。右クリックすると、音符の長さを変えたり消したりするメニューも出る。
譜面エディタの方も、音符をマウスで持って動かしたり、増減したりできる。
適当に、編集して、演奏してみましょう.

イベントリストエディタを開くと、もっと細かいMIDIメッセージレベルでの操作ができます。3行目のノートイベント、ピッチ60、ベロシティ90というのが、最初のドの音です。ノートオンメッセージについては、http://www.pluto.dti.ne.jp/~daiki/Midi/AboutMidi_Note.html を参照。



9.4. Write a Song in Rosegarden (Tutorial)

以下、しばらく、忠実にチュートリアルをやった経過です。

これが、楽譜エディタからベースをいれたところ。

 c はドだから、ヘ音記号だとどこに置いて,と考えたのだが、ツール>音符の挿入 という便利なメニューがありました。

9.4.2. Add a Percussion Track

にある、"Instrument Parameters" portion of the toolbox というのが、わからず。そのままだと、パーカッションマトリクスエディタを開いても、鍵盤が出るだけ。後記:表示>特別パラメータの表示の、インストルメントパラメータ、のところの、パーカッションというチェックボックスのことらしいです。
トラックを右クリックして、標準MIDIデバイスのメニューから、#10を選ぶと、パーカッションマトリクスエディタで、期待した表示になった。音の高さのかわりに、ドラムだったりシンバルだったりを切り替えられるわけね。
左端の、 Bass Drum 1 などと書いてある所をクリックすると、音が鳴る。確かめながら譜面に置いていけばいいわけ。


また、次の節の、Adjust > Notes > Eighth Note (Without Duration Change) というメニューもそれらしいのがない。
後記。調整>音符>8分音符(デュレーション変更なし)でした。音符エディタで、音符を選択しているときに有効です。

9.4.4. Add a Melody

"Special Parameters" toolbox というのがわからないが、表示>特別パラメータの表示、というのがそれらしい。インストルメントのところから、楽器が変えられる。同期して、 Qsynth の Channels のところも変更されている。なるほど。


はじめてのMIDI打ち込み、も無事に終わりました。

番外。How-to

同じ曲を繰り返し再生するには。セグメント>リピートをトグル。?あれ、違うみたい。
パーカッションマトリクスエディタで、8分音符を入れるには。 表示>グリッド。
移調できる。セグメント>音程を指定して移調。トラックを追加して、セグメントをコピーして、移調すれば、和音。
輪唱できる。トラックを追加して、セグメントをコピーした後、セグメント>右にずらす。
パートごとの音量を変えるには。 スタジオ>MIDIミキサ
速度を変えるには。 コンポジション>テンポ/拍子エディタを開く。
音を消して、演奏を止めるには。 パニック。! 感嘆符のボタン。

10. FluidSynth

rosegarden の9.0 の続きで、 midi ファイルを開いた状態で、左下の Channes ボタンを押す。Chan 2 を右クリック、 Edit して、 prog 6 のハープシコードにする。同じく、チャネル3を、19 教会オルガンにする。演奏する。
なるほどシンセサイザーだね。
preview にチェックを入れると、演奏中に、他の楽器に変更することができる。
ボリュームを上げるには? 左端の Master gain というつまみをマウスで回す。

10.5. Assigning Programs to Channels with Qsynth
楽器を変えるには、Rosegarden などから、プログラムチェンジメッセージを送る方がよい。ここで設定してもいいけど。と、書いてある。
10.6. Using Reverb and Chorus with Qsynth
部屋の反響と、多人数によるコーラスのような効果を与えることができる。つまみをまわして、しばらくしてから効果があらわれる。うーん、あまり、興味ない。

結局、この Qsynth の画面は、ほとんど、いじる必要はないようです。少なくとも私にとって。

富田勲さんのように、波形を見ながらゼロから音を作らないといけないかと思っていましたが、ひょうしぬけしました。

プリセットされた128の楽器の音のもとになるのが、サウンドフォントで、有償、無償のものが流通しているそうです。

10.3. Using FluidSynth in a Terminal

長いので、ふろくに。

11. SuperCollider

11.4. Composing with SuperCollider をぱらぱら見て,あまりのめんどうさに挫折しました。
まんなかのドの音を3秒、鳴らす、という簡単なAPIはないのかね。付録 3が、私の求めるものだった。

12. LilyPond, 13. Frescobaldi 

1 Musicians' Guide でも紹介されている、Mutopia Project で、バッハのインベンション1、BWV772 の、lilypond 形式の楽譜を得る。http://www.mutopiaproject.org/ftp/BachJS/BWV772/bach-invention-01/bach-invention-01.ly

2 Frescobaldi 楽譜エディタで開く。

左画面のテキストが、 lilypond 形式の楽譜。右上の、 LilyPond というボタンを押すと、 lilypond が呼ばれて、 midi ファイルと、pdf の楽譜ファイルを出力する。右画面が、 pdf ファイルを見ているところ。

3 midi ファイルを簡単に演奏するには、Timidity で、生成された bach-invention-01.midi を開く。

4 LilyPond 形式の楽譜を手で書くのはたまらんなあ。と思ったら、こういうものもあるそうです。
使ったら、ご紹介します。

5 楽譜によっては、 Lilypond 形式のバージョンが古すぎるので、convert-ly を使えと言われたり、シンタクスエラーが出たりする。

http://lilypond.web.fc2.com/ で、学習マニュアル、記譜法リファレンスを含む、多くの文書の日本語訳が得られます。ありがたいことです。

14. GNU Solfege

ソルフェージュです。演奏される和音を当てたり、メロディ、リズムを書き取ったりする訓練です。リズム、の easy というのなら、私にも出来ました。ランダムに表示される12音を歌う、という人間わざとは思えない課題もあります。音楽大学の学生さんは大変ですな。

JACK, FluidSynth はいりません。単独で上げてください。音が出ないときは、ファイル、設定メニューから、External Programs のタブを開いて、MIDI, OGGあたりの Test ボタンを押して確認ください。

付録 Ⅰ Jack keyboard

コンピュータのキーボードで音を鳴らせると、もっと、シンセサイザーみたいだな。ということで、ソフトウエアの追加/削除 から、Virtual Keyboard for JACK MIDI jack-keyboard-2.5-5.fc13.i686 を入れました。
最初、音が出なかったのですが、 Qsynth Setup>MIDI Driver を、 alsa_seq から jack に変えて、 Qjackctl MIDIのタブで、jack-keyboard, qsynth をつないだら、OKでした。

Zが、ドです。Program を変えると、楽器が変わります。和音も出る。詳しくは、http://jack-keyboard.sourceforge.net/
この出力を、 Audacity に入れて、MIDIとして録音しようとしたのだが、だめでした。それらしい、Audacity の入力デバイス選択の設定画面もあったのだが。

付録 2 コマンドラインで fluidsynth

jack などは止めておいて、MIDIファイルを直接演奏することもできます。

$ fluidsynth -a alsa --disable-lash /usr/share/soundfonts/FluidR3M.sf2 /home/kanda/Music/bach-invention-01.midi
FluidSynth version 1.1.3
Copyright (C) 2000-2010 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.

fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible.
fluidsynth: warning: Requested a period size of 64, got 940 instead
fluidsynth: warning: Requested 16 periods, got 8 instead
Type 'help' for help topics.

> help all

help                       Show help topics ('help TOPIC' for more info)
quit                       Quit the synthesizer
noteon chan key vel        Send noteon
noteoff chan key           Send noteoff
pitch_bend chan offset           Bend pitch
pitch_bend chan range           Set bend pitch range
cc chan ctrl value         Send control-change message
prog chan num              Send program-change message
select chan sfont bank prog  Combination of bank-select and program-change
load file [reset] [bankofs] Load SoundFont (reset=0|1, def 1; bankofs=n, def 0)
unload id [reset]          Unload SoundFont by ID (reset=0|1, default 1)
reload id                  Reload the SoundFont with the specified ID
fonts                      Display the list of loaded SoundFonts
inst font                  Print out the available instruments for the font
channels [-verbose]        Print out preset of all channels
interp num                 Choose interpolation method for all channels
interpc chan num           Choose interpolation method for one channel
rev_preset num             Load preset num into the reverb unit
rev_setroomsize num        Change reverb room size
rev_setdamp num            Change reverb damping
rev_setwidth num           Change reverb width
rev_setlevel num           Change reverb level
reverb [0|1|on|off]        Turn the reverb on or off
cho_set_nr n               Use n delay lines (default 3)
cho_set_level num          Set output level of each chorus line to num
cho_set_speed num          Set mod speed of chorus to num (Hz)
cho_set_depth num          Set chorus modulation depth to num (ms)
chorus [0|1|on|off]        Turn the chorus on or off
gain value                 Set the master gain (0 < gain < 5)
voice_count                Get number of active synthesis voices
tuning name bank prog      Create a tuning with name, bank number, 
                           and program number (0 <= bank,prog <= 127)
tune bank prog key pitch   Tune a key
settuning chan bank prog   Set the tuning for a MIDI channel
resettuning chan           Restore the default tuning of a MIDI channel
tunings                    Print the list of available tunings
dumptuning bank prog       Print the pitch details of the tuning
reset                      System reset (all notes off, reset controllers)
set name value             Set the value of a controller or settings
get name                   Get the value of a controller or settings
info name                  Get information about a controller or settings
settings                   Print out all settings
echo arg                   Print arg
ladspa_clear               Resets LADSPA effect unit to bypass state
ladspa_add lib plugin n1 <- p1 n2 -> p2 ... Loads and connects LADSPA plugin
ladspa_start               Starts LADSPA effect unit
ladspa_declnode node value Declares control node `node' with value `value'
ladspa_setnode node value  Assigns `value' to `node'
router_clear               Clears all routing rules from the midi router
router_default             Resets the midi router to default state
router_begin [note|cc|prog|pbend|cpress|kpress]: Starts a new routing rule
router_chan min max mul add      filters and maps midi channels on current rule
router_par1 min max mul add      filters and maps parameter 1 (key/ctrl nr)
router_par2 min max mul add      filters and maps parameter 2 (vel/cc val)
router_end                 closes and commits the current routing rule
 
シェルコマンド
> fonts
ID  Name
 1  /usr/share/soundfonts/FluidR3_GM.sf2
> inst 1
000-000 Yamaha Grand Piano
000-001 Bright Yamaha Grand
長いので略。この一覧は、MIDI規格で決まっていて、プログラムゼロは必ずピアノなんだそうです。
000-127 Gun Shot
008-004 Detuned EP 1
他のバンクにも、楽器が入っているんだ。パーカッションの音なのかな。
008-118 808 Tom
009-125 Burst Noise
016-025 Mandolin
128-000 Standard
128-048 Orchestra Kit

プログラムチェンジメッセージ。チャネル1を、ハープシコード、2をSynth Strings 2 にする。その通り、音が変わる。
> prog 1 6
> prog 2 51

以下は、 Qjackctl を動かしておいて、 fluidsynth のオーディオ出力を jack にして、jack-keyboard のMIDI出力を鳴らしているところ。MIDIイベントのダンプもしている。
Z キーを押して、ドの音を鳴らしたときのイベントは、これ。

$ fluidsynth -a jack --dump  --disable-lash --sample-rate 48000 --midi-driver=jack  /usr/share/soundfonts/FluidR3_GM.sf2 
event_pre_noteon 0 50 64
event_post_noteon 0 50 64

http://www.pluto.dti.ne.jp/~daiki/Midi/AboutMidi_Note.html によると、ノートオン メッセージは、チャネル、音階、強さ、だそうです。


と、いうことは、ノートオンMIDIメッセージを、 fluidsynth シェルから出せば、単独で音が鳴る。
]$  fluidsynth -a jack  --disable-lash --sample-rate 48000 --no-midi-in  /usr/share/soundfonts/FluidR3_GM.sf2
> noteon 0 48 100
ドの音が鳴った。
> prog 0 51
シンセストリングに変えて、
> noteon 0 48 100
この楽器は減衰しないので、止めないと鳴り続ける。
> noteoff 0 48 100

付録 3 Python から MIDI メッセージを出して、自動作曲と演奏

portmidi, python-portmidi をインストールする。
$  fluidsynth -a jack --dump  --disable-lash --midi-driver=alsa_seq  /usr/share/soundfonts/FluidR3_GM.sf2 で、上げて、
pmdefaults を上げて、output を Synth input ALSA にして、test ボタンを押したら、音が出た。Qjackctl のMIDIのタブには、pmdefaults はあらわれなかったけど、そういうものらしい。


しかし、Update Preferences を押しても、デフォルト出力先の設定がセーブされず、 pmdefaults をもういちど上げると、忘れている。
http://sourceforge.net/apps/trac/portmedia/wiki/PmDefaults に書かれていることと違う。
$HOME/.java/.userPrefs/PortMidi/prefs.xml というファイルを期待しているらしいが、まあ、いい。バグでしょう。デフォルトにたよらず、あらわにMIDIデバイスを指定すればいいだけのこと。

/usr/share/doc/python-portmidi-200/test.py を実行したら、音もMIDIメッセージのダンプも出たので、よしとする。
$ python test.py
enter your choice...
1: test input
2: test output
    
2
Type latency: 1000

0 Midi Through Port-0   (output)  (unopened)
2 qjackctl   (output)  (unopened)
3 Synth input port (6649:0)   (output)  (unopened)

Type output number: 3
Midi Output opened with  1000  latency
ready to send program 1 change... (type RETURN):
ready to note-on... (type RETURN):
これで、音が出て、MIDIメッセージも表示されました。

要するに、
MidiOut = pypm.Output(デバイス番号、今は3, latency) して
MidiOut.Write([[[0x90,60,100],pypm.Time()]]) で、ノートオンを送る。
WriteShort(0x90,60,100) とも書ける。

付録4 Hydrogen ドラムマシーン



単独で鳴ります。英語のチュートリアルがついているようなので、やってみねば。

付録5
CーFーG7とコードを鳴らしてくれるソフト、ないでしょうか。

他のリンク

https://wiki.ubuntulinux.jp/UbuntuStudioTips ウブンツスタジオの Wiki です。音楽ソフトウエアの日本語の情報があります。
http://wiki.python.org/moin/PythonInMusic python 言語の音楽関係のライブラリ

雑談

によると、このミュージシャンガイドは、学生さんの夏休みの宿題として1人で執筆されたものだそうです。ご苦労さまです。

2010年の冬休み kanda.motohiro@gmail.com
以上
Comments