[PR] この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。
作業メモ|ZHUOWARE BACKYARD TOP|ZHUOWARE表ページ
Ripples : curve-editing environment prototype
by: zhuo http://zhuoware.blog110.fc2.com/
はじめに
位置づけと経緯
"Ripples"は,「Ripple = 変動する量」の編集環境の構想です.
いろいろな外部ツールを連携させるプラットフォームとなれればいいなあと夢見ています.
2008年1月ごろ構想. 4月にMVFXとして着手も中断.しかしVocaListener(ぼかりす)に刺激され,5月より,音楽音響信号を読み込んでピッチカーブ,音量カーブなどを取り出すimport機能,
およびそれをtextやSMFで書き出すexport機能を題材に,スケッチを試みている段階です.今後もツールとしてお使いいただき,ご要望を参考に改良していければと思います.
並行して,今後,コード整理ないし書き直しを行い,当初構想である汎用のフレームワークにシフトしてゆければと思っています.importer, processor, exporterの形で簡単に機能を追加できる形が夢です.
とはいえ,なにぶん,一個人がわずかな暇を見つけて遊んでいるだけのコードですので進展はゆっくりです.お許しください.
お力添えを下さっている方々
- Active Tclのsnack同梱有無について,初音ミクみく様よりご指摘をいただきました.
- 音響信号からの波形抽出,SMF生成にあたり,cn_hibari様の先駆的なレポートを参考にしています.http://www.geocities.jp/cn_hibari/vsq/
- MIDIのExpressionのcontrol changeについて 「逃亡者」様から助言をいただきました.
- Tclスクリプトについて,子猫P様からパッチの形でバグフィクス,機能拡張をいただきました.
- Ripples構想はzhuoが冬頃から暖めてきたものですが,子猫P様はじめ VOCALOID SNS ぼーかろいどにゃっぽんでの皆様との議論を通じて,いっそう具体化したものです.
お力添え下さっている皆様に,ココロから感謝もうしあげます.ありがとうございます!
Disclaimer
- 本ツールは個人的な実験の結果をご紹介するものにすぎません.ドキュメントは最小限であり,テストもほとんどしていません.ご使用は,パッケージ内容をご理解できる方のみ,at your own riskでお願いいたします.ツールのご使用により生じた結果については一切責任を負いません.
- 各種法令および製品使用許諾条項の遵守をお願いいたします.
- Vocaloid製品に関係される各社様および関係各方面から,本ツール,ないし関連情報の公開について中止の要請があった場合には,ただちに公開を中止いたします.その場合には,このページで告知いたします.
|
最新版の説明
動作環境
- Windows XP SP2 で動作確認しています.
- ActiveTcl 8.4 系. (最新である8.5系の一つ前の系列)
- free版をインストールしておいてください.「各種ツールのメモがき」にて言及してます.
- ヘルパー t2mf.exe.
- 実験の参考として同梱しましたが,インストールしておいてください.これも詳しくは「各種ツールのメモがき」にて.
備考
- Tcl/Tkスクリプトなので,MacでもLinuxでも動くかもしれません.
- SMF書き出しだけは,いまのところヘルパー t2mf.exeを使ってるのでWindows onlyですが,これも Mac/Linux版t2mfがあれば動く可能性があります.
- 音の処理にはKTHのsnackをTclバインディング経由で使っています.Active Tclの8.4系のfree版にはsnackが同梱されていますので,KTHからもらってきてインストールするといった作業は必要ありません.Active Tclの8.5系はまだ新しく,snackが同梱されていませんので,別途,自力でインストールする必要があります(ご指摘くださった初音ミクみく様ありがとうございます).
実験
準備と起動
- 2-5秒ぐらい「あ~あ~」と歌ったwav波形を用意しておいてください.
- 最新のzipファイルをもっていって展開してください.
- mvfx_0_xx.tcl を起動します.
ツアー
音声波形を開いて観察,pitchと音量をSMFで保存するには?
- menu ファイル -> サウンドファイルを開く -> でwav波形ファイル選択します.
- ToolBarで BPMを設定します.
- 波形の上で右クリックメニュー->オートマティック を選びます.
- スペクトログラム,ピッチなどの分析が一括して行なわれます.
- 波形の上で右クリックメニュー->SMF保存 を選びます.
- menu ファイル -> 終了 を選んで終わってください.
機能詳細
■メイン画面
- menu ファイル -> サウンドファイルを開く -> でwav波形ファイル選択します.
- Ctrl-左ドラッグで,表示全体をドラッグできます(Adobe Readerの手のひらマークみたいな動き) (Rev.0.12-)
- (ドラッグしっぱなしになったら,とりあえずもう一度Ctrl-左クリックしてみてください_o_)
- 波形の上で左ホールド でそこから再生,リリースで停止.
- 波形の上で右クリックするとメニューが出ます.そこで:
- 「すべて再生」で全体を聴く (停止は,波形の上で左クリック).
- 「オートマチック」で,SMF保存に必要な処理すべてを一気に実行.これをやって「SMF保存」すればとりあえずSMFを作れます.
- 「スペクトログラムを表示」で,スペクトログラムが出る.
- 「ピッチを表示」するとピッチカーブが出る.(Rev.0.13からフォルマント表示の都合で一時的にスケールがせまくなりみえにくくなってます,そのうち直します)
- 「フォルマント表示」するとフォルマントが出る(0.13-)
- 「ラウドネス」とすると音量カーブが出る.
- 「スペクトルスコープを開く」とすると,別に,スペクトル表示窓が開きます(後述).
- 「テキスト保存」すると,周波数と音量(dB)をテキストでファイルに書き出します.書式は次のとおりです:
- <time(milli-sec)> tab <frequency(Hz) > tab <loudness (dB, 0-96)>
- 「SMF保存」で,pitchbendとexpression でカーブを書きだします.
- 漢字まじりやスペースまじりのディレクトリ/ファイル名の場合にうまく保存できないことがあるようです,レポートいただければ幸いです.
- メニュー「ファイル」->「終了」,または右上のX(バツ)で終わってください.
■ToolBar
0.13に対して子猫P様よりいただいたパッチ,0.15で統合しました.ありがとうございます_o_
- BPM: SMF保存の際,BPMが設定できます.リセットすると120に戻ります.(波形にBPMに応じたグリッドが出るとうれしいようであれば,実装してみます)
■スペクトルスコープ
- 開いた状態でメイン画面でマウスカーソルを動かすと,その時刻でのスペクトルを表示します.
- スコープ下部のbuttonで,FFTと,LPCを,独立してon/offできます.(0.15ではパラメータは決めうちになってます_o_)
- メイン画面で,スペクトログラムを開いたときには,その中で左クリックすると,スペクトルのスナップショットがとれます.
- スナップショットはスコープ右のリストの一番上に入ります.
- スナップショットははじめ不透明なので,最後にとったもの(リスト一番上) だけが見えます.
- リストのアイテムを左ドラッグで上下すると順序を変えられます.下の方のスナップショットを見たい場合はドラッグして一番上にもっていってください.
- リストの各アイテムは左クリックで選択/非選択を反転できます.
- 選択したアイテムについて,リスト右クリックメニューで,次のことができます.
- 透明化---背景を透明にします(1アイテムあたり数秒かかります).これによりリストの下方のスナップショットも透けて見える(線が複数見える)ことになります.
- 削除---選択したアイテムを削除します.
作業メモ
- 2008.06.05 AM
- スペクトル表示スコープ追加,また0.13に対して子猫Pさんからいただいたパッチを統合しました.パッチありがとうございました!
- download: MVFX_0_15.zip
- download: MVFX_0_15a.zip --- 2008.06.07 readmeまわりを書き直しました.スクリプトは同じです.
- 変更点:
- メニューが日本語になりました.
- SMF保存時のBPMを ToolBarで設定できるようになりました.
- OSの機能をもちいて窓を閉じるとプロセスが残る,という問題を解消しました.
- SMF保存の際 t2mfが失敗することがあったのに対処しました(が,t2mfの
制約が原因で失敗する可能性がまだあります,レポートお待ちします_o_)
- スペクトルスコープをつけました.
- TODO:
- 音節設定したい
- カーブを編集したい (カーブどうしの演算. および粘土的な感覚の手編集)
- 左窓をデータフロー風にしていく (機能ブロックを貼って結線する)
- コードリファクタ--- itcl化?
- 外部コマンド呼び出し機能
- 2008.05.27 AM
- 概要:「ぼかりす」について推理してきたまとめを公表します.下記のリンクをご参照ください.28日にはいよいよ種明かし.私などの推理をはるかに超える高度な技術に違いありません.楽しみです.
- さて,私専用に書いたRipplesを使ってくださり,さらにパッチを用意してくださった方が現れました.ご連絡をいただいてほんとうにびっくりしました.ありがとうございます&恐縮です.さっそく対応させていただくべきところでしたが,どうしても28日のぼかりすの種明かしまでに推理を進めたいというわがままな思いから,対応をまっていただいてしまいました.どうか,お許しください.
- 2008.05.20 AM
- 概要:フォルマント表示・観察してみました
- download: MVFX_0_13.zip
- 変更点:
- フォルマント表示を実装.F1-F4.まで. その都合でスペクトログラムの周波数範囲を広げたので,ピッチの観察はしにくくなった.どう表示したらいいかあとで考えます.
- スクリーンショット:
- 考察:やっとフォルマントを観察したが,案の定,ア,イ,オは目視ではわかるもののやはり暴れていて使いにくい.ピークがわずかに低く出て抜けおちると以後のFnのラベルがひとつずれるのだから当然ではあるが. いっそバークバンド包絡をコサイン角で比較,クラスタリングする方が安定して母音をとれるのではないか.音声はまったくの素人なのでどうしたものかヒントがない.
- TODOs:
- ピッチが突然1/2に飛んだら倍に補正,というような常識処理を組み入れてみる.
- 音節(1)www eventタイミングはsnackのピッチ検出の"voicing"判定を流用---観察するに,うまくいかない.素直に音量をローパス後シュミットトリガでon/offした方がまし.さらに手修正必要.
- 音節(2)snackでスピーチャもとる(容易).ただ,多分これから母音とるのは(HTKと組み合わせても)無理と予想するが.Juliusで拾えるかもだが,残り時間を考えると手を出しがたい.
- VSQ生成は,技術的に現実的な努力で出来ることは,Perl, C#につづき AIRアプリでの作例もあらわれ,はっきりしてきた.しかし私としては,yuukiss氏の表明を最大限に尊重したい---出来てもやるべきではないという方がおられる以上,「トレス」ツールをみだりにばらまくべきではないと思う.むしろ次の点に進んでいきたい.
- 波形の編集機能を入れたい(これがRipples構想の本来の部分).「粘土を造形するように指やコテでカーブが変形できる」「スケーリング」「重ね合わせ」などのイメージをあたためている.(スピードのある方,先行してお試しくださって結構です).
- シャトルムーブ(個人的こだわりだったが,やってみて懲りた.こんなに手ごわいとは.)
- ズーム(さあ大変),はじめ,ちゃんとしたデータ/画面管理.この辺はplain Tcl/Tkだと面倒なところ. 多分,Ver.2で,ちゃんと設計しなおし.
- Vocalips Standard 入出力
- RIppLEsのアイコンw
- 2008.05.19 AM
- 概要:週末の成果(あんまり進まなかったけど)---表示強化.今後の作業を見据えた内部のコード整理
- download: MVFX_0_12.zip
- 変更点:
- ピッチ:ピッチ関係の値は全部表示.(有声音確率,強度)
- グラスプムーヴ:Ctrl-左ボタンドラッグで,グラフをつかんで移動する動き.
- 表示:とりあえず左の窓にカーブの名前を表示
- カーソル:カーソル位置の時刻を表示.
- 備考:シャトルムーブは,表示の移動がまたポインタ移動をトリガするといった干渉があって実装が意外に難しいことがわかったのであきらめた...時間ロスしましたorz
- 2008.05.14 AM
- 概要: 昨日の実験結果をupします
- download: MVFX_0_11.zip
- 変更点:
- 音量,ピッチとも波形を滑らかにしてみました.音量はwindow lengthを40msecに広げて実現.ピッチはwindow lengthを20msecに広げ,さらに(new output) = 0.7 * (new input) + 0.3 * (prev output) という単純なローパスをかけました.
- 実験:浜崎あゆみのDearestのソロボーカルをRipples 0.11で分析(パラメータは手調整),SMFをsaveして Vocaloid2 Editorで読みこみ,手作業でA2 の音符を置いて試聴. 冒頭部分のスナップショット↓
- Ripples 0.11
- Vocaloid2 Editor
- 考察:ザリザリ感はある程度おさえられたが,まだ他の皆様のようなスムーズな音ではない.きちんとf特を計算して定数を合わせるべきだろう…けど以下(ry.
いよいよ,音節にいきたい.
- 課題:
- ピッチが突然1/2に飛んだら倍に補正,というような常識処理を組み入れてみる.
- 音節(1)www eventタイミングはsnackのピッチ検出の"voicing"判定を流用.これはまあできるだろう.ただ,手修正必要.
- 音節(2)snackでフォルマント,スピーチャもとる(容易).ただ,多分これから母音とるのは(HTKと組み合わせても)無理と予想.Juliusで拾えるかもだが,残り時間を考えると手を出しがたい.
- 歌詞をVocaloid Editorに渡すにはSMFのLyric Eventでは無理でVSQにしないといけない.和泉聡様が最近公開されたVSQ生成コードを参考に,時間内にできるかどうか.唯一の道は,Vocalips Standardを拡張し,それを読んでVSQを生成するPerl scriptを起こすことだが...まあこれは厳しい,歌詞はVocaloid Editorで打ち直しだな.
- 波形の編集機能を入れたい(これがRipples構想の本来の部分)
- シャトルムーブ(個人的こだわりw)
- ズーム(さあ大変),はじめ,ちゃんとしたデータ/画面管理.この辺はplain Tcl/Tkだと面倒なところ.
- Vocalips Standard 入出力
- RIppLEsのアイコンw
- 2008.05.13 AM
- ピッチ,音量カーブにローパスをかけると,うん,ザリザリした混変調感がおさえられる感じ.夜また実験できるといいのだけど,平日は厳しいな… いよいよ,音節に手をつけたくなってきた.
ところで気がついたのだけど,「すー」を途中から再生するとみごとに「つー」「とぅー」「うー」に聞こえるですね.「すー」だけあれば,「つ」は作り出せると.逆にボカロ曲で時々サ行がタ行に聞こえるのは,サ行の冒頭のデータがかけちゃって途中から再生されてるのではないだろうか….先行発声の長さが足りないとかで….
- 2008.05.11
- Vocaloid2に読み込むと音量がDYNに反映されるようになりました.浜崎あゆみのDearestの冒頭をVocaloid2で鳴らし観察しました.
- download: MVFX_0_10.zip
- 状況:
- SMF出力を修正.Vocaloid2 Editorに読み込めば PIT,DYNとも反映されるようになった.今まで音量情報を
CC#8(volume)にしていたのが敗因orz(すすすす,すいません!volumeはそもそもCC#7でした!).CC#11(expression)だった."逃亡者"様,アドバイスありがとうございました.
- 観察:浜崎あゆみのDearestのソロボーカルをRipples 0.10で分析(パラメータは手調整),SMFをsaveして Vocaloid2 Editorで読みこみ,手作業でA2 の音符を置いて試聴.
- 冒頭部分
- 印象
- 音がにごる.音量変化が細かすぎるからだろう.音量包絡適用のはずが,100Hzサンプリング「波形」(盛大なDC成分付w)とのリングモジュレーションになってしまっている.しかもその波形には,音量包絡の速すぎる変動成分をカットせずに100Hzでサンプリングしたせいでaliasingノイズが載っている気がする.
- ところどころ,ピッチが,突然1オクターブ下に飛んでいる.原音声を聞くと確かに1オクターブ下の成分も聞こえる気がして興味深いのだが,使う上では困る.
- 次のステップ
- 音量包絡の窓長を伸ばしてスムージング(ローパス)を効かせてみる
- ピッチが突然1/2に飛んだら倍に補正,というような常識処理を組み入れてみる.
- snackで取れる情報を全部表示(ピッチ抽出の付随情報,formant,スピーチャ)
- 音節の入力・編集機能, pitch検出で得られる情報を初期値にして.テキスト入力はどうするか.
- 波形の編集機能を入れたい(これがRipples構想の本来の部分)
- シャトルムーブ(個人的こだわりw)
- ズーム(さあ大変),はじめ,ちゃんとしたデータ/画面管理.この辺はplain Tcl/Tkだと面倒なところ.
- VSQ出力
- Vocalips Standard 入出力
- RIppLEsのアイコン w (ぴんときた方作っていただけませんか^^;)
- 2008.05.10
- 部分再生機能を実装しました.浜崎あゆみのDearestを観察してみました.
- download: MVFX_0_09.zip
- 状況:
- 課題:
- シャトルムーブ(こりゃまた枝葉から…^^:)
- 音節の入力・編集機能, pitch検出で得られる情報を初期値にして,編集.テキスト入力はどうするか.
- Expressionは CC #11 とのアドバイス(逃亡者様ありがとうございます),一生懸命CC #8 でやっていたorz すぐ直してみよう…
- ズーム(さあ大変)
- まともなオブジェクト管理.
- VSQ出力...PITとDYN以外のパラメータを渡したくなったときに.(といいつつSMFのNRPNを読んでくれるかもと淡い期待)
- Vocalips Standard 入出力
- 本来のRipplesの方向性へ…:曲線の編集機能とか.
- RIppLEsのアイコン w (ぴんときた方作っていただけませんか^^;)
- 観察:浜崎あゆみ「Dearest」, 「歌声りっぷ」によりソロボーカルオーディオを用意して分析してみました.
- 冒頭部分
- 10.7秒目「すべて」
- 12.6秒目「すてて」
- 2008.05.09
- 連休も思うように作業できず心残り,また和泉様とUTAUの作者様からご連絡もいただいたので,もう少し,続けさせていただこうと思います.
- download: MVFX_0_08.zip
- 状況:
- テキストダンプを実装.
- 音量のスケーリングはSMFダンプ時のみとした(仮).
- カーソルをつけてみたw
- 2008.05.06
- 夕方版のスナップ.連休中も結局昼間は家族サービスで終わり,5月5日の晩と6日午前すこししか作業はできなかった.まあしかたない.
- download: MVFX_0_07.zip
- 状況:波形を読んで,スペクトログラム,pitch, loudnessが表示でき,pitch/loudnessをSMFで書き出せるところまできた.
- が,Vocaloid2のMIDI importは
expressionを読まないことに気づきがっくり.急遽 VSQ 出力を検討開始中. (05.10:CC#8でやってましたorz それはvolumeだ… CC#11のexpressionは読むそうなのでやってみます)
- だがそれよりもさきに音節の入力機能がほしいことを実感.夜,チャレンジしたい.
- 2008.05.03
- 新規開設.作業完了時点のスナップ.