■PxtoneBoxについて

SMF（*.mid）形式のMIDIファイルとピストンコラージュ用のファイル（*.ptcop）を相互に変換するツールです。
Windows（32bit用）実行ファイルで生成しました。

※現状、Windows専用とさせていただきます。
ご了承ください。



■使用方法

実行したPxtoneBoxに、MIDIファイル(*.mid）もしくはピストンコラージュファイル(*.ptcop)をドラッグして下さい。
ファイルの読込に成功すると、画面表示が 0file → 1file といった具合にファイル数が変化します。

読込中のバイトが画面右上に表示されます、ツールが正常に動作しているかの目安にしてください。

処理が終了するとファイル数が一つ減少します。
その際、左下にファイル名が表示されます。

※緑色のファイル名

作成されたファイル名が表示されます。


※赤字でファイル名

作成しようとしたファイル名が表示されますが、実際にはエラーで失敗しています。
失敗した場合、中央ファイル数の上にエラーメッセージが表示されます。


□エラーメッセージの例

☆not enough memory
解析するためのメモリの上限を超えたため、プログラムが処理を放棄した際に表示されるメッセージです。


☆permission denied
書込対象のファイルへのアクセスが失敗した場合に表示されるメッセージです。


☆それ以外……
想定外のエラーな為、作者まで問い合わせいただけると助かります。


□読込成功

変換後のファイルは、相互重複を防ぐため_PBという文字が挿入されて作成されます。

*.mid → *_PB.ptcop
*.ptcop → *_PB.mid

作成されたファイルを任意のプログラムでオープン出来れば成功です、お疲れ様でした！



■アンインストール

解凍して出来たフォルダごとゴミ箱に捨ててください。
レジストリはいじっていません。



■midi → pxtoneの変換ルール、仕様について

□対応できているもの

・プロジェクト名（シーケンス名・トラック名から抽出）
・テンポ（ただし、可変には対応できず）
・チャンネルごとの音符配列（ただし、和音の場合は複数のユニットに展開）
・パンボリューム


□プロジェクト名について

MIDIファイル内のシーケンス名・トラック名から抽出しました。
フォーマット１の場合は、トラックの名前を拾ってしまっているのかもしれません。


□テンポについて

可変テンポのMIDIファイルにつきましては、独断と偏見でひとつのテンポを抽出しました。
ご了承ください。


□マテリアルについて

全てのマテリアルは、ピストンコラージュ本体同伴の「000-sineNormal.ptvoice」です。
必要に応じてマテリアルを変更してください。


□ユニットについて

チャンネル内の和音は、変換時に複数のユニットに展開しています。

10ch（ドラムパート）は、各種キー毎にユニット化し、全て中央のラに移動しておきました。

ユニット名は[コード(4桁)][名称(12桁)]という構成になります。
※コードは、下記の「サウンドコード一覧」「パーカッションコード一覧」をご覧ください。


☆[コード(4桁)]の先頭ゼロ詰めの3桁数字
サウンドもしくはパーカッションに対応した番号です。


☆[コード(4桁)]の4桁目の記号
PxtoneBox専用の仕様としてサウンドコードには「-」、パーカッションコードには「+」を付けています。


☆[名称(12桁)]
下記コード一覧の名称が付加されます。



■pxtone → midiの変換ルール、仕様について

□対応できているもの

・プロジェクト名（シーケンス名・トラック名に転記）
・テンポ
・音符配列（複数のユニットをある程度同じチャンネルに再現）
・パンボリューム


□フォーマットについて

フォーマット０として作成します。


□チャンネル展開について

midiにはユニットが存在せず、各譜面をチャンネルとして管理しています。
また、チャンネル数の上限が16までとなっています（うち、10chはパーカッションです）。

変換先の制約が厳しいため、きれいに変換したい場合は、ルール付けしておく必要があります。
ピストンコラージュ側のユニット名の先頭に「コード(4桁)」を付けてください。
※コードは、下記の「サウンドコード一覧」「パーカッションコード一覧」をご覧ください。

コード化されたユニットは、変換時に判断され、同じチャンネルと思しきものは自動的に統合します。
主だったものは、パーカッションです。
パーカッションは、10ch専用となっているため、コードを付加することで、全て10chに入れ込むことが可能です。

先頭「コード(4桁)」以外の12桁分はどのような文字を書いてあってもOKです。

以下、ルールとなります。


☆サウンドコードをユニットの先頭に記述した場合
midi変換時に、プログラムチェンジとしてセットします。


☆パーカッションコードをユニットの先頭に記述した場合
midi変換時に、指定した音を構成する10chの譜面に展開します。


それでも16chに収まらない場合は、頻度の少ないユニットを強制的に16chに変換します。

※midi → pxtone時にユニットにコードが付加されるため、
そのデータをpxtone → midiにした場合に、ある程度、再現性を残して戻すことが可能な仕組みになっています。



■コード一覧について

ウィキペディアを参考にしました、ありがとうございます。
https://ja.wikipedia.org/wiki/General_MIDI

アルファベット名称は、12文字に収める必要があるため、一部略称化しています、ご了承ください。



■サウンドコード一覧

001-	AcoPiano	アコースティックピアノ
002-	BrightPiano	ブライトピアノ
003-	EleGranPiano	エレクトリックグランドピアノ
004-	H-tonkPiano	ホンキートンクピアノ
005-	ElePiano	エレクトリックピアノ
006-	ElePiano2	エレクトリックピアノ2
007-	Harpsichord	ハープシコード
008-	Clavi		クラビネット
009-	Celesta		チェレスタ
010-	Glockenspiel	グロッケンシュピール
011-	MusicalBox	オルゴール
012-	Vibraphone	ヴィブラフォン
013-	Marimba		マリンバ
014-	Xylophone	シロフォン
015-	TubularBell	チューブラーベル
016-	Dulcimer	ダルシマー
017-	DrawbarOrg	ドローバーオルガン
018-	PercuseOrg	パーカッシブオルガン
019-	RockOrgan	ロックオルガン
020-	ChurchOrg	チャーチオルガン
021-	ReedOrg		リードオルガン
022-	Accord		アコーディオン
023-	Harmonica	ハーモニカ
024-	TangoAccord	タンゴアコーディオン
025-	AcoGtr(ny)	アコースティックギター（ナイロン弦）
026-	AcoGtr(st)	アコースティックギター（スチール弦）
027-	EleGtr(jazz)	ジャズギター
028-	EleGtr(cl)	クリーンギター
029-	EleGtr(mu)	ミュートギター
030-	OverGtr		オーバードライブギター
031-	DistGtr		ディストーションギター
032-	GtrHarmonics	ギターハーモニクス
033-	AcoBass		アコースティックベース
034-	EleBass(fi)	フィンガー・ベース
035-	EleBass(pi)	ピック・ベース
036-	FretlessBass	フレットレスベース
037-	SlapBass1	スラップベース1
038-	SlapBass2	スラップベース2
039-	SynthBass1	シンセベース1
040-	SynthBass2	シンセベース2
041-	Violin		ヴァイオリン
042-	Viola		ヴィオラ
043-	Cello		チェロ
044-	DoubleBass	コントラバス
045-	TremoloStr	トレモロ
046-	PizzicatoStr	ピッチカート
047-	OrcheHarp	ハープ
048-	Timpani		ティンパニ
049-	StrEnsemble1	ストリングアンサンブル1
050-	StrEnsemble2	ストリングアンサンブル2
051-	SynthStr1	シンセストリングス1
052-	SynthStr2	シンセストリングス2
053-	VoiceAahs	声「あー」
054-	VoiceOohs	声「うー」
055-	SynthVoice	シンセヴォイス
056-	OrchestraHit	オーケストラヒット
057-	Trumpet		トランペット
058-	Trombone	トロンボーン
059-	Tuba		チューバ
060-	MutedTrumpet	ミュートトランペット
061-	FrenchHorn	フレンチ・ホルン
062-	BrassSection	ブラスセクション
063-	SynthBrass1	シンセブラス1
064-	SynthBrass2	シンセブラス2
065-	SopranoSax	ソプラノサックス
066-	AltoSax		アルトサックス
067-	TenorSax	テナーサックス
068-	BaritoneSax	バリトンサックス
069-	Oboe		オーボエ
070-	EnglishHorn	イングリッシュホルン
071-	Bassoon		ファゴット
072-	Clarinet	クラリネット
073-	Piccolo		ピッコロ
074-	Flute		フルート
075-	Recorder	リコーダー
076-	PanFlute	パンフルート
077-	BlownBottle	ブロウンボトル（吹きガラス瓶）
078-	Shakuhachi	尺八
079-	Whistle		口笛
080-	Ocarina		オカリナ
081-	Lead1(squar)	矩形波
082-	Lead2(saw)	ノコギリ波
083-	Lead3(calli)	カリオペ
084-	Lead4(chiff)	チフ
085-	Lead5(chara)	チャランゴ
086-	Lead6(voice)	声
087-	Lead7(fifth)	フィフスズ
088-	Lead8(bass)	バス+リード
089-	Pad1(fanta)	ファンタジア
090-	Pad2(warm)	ウォーム
091-	Pad3(poly)	ポリシンセ
092-	Pad4(choir)	クワイア
093-	Pad5(bowed)	ボウ
094-	Pad6(metal)	メタリック
095-	Pad7(halo)	ハロー
096-	Pad8(sweep)	スウィープ
097-	FX1(rain)	雨
098-	FX2(s-track)	サウンドトラック
099-	FX3(crystal)	クリスタル
100-	FX4(atmos)	アトモスフィア
101-	FX5(bright)	ブライトネス
102-	FX6(goblins)	ゴブリン
103-	FX7(echoes)	エコー
104-	FX8(sci-fi)	サイファイ
105-	Sitar		シタール
106-	Banjo		バンジョー
107-	Shamisen	三味線
108-	Koto		琴
109-	Kalimba		カリンバ
110-	Bagpipe		バグパイプ
111-	Fiddle		フィドル
112-	Shanai		シャハナーイ
113-	TinkleBell	ティンクルベル
114-	Agogo		アゴゴ
115-	SteelDrums	スチールドラム
116-	Woodblock	ウッドブロック
117-	TaikoDrum	太鼓
118-	MelodicTom	メロディックタム
119-	SynthDrum	シンセドラム
120-	ReCymbal	逆シンバル
121-	GtrFretNoise	ギターフレットノイズ
122-	BreathNoise	ブレスノイズ
123-	Seashore	海岸
124-	BirdTweet	鳥の囀り
125-	Telephone	電話のベル
126-	Helicopter	ヘリコプター
127-	Applause	拍手
128-	Gunshot		銃声



■パーカッションコード一覧

035+	BassDrum2	バスドラム2
036+	BassDrum1	バスドラム1
037+	SideStick	サイドスティック
038+	SnareDrum1	スネアドラム1
039+	HandClap	手拍子
040+	SnareDrum2	スネアドラム2
041+	LowTom2		ロートム2
042+	ClosedHi+hat	クローズハイハット
043+	LowTom1		ロートム1
044+	PedalHi+hat	ペダルハイハット
045+	MidTom2		ミドルトム2
046+	OpenHi+hat	オープンハイハット
047+	MidTom1		ミドルトム1
048+	HighTom2	ハイトム2
049+	CrashCymbal1	クラッシュシンバル1
050+	HighTom1	ハイトム1
051+	RideCymbal1	ライドシンバル1
052+	ChinaCymbal	チャイニーズシンバル
053+	RideBell	ライドベル
054+	Tambourine	タンバリン
055+	SplashCymbal	スプラッシュシンバル
056+	Cowbell		カウベル
057+	CrashCymbal2	クラッシュシンバル2
058+	VibraSlap	ヴィブラスラップ
059+	RideCymbal2	ライドシンバル2
060+	HighBongo	ハイボンゴ
061+	LowBongo	ローボンゴ
062+	MuteHiConga	ミュートハイコンガ
063+	OpenHiConga	オープンハイコンガ
064+	LowConga	ローコンガ
065+	HighTimbale	ハイティンバル
066+	LowTimbale	ローティンバル
067+	HighAgogo	ハイアゴゴ
068+	LowAgogo	ローアゴゴ
069+	Cabasa		カバサ
070+	Maracas		マラカス
071+	ShortWhistle	ショートホイッスル
072+	LongWhistle	ロングホイッスル
073+	ShortGuiro	ショートギロ
074+	LongGuiro	ロングギロ
075+	Claves		クラベス
076+	HiWoodBlock	ハイウッドブロック
077+	LowWoodBlock	ローウッドブロック
078+	MuteCuica	ミュートクイーカ
079+	OpenCuica	オープンクイーカ
080+	MuteTriangle	ミュートトライアングル
081+	OpenTriangle	オープントライアングル




■スペシャルサンクス

□ピストンコラージュ関連

・開発者Pixelさんのサイト
http://studiopixel.sakura.ne.jp/pxtone/

便利なソフトを開発していただきありがとうございます。
この場を借りてお礼申し上げます。

「000-sineNormal.ptvoice」をお借りしました。

また、当プログラムに素材を提供していただきました。
素敵に仕上がりました、ありがとうございます！


・ピストンコラージュ専用のサイト
http://pxtone.org/

「ソフト開発の方へ」のソースを解析させていただきました。
ありがとうございます。


□開発関連

・Love2d
https://love2d.org/

Lua言語でプログラミング出来るツールです、とても便利です。
マルチプラットフォームでゲームを作るのに最適です。


・cocos2d-x
http://www.cocos2d-x.org/

自作ライブラリ開発時に参考にさせていただいております、ありがとうございます。


・YAMAHA
http://www.rtpro.yamaha.co.jp/RT/utility/

文字コードを変換するツールkconvをお借りしました。
utf-8 → sjis 変換時に使用しました、ありがとうございます。



■最後に

ダウンロードしていただきありがとうございました。
不具合、ご提案などあればご連絡ください。

yamahara
https://twitter.com/yamahara

--
Ver0.3.1(0.10.2)[2017/03/21] ファイルカウントのバグを修正
                             エラー発生時のふるまいを変更
                             出力結果、エラー発生後にファイル名履歴を表示（英字のみ）

Ver0.3.0(0.10.2)[2017/03/08] ビジュアル面の変更（Pixelさんに素材を提供していただきました、感謝！）
                             midiの分解能が480で無い場合も正しく譜面が変換されるように変更
                             稼働スレッドに上限を設けることにより、not enough memoryが発生する頻度を軽減

Ver0.2.0(0.10.2)[2017/02/23] ファイル処理を工夫し、not enough memoryが発生する頻度を軽減

Ver0.1.2(0.10.2)[2017/02/21] pxtone → midi変換時に発生する致命的なバグを修正

Ver0.1.1(0.10.2)[2017/02/20] スレッドでエラーが発生した場合に画面にメッセージを表示するように変更、バグ３か所を解消

Ver0.1.0(0.10.2)[2017/02/19] pxtone → midi、テンポ、パンタイム、プロジェクト名の移行機能を追加

Ver0.0.1(0.10.2)[2017/02/03] midi → pxtoneのみの機能で、とりあえず公開
