おーぷんMIDIぷろじぇくと

ホーム | ニュース | フォーラム | 資料 | FAQ | リンク | 貢献者 | 作者

Japanese | English | Chinese


FAQ (一般ユーザー向け)

「WindowsによってPCが保護されました」というメッセージが出て起動できません。

最近のWindowsでは、Microsoft Difender SmartScreen機能により、インターネット上からダウンロードしたexeファイルは起動できないことがあります。このメッセージが出た場合は、「詳細情報」をクリックし、「実行する」をクリックすれば、起動することができます。なお、ダミーサイトで偽物をダウンロードしているかもしれませんので、細心の注意を払ってください。

また、zipファイルを右クリックし、「プロパティ」を選択し、「全般」-「セキュリティ:このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」の「許可する」をオンにしてからご使用ください。

オーディオへの対応予定はありますか。

いいえ。おーぷんMIDIぷろじぇくとはMIDI専門です。ソフトウェアやライブラリが重く複雑になるのを防ぐため、オーディオへの対応予定はございません。オーディオを編集する場合は、Audacityなどのオーディオ編集ソフトをご使用ください。また、MIDIとオーディオの両方を同時に編集したい場合は、CubaseやSonarなどのDAWをご使用ください。

VSTiへの対応予定はありますか。

いいえ。VSTiの仕様が公開されていない上に、入出力方式がMIDIとは違いすぎるので対応予定はございません。また、作者がハードウェアのシンセサイザーを好のんで演奏するので、対応する可能性は低いと言えます。VSTiを使いたい場合は、MIDIYokeやloopMIDIなどのループバックプログラムとVSTiHostプログラムを組み合わせてご利用ください。

LinuxやMac OS 10への対応予定はありますか。

いいえ。LinuxやMac OS 10への対応予定はございません。ただし、WINEを用いることに、一部の世界樹はLinux上やMac OS 10上で動くと報告されています。

ここにあるソフトウェアやライブラリを商用目的で利用してもよいですか。

はい、良いです。ただし、サポートは基本的にフォーラムまかせとなります。また、無保証であり、作者は一切の責任を負わないものとします。なお、プログラムを改変・再配布する場合は、ライセンスはLGPL又はGPL(世界樹はMPL2.0)とし、必ずソースコードと共に再配布しなければなりません。また、各種ライブラリにダイナミックリンクする(DLLのみ使う)自作プログラムを配布する場合は、ライセンスはLGPL又はGPLにする必要はありませんが、ライセンスに「リバースエンジニアリング禁止」の条項を盛り込むことはできません。

音質が悪い。

MIDIシーケンサーやプレイヤーは音を出していません。MIDIシーケンサーやプレイヤーは電子楽器に対して演奏情報を与えているだけです。おそらくは、あなたがMicrosoft GS Wavetable Synthなどの音質の悪いシンセを使っているからそうなるのでしょう。高音質にこだわるのであれば、ハードウェアのシンセサイザーを購入することをお勧めします。2013年現在、RolandのJUNO、YAMAHAのMOTIF、KORGのKROME等が出ています。ソフトウェアのシンセサイザー(VSTi)も高価なものは音質が良いですが、パソコンとソフトウェアを起動しないと音出しが出来ない上に、マシンスペックを相当に強化しないと同時に多くの音を鳴らせない難点があります。また、パソコンが壊れたりOSが変わったりしたときサポートされるのか不明です。

WindowsXPでは鳴っていたのに、WindowsVista / Windows7 / Windows8では一部鳴らないMIDIデータがある。

Windows内蔵のMicrosoft GS Wavetable synthを使っている場合、この問題はしばしば発生します。原因は、音色の指定(CC#0の値、CC#32の値、プログラムチェンジの値)が正しくないためです。そのため、世界樹を使って、GSの仕様で存在する音色の番号に修正する必要があります。WindowsXPでは、誤った番号の音色を指定しても代理の音色で鳴るようになっていたため、この問題点は偶然にも発生しませんでした。

一方、そのMIDIデータがMicrosoft GS Wavetable Synth用に作られたものでないのであれば(例えばRoland SC-88Pro用のMIDIデータであれば)、使用楽器が違うので一部の音が鳴らないのが普通であります。これをMicrosoft GS Wavetable Synthで聴けるようにするには、同様に、GSの仕様で存在する音色の番号に修正する必要があります。

Microsoft GS Wavetable SynthがMIDI出力デバイスリスト内にありません。

一部のパソコンでは、ヘッドフォンやスピーカーを接続しないとMicrosoft GS Wavetable Synthがリスト内に出現しないものがありますので、接続してからソフトウェアを起動してください。

パソコン購入当初からない場合、工場出荷時のレジストリの設定が誤っている恐れがあります。以下のように修正することで直せますが、既に他のMIDIデバイスをインストールしている場合、他のMIDIデバイスが使えなくなることがありますのでご注意ください。なお、レジストリの編集は大変危険ですので、自己責任でお願いします。

1. 32bitOSの場合、[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersin\Drivers32]に、64bitOSの場合、[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersin\Drivers32]に移動します。

2. 下記のように修正します。

設定で言語を変更して再起動しましたが、言語が変更されません。

c:\program files, c:\program files(x86), c:\windowsなどのフォルダ内に当該プログラムを置くと、Windowsのセキュリティ(UAC)の都合上、設定ファイル(*.iniファイル)に設定を保存することができません。上記以外のフォルダ内にプログラムを置いてください。また、設定ファイル(*.iniファイル)は、書き込み終わるのにアプリケーション終了後2秒程度かかります。約2秒経過してからアプリケーションを起動してください。

設定内容を保存できません。

c:\program files, c:\program files(x86), c:\windowsなどのフォルダ内に当該プログラムを置くと、Windowsのセキュリティ(UAC)の都合上、設定ファイル(*.iniファイル)に設定を保存することができません。上記以外のフォルダ内にプログラムを置いてください。また、設定ファイル(*.iniファイル)は、書き込み終わるのにアプリケーション終了後2秒程度かかります。約2秒経過してからアプリケーションを起動してください。

世界樹:フォーマット0/1の変換の仕方がわかりません。

「ファイル(F)」-「プロパティ(R)...」で、フォーマットを選択してOKを押してください。なお、世界樹のデフォルトのフォーマットは1となっています。

世界樹:タイムベースや分解能の変換の仕方がわかりません。

「ファイル(F)」-「プロパティ(R)...」で、タイムベースを選択してOKを押してください。TPQNベースは分解能1~960、SMPTEベースは分解能1~255が選択可能です。なお、世界樹のデフォルトのタイムベースは、TPQNベースで分解能120となっております。

世界樹:テンポ・拍子記号・調性記号の挿入・変更・削除の方法がわかりません。

方法はいくつかあります。なお、世界樹のデフォルトのテンポは120、拍子記号は4/4、調性記号は0#major(ハ長調)となっています。なお、拍子記号と調性記号の設定は、画面表示にのみに影響を与え、演奏内容には何ら影響を及ぼしません。

a) トラックリストウィンドウ又はピアノロールウィンドウ又は譜面ウィンドウの"■120.00 4/4 0#"と表示されているエリアを右クリックすると、ポップアップメニューが現れ、テンポ・拍子記号・調性記号を挿入・変更・削除することができます。

b) ピアノロールウィンドウの下部のグラフエリアで、最初のトラックにテンポのグラフを断続的に描画することができます。

c) イベントリストウィンドウで最初のトラックのみを表示状態にして、手動でひとつひとつテンポ・拍子記号・調性記号イベントを挿入・変更・削除することができます。シャープを指定するには'#'を、フラットを指定するには小文字の'B'を入力してください。長調を指定するには"major"を、短調を指定するには、"minor"を入力してください。

世界樹:ピアノ以外の音色を選びたいのですが。

トラックリストウィンドウの左ペインに、CC#0,CC#32,プログラムナンバーの項目がありますので、そこでピアノ以外の音色を選択してください。Windows付属のMicrosoft GS Wavetable Synthをご使用の場合、デフォルトでは、チャンネル10以外はCC#0=0, CC#32=0, プログラムナンバー=0-Piano 1が選択されており、チャンネル10(ドラム)においてはCC#0=0, CC#32=0, プログラムナンバー=0-Standardが選択されています。なお、MIDIにおける音色の配列は、ご使用の音源又はシンセサイザーにより異なりますのでご注意ください。誤った番号を指定した場合、音は鳴りません。また、正しい音色名を表示するには、ご使用の音源に合ったインストゥルメント定義ファイル(*.ins)を選択する必要があります。

▼トラックリストウィンドウ

トラック 出力 出力ポート 出力チャンネル 表示モード CC#0 CC#32 プログラムナンバー
2 on 1-Microsoft GS Wavetable Synth 1 通常 0 0 48-Strings1
11 on 1-Microsoft GS Wavetable Synth 10 ドラム 0 0 48-Orchestra
世界樹:音色の変更がうまくいきません。/曲の途中で音色を変えたいのですが。

イベントリストウィンドウで、手動でCC#0、CC#32、プログラムチェンジを挿入してください。これら3つのイベントは、この順序で正しく並べられなければなりません。トラックリストウィンドウからは最初の音色しか設定できません。しかし、同一トラック内で途中で音色を変更することは、トラック数制限など特別な事情がある場合を除き、あまりお勧めできません。なお、MIDIにおける音色の配列は、ご使用の音源又はシンセサイザーにより異なりますのでご注意ください。誤った番号を指定した場合、音は鳴りません。また、正しい音色名を表示するには、ご使用の音源に合ったインストゥルメント定義ファイル(*.ins)を選択する必要があります。

▼イベントリストウィンドウ(通常トラックの場合)

トラック 小節:拍:ティック イベントの種類 チャンネル 値1 値2 値3
2- 00001:02:000 コントロールチェンジ 1 0-Bank Select MSB 0 -
2- 00001:02:010 コントロールチェンジ 1 32-Bank Select LSB 0 -
2- 00001:02:020 プログラムチェンジ 1 48-Strings - -

▼イベントリストウィンドウ(ドラムトラックの場合)

トラック 小節:拍:ティック イベントの種類 チャンネル 値1 値2 値3
11- 00001:02:000 コントロールチェンジ 10 0-Bank Select MSB 0 -
11- 00001:02:010 コントロールチェンジ 10 32-Bank Select LSB 0 -
11- 00001:02:020 プログラムチェンジ 10 48-Orchestra - -
世界樹:GSの音色しか選べません。/表示されている音色名が正しくありません。

デフォルトではWindows付属のMicrosoft GS Wavetable Synthに設定されています。ご使用の音源のインストゥルメント定義ファイル(*.ins)をインターネット等から探してきて、それをinstrumentフォルダ内に入れ、「設定(S)」-「MIDIデバイスとインストゥルメント...」からご使用の音源を選択してください。インストゥルメント定義ファイルが見つからない場合は、音色番号を直接テンキーで入力するか、「設定(S)」-「オプション(O)...」で、「存在する音色のみ探索する」をオフにしてください。なお、MIDIにおける音色の配列は、ご使用の音源又はシンセサイザーにより異なりますのでご注意ください。誤った番号を指定した場合、音は鳴りません。また、正しい音色名を表示するには、ご使用の音源に合ったインストゥルメント定義ファイル(*.ins)を選択する必要があります。

世界樹:チャンネル11をドラムトラックとして使いたいのですが。

方法はご使用の音源により異なります。単純にドラムの音色のプログラムナンバーを指定すればドラムの音色が出るものもあります。GM音源では、ドラムはチャンネル10のみに固定されており、変更は不可能です。Microsoft GS Wavetable SynthやRoland SC-88などのGS音源では、ドラムはチャンネル10のみに固定されておりますが、次のシステムエクスクルーシヴデータを記述することにより、チャンネル11をドラムに切り替えることができます。1行目はGSリセットです。詳しくは、ご使用の音源又はシンセサイザーの取扱説明書を参照してくださいませ。

▼イベントリストウィンドウ

トラック 小節:拍:ティック イベントの種類 チャンネル 値1 値2 値3
1- 00001:01:000 システムエクスクルーシヴ n/a F0 41 10 42 12 40 00 7F 00 41 F7
1- 00001:01:060 システムエクスクルーシヴ n/a F0 41 10 42 12 40 1A 15 02 0F F7
世界樹:トラックの色・出力ポート・出力ON/OFFなどの設定が保存されません。

スタンダードMIDIファイル(*.mid)では、トラックの設定は保存できません。作業時は世界樹シーケンスファイル(*.skj)で保存し、完成したらスタンダードMIDIファイル(*.mid)で出力してください。なお、複数のポートを使用するMIDIデータでは、出力ポートの設定とは別に、各トラックにポートプリフィックスイベントを埋め込んでください。各ファイルフォーマットにおいて保存される情報、されない情報の区別は、取扱説明書をご参照ください。なお、世界樹シーケンスファイル(*.skj)はすべての情報を保存します。

世界樹:スタンダードMIDIファイルを開き、何もしないで保存したのに、バイナリの内容が異なります。

世界樹は、何もしていないのに勝手にフォーマット・タイムベースを変更したり、イベントを追加・変更・削除したりはしません。必要があればメッセージボックスが出ます。恐らくは、ランニングステータス省略の有無でデータ内容が異なっているのでしょう。スタンダードMIDIファイルでは、前回のイベントとイベントの種類とチャンネル番号が同じならば、そのバイトを省略してもよいことになっています。

世界樹:テキスト・マーカー・歌詞などでUnicode文字で記述したいのですが。

文字列先頭に{@UTF-16LE}と記述してから(中カッコ含む)、文字列を記述します。いったん記述すれば、以降同一トラック上の同種類のイベントに適用され続けます。文字コードの指定は、{@latin} {@jp} {@UTF-16LE} {@UTF-16BE}の中から選べます。何も指定していない場合は、本来であれば{@latin}の扱いとなるのですが、世界樹においては「設定」-「言語」で指定したテキストエンコーディングに従います。

なお、世界樹上でUnicodeを扱うことは可能ですが、Unicode対応でない又は文字コード指定に対応していないMIDIシーケンサーやMIDIプレイヤーでは正しく表示されないことにご注意ください。これはMIDIの拡張仕様(RP-026)であり、正式には歌詞にしか対応しておりません。

▼イベントリストウィンドウ:文字コードの強制指定方法

トラック 小節:拍:ティック イベントの種類 チャンネル 値1 値2 値3
1- 00001:01:000 テキスト n/a {@latin}Just make a contract with me, and become a Magical Girl!
1- 00001:01:030 テキスト n/a {@jp}僕と契約して魔法少女になってよ!
1- 00001:01:060 テキスト n/a {@UTF-16LE}成为魔术少女我的契約!
世界樹:譜面ウィンドウで#や♭が入力できません。

音符入力中又は音符移動中に、右クリックをすると#又は♭が付きます。どちらが付くかは、その位置での調性記号イベントによって自動的に決定されます。

世界樹:譜面ウィンドウに休符が入力できません。

MIDIデータには休符は存在しないので、仕様です。音符の無い所が休符扱いとなります。

世界樹:譜面の外観や音符の外観が設定できません。

MIDIデータには譜面の外観や音符の外観に関する情報はないので、仕様です。

世界樹:演奏中に時々もたります。

画面描画の負荷が大きいのでしょう。特にページが切り替わるときは大量の文字や図形を描画するのでもたることがあります。本番演奏時などは、世界樹内のすべてのウィンドウを最小化して、何も描画されないようにすれば、もたらなくなります。たとえあなたが高性能のグラフィックカードを使用していたとしても、それは3DやDirectXでは効果を発揮するかも知れませんが、世界樹のような2DのGDIの描画では何ら効果を発揮しないこともよくあります。

MIDIデータの作りにも注意が必要です。ひとつの時刻に大量のイベントを配置するのは避け、各イベントはなるべく時刻的に分散して配置してください。特に1小節目の初期化部分はイベントが混み合うのでイベントの間隔に注意してください。音源によってはデータをとりこぼすこともあります。

世界樹:VSQファイルで保存しても正常に読み込めません。

世界樹はVSQファイルに対応していません。ファイルの開くと保存に、Vocaloidシーケンスファイル(*.vsq)ファイルがあるのは、VSQのファイル構造がスタンダードMIDIファイル(*.mid)と同じで、解析のために役に立つかも知れないからです。しかし、各イベントの中身や意味はスタンダードMIDIファイル(*.mid)のものとは全く異なりますので、VSQの仕様に厳密に従ったデータを作らない限りは正しく動作しません。

MIDIせれくたー:あるMIDIデバイスが表示されたりされなかったりします。

Windows自体がそのデバイスの認識に失敗しています。USBのデバイスの場合は、ケーブルを抜き差ししてやり直してください。それでもだめな場合、Windowsを再起動してください。また、そもそもご使用のデバイスドライバがWindows Vista / Windows7に対応していないにもかかわらず、偶然動いているだけかもしれません。また、32bitと64bitでは基本的にデバイスドライバは異なります。必ず正しいヴァージョンのデバイスドライバをご使用ください。

FAQ (開発者向け)

Visual Studioでプロジェクトワークスペース(*.mdp)(*.sln)が読み込めません。

2013年09月01日より前の古いソフトウェア及びライブラリは、VisualC++ 4.0 Standard Editionで作られているので、プロジェクトワークスペース(*.mdp)を読み込むには、VisualC++ 4.0が必要になります。それ以降で2020年12月31日までのものは、Visual C++ 2008 Standard Edition Service Pack 1で作られているので、ソリューションファイル(*.sln)を読み込むには、Visual Studio 2008 Service Pack1 が必要になります。2021年01月01日以降のものは、Microsoft Visual Studio Community 2015 SP3で作られているので、ソリューションファイル(*.sln)を読み込むには、Microsoft Visual Studio Community 2015 SP3が必要となります。なお、コンパイル・ビルドするのではなく、DLLを使うだけであれば、どのようなヴァージョンのVisualC++を使ってもかまいません。

Visual Studio でDLLを使用するにはどうすればよいですか。

MIDIIOライブラリMIDIDataライブラリMIDIClockライブラリMIDIStatusライブラリMIDIInstrumentライブラリのDLLをVisual Studioで使う方法について説明します。

1.プロジェクトワークスペースの作り方

2.リンクの方法(MIDIDataライブラリの場合で説明)

簡単なMIDIプレイヤーの作り方がわかりません。

以下に、コンソールアプリケーションの単純なMIDIプレイヤーのサンプルコードを示しますので、参考にしてください。このプログラムでは、MIDIIOライブラリ、MIDIDataライブラリ、MIDIClockライブラリを用いています。

/* Simple Console MIDI Player example */

#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include "..\\MIDIIO\\MIDIIO.h"
#include "..\\MIDIData\\MIDIData.h"
#include "..\\MIDIClock\\MIDIClock.h"
/* Don't forget to add MIDIIO(d).lib to your project */
/* Don't forget to add MIDIData(d).lib to your project */
/* Don't forget to add MIDIClock(d).lib to your project */

int _tmain () {
  long lTimeMode = 0;
  long lTimeResolution = 0;
  long lTempo = 60000000 / 120; /* [microsec/quarter note] */
  long lEndTime = 0;
  long lOldTime = 0;
  long lCurTime = 0;
  MIDIOut* pMIDIOut = NULL;
  MIDIData* pMIDIData = NULL;
  MIDITrack* pMIDITrack = NULL;
  MIDIEvent* pMIDIEvent = NULL;
  MIDIClock* pMIDIClock = NULL;

  pMIDIOut = MIDIOut_Open (_T("Microsoft GS Wavetable Synth"));
  if (pMIDIOut == NULL) {
    _tprintf (_T("MIDIOut Open failed.\n"));
    return 0;
  }

  pMIDIData = MIDIData_LoadFromSMF (_T("test.mid"));
  if (pMIDIData == NULL) {
    _tprintf (_T("MIDIData Load failed.\n"));
    return 0;
  }

  lTimeMode = MIDIData_GetTimeMode (pMIDIData);
  lTimeResolution = MIDIData_GetTimeResolution (pMIDIData);
  lEndTime = MIDIData_GetEndTime (pMIDIData);

  pMIDIClock = MIDIClock_Create (lTimeMode, lTimeResolution, lTempo);
  if (pMIDIClock == NULL) {
    _tprintf (_T("MIDIClock_Create failed.\n"));
    return 0;
  }

  _tprintf (_T("Now playing...\n"));
  MIDIClock_Start (pMIDIClock);

  while (lCurTime <= lEndTime) {
    lCurTime = MIDIClock_GetTickCount (pMIDIClock);
    forEachTrack (pMIDIData, pMIDITrack) {
      forEachEvent (pMIDITrack, pMIDIEvent) {
        long lTime = MIDIEvent_GetTime (pMIDIEvent);
        if (lOldTime <= lTime && lTime < lCurTime) {
          if (MIDIEvent_IsTempo (pMIDIEvent)) {
            long lTempo = MIDIEvent_GetTempo (pMIDIEvent);
            MIDIClock_SetTempo (pMIDIClock, lTempo);
          }
          if (MIDIEvent_IsMIDIEvent (pMIDIEvent) ||
            MIDIEvent_IsSysExEvent (pMIDIEvent)) {
            unsigned char byMessage[256];
            long lLen = MIDIEvent_GetLen (pMIDIEvent);
            MIDIEvent_GetData (pMIDIEvent, byMessage, 256);
            MIDIOut_PutMIDIMessage (pMIDIOut, byMessage, lLen);
          }
        }
      }
    }
    lOldTime = lCurTime;
    Sleep (5);
  }
  MIDIClock_Stop (pMIDIClock);
  _tprintf (_T("Now end.\n"));

  MIDIClock_Delete (pMIDIClock);
  MIDIData_Delete (pMIDIData);
  MIDIOut_Close (pMIDIOut);
  return 1;
}
世界樹・MIDIてすたー・自動どらむでコンパイルエラー、リンクエラーが発生する。

世界樹MIDIてすたー自動どらむは、MIDIIOライブラリMIDIDataライブラリMIDIClockライブラリMIDIStatusライブラリMIDIInstrumentライブラリを利用しているため、これらのライブラリをすべてダウンロードし、下記に示すようなフォルダ名に変更し、下記のように配置しなければ、コンパイルエラー又はリンクエラーとなります(作者の開発環境がこうなっているため)。


(C)2000-2024 くず All rights reserved.