音楽とかソフトとか

これを見てびっくりしました。

耳のあるロボットの唄を冒頭部分を使っていただいてMikuMikuDanceの機能紹介をされていますが、、すごすぎる。。

MikuMikuDanceやNiVEなどの映像系ソフトのことは全然分かりませんが、MMDをダウンロードしてみたくなりました。私がやると挫折しそうですが、出来る人がやればBM(インスト)の動画でテトを飛ばす的なことができるんだろうと妄想しました。

----
後は進捗などとりとめもなく書きます。。

<前の記事で書いたwav結合ツール、わぶでば2.0のバグについて>

わぶでばのラベルファイルのフォーマットがどういうものだったか復習しました。かなりさくっと実装できそうです。その際にわぶでばのバグを見つけました。2.0にバージョンアップする際にコードを少し整理したはずが、既存のラベルファイルを開けなくなっていたというかなり痛いミスです。結合ツールと同時にわぶでばのバージョンアップもしないと。

<けんか別れ>



モモ新音源で上げていただきました。声の通りが良くなって、何だか歌い方が人間っぽくなった気がします。

そして、いつもこの曲を使っていただく度にオケのノイズが気になっていたので、この際だからと、データをREAPERで作り直して聴いてみました(元はMusicStudioで作っていました)。諸々の事情で幾つかのトラックを別の音色に差し換えたりしたので、若干雰囲気が変わった気もします。全体的に音は良くなったと思いますが、最後の方でやっぱりノイズが乗るのでまだ修正が必要のようです。出来上がったらまた上げます。

<shortcircuit>

けんか別れの音色差し替えでサウンドフォントを使ってみました。shortcircuitというフリーのサウンドフォントプレイヤーをREAPERに入れて好きなsf2ファイルを読み込み→トラックを録音状態にして→そのトラックのMIDIチャンネル番号とshortcircuit側のMIDIチャンネル番号を合わせる、という手順で音が出たと思います。

生音系の音源をあまり持っていないので、サウンドフォントで集めようかなぁ。

スポンサーサイト

PageTop
OREMOで収録した音のノイズ除去支援、ということで、
ばらばらなwavファイルを結合した一つのwavファイルと、元の状態に戻すためのわぶでば用ラベルファイルを出力するようなツールを作ろうかなと思います。

Audacityのベータ版なら複数のwavファイルを一括して処理できそうだということは書きましたが、これまで使い慣れたソフトでノイズ除去をしたいけどそのソフトだと1ファイルずつ手作業でやらないといけない、といったケースもあると思います。

手順は以下のようになる予定です。

  1. OREMOで自分のボイスライブラリを作成。

  2. 開発中のツールでボイスライブラリの各wavファイルを一つに結合したwavファイル、および、元のwavデータの境界を記録したラベルファイルを出力。

  3. 自分の好きなツールでノイズ除去などを行う。ただし、wavファイルの時間長が変わるような処理(無音区間を切り取って短くするとか)はだめ(元に戻せなくなるため)。

  4. わぶでばでwavファイルとラベルファイルを読み込み、分割して元に戻す。

PageTop
原音設定のパラメータに関して基本的な所を試してみました。一応、私的なチラシの裏書状態のメモにまとめたので、動画にして上げました。もし誤解している所などがあれば教えて頂ければ幸いです。



<内容>
・原音設定の各パラメータ(左右ブランク、固定範囲、先行発声、オーバーラップ)の働きについて
・パラメータ位置の決め方に関する私見(未検証)

<参考>
動画前半の内容のほとんどはこちらの動画で既に丁寧に解説されています。



この動画内容とkenさんからいただいた概念図がとても参考になりました。ありがとうございます。この動画の前半はそれらの資料とほぼ重複しているので冗長といえば冗長なのですが、別表現の説明があっても無駄ではないだろうと思い、上げてみました。


<追記>

動画BGMの事を書いてませんでした。原曲は、実はあまりよく知らない曲なのですが、講座動画などでよく聴く気がするので真似してディレイ・ラマでさわりだけ打ち込んでみました。

PageTop
耳のあるロボットの唄を英訳して歌っている方がいました。

http://www.youtube.com/watch?v=b8PI14RWx94


歌詞はこちらのページにありました。

自分の英語力では分からない文が多いのですが、とりあえず「恋をして」→「I think I'm in love」はなるほどと思いました。

PageTop
たまたま目に入ったのでマイリス代わりにはっておきます。






そういえば自分の曲では、とりあえず「インドっぽく」と思ったり書いたりすることがありますが、中には、実際はもうちょっと西側(アラブ)の雰囲気に近い曲だったりするような気もします。でもよく分からないので、とりあえずインドと書いてしまいます。

あと、インストで上げた曲は、ゆっくりとボーカルを作っていっています。今は大体1番のメインボーカルが終わったくらいの所です。UTAU最新版の操作性向上(特にショートカットキー増加)が素敵すぎます。B(組み込みメニューを開く)を覚えるだけででもすごく楽になりました。

PageTop
YouTubeを見てみたら、耳のあるロボットの唄のリミックス版が上がっていました。暗音ザンダの中の方の作みたいです。

http://www.youtube.com/watch?v=6yTW4zVKDCA


トラック別データを使われているみたいで、上げてて良かったなぁと思いました。

PageTop
OREMOを使って子供の声をとってみました。

平仮名はまだほとんど読めないので、私が「あ~」と読んでみせてすかさず「r」を押し、子供がオウム返しに言う声を録音しました。途中で飽きて別のおもちゃに走るんじゃないかと思いましたが、割と楽しかったのか50音とれました。でもめちゃくちゃな発音とばらばらな音量でした。

UTAU用にはならなさそうですが、声のアルバムを作っておくのもほのぼのしてて良いかなと思いました。

でも、もうちょっとまともな発音ができるようになったら子供の好きな歌を歌わせてみたりすると喜ぶかもしれません。今はでんでらりゅうがお気に入りのようです。地球ネコなどの平沢楽曲を聴かせると「こわいよぅこわいだねぇ」と言います。

上げて頂いたpreparationのテトPVを見せてみたらぴょこぴょこ歩くテトを指差して「赤いよ赤いよ」と連呼していました。

PageTop
現状のOREMOを開発版のver.2.0-b090213として公開しました→こちら
突貫でoto.ini保存を付けました。

開発版ということで、ほとんど動作テストしていなかったり、新機能の実装が終了していなかったり、同梱マニュアルが古いまま(ver.1.0のまま)だったりします。

今回の開発版の新機能についてはおおむね以下の記事にまとめてありますのでご覧下さい→こちら
ただし、上記ページは開発の進捗に従って内容が上書きされたりしていますし、今後も上書きするかもしれませんのでその点ご注意下さい。

現状版の要点としては、以下の機能追加が挙げられます。

* 音叉の機能追加(リピート再生、キーバインド割り当て)
* 原音設定(手動設定)
* 原音設定(自動推定。左右ブランクのみ)
* 原音設定(ファイル保存。oto.iniにパラメータを保存)
* 動作モード切替(録音機能ON/OFF、原音設定機能ON/OFF)
* 音名リスト取得(保存フォルダにあるwavファイルから音名リストを構成可能)
* 画面構成変更(収録音がそこそこ長い文字列になっても表示可能に)

いずれも上記リンクの記事に説明があります。でもメモ書きでごちゃごちゃしているので、少しだけ整理すると、

<中の人の向け>

主に以下の機能が関係すると思います。

* 音叉機能(例えば「o」を押すと音叉を再生したり再生停止したりできます)
* 画面構成変更

<中の人以外向け>

主に以下の項目が関係すると思います。

* 原音設定関係(原音パラメータのうち左右ブランクを自動推定したり、手動でパラメータをつけたりしてoto.iniに保存する)
* 動作モード切替(誤ってrキーなどを押して波形を上書きしないようにする)
* 音名リスト取得(reclist.txt、typelist.txtがなくても保存フォルダ内wavファイルからリストを生成する)

自分で試してないで書くのもなんですが、例えばモモ音源の原音設定をするような場合、以下の手順で作業することになると思います。

  1. OREMOを開き、モモ音源のフォルダを開く。
  2. オプション→動作切替で、録音機能をOFFにする。「フォルダにあるwavファイルからリストを生成する」を押してリストを生成する。
  3. ツール→自動設定で、パラメータを設定し、実行を押す。(開発版なので、最初はファイル数の少ない状態で試した方が無難かもしれません)
  4. 手動設定する。マウスを動かしながらF1~F5を押してパラメータ位置を指定する。次の音へはF6で移動する。
  5. ときどきファイルメニューからoto.iniを保存しておく。

記憶が定かでないのですが、モモ新音源の配布状態のようにwavファイルがサブフォルダに分かれた状態だと、現状OREMOが生成するoto.iniとUTAUが生成するoto.iniとで違いがあったような気もします。記憶違いかもしれませんが、UTAUのoto.iniの1カラム目のファイル名にはサブフォルダ名が含まれていたような気もします。

OREMOは今の所1つのフォルダに全wavファイルがあるボイスライブラリのみを想定しています。もしサブフォルダに分けたライブラリを現状版OREMOで処理する場合は、作成したoto.iniをテキストエディタなどで一括変換する、といった処理をしないといけないかもしれません。

あと、最近データを間違って消したりしまいがちなので、バックアップの意味も含めてtclソースコードを同梱しています。興味のある方はご利用下さい。UNIX系OSやMacOSなどのtcl/tkが動く環境でならそこそこ動くと思います(フォント設定などいくつか要変更箇所はあると思います)。変数名規則が一貫してなかったり大域変数万歳状態だったりと、いろいろ突っ込みどころあるかと思いますが、何か修正点などがあれば教えていただけると助かります。また、プログラミングを少しできる方なら、キーバインドの変更などは簡単にできると思います。

PageTop
一昨晩、OREMOの音叉機能を増やしました。詳細は→こちらに書きました。

昨晩は自動調整の手動設定周りを少し実装しました。肝心のoto.ini保存はまだ実装していません。

ふと思いましたが、今夜辺り開発版ということで現状版を上げようかなと思います。パラメータ調整周りの実装が不完全だったりHTMLマニュアルが無かったりしますが気になるところを上げていったらきりがなさそうなので。。

----
原音設定の図やURLなどありがとうございます。自分が誤解しているのが分かりました。まだ分からないところ(エンベロープとの関係とか)があるので実際に音を作って勉強しようかと思います。いずれにしても左右ブランク以外の自動化はすぐにはできなさそうです。

パラメータの付け方は数パターンある(例えば先行発声=overlap=0のパターン)ようなので、そのパターンをキーに割り当てておき、そのキーを押すとそのパターンが当てはめられる、というのは実装できるかも。。

----
コメントいただいた波形のトリミング実装可能です。wavファイルが増えてくると、合成に使用しない無音区間の無駄を切り詰めたい、といった意味合いですよね?きっと。ファイルサイズも減るし、もしかすると周波数表作成などの処理時間も短縮されるかもしれないし。

とりあえず以下のような機能は付けられると思いますのでメモしておきます。

<中の人用>
・各録音後自動的に無音を一定時間残してカットさせる機能
 →左右ブランクの自動推定を利用。

<中の人以外用>
・マウス位置であるキーを押すと、そこまでの波形を削除する機能
 →発声開始前の波形を削除した場合、原音パラメータの表示位置も更新する必要あり。

----
あと、肝心なことを書き忘れていました。UTAUには既に原音パラメータを自動推定する機能が組み込まれているんですね(原音設定窓でダブルクリック)。まったく知りませんでした。となると、自動推定はそこまで急がなくて良いのかも?

PageTop
リン&ルカでカバーしていただいてました。オケも作られたようですごく音が良かったです。声も印象的で、聴いていて終わりに近づくほど不思議な感じがしてきました。あと、ちょっと後期YMOや高橋幸宏ソロの雰囲気を思い出したりしました。



このアレンジでもう一度聞きなおすと、Aメロの最初の方はあがたさん(作曲鈴木慶一)の「骨」っぽいなとも思いました。

PageTop
OREMO-2.0の進捗はこちらに書き込んでいます。原音設定のパラメータをoto.iniの形式で保存したいので、ファイルの形式を調べたメモです。

<oto.iniの各行の例>
あ.wav=,98,50,51,100,150

ファイル名=エイリアス,オフセット,子音部,ブランク,先行発声,オーバーラップ

・オフセット(左ブランク)・・・wavファイル先頭から何msecか。
・子音部(固定範囲)・・・オフセットから何msecか。
・ブランク(右ブランク)・・・wavファイル末尾から何msecか。
・先行発声・・・オフセットから何msecか。
・オーバーラップ・・・オフセットから何msecか。

UTAU最新版を使わなかったからかもしれませんが、「原音設定」窓での各パラメータの表記とエディタ内での表記とが一部異なるようです。例えば原音設定窓では「オフセット」と書いてあるものはエディタ内では「左ブランク」と表現されていました。

それと、エディタを開いている間はAlt+Tabを押してもUTAUが候補に表示されないという現象が起きました。

最新版ではfixされているかもしれません。またどちらも大して気になることではないし、掲示板などで既に報告されているのかもしれません。


あとは、、先行発声とオーバーラップを勉強しないと(今まで割りと適当にいじって結果OKで来てました)。。飴屋さんのブログに説明がありましたっけ??講座動画があったような気もするし。。

PageTop
この記事は実装の進捗に応じて上書きしていきます。
とりあえずOREMO ver.2.0の構想とか進捗状況の雑多なメモです。

<OREMO ver.2.0 で追加したい主な機能>

・原音設定の一部のパラメータ(とりあえず左右ブランク)を自動決定。
・原音設定パラメータを手動で修正。

どちらもわぶでばのコードを流用して改造。

<パラメータの自動決定>

・わぶでばの自動ラベリング機能を使って発話開始点を検出し、左ブランク(オフセット)の位置とする。
 →実装済み(2/8の時点で)

・同じく、発話終了点を検出し、そこから左方向に移動して右ブランクの位置とする。
 →実装済み。(2/9の時点で)

・結果を波形画面に表示する。
 →実装済み(2/13の時点で)

・結果をoto.iniに保存する。
 →実装済み(2/13の時点で)

・左右ブランク以外のパラメータについてはおいおい考えます。「先行発声」のパラメータの意味をよく理解できていなかったりするので、勉強しないと。。(概念図や参考URLなどアドバイスありがとうございます。とても助かりました)

<パラメータの手動決定>

自動抽出結果の間違いを手修正できるようにする。というか、手動でパラメータの位置指定をできた方が良いかも?と思います。UTAU本体に既に付いている機能なので必要性は低いですが、もしやるのなら以下のような特徴を持ったものにしたいなぁと思います。

・波形のみでなくスペクトルやF0、パワーを見ながらパラメータ位置を決められる。
 →実装済み。

・わぶでばの手動ラベリングの使用感でパラメータ位置を決められる。
 →「左ブランク」を設定したい場所にマウスを持ってきてF1キーを押せばOK、F2を押したら「先行発声」が設定される、的な。個人的な好みですが、うまくいけば現状のUTAUの同機能より操作しやすくなるかも?

 →実装済み(とりあえずF1~F5のキーに割り当てました。2/10現在)。

  • F1 = 左ブランク
  • F2 = オーバーラップ
  • F3 = 先行発声
  • F4 = 子音部(固定範囲)
  • F5 = 右ブランク
  • F6 = 下矢印キーと同じ(次の音名へ)
  • F7 = 上矢印キーと同じ(前の音名へ)

 F6、F7は、沢山の音の原音設定をばっさばっさとやる際に、なるべく下矢印キーがF1~F6付近にあった方が良いだろうと思って用意しました。うまくいけばマウスを動かしつつF1、F2、…、F6を押して行くという操作の繰り返しになるんじゃないかと思います。

なお、OREMOの録音機能では、例えば録音済みの音を再収録したけど前の音が良かったというような場合にCtrl+↓、Ctrl+↑とすれば再収録音を破棄して以前保存したwavファイルを復帰させることができますが、原音パラメータ設定に関してはそのような機能は今のところありません。前回設定したパラメータを変更した後で元に戻したいと思ったなら、手動でパラメータを再修正して下さい。

さらに注意点として、手動では通常ありえない位置にパラメータを置くことができてしまいます(例えば左ブランク位置よりさらにオーバーラップを置くとか)。そのような状態のoto.iniをUTAUが読み込んだらどうなってしまうか分かりません。

・音を聴きながらパラメータ位置を決められる。
 →マウスを持ってきて何かキーを押すと、wavファイルの冒頭からマウス現在位置まで再生できるようにしたら、子音部がどの辺りまであるのかを耳で確認できるので、固定範囲のパラメータを決めるときに便利じゃないかと思います。

 →未実装

<原音パラメータの保存>

「ファイル」→「oto.iniの保存」を選ぶと、設定した原音パラメータを、保存フォルダのoto.iniに保存します。原音パラメータを修正した後でOREMOを終了する場合は「原音パラメータが未保存です。」と警告が出て、そこでoto.iniに保存することもできます。

<音叉機能の改良>

音叉機能を以下のように修正しました。

[ 窓の修正 ]
リピート再生ボタンを追加しました。これを押すと音が延々と再生されます。再生停止するには同じボタンをもう一度クリックして下さい(停止ボタンが無いのがちょっと紛らわしいかもしれません)。
oremo-onsa.png

[ ショートカット ]
窓にマウスがある状態では、以下のショートカットキーが使えます。

  • 上矢印または8・・・音叉を1音上げます。
  • 下矢印または2・・・音叉を1音下げます。
  • 左矢印または4・・・音叉を1オクターブ下げます。
  • 右矢印または6・・・音叉を1オクターブ上げます。
  • o         ・・・音叉のリピート再生/停止を切り替える

最後のショートカット「o」はメインの窓でも有効です。音叉を聴きながら録音する場合は、「o(音叉をリピート再生)」→「rを押して発声」→「o(音叉停止)」です。ただし、マイクに音叉音が入らないように密閉型ヘッドホンで小音量で聴く必要があると思います。またオンボードのサウンドカードなどでは、再生音が入力に混じらないかチェックした方が良いようです。手元のノートPCで、音叉をリピート再生しながらrで環境音を録音してみると、リピート再生しない場合より波形の振幅が若干大きくなり、よく聴くと音叉音が聴こえました。

<実装の現状、「動作切替」(2/10現在)>

(以前書いた内容からいくつか変更しました。さらに見かけを変更しました。機能は変更なしです(2/13))

原音パラメータを設定するのは中の人とは限りません。OREMOを使って中の人以外が作業する場合のことを考えて以下の窓を作りました。ツール→動作切替で以下の窓が出ます。

oremo-dousa.png

・「録音機能ON、原音設定機能OFF」
 デフォルトはこのモードです。録音ができて原音設定ができます。

・「録音機能OFF、原音設定機能ON」」
 原音設定のみできるモードです。中の人が公開した音声データの原音設定を他の人が行う場合にこのモードにすれば、不用意に音を上書きせずにすむかなと思って用意しました。

・「録音機能OFF、原音設定機能OFF」
 録音、原音設定いずれもできないモードです。波形やスペクトルを閲覧したり再生したりするモードです。

以上の3つは、録音ON/OFF、原音設定ON/OFFの2つにすれば良いじゃないかと今気づきました。。そのうちまた変更するかもしれません。

・「音名リストの更新」の「保存フォルダにあるwavファイルからリストを生成する」ボタン
 保存フォルダにあるwavファイルから音名リストを作ります。例えばモモの音データをダウンロードしてOREMOで見ようとするとtypelist.txtを書き換えて「A4ラ」などを書かないといけませんが、これを押せばtypelist.txt書き換えなしでリストを作り直します。

 ただし、wavファイル名からは音名、発声タイプの区別をしません。なので、発声タイプはなし、すべて音名リストのみになります(モモの場合音名に「あA4ラ」といったものが並びます。

・「reclist.txt,typelist.txtを読んで~」ボタン
 上の「音名リストの更新」を行ったりした後で、デフォルトの状態に戻すためのボタンです。ボタンを押すと改めてreclist.txtとtypelist.txtを読み込みます。

<実装の現状、「原音パラメータの自動推定」(2/10現在)>

上部メニューからツール→自動パラメータの自動推定で以下の窓が出ます。

oremo-paramsetting.png

わぶでば2.0の自動ラベリングの窓とほぼ同じ窓です。違いは、上から3番目の欄を「平均平滑化のサンプル数」からパワー抽出窓長にしたことです。意味合いは概ね同じです。各パラメータはモモ新音源の「あ*」を見ながら決めました。これを実行すると、保存フォルダにあるすべてのwavファイルから左右ブランクを求めます。結果例を3つ示します。

oremo-paramex.png

「あ」だけしか見ていませんが、どれもうまくいっているようでした。右ブランクの位置がもっと左にあった方が良いと思うなら、「最短発声時間」を長くとればいけるはずです。
子音のある音などはまったく検証していません。

なお現状では「実行」を押すと、ボタンが押された画像のままで、フリーズしたかのような時間が流れますがOREMOは頑張っています。進捗状況を表示させれば不安にならないと思いますが、未実装です。なので、「実行」ボタンを押したら、ボタン画像が押す前の状態に戻るまでとりあえず気長にお待ち下さい。

ちなみに、手元のPC(CPU=Pentium4 3.4GHz, RAM=3GB、OS=WinXP)で16個のモモのwavファイルを自動推定させたら3秒位かかりました。ということは1600個なら300秒=5分くらいでしょうか。。まだまったく試してませんが。

<実装の現状、その他>

画面構成を若干変えました。収録中の音を表示する欄が固定幅でしかも狭かったので、文字によって伸びるようにしました。これでそこそこの長さのセリフも全部表示できるはずです↓
oremo-msg.png

<公開時期>

突貫ぎみでテスト不足ですが、oto.ini保存もできるようになったので、開発版ということで公開します。
あまりテストをしていないこと、新機能に関するマニュアルが添付されていないことにご注意下さい。

PageTop
<追記ここから>
下記スクリプトには、後でoto.iniを自動的にコピーする部分を追加します。
UTAUバージョンアップでファイル上限が上げられたみたいなので、開発終了です。あえて古いバージョンを使いたい!と思うなら別ですが。。

でも、今試した感じだと、やっぱり原音設定をしないと厳しいようです。左右ブランクの設定がないので短い音が出るっぽいです。

前に、自動化プログラムを実装する時間が取れなさそうと書きましたが、とりあえず左右ブランクの自動設定だけなら試してみようと思います。わぶでばの自動ラベリングのコードを流用すれば前後の無音位置を検出できるので、そこに左ブランク、右ブランクのデータを付けるような仕組みは作れそうな気がします。

とりあえずoto.iniのコピーまで実装→左右ブランク自動化プログラム実装の順で行こうと思います。
<追記ここまで>

前に書いた記事のスクリプト(未完成)です。ベストな解ではないだろう、ということは前記事でも書きましたが、一応コーディングしてみています。

現状版では、Momo2というフォルダにモモの全データを置いておくと、ustファイルを読んで必要なwavファイルのみをMomo2フォルダからMomo2-Workというフォルダにコピーします。

oto.ini周りのコピーは未実装です。あと、cygwinとかperlとかの知識がないと動かせません。また、私自身まだ大してテストしてないのでバグがあるかもしれません。取り急ぎ、コードのバックアップの意味も含めてあげておきます(最近、れいんどろっぷ・しょーとかっとを皮切りに3回もデータ消失してしまっています(全部の自分の人為的なミス))。

あと、そもそもこのスクリプトは全データを使いたい!という欲望で作っていますが、中の方のブログを読む限りだと、使えそうな音を選んで使ってもらうことを想定されているようです。これだけ大量の収録なので、中には発音不明瞭やピッチ不安定な音もあるのかもしれません。その辺りの取捨選択にどう対応できるか、ということは検討した方が良さそうです。OKな音が大半だろうから、本スクリプトを使って、合成音を聞いて気になる音を手修正するというのが簡単な対応策と思いますが。。
--------


#!/usr/bin/perl -w
#
# ・やっつけスクリプトです。なんというか大域変数万歳的な(^^;
# ・今の所cygwinで開発しています。
# なので実行するならcygwinの知識が必要です。
# もしくはActivePerlをコマンドプロンプトで動かす知識が必要です。
# でもそれだと使える人が限定されてしまうので、
# もし色んな人に使ってもらうとしたらexe化しないと。。
# (PARだったっけ?)
#
# <実行手順>
# 1) Momo2 というフォルダにモモの全データを置く。
# 階層分けには現状では未対応。
#
# 2) utau で、デフォ子などでustファイルa.ustを作成し、保存。
#
# 3) 本スクリプトを Momo2 フォルダの一つ上で実行。
#
# % ./momoSub.pl a.ust
#
# これで、Momo2Work というフォルダが作られ、
# 必要最低限のwavファイルがコピーされる。
# また Momo2Work.ustというustファイルが作られる。
#
# memo: exe化するなら、入力ustファイル名を
# 固定にしてダブルクリックで動かせるようにした方が
# 多分便利
#
# 4) utau で Momo2Workを原音登録する。
# 5) Momo2Work.ustを開き、プロジェクトのプロパティで
# 原音をMomo2Workにする。
#
# <注意点とか ToDo とか>
# ・なにぶん大量のファイルなので、中には発音不明瞭や
# ピッチ不安定などで意図的に外したいwavファイル
# があるのかもしれませんが、それについては考慮していません。
#
# ・oto.ini のコピーなどは未実装。 ←重要

use strict;
use warnings;
use File::Copy; # wavファイルをコピーするためのモジュール

my $orgdir = "Momo2"; # モモ全データをいれたフォルダ
my $resultdir = "$orgdir-Work"; # 新規作成するwavフォルダ
my $resultfile = "$resultdir.ust"; # 出力ustファイル

my $title = ''; # ブロック名[#0001]とかを入れる
my %data = (); # ブロック内の各データを入れる

#-------------------------------------

# 保存フォルダを作り結果ファイルを開く
mkdir $resultdir;
open OUTUST, "> $resultfile";

# 最初の [#SETTING] ブロックの処理
while (my $str = <>){
$str =~ s/\r\n//; # 改行コード削除
if ($str =~ /^\[#\d+/) {
$title = $str;
last;
}
print OUTUST "$str\r\n";
}

# [#0000]以降の処理
while (my $str = <>){
$str =~ s/\r\n//; # 改行コード削除
if ($str =~ /^\[#/) {
&out;
$title = $str;
%data = ();
} else {
my @d = split '=', $str;
$data{$d[0]} = join '=', @d[1 .. scalar @d - 1];
}
}

# ファイル最後の [#TRACKEND]を出力
print OUTUST "$title\r\n";

# ファイルを閉じる
close OUTUST;

#-------------------------------------

# ブロックのデータを出力
sub out {
return if $title eq '';
&transData;
print OUTUST "$title\r\n";
foreach (keys %data) {
print OUTUST "$_=$data{$_}\r\n";
}
}

# 音高に応じてファイル名を変更
sub transData {
return if $data{'Lyric'} eq 'R'; #休符ならreturn

my @key = ('C', 'C#', 'D', 'D#', 'E', 'F',
'F#', 'G', 'G#', 'A', 'A#', 'B');
my @oto = qw(ド ド レ レ ミ ファ ファ ソ ソ ラ ラ シ);

# memo:
# NoteNum=24 == C1 UTAUで使える最低音
# NoteNum=57 == A3 モモwav最低音
# NoteNum=74 == D5 モモwav最高音
my ($key, $oto, $octave);
if ($data{'NoteNum'} > 74){
$key = 'D';
$oto = 'レ';
$octave = 5;
} elsif ($data{'NoteNum'} > 56) {
$key = $key[ ($data{'NoteNum'} - 24) % @key ];
$oto = $oto[ ($data{'NoteNum'} - 24) % @oto ];
$octave = 1 + int (($data{'NoteNum'} - 24) / @key);
} else {
$key = 'A';
$oto = 'ラ';
$octave = 3;
}

# ファイル名指定を書き換え
$data{'Lyric'} = "$data{'Lyric'}$key$octave$oto";

# wavファイルをコピー
copy ("$orgdir/$data{'Lyric'}.wav",
"$resultdir/$data{'Lyric'}.wav")
unless -r "$resultdir/$data{'Lyric'}.wav";
}

------
洗濯物を干せという声が聞こえたのでとりあえずここまで。。

PageTop
桃音モモ新音源が公開されたので早速いただきました。ファイル数にびっくりです。必ずしもUTAUに限らず、もっと一般的な声素材提供を想定されてらっしゃるのかなと思いました。これだけデータが充実していれば利用の方法は他にも考えられそうなので。何はともあれおつかれさまでした。ありがたく使わせていただきます。

使う側としては、ひとまずUTAUでこの膨大なデータをどう使っていけば良いかなぁと考えたくなったので雑多なメモを書いておきます。

<当面の問題>

・原音調整が大変

 a) 曲を作る際に、設定の必要になった音に対してその都度設定するのが現実的?
 b) やっぱり自動化ができると楽。OREMOの次はこれ?とか言ってみたい。
  →でもとりあえず今月は実装する時間を取れなさそう。

・現状のUTAUでは、原音ファイルが2000を超えると正しく原音設定できないっぽい。
  →いずれバージョンアップで対応されるんじゃないかと思います。
   強、弱といった件で、ファイル数が増えることは想定されているだろうと思います。

<当面の対策?>

思いつきのかなりアドホックな内容です。ベストな解ではないだろうと思いますが、一応考えたので備忘録程度に書きます。半自動化が前提です。

1) とりあえず、他のボイスライブラリを使ってustファイルを作って保存する。(手動)

2) その曲専用の原音フォルダAを作る。(自動)

3) ustファイルのLyric=とNoteNum=を参照し、対応するwavファイルをフォルダAにコピー。(自動)

4) oto.iniを参照し、該当する音の項目のみを抜き出したoto.iniを作成(2000超えてないならそのままコピーしてもいけるかもしれませんが) (自動)

5) ustファイルの書き換え(自動)
  ・VoiceDir=をフォルダAにする
  ・Lyric=を書き換える(oto.iniのエイリアスやprefix.mapでも対応できそうですが)

6) 合成音を聴き、原音調整する(手動)

7) 原音調整結果を本来の原音フォルダのoto.iniに反映させる。(自動)

こんな感じでしょうか。うーん。。ちょっとややこしい。。

2)~5)は1つのスクリプトで自動化できます。プラグインにするよりも単体で様子を見ながら動かすプログラムにした方が良いかなぁと思います。基本的に1曲で1回しか実行しないはずなので。

7)はまた別のスクリプトとして準備。


とりあえず今思いつくのはこれくらいです。

PageTop
ボーカルが入っていないので未完成ですが、ボーカル無しでもいけるというか、むしろ声を妄想できて良いかなと思ったので上げてみました。自分用に上げた感じです。なので、インストなのに歌詞表示が入っています。



ところが手元のPCで動画を再生すると、CPUの使用率がほぼ100%に跳ね上がって映像と曲のタイミングがずれてしまいます。PCが非力だからだろうとは思いますが、mp4でエンコードしたのがまずかったのかもしれません。エコノミー再生だと音質・画質が落ちる代わりに映像のタイミングが遅れなくなったので、見ていてずれが気になる場合は「?eco=1」を付けると良さそうです→強制エコノミー再生はこちらをクリック

そのうちボーカルを入れてみようと思いますが、どの声にするかとかはこれからです。

曲はwire(レイヴイベント名ではなくイギリスのバンドの方)を目指しました。例えば最新アルバムの1曲目のPVをyoutubeで視聴できます。いかにもwireといった感じの曲(フレーズの繰り返し方とか楽器の入り方とか、、)です。



wireは、P-MODELのカバー(コリン・ニューマンのSSS Star Eyes。太陽系亜種音に入っています)で知って、去年初めてCDを買ってみたのですが、もう、かっこよすぎです。特に3rdアルバムのMap~など、もうどうしようかという位かっこいいです。

それでBMもドラムから入ってギターを入れてフレーズを延々繰り返して、、といった具合に作りました。なんだかサビは今聴き直したら随分そっくり(一応オリジナル、と言い張れるラインだとは思いますが…)だなぁと思いました。

この曲に限らず自分の曲は元々わりとメロディのフレーズ繰り返しは多いと思います。その結果7分を超えてしまいました。しかも後半のメロディを変えたらwireというより平沢的成分が入ってきたような。。

ギター音源にはreFx Slayer2のデモ版を使いました。これまでフリーで使用or試用可能なVSTiで曲を作っていましたが、Slayer2は曲制作後に買いました。

動画はflickrからクリエイティブ・コモンズライセンスの写真を40枚選んで、processingで読み込んで動かしたものをCamStudioで録画しました。ときどき曲に合わせてキー入力し、映像の動きを切り替えています。プログラムまで作っといてローテクです。厳密にやるならフレーム番号を計算して、正確に切り替えられそうですが、夜中にえいやっと作ったので妥協しました。キーを押しながら、XTCのスカイラーキング製作時のトッド・ラングレンのエピソードを勝手に思い出しました。

写真を変えると雰囲気が変わって面白そうなので、そのうちソースコードを上げたいなと思います。ただし、バグではないけど自分の意図しない動きをすることがあって、しかもそれが結構かっこよい動きをするので、そのまま使っています。普通のソフト開発ではありえないです。なんだかイケナイ開放感を感じました。

歌詞は、結果的に単なる妄想です。本当は2つの過去の事実から感じたことを書きたかったのですが、メロディに合うように修正しているうちに、いつの間にかフィクションが混じって、一番言いたかったことは消えてしまいました。

----
時間 4次元目の水 すべての事象を洗い流す
記憶 鮮やかな軌跡 いつしか輪郭さえも薄れ
発話 直列の波形 並列な気持ち伝えきれず
誤解 そしてまた言葉 誤差は人づてに累積する

記憶の揺らぎは 些細な記録と 些細な言葉で 消える
溢れる思いは 些細な魔法です 些細な魔法です 多分

2月 無情な選択 どの道も犠牲は避けられず
記録 最後の手がかり 些細な摩擦で燃えて消えた
選べ さあ早く選べ 時は迫り寒風が叫ぶ
ごめん きみたちをぼくは極地の孤島に置き去りにした

わがままな波の 位相が重なり 津波に変わり 押し寄せる
記憶の外では 13が沈んだ 13が沈んだ 海に
記憶の中では 2だけが残った 2だけが残った 奇跡
記録の上では 些細なできごと 些細なできごと 多分

memory 生き延びるための記憶は素敵なキャンバス
secret 孤独なわりに人ごみがとても大好き
mistake ご機嫌いかがと忘れた頃に現れた
regret 届かぬ思いよ今すぐ過去へと帰れ

loneliness 人の目に触れ肌に触れた途端に死んだ
document 淡々と語れテーゼは消え行く運命 と
再見 地球の裏でギターを携えつぶやいた
開宴 地球の表じゃ歓喜の声が渦巻く

いざ 開宴
----

タイトル「BM」は適当です。ボーカルを乗せたら変えるかもしれません。本当は、最初のタイトルは「記憶正しく美しく」で、今でも結構気に入っているのですが、後で嫌になりそうでもあるのでどうしようかなと思っています。

PageTop
書くのが遅くなってしまいましたが素敵なPVを作っていただきました。ありがとうございます!


以前ケトラPさんのPVを描かれていた方です。前回もテトは走ってましたっけ。テトとモモのシンメトリが素敵でした。


カラフルでピコピコなPVでした。小さなドット絵が色んな動きをしてすごいなと思いました。


この動きは和みます。スクリーンセーバーにできたら良いだろうなぁと思いました。

PageTop
私信です。

了解です。お役に立てず残念です。オーディオカードによっては使えないようだということが分かりましたので、そのうちソフト紹介のページに注意書きを入れようと思います。もし今後のバージョンアップでオーディオデバイス周りで何かプログラムを修正したときは、そのことをこのブログに書くと思います。

もう一台のPCではうまく動くと良いですね。

PageTop
OREMOで録音できないという方への私信です。

収録音聴きました。確かに無音部分と声の部分の音量がほとんど変わらない状態のようですね。Audacityで問題なく録音できているということは、PCの設定等が原因ではなくsnackライブラリ自体に問題があるのかもしれません。最初に上げた説明動画で少し書きましたが、snackは開発が数年前から止まっているっぽいので、ライブラリ自体のソースを読まないといけません。また手元のPCで再現できないので、検証がしづらいです。なので対応できないかもしれません。。

OSがvistaだから?と思い、vistaマシン(サウンドボードはオンボード)を借りて試してみましたが、録音できるようでした(マイクが無かったのでヘッドホンでマイクを代用した簡単なテスト方法ですが)。

多分ご存知と思いますが、念のため、vistaでマイク入力の大きさを変える一般的な手順を書いておきます。

  コントロールパネル→サウンドを開く→録音タブ
  →マイクを選んでプロパティを開く→レベルタブで入力レベルを調整する。

もう一つ思いつくこととしては、入力デバイスにLine inがあるようですので、一度そちらにマイクを接続して試してみることはできるかもしれませんね。。

PageTop