■アフィリリンク

iTunes Store(Japan)
iTunes Store(Japan)
Mac ソフトのことなら act2.com
act2.com
リンクシェア アフィリエイト紹介プログラム

■プロフィール

飴屋/菖蒲

Author:飴屋/菖蒲
(あめや・あやめ)
「UTAU」の作者です。

■アクセスカウンタ

08/10/20設置

■リンク
■ブログ内検索

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ
■RSSフィード
■Amazon

アソシエイトリンク

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | --:--:--
いやいや、
Macの記事のときにコメントをくださったCadenciiの人がこんなものを作られていました。

350 :名無しさん@お腹いっぱい。:2009/04/12(日) 20:16:45 ID:ESIRQHYl0
UTAUコアを駆動するVSTiを作ってみたよ。

VSTホストからMIDIを受信し、バックグラウンドでresampler.exeとwavtool.exeを動かしています。
現状、VOCALOIDと同じ仕様のNRPNのみ受信する仕様です。↓で落とせます。
http://www9.atwiki.jp/boare/pub/utauvsti/utauvsti_vDRAFT.zip

UTAUはスタンドアロンで使うしかなかったのですが、VSTiにすることで作業の幅が
広がるんじゃないだろーかと思って作ってみました。

私だって、出来るならとっくにアプローチしてました。でも作ってみるまでもなく、処理が追いつかんのですよ。
現行最速のresampler5.3でも、コンスタントに間に合わない。
よっぽど早いマシンを用意してメモリも大量に積んで原音が全部キャッシュ(UTAUのじゃなくて、ディスクシステムのですよ)に乗った状態でやっとかな? ってくらいだと思います。

まあ、自分の能書きはともかく、件のVSTiをVSTHostとdominoで試してみました。
ちゃんと(?)動作はしました。すげえ歌ってる……。

……途切れ途切れですが。
やっぱり全然追いつきません。
ですが、VOCALOIDのMIDIファイルから直接UTAUのエンジンで歌わせることが出来きたのはちょっと感動。

はっ!?
これはもしかして、「exe読み込みのオーバーヘッドがうざいですよ? DLL化マダー?」
というラヴコールなのか!?

DLL化はまだちょっと色々事情があって難しいんですが、
wavtool以降の処理ならば楽々間に合うはずなので、まず最初のテキスト部分を読んですぐに(UTAUの)キャッシュ作成(resamplerの処理)を開始してしまって、それからNRPNの時はwavtoolで合成のみ行うようにしたら(VSTi的にそういう仕組みが可能ならばですが)良いのではないでしょうか?


UTAU | 02:34:38 | Trackback(0) | Comments(9)
コメント
こんばんは、Cadenciiの中の人です。
現状レイテンシを発生させている最大の原因は、波形の要求が来るたびに「~.wav.dat」を読みに行っている部分なんですよね。
これはご指摘の通りDLL化すれば解消されるとおもいます。ここはぜひw、と言いたい所ですが自重します。
(実のところソースコードが見たくてウズウズしていますが)

メタテキスト部分をあらかじめ読んでおくのは1つの案だと思います。ただ、曲の途中から再生された場合、
クロック0にあるメタテキスト部分をVSTホストが送ってくれないので注意しなくちゃいけません。

余談になりますが、今オープンソースで開発しているVSTi本体を、
「オープンソースで、resamplerをプロセスとして起動するバージョン」と
「クローズドソースで、resamplerが内部に組み込まれているバージョン」
とに分けて開発してもいいんじゃないかと思いました。そんな技術的コラボが出来るのならやってみたいと
思っていますが、いかがでしょう?
2009-04-14 火 00:31:12 | URL | kbinani [編集]
正直切り張りツールと割り切っているからこそあそこまでのことが出来ているという面が多分にありまして、おそらくVSIi内部に組み込むとなるとほぼ1から書き直しになると思われます。
それに、もともと実験の延長なので部品化なんて考えは初めからしてなく、「動けば良い」という考え方のもと、自分で言うのもなんですが、恐ろしく非常識なコードの書き方をしています。
そのせいで、今「DLL化できねえ」なんてほざいているわけですが。
つまり、そこまでの技術的負債を他人に押し付けることはポリシー的に出来かねるというか、つまりとても人に見せられたものじゃないので、現状のソースを提供あるいは公開することは考えていません。ごめんなさい。
もしOSやるとしたら新たに書き下ろすことになるでしょう。
というか時間があったらアルゴリズムやらテクニックやらの整理の意味も兼ねて1から書き直したいと思っているくらいでして。

そんなわけで、すぐに手が届きそうな、「resamplerをプロセスとして起動する」場合のアイデアですが、resamplerを使って生成する音符毎のファイルを結合するwavtool.exeだけVSTi内部に組み込むというのはいかがでしょうか?(こちらは処理が単純なので仕様さえ判ればソースを見るまでもないと思います)
実は以前にチラッとブログで公表したことのある「マルチトラックUTAUキャッシュプレーヤー(仮名・頓挫中)」が、その手法で、あらかじめ生成しておいたキャッシュファイルを3トラックくらいまとめて合成しつつリアルタイム再生出来た実績があります。
ただ、これでも、resamplerの処理を平行して走らせるとなるとディスクアクセスがやはり足をひっぱるでしょうね。

っていうか今やってみます。UTAUと「それ」を起動して……。
2009-04-14 火 01:53:34 | URL | あめや [編集]
結果
やっぱ追いついちゃいました。
UTAUのレンダリング処理(wavtoolの処理はコメントアウト)と、「それ」の再生を同じUSTで若干インターバルをあけて同時に走らせたのですが、EXEロードのオーバーヘッドレベルの話じゃなく、resamplerの処理時間が長すぎでした。
でも追いつくまでは大体再生できてました。
「それ」が最新のUSTの仕様に対応してなくて若干問題もありましたが、それはまた別問題。

「それ」
http://blog-imgs-21-origin.fc2.com/u/t/a/utau2008/utaw-gamen.png
2009-04-14 火 02:42:45 | URL | あめや [編集]
VST->レンダリング、で良くない?
VSTでも、DAW環境で使えると思う
2009-04-14 火 02:47:53 | URL | [編集]
DLL化などなどの件は了解しました。飴屋さんのご意向に従いたいと思います。

処理遅れの件ですが、私のPCではなんとか、リアルタイム再生できるみたいです。
resamplerはVer5.3、音源は重音テト、CPUは2GHz、RAMは1.5GBです。
UTAU本体や「それ」の場合もですが、一時ディレクトリをRAMディスクに置くと見違えるように
速くなる可能性大ですね。
2009-04-15 水 01:37:30 | URL | kbinani [編集]
自分としてはVSTiよりはRewireして欲しいんス
ボカロはコレで重宝してるので(鳴らしながらリアルタイム再生&修正的な)
Rewire化って、やっぱムズイんですかね?・・・

VSTiにするとホストDAWに「乗っかる」って感じがあって重くなる気があります。Rewireだととりあえずは「同期」シンクロしてくれればいいから、うまくイケそーな気がスルー!なんですけど
素人考えですか・・・w

自分 音楽作るばっかりの趣味の素人なんでプログラミングとかサッパリな人でわがまま言ってると思うけど・・・
勝手に希望言ってみました

UTAUが進化することは大賛成なのですよぉ
2009-04-16 木 23:33:59 | URL | けつんど [編集]
Rewireは個人では開発ライセンスが取得できません
ごめんなさい
2009-04-16 木 23:54:52 | URL | あめや [編集]
生成した音声ファイルについて、発音別にバラのwavファイルでなく、
例えば10秒単位でtempファイル化して、時間で先行読み込みするようにすれば、再生が追いつくとかそういう想像をしてみました。
2009-09-30 水 19:11:46 | URL | 通りすがり [編集]
補足: 実は自分もVSTi 化は考えていた事があり、その時最初に思いついたのが上記方法でした。

{
 [再生音wavデータ] (次の発生までのオフセット時間値32bit) [再生音wavデータ] (オフセット値)
} この一塊が約10秒分の音声を含んだバイナリデータ

これなら、次にロードするべきファイルは「10秒以内にロード完了すれば良い」から、読み込みが追いつかないという事は無いと思います。

もしも VC++ で waveOut系関数を叩いているなら、実装は比較的簡単です。
※ただし 「だからお願いします!」 って話ではないです

差し出がましいコメントを古い記事に書いてすみません
2009-09-30 水 19:22:02 | URL | 通りすがり [編集]
コメントの投稿

管理者にだけ表示を許可する

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。