おーぷんMIDIぷろじぇくと

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

Japanese | English | Chinese


FAQ (一般ユーザー向け)

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

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

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

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

UbuntuなどのLinuxへの対応予定はありますか。

いいえ。Linuxで曲を作る人はほとんどいないため、また時間的に厳しいため、Linuxへの対応予定はございません。

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

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

音質が悪い。

MIDIは音質を定義していません。MIDIは楽器に対して演奏情報を与えているだけです。おそらくは、あなたがMicrosoft GS Wavetable Synthなどのひどい音質のシンセを使っているからそうなるのでしょう。高音質にこだわるのであれば、ハードウェアのシンセサイザーを購入することをお勧めします。2013年現在、ラックモジュールとしてはRolandのIntegra7が、鍵盤付きシンセサイザーとしては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(ハ長調)となっています。フラットを入力するには小文字のBを入力してください。短調は"major"の代わりに"minor"を入力してください。なお、拍子記号と調性記号の設定は、画面表示にのみに影響を与え、演奏されるMIDIデータには何ら影響を及ぼしません。

なお、世界樹3.5からは、トラックリストウィンドウ、ピアノロールウィンドウ、譜面ウィンドウからでも、テンポ・拍子記号・調性記号表示部を右クリックすることにより、ダイアログで追加・変更・削除することができるようになりました。

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

トラックリストウィンドウの左ペインに、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が選択されています。

世界樹:曲の途中で音色を変えたいのですが。

イベントリストウィンドウで、手動でCC#0、CC#32、プログラムチェンジを挿入してください。トラックリストウィンドウからは最初の音色しか設定できません。しかし、同一トラック内で途中で音色を変更することは、トラック数制限など特別な事情がある場合を除き、あまりお勧めできません。

世界樹:GSの音色しか選べません。

デフォルトではWindows付属のMicrosoft GS Wavetable Synthに設定されています。ご使用の音源のCakewalk用インストゥルメント定義ファイル(*.ins)をネット上から探してきて、それをinstrumentフォルダ内に入れ、「設定(S)」-「MIDIデバイスとインストゥルメント...」からご使用の音源を選択してください。インストゥルメント定義ファイルが見つからない場合は、音色番号を直接テンキーで入力するか、「設定(S)」-「オプション(O)...」で、「存在する音色のみ探索する」をオフにしてください。

世界樹:トラックの色・出力ポート・出力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)であり、正式には歌詞にしか対応しておりません。

世界樹:譜面ウィンドウで#や♭が入力できません。

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

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

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 / 5.0 / 6.0が必要になります。それ以降の新しいものは、Visual C++ 2008 Standard Edition Service Pack 1で作られているので、ソリューションファイル(*.sln)を読み込むには、Visual C++ 2008 Service Pack1 / 2010 / 2013が必要になります。なお、コンパイル・ビルドするのではなく、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)2002-2017 くず / おーぷんMIDIぷろじぇくと OSDN