Midi2Lsc

Here is English page


はじめに

このページは新リリースのためのページです。以前の版はこちらにあります。エラーを見つけたらレポートを下さる様お願いします。">私にメールを下さっても結構ですが、MindStorms情報局の「やってみよう 掲示板」に投稿して頂けると助かります。

2002年2月9日に月島でJinさん来日歓迎会が開かれその際に発表に使った資料をここにおいておきます。


Introduction

midi2lscは、SMF (Standard MIDI File)を読みこみ、RIS2プログラミング環境であつかえる演奏プログラムを生成するソフトです。このソフトを使うと、手軽にMindStormsのRCXで音楽を演奏できます。

RCXで音楽を演奏させたいと思い、MidiをNQCに変換するソフトMidiStormsを作りました。1999年春の事です。目的の主な部分をこれで達成しましたが、まだ色々不満もあります。RCXの音楽再生機能の不足によるものも多く、あきらめざるを得ませんが、それを除く最大のものは、「標準ソフトに組みこめない」事でした。

RIS1.0/1.5に付属するプログラミング環境のうち、RCXの内部コードは詳しく解析され、NQCやlegOSのような優れたフリーソフトが開発され、MidiStormsもNQCへのインターフェースとして作りましたが、標準プログラミング環境の内部は、ライセンス上の問題もあり、一切公開されず、解析もされてません。このため、RISにMidiStormsをインターフェースすることはできませんでした。

2000年12月LEGO MINDSTORMS Robotics Invention System version 2.0 (RIS2.0)が発売されましたが、この標準プログラミング環境の出力コードは、RCX2.0SDKとしてレゴ社から正式に公開された、LEGO P-brick Script Code Language (LSC)そのものです。

つまり、この公開ドキュメントにしたがってインターフェースすれば、自作ソフトが作ったコードを、標準環境に組みこめるし、また標準ソフトの出力を利用する事ができます。

早速MidiStormsを改造し、MidiをLSCに変換する様にしました。

さて、こうしてリリースしたものの昔リリースしたMidiStormsの方が、未だたくさんダウンロードされる事態は、作者の予想を越えていました。また、ご親切にMidiStormsをSMF format 1に対応にするパッチをkaduさんが2001/03/27に送ってくださいました。

Midi2lscの伸び悩みについて、自分なりにマーケティングリサーチしたところ(^o^)

などが思い浮かびました。

そこで、今回かなり大幅な改良を加えMidi2lsc V2とすることにしました。主な改良点は、

MidiStormsを完全に上回るスペックを打ち出してみました(^o^)

RCXは単音しか出ないので、はじめから自分でMidi fileを作るか、どなたかが作ってくださったものを利用させていただく場合でも、大抵編曲する必要があり、このツールを使うにはMidi editorは実は必須Itemなのですが、SMF format 0を出力できないものもあります。でもこれで晴れて、全format対応ですから、cherryのような優れたフリーソフトも使えるし、オルゴール用に編曲したものは、そのままでも結構行けると思います。

ただし、私はCakewalk 7 Home Studioの出力だけでSMF0/1を変換できるか確認試験しています。その他、動作確認/非動作確認したMidi Editorとその時の出力オプションは大変興味がありますので、レポートお待ちしてます。


使い方

現在このソフトはαテスト公開です。

Windows95/98用にVC++6.0でBiuldしました。ヘルプファイルや、詳細なドキュメントはまだ用意されてません。

ファイルをダウンロードし、そのまま使ってください。Installerは用意してありません。

変換できるMIDI Fileは、SMFです。

  1. ショートカットにMIDI FILEを「ドラッグ&ドロップする」
  2. 起動後ダイアログにMIDI FILEを「ドラッグ&ドロップする」
  3. 入力ファイルのBOXに、フルパスで指定するか、「コピー&ペーストする」
  4. 参照ボタンを押してファイルを開く

などで、入力ファイルを指定し、オプションを設定してから、「変換」を押すと、RIS 2.0のLSC Fileを作成する場所を聞いてきます。

オプションのうち、Track#は変換すべきトラック番号です。format 0では0以外にしては行けません。

format1,2では、変換すべきトラック番号を指定してください。

「Midi channel」は読んだまんまです(^^;

LSC/NQCの選択も説明の必要はないでしょう。

「Gap」は、MIDI FILEに記述された長さより、ここに指定した時間だけ音を短くし、休符を挿入します。一般の楽器は、1つの音に強弱の変化があり、ぴったり間隔なく複数回鳴らしても、何回なったかわかりますが、RCXは強弱に全く変化がない矩形波ですので、前の音と隙間がないと、一つの長い音になってしまい、メロディが違ってしまいます。これを防ぐために、この機能があります。0を指定すれば、MIDI Fileの指定通りの長さになります。

正しく変換できると、生成したプログラムの大きさをダイアログで知らせます。

こうして出来たRIS2.0の標準ソフトで読みこむと、もとのMidi fileを演奏するプログラムをダウンロードできます。MUSIC1と言う名前を変更する操作をすると、マイブロックとして登録されるので、それ以降、別のプログラムを作っている時にも、利用できるようになります。

RIS2.0 Install時の標準設定では、159ブロックがRIS2.0でひとつのリストに並べられる限界なので、これを越える大きさでは、変換終了のダイアログに、ワーニングが出ます。ワーニングが出ても、読みこみや、ダウンロードは出来ますが、「マイブロック」を移動したり、名前を変更したりなどの操作は出来ず、また、読み込みに30秒以上かかり応答が遅くなることがあります。

あまり長いと最悪、

C:\Program Files\LEGO MINDSTORMS\Robotics Invention System 2.0\users\<user name>\Vault\MBFile.ini

を手で修正しないと復帰できない恐れがあります。

このファイルはあらかじめ、別の場所にコピーしバックアップとして保管し、万一、何か起きたらもとのファイルに上書きしてください。

また、RISにDownload出来るプログラムの大きさは、標準設定では、合計1000ブロックです。設定を変え、1500ブロックを超えるプログラムを送ると、エラーになることもありますが、正常に送られた様に見えて正しく動作しないこともあります。これはRIS2.0のknown bugで、READ MEにも記載されてます。

その他、MidiStormsのドキュメントが参考になると思います。

NQCモードでの変換仕様は、MidiStormsとは、異なります。MidiStormsでは文中に#midi "file", opt,... と記述しましたが、Midi2lscは完全に独立したサブルーチンを生成します。subの名前はdefaultでは、入力ファイルからサフィックスを抜いたもの、file nameはdefaultでは、入力ファイル名に、".nqc"を付けたものとなるので、不都合があればダイアログで指定してください。

そして、メインプログラムから#include ""でこのサブルーチンを読み、使用すれば良いわけです。


謝辞

Windows版プログラムの作成にあたり、MindStorms情報局のJinSatoさんに、多大なご助言をいただきました。感謝いたします。MidiStormsを利用して、さまざまな作品を作られた方々に感謝します。MidiStormsを改良するモチベーションを維持しているのは、皆さんのご声援のおかげです。SMF1の対応パッチを下さったkaduさんありがとうございます。対応が遅くなってしまい申し訳ありませんでした。


Download

ファイルをここからDownloadしてください。Installerなしの生ファイルですので、そのまま適当な場所において実行してください。VC++のソースを必要とされる方は、利用目的を添えて、">メールでご連絡ください。

また、LEGO MindStormsの普及のためにも、Vector.co.jpにもMirrorしてもらいました。

MIDI fileの入手に困る事はないと思いますが、一応SMF0, SMF1そしてそれを変換したLSC, NQCのサンプルを置いておきます。

以前公開していたMS-DOS版の、ソースを含む一式は、ここに置きます。


変更来歴

MidiStormsの来歴を含む

99/06/05 0.8 第一回もんじゃストーム(東京offat 月島)で、限定リリース
99/06/15 1.14 MindStorms の洞窟(http://www.line.to/mac/MindStorms)で、公開開始
99/06/28 1.16 Marker イベント対応。Sleep()の最適化
2000/08/10 1.17 NQC 2.x に対応し、PlayTone()を使用
2000/08/11 1.18 ...と思ったらbug入り出だしなおし(Thanks レゴおやじさん)
    これ以降Midi2lsc
2001/02/25 0.1 Midi2lscとして、RIS2.0標準ソフト対応に改造
2001/03/05 1.0 Windows 98 version βリリース
2001/07/28 2.0a NQC,SMF0/1/2対応
2001/07/29 2.01a bugfixed : macro name
2001/07/29 2.02a bugfixed : macro name (^^;
2001/07/30 2.03b bugfixed : 初期化時のコマンドライン処理
2001/07/30 2.04b font, tab stop
2001/07/31 2.1 とりあえず試験終了
2001/08/03 2.2 AfxMessageBoxのアイコンを整理。

MindStormsの洞窟へ戻る

(C)2001 ">

最終更新日:2002年10月12日

Google