投稿日:2008-10-28 Tue
GUIからデータをエンジンに渡すところで、ピッチデータがコマンドプロンプトの制限に引っかかって壊れる件、
(判らない人はスルー推奨)
今、ささやかながら長さの圧縮を試みています。
まず、精度が0.01cent(半音の一万分の一)と無駄に高精度を誇っていたので、
これを1cent単位に丸めます(0.5centを聴き分ける位でないと違いは判らない)。
それから値をbase64の2文字分(-2048~2047、これだけあれば十分なはず)に制限して、
1ステップを長さ固定2文字で渡すようにして、ついでに簡単なランレングス圧縮もかけます。
そうすると、
200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 200.00 199.00 197.00 194.00 188.00 182.00 174.00 165.00 154.00 143.00 131.00 119.00 106.00 94.00 81.00 69.00 57.00 46.00 35.00 26.00 18.00 12.00 6.00 3.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 -2.00 -3.00 -5.00 -7.00 -9.00 -11.00 -12.00 -14.00 -14.00 -14.00 -14.00 -12.00 -10.00 -8.00 -4.00 0.00 5.00 10.00 15.00 20.00 25.00 30.00 34.00 38.00 40.00 42.00 42.00 42.00 39.00 36.00 31.00 25.00 18.00 9.00 0.00 -9.00 -19.00 -29.00 -38.00 -47.00 -55.00 -61.00 -66.00 -70.00 -70.00 -68.00 -64.00 -59.00 -52.00 -44.00 -34.00 -23.00 -12.00 -1.00 11.00 22.00 33.00 42.00 51.00 58.00 64.00 68.00 70.00 70.00 68.00 64.00 59.00 52.00 44.00 34.00 24.00 13.00 1.00 -10.00 -22.00 -32.00 -42.00 -51.00 -58.00 -64.00 -68.00 -70.00 -70.00 -68.00 -65.00 -59.00 -52.00 -44.00 -35.00 -24.00 -13.00 -1.00 10.00 21.00 32.00 42.00 50.00 58.00 63.00 67.00 70.00 70.00 68.00 65.00 59.00 53.00 44.00 35.00 24.00 13.00 2.00 -10.00 -21.00 -32.00 -42.00 -50.00 -58.00 -63.00 -67.00 -70.00 -70.00 -68.00 -65.00 -60.00 -53.00 -45.00 -35.00 -25.00 -14.00 -2.00 9.00 21.00 31.00 41.00 50.00 57.00 63.00 67.00 70.00 70.00 68.00 65.00 60.00 53.00 45.00 35.00 25.00 14.00 2.00 -9.00 -20.00 -31.00 -41.00 -50.00 -57.00 -63.00 -67.00 -70.00 -70.00 -68.00 -65.00 -60.00 -53.00 -45.00 -36.00 -25.00 -14.00 -3.00
↑こんなデータが
DI#11#DHDFDCC8C2CuClCaCPCDB3BqBeBRBFA5AuAjAaASAMAGADABAA#113#///
+/9/7/5/3/1/0/y#3#/0/2/4/8AAAFAKAPAUAZAeAiAmAoAq#2#AnAkAfAZASAJAA/3/t/j/a/R/
J/D+++6+6+8/A/F/M/U/e/p/0//ALAWAhAqAzA6BABEBGBGBEBAA7A0AsAiAYANAB/2/q/g/
W/N/G/A+8+6+6+8+//F/M/U/d/o/z//AKAVAgAqAyA6A/BDBGBGBEBBA7A1AsAjAYANAC/2/
r/g/W/O/G/B+9+6+6+8+//E/L/T/d/n/y/+AJAVAfApAyA5A/BDBGBGBEBBA8A1AtAjAZAOA
C/3/s/h/X/O/H/B+9+6+6+8+//E/L/T/c/n/y/9
↑このくらいになります。
ここまでは実装しようと思ってますので最新版はもうちょっとお待ちください。
Windows XPとVistaでピッチ情報の後ろが切り落とされるケースよりもさらに制限が厳しいWindows2000でUTAUの人です。対応ありがとうございます。リリースされたら今のバージョンでコンパイルできないUSTファイルを試して報告させていただきます。
2008-10-28 火 09:02:27 |
URL |
キハ22
[編集]
つ 環境変数渡し
2008-10-28 火 13:58:55 |
URL |
n
[編集]
ふと思い出しました。考慮されていると思いますが、生成した文字列を従前同様バッチ処理のコマンドラインに渡すのなら、コマンドラインの特殊文字(<>|^)は含まれないようにしておかないと別途特殊文字エスケープが必要になるかも、と思いました。
resampler.exeが直に環境変数を参照するほうが無難かも、ですね。
resampler.exeが直に環境変数を参照するほうが無難かも、ですね。
2008-10-28 火 14:18:10 |
URL |
キハ22
[編集]
失礼しました。BASE64に(<>|^)は出てこないので無問題ですね。
2008-10-28 火 15:20:55 |
URL |
キハ22
[編集]
確かに、set param=でサブのバッチファイルに渡してる位なら、
exeん中から直接読めば良いじゃん! って話ですね?
そのset param=の時点で切り落とされてるんじゃないかと。
って、分割すればいいのか。
でも、ここはあんまり複雑にしたくないんですよね。
やるならもっと抜本的に、ust渡して直にwav生成するとかを考えます。
exeん中から直接読めば良いじゃん! って話ですね?
そのset param=の時点で切り落とされてるんじゃないかと。
って、分割すればいいのか。
でも、ここはあんまり複雑にしたくないんですよね。
やるならもっと抜本的に、ust渡して直にwav生成するとかを考えます。
2008-10-28 火 17:28:51 |
URL |
あめや
[編集]
お疲れ様です。一時ファイル生成+ファイル名渡しってのはどうでしょうか。スマートかというと微妙ですが。
cent幅については、昔ブラバンやってたときの楽器のピッチあわせが±2~3centくらいでしたので、1centなら問題になるケースは少ないかと思います。主な外部MIDI音源のピッチベンド指定も1cent丸めだという話をどこかで聞いたような…(記憶が曖昧なので話し半分で)
cent幅については、昔ブラバンやってたときの楽器のピッチあわせが±2~3centくらいでしたので、1centなら問題になるケースは少ないかと思います。主な外部MIDI音源のピッチベンド指定も1cent丸めだという話をどこかで聞いたような…(記憶が曖昧なので話し半分で)
2008-10-29 水 02:53:49 |
URL |
にお
[編集]
△ PAGE UP