2017年3月23日木曜日

MONTAGE 雑メモ 3 - MIDIチャンネルの扱い

とりあえずライブで使える設定を考えるべく、パフォーマンスに対して内部でMIDIチャンネルがどう扱われているのか調べてみた。

外部MIDI入力を使って動作確認

やはりというか、パートがそのままMIDIチャンネルに対応している模様。探した限りでは対応チャンネルを変える方法はなさそう……。残念、将来のバージョンアップに期待。ただ、外部入力使うケースに限って言えば、外部キーボード側でレイヤーして複数MIDIチャンネルに同時出力とかできるので。実は今までrackで使っていた方法もそのまま使えそう。両方持ち出すのは重いけど!

1台で済ませられないかなぁ、と敢えて球数の少なそうな76鍵モデルにしたんだけど……どうかな。結局2台だと残念な気もするけど、64鍵はピアノ系の演奏ですぐ足りなくなって苦労するからなぁ。

内部キーボードと音源との対応関係

実はディスプレイで Performance > Mixing とかを表示している時は、選択中のパートに対してのみ演奏データが飛ばせる。ただし各パートのキーボードコントロールをOFFにしておくのが条件。キーボードコントロールがONになっているパートを選ぶと、ONになっている全パートに演奏データがブロードキャストされる。この機能を使うと単体でMIDIチャンネルを切り替えながら演奏するのと等価な事ができるのだけど、キーボードコントロールのグループが1つしかないため、基本的にはレイヤー、スプリットを使った音色セット1つと複数の単音色を切り替える事しかできず、使いみちは限定的。キーボードコントロールがONのグループに対しては選択中パートのキーレンジとは関係なく全域に演奏データが配送され、レンジ判定は各パート個別に行われる。このあたりはJUNOとは違って正しい選択。キーボードコントロールが単純なON/OFFじゃなくて、グループが指定できるようになると凄く活用の幅が広がるんだけど。なんとかならないかなー。


結局パフォーマンスをライブセットに登録してSSSで切り替えがベスト?

って事になるのかなぁ。Twitterで言われて気づいたけど、切り替え時間が結構シビアで。ギリギリ許せるか許せないかってレベルなんですよね。演奏中に切り替えて戻って弾くと、まだ切り替わってない事がある。ってくらいには遅い。

まぁ、しばらくセッションとかで試行錯誤してスタイルを確立したいと思いまする。

MONTAGE 雑メモ 2 - rack es音色コンバート編

頻繁に買い替えてる人はメディアを介して直接データの書き出し・読み込みでコンバートできるみたいだけど、僕みたいにちょっと(かなり)古い機種からのコンバートはあまり自明でないので、まずはそのあたりのメモ。

公式資料


MONTAGEのページに「互換性」ってコーナーがあって、事例の多そうな変換パスについては説明されてる。変換可能なのは過去機種のボイス→パフォーマンスというパスだけで、過去機種のマルチパートやパフォーマンスからの変換はできない。このあたりは過去機種がボイスをベースに音色を積み上げてく方式だったので、資産流用という意味ではあまり問題にならなそう。まぁ、せいぜい曲ごとに音色配置を組み直す手間が必要なくらい。どの道、過去機種とは違う戦略が必要なので諦めるしかない部分かな。

MOTIF-RACK ESでの手順

  1. 吸い上げ:MOTIF-RACK ES Voice Editor + Studio Manager V2 Host を使って本体から音色をバルクダンプで読み出し、.w9e形式でファイルに保存
  2. 形式変換:MOTIF XF Editorから.w9e形式でインポートし、.x3e形式で再保存
  3. 読み込み:USBメモリ経由でMONTAGEに渡してライブラリとしてインポート

1. 吸い上げ

最近のmacOSではVoice Editorが動作しないため、大多数のmacOSユーザはここで諦めるかWindows環境を整備するしかなさそう。Windows版なら10でも問題なく動きました。あと、ファームウェア1.0.3を要求してるんだけど、Total Recallとか使わなければ古くても大丈夫、とかじゃないかなぁ。自分は1.0.0のままでやりました。1.0.3に上げようにもアップデート時にデータが全部消えるので、なんらかのバックアップが必要。バルクダンプで全保存でもいいんだけど、なんか不安でやる気になれず、駄目元で吸い出しました。特に問題起きてません。

2. 形式変換

MOTIF XF Editorでインポート。XFの方がユーザーバンクが1つ多いのでスロット余るけど気にしない。なんならプリセットのボイスデータをコピーしてきてコンバートすると良いかも。ちなみにMulti Editorのデータもインポートできるんだけど、最終的にMONTAGEに読ませてもSingle Performanceに変換されたボイスしか出てきません。

3. 読み込み

USBメモリに入れて、Utility > Contents > Library Import からファイルを選んであげるとユーザーバンク4つ分がまとめて1つのライブラリバンクとして登録される。この際、ファイル名がバンク名になるのでインポート前に適当な名前にしておくべし。

変換のクオリティー


正規に保証されてないパスのわりには、わりとまともに変換できてます。フィルターエンベロープをかけたエフェクト系の音色がたまに意図しない低周波で発振してたりしますが、もともとピーキーな作りだし、飛び道具なので。必要になったら微調整して流用すればいいかな。rack esは外部波形使えないので、その辺が理由で根本的に変換できずに困る、ということはありませんでした。

Waveformの波形が数世代違うので、まったく同じ音とはいきませんが。リファインされてより抜けの良い音色になってる気がします。タダで自作音色の品質が上がった!!(注:タダというには高い買い物です)

という事で自動変換した音色の中から抜粋で「青い月の下で」のイントロの音色はこんな感じ。演奏しながら直接USBメモリにwavで吐き出せた。今時の機材は便利。特に違和感なく聴けるかなー?

2017年3月22日水曜日

MONTAGE 雑メモ 1

motif rack esを音作りのメインに据えて、手元は軽くて便利なRolandのキーボード、みたいな構成で長年演ってきた人がMONTAGEに乗り換えた際に使いこなすために四苦八苦、という内容で思いついた時に書き綴っていこうかと。まずは届いた初日に試した事のメモ。

motif rack es時代の使い方

基本はマルチパート。なぜならパフォーマンスは音色切り替えで音が途切れるから。マルチパートでMIDIチャンネル毎に音色を作り込んでおいて、演奏時に外部キーボードのMIDI出力チャンネルを切り替えて使う。Rolandなら中央に並ぶボタンで切り替えられるので楽。レイヤーやスプリットはボタン1発では切り替えられない9-16チャンネルの受信チャンネルを1-8に重複して割り当てることで実現できる。シーケンスやサンプリングは外部キーボード(最近使ってたのだとJUNO-G)に任せてる。ライブ中のセットリストに合わせたマルチパート番号切替は、キーボード側のライブ設定を使って音色切り替えのシーケンスを呼び出して切り替えていた。


MONTAGEでどう変わるか

マルチパートやボイスの概念が無くなり、音色管理はパフォーマンスに一元化されたため根本的な見直しが必要。その代わりといってはなんだけど「SSS (Seamless Sound Switching)機能」ってのが追加されてて、パフォーマンス間の音色切り替えで(一定の条件を満たせば)音切れが発生しなくなっている。ちなみに条件は8パート以内で構成されていること。16パートに全音色を詰めていた事を考えると音作りの制約はだいぶ緩和された、とも言える。ちなみにキーオン中に2回音色切り替えが発生すると2つ前の音色で発音していたノートは強制キーオフされる。あと、おそらくだけどボイスの概念が消えたのはUI上の問題だけで、バックエンドの仕組みとしてはプログラムチェンジに対応する概念として残っている気がする。

マルチパート手法は再現可能?

ディスプレイ内で「Performance > Mixing 」を表示している間は、キーボードからの演奏は選択中のパートに限定されている気がする。また、キーオン中にパートを切り替えても発音は継続し、キーオフは正しく元のパートに対して送出される。これを利用すればパフォーマンス内に全部の音色を詰め込んでおいてMIDIチャンネルで演奏パートを切り替える事はできそう。レイヤーやスプリットが実現できるかは未調査。過去の資産のコンバートも含めて、他にもワークアラウンドがないか調査中。

音色の管理について

ボイスの概念がなくなった事で音色の管理は少し煩雑になった気がするが、慣れの問題かもしれない。今まではボイスを編集して、それをマルチパート(あるいはパフォーマンス)に積み上げていけばよかったので音色を資産として蓄積しやすかったんだけど。これからは全てパフォーマンスで管理する必要がある。ちなみに、新しいパフォーマンスに既存の音色を追加したい時には、新規パートとして既存パフォーマンスを追加する事ができる(たぶんマニュアルで説明されてない?)。この際にはPerformance Mergeという手順が発生しているようで、選んでいたパートをベースとして、選択したパフォーマンスが持っていた全パートが一括追加される。例えば選んだパフォーマンスがパート1-4を使っていたとして、編集中のパフォーマンスのパート3に追加しようとすると、パート3-6にパート1-4が複製される。音色選択フィルタでもSingleっていうフィルタを選ぶと1パートしか使っていないパフォーマンスだけが表示されるので、1パートだけでパフォーマンスを作っておけば、実質ボイス相当として扱えそう。この際Commonパラメータを使っていると再利用時に問題になりそうなので避けるべし。

音色の構成

motif時代はざっくり

- Voice = Element x 4 + Insertion Effect A/B
- MULTI / Performance = 補正付きVoice x 16(Ins. Effectは8つまで)+ Chorus + Reverb

って構成で作ったわけだけど、MONTAGEでは

- Voice = Element x 8 + Insertion Effect A/B
- Performance = 補正付きVoice x 16 + (Audio IN + Ins. FX) + Chorus + Reverb

となっていて、motif構成は内包している(過去の音色もインポートできるわけだし)。

Audio INはラインL/Rで入力できて、ON/OFF、音量調整が物理UIで操作できる。ライブハウスでシンセ2段積んでたら「ライン2chしか入らないんでモノx2で良いですか?」と言われた時にがっかりしなくて済むので嬉しい。

FM-Xを使ったパートではElementはオペレータに読み替えて下さい。なので8op FM音源。

FM-X

まだ本格的には触ってませんが。パラメータが0-99で指定だったり、レベル値が減衰指定じゃなかったり(0が無音で99が最大音量)と、若干慣れない感じ。キースケール相当の機能も全然違う実装になっていて、既存のデータをコンバートするには実験しつつツール作らないと辛いかな。最近発売されたreface DXとも違う体系なんですよね……。

物理インタフェース

スライダーいっぱい並んでると、ドロバーを模した操作のできるオルガンが入っていて欲しいわけですが、そういう音色はみたところなさ気。その気にさせる音色名なのに、中を見たら1パートとか。作ろうと思えば作れるのかな、収録されてるwave form見てみないと。(追記:僕の目が節穴でした。1パートだけど、中ではエレメント8つ使って各スライダーでレベル調節できるようなやつが普通にありました。)

方向キーが十字に並んでるのも、実は操作しずらいかな。中指が上下運動で疲れる。

あと、やっぱりダイアルより右にずらりと並ぶボタンは直感的じゃなくて、わかりにくいかなー。演奏中にリアルタイムに触りたくなるようなインタフェース以外はLCDの中で必要に応じて出てくれば十分だと思う。物理ボタンがずらりと並んでて手順や組み合わせで役割が変わったりすると、インタフェースの持つアフォーダンスが感じられなくなるし、ほとんどがLCDで1-2タッチで到達できる機能のショートカットなので。そのくせライブセット呼び出し・切り替えはLCDまでいかないとなんだよなー。本番の音色切り替えは結構忙しいのに。

まぁ、rackを使ってた時期が長いので。あれは少ないボタンで良く考えられてた気がする。年単位でブランクあったときでも操作は体で覚えてたし。あるいは慣れが解決するか。

あ、あと良かった点。左側のノブとかスライダーが、セット切り替え時に物理インタフェースの位置とは独立して、既定値の位置で点灯する。で、ノブやスライダーを規定値に移動するまではインタフェースには反応せず、既定値に一致したらインタフェースと連動して点灯位置と実際のパラメータが変化するようになる。ハイエンド・コンソールの可動式インタフェースには勝てないけど、これはわりと便利かつ安心。うっかり触って変なパラメータになった状態で気付かず上書き保存する心配から解放される。

2017年3月5日日曜日

SoundCortexについて

GitHubで公開している音源チッププロジェクトSoundCortexについて、Qiita等で公開されている情報のリンクを集めてみました。2017/03/05時点で投稿した内容とぐぐった結果のまとめになります。

公式

I2Cで制御できる80円のPSG互換チップで遊ぼう

PSG音源部について利用方法の説明とArduino、Rasberry Pi、PCからの具体的な利用例。

I2Cで制御できるSCC+互換チップ

SCC音源部について利用方法の説明、SCC+レジスタについての概要説明など。

80円PSGをWindowsから鳴らしてみる

Windowsから利用する具体的な方法を紹介。実際にlibkssにパッチを当ててKSSファイルをチップから再生する例を紹介しています。

ユーザによる記事

FreeBSD+mrubyでサウンドプログラミング

yamori813さんによる記事。FreeBSDと言っていますが、謎のボード上から鳴らしているようです。

LPC810とArduino UNOでSCC互換音源を鳴らす(1)

LPC810とArduino UNOでSCC互換音源を鳴らす(2)

ImpactDrillさんによるArduino UNOで利用する際の具体的な記事。Arduino用のライブラリも作成されているようですので、Arduinoから利用してみたいという方には助けになるかと思います。I2Cはプロトコルの性質上、エラーが起きたときにバスハングしやすいのが難点です。通信が不安定だという方は(2)で書かれているように電圧やコンデンサなど、回路的な面をチェックすると改善されるかもしれません。

PCNベトナムキックオフ、80円コンピューターで拡張するIchigoJam、レキシライブに市長登場

IchigoJamの福野 泰介さん、IchigoJamに繋げる実験をしたようです。オリジナルのSoundCortexはI2Cのデバッグで詰まった時にデバッガを使いたくてSWD経由で開発できるようポート配置を変更したのですが、福野さんはシリアルで開発しやすいようにポート配置を再変更したforkを公開されています。書き込み環境としてはシリアルを利用している人の方が多いと思いますので参考になるかと思います。本家でも配置をビルド時に指定できるようにした方が良いかも。
IchigoJamみたいな開発環境から使うのはターゲットとして一番面白いと思います。Arduinoではやや実用的な用途に届かないし、Rasberry Piだと自分でサウンド出力を持ってるので実はあまり嬉しくない。自作の電子工作に直接組み込めればそれが一番美味しいんですが、それはそれで敷居が高いですから。

チップの入手について

ImpactDrillさんが(1)の記事でも報告していますが、一部店舗でLPC810が大幅に値上げされています。卸しの段階でキャンペーン価格が終了した等の可能性があり、今後ほかの店舗でも在庫がなくなり次第値上げされる事も考えられます。現時点(2017/03/05)ではマルツパーツが75円を維持していてお勧めです。仮に安く入手できるお店がなくなってしまったら、別のチップでの対応を考えたいと思います。コアをアセンブリで書いているのでCortex M系で適当なのがあれば良いのですが。まぁ、大した規模でもないのでMIPSやAVRに移動するのも辞さない覚悟で。

2017年3月2日木曜日

マイコン・インフィニット☆ひなまつりPRO-68K 告知

悪友イモリに誘われてマイコン・インフィニット☆PRO-68Kイモリプロダクション名義で参加します。

・日時:2017/03/12(日)
・場所:秋葉原 UDX GALLERY 4F
●第一部 展示・即売会 13:00~16:00
¥1,000- (高校生以下無料)
●第二部 懇親会・講演 16:30~18:00
¥4,500- (事前予約制・締切りました)
※第一部から通しで入場できます。

だそうです。

展示はイモリと僕とで絶賛準備中なわけですが、ひとまず僕の方から出す予定の物を紹介したいと思います。

CP/Mega88 - AVRで動作するCP/M

だいぶ古いネタで恐縮ですが、2009年から2010年にかけて制作したATMEGA88上で動作するCP/Mエミュレータです。エレキジャック・フォーラムで発表させて頂き、それなりに好評だったようです。当時、FPGAによるレトロPCの再現が流行っていたわけですが、本業が論理設計だった私は、敢えてマイコン1つでCP/M互換機を再現するという暴挙に出ました。


スライドのセンスが7年間変わっていなくてショックです。

Applerm II - ARMで動作するApple II BASICでLチカ

同じコンセプトでApple IIをLPC1114ワンチップで実装したもの。こっちはもっと最近の制作です。本来Apple IIはシリアルコンソールで動作するようなものではないのですが、VRAMの動きをトレースしつつ、シリアル端末情報に変換しています。画面スクロールとかの検出が大変だった。Apple IIのI/OにLPC1114のGPIOをマップしてあげているので、BASICからのPOKE命令でLチカできます。



4KBしかRAMがない中で、本来それより大きなRAMを必要とするBASICを動かすには、結構な黒魔術が必要でした。



雑誌の付録になっていたMARY-MB基板を使った動画もあります。

MegaZ-80K - AVRで動作するMZ-80K

CP/Mを作った後に、次はビデオ出力込みで何か作れないかな、という事で制作。4個のAVRを使ったヘテロマルチコア構成。ビデオ出力はATMEGA328が担当。RAMの大部分をVRAMとして使いつつ、クロック数えながらビデオ信号を生成しています。Z80エミュレーションはATMEGA644上で行っており、必要に応じてVRAMへの書き込みをフォワードするわけですが、書き込み可能な期間がVSYNCの間だけに限られているため、ATMEGA328との間にバッファとしてATTINY2313を挟んでいます。このチップはサウンドエミュレーションも兼任しています。また、キーボード代わりのファミコンコントローラ制御に別途ATTINY2313を1つ使っています。これらのチップは共有バスを通じて通信します。USARTベースの独自仕様。

SoundCortex - 80円で再現したPSG+SCC音源

Qiitaで何回か記事を書いていますが、(当時)80円のLPC810というARMを使ったPSG+SCC音源モドキです。I2Cで制御できるのがポイント。

今回はRas Pi上で動作する魔改造MSXエミュレータを通しての演奏デモを予定しています。写真のようにSDスナッチャーのオープニングを流す予定。



YouTubeにはGRADIUS 2を演奏するデモもあります。

今回このファームウェアを焼いたLPC810を持ち込み、実費+α(というか、送料考えると赤字)の100円で配布しようかなぁ、と思っています。実際に遊んでくれるユーザーを増やしたいので。まぁ10個くらいですかね。

SION2HD - X68k用ゲームをHTML5でHD化


X68k用のシューティングゲーム、SION2を最新の技術を駆使してウェブ上で動くようにしてみました。しかもハイレゾ化やステレオ表示といった謎の拡張が施されています。



実際に遊んでもらう方が早いかも。bit.ly/sion2で遊べます。また、黒魔術の詳細については以下のスライドで説明しています。