Moresampler 0.8.4 - More than a resampler.
Copyright (C) 2015-2018, Kanru Hua (a.k.a. "Sleepwalking").

Moresampler は歌声合成プログラムUTAU向けの合成バックアンド。字面上でMoresamplerは通常
  のUTAU向けResamplerではなく、ResamplerとWavtoolを一つの実行ファイルに組み込んだものと
  なります。

Website: http://web.engr.illinois.edu/~khua5/index.php/moresampler/
The complete Moresampler tutorial:
  https://web.engr.illinois.edu/~khua5/index.php/2016/04/07/the-complete-moresampler-tutorial/

作者連絡方式
=======

Email: k.hua.kanru [at] ieee.org

=======

更新履歴：
0.8.3 (2017年6月10日）
* 問題修正: 長い無音が続く音源を分析する場合でクラッシュする問題を修正
* 問題修正: 短いサンプルもしくは母音が全く含まらない（表情音など）サンプルを分析する場合でクラッシュする問題を修正

0.8.2 (2017年5月15日)
* 問題修正: oto自動生成機能部が音素 アルファベット "zh"を識別できない問題
* 問題修正: ホストソフト（UTAUなど）に呼び出されるではない場合で、そのままクラッシュするよりも、エラーメッセージを表示するようにしました。
* 機能改良: 入力音声がモジュレーションされる場合のピッチ検出精度を高めました。
* 新機能: 新しいフラグ「Mp」を導入。ピッチ曲線にランダムの揺らぎを与える。
値範囲は[0, 100]。揺らぎ具合の範囲をコントロールする。デフォルト値は0。

0.8.1 (2017年3月29日)
* 問題修正：先日導入した新規ピッチ予測の重大バグを修正

0.8.0 (2017年2月24日)

* 問題修正: u-flag有効のノートでクラッシュする問題
* 問題修正: 時々ピッチシフトする時でクラッシュする問題
* 問題修正: 浮動小数点 wavファイルを識別する問題
* 問題修正: 短い子音が結合後でロストする問題
* 問題修正: エイリアスのローマ字から平仮名へ変換する時"ja","jo","ju"が間違って"じぁ", "じぉ", "じぅ"にした問題。
* 機能改良: ピッチ予測を広範的改良した。有声無声音検出のエラーをより抑えました。
* 機能改良: oto生成機能はArpasingをサポートした。

0.7.2 (2016年10月26日）

* 本バージョンでoto生成に関するコードを一部入れ替わりました。
  一部はLuaで書き直されました。Arpasingは現状未実装（継続中）
* 問題修正: 「UTAU-style-normalization」が無効化される場合ノートの強さパラメータが一部無視される問題
* 問題修正: 2016年3月で導入されたある機能は分析時の時間解像度を低減する可能性があると判明。現在は「analysis-anti-distortion」有効時以外デフォルトオフ。
* 機能改良：oto生成部は原音生成がローマ字ファイルに対して仮名ファイル名で生成することが可能になった
* 新機能：oto生成部は既存oto.iniに対して上書きではなくアップデートを行えるようになりました。
  既存ファイルを書き上げることを回避ができるようになります。
* 新機能：oto生成部はまず「index.csv」ファイルの有無を判定し、リストアップされた.wavファイルを読み込みます。
* 新機能：oto生成部は現在CVVC/VCVスタイルの生成を行います

0.7.1 (2016年8月22日）
* 本バージョンは一部の数学演算関連機能を再構成しました
* 問題修正：辺界連結時たまに雑音が発生する問題
* 問題修正：Mrフラグがマイナスの場合で爆音が発生する問題
* 問題修正：uフラグ使用時ノートの偏移量の誤り
* 機能改善：テクスト-スピーチ辺界識別モデルの設定を改善。oto生成精度が高まれる。
* 機能改善：uフラグ使用時非正規化数を使用すると合成速度が大幅（1000%）に低下する問題を回避
* 新機能：oto生成機能においてローマ字が使用可能となりました

0.7.0 (2016年6月7日)

* 改良：Mtフラグの効果（シャープさ、緊張さ）を改良した。
* 改良：Wavtoolモードにおけるノート辺界で時々生むグリッチ音を低減
* 新機能：音源フォルダーをMoresampler.exeにドラッグアンドドロップして、原音を分析して自動的oto.iniを生成する。
  本機能は実験性的であり、またまた改良が必要。
  現状は「連続的発話した」「日本語」「ひらかな/カタカナのファイル名」の原音がサポートされます。
  サブフォルダはサポートされおりません。フォルダーの中に .wavを置いてください。
  現状サポートされたのは連続音(VCV)スタイルだけ。使う前に元のoto.iniを別途バックアップしてく下さい。
* 新機能：Mr フラグ, 「シンガーのフォルマント」を3KHzのところで生成します。
  範囲は[-100, 100]（負は位相反転）、整数、デフォルト値0。
* 新機能： Moresamplerは .aiff/.aifファイルの入力をサポートしました。
* 設定可能新機能
  meta-flag-1/2/3/4 ....
    この機能はカスタマイズするフラグを作れます。
    複数のフラグを一つのメタフラグへ組み合わせられます。入力の労力低減につなげるかと。
    メタフラグはM+数字、M1、M2などで有効します。
    うしろに.と数字をつけると、％として有効範囲を調整します。（元フラグの最大値に制限される）
  例：
    meta-flag-1 MG50MD30MC20Mb30Mt50
    ノートで「eMo20M1.50」を入力する場合、eMo20MG25MD15MC10Mb15Mt25と等価します。
    （メタフラグの効果は50%にしました）
  analysis-suppress-subharmonics on/off 
    有効すると、自動的低調波を入力音声から取り除く（存在していた場合）。
    び声ではありがちな気音成分が損なわれた部分に対して有効かと。

0.6.4 (2016年5月5日)
* 問題修正: "load-frq on/strict"のオプションでよくクラッシュしてしまう問題
* 問題修正: ライブラリーの呼び出しの仕方でピッチ推定性能が悪化してしまう問題
* 問題修正: デフォルトのwavtoolに"$direct=true"と"u"フラグの出力結果が一致しない問題

0.6.3 (2016年4月18日)
* 問題修正: 音高が抑えたノートにMCフラグ使うときクラッシュする問題
* 問題修正: オーバーラップノートのノート、そのPropertyがない場合クラッシュする問題
* 問題修正: frqeditorの「周波数表を初期化」するコールが無効の問題

0.6.2 (2016年4月16日)
* 新機能: UTAUの「$direct=true」をサポート。原音をモジュレーションなしに直出力する。一部の呼吸音用素材に有用。なお、Moresamplerは選択した範囲の最終ノートが$direct=trueの場合レンダリングされない問題がある。この問題はUTAUのresamplerとwavtoolとの通信インターフェイス設計の起因であり、解決出来ません。
* 新機能: "u"フラグ、上記問題の迂回策を提供する。u="unmodified/untouched”（触らない、改変されない)。
* 新機能: Growlエフェクトとして新しく3つのMoresampler Extension Flagsを提供した。
  MC: 粗雑感, 範囲は [0, 100], 実数
  MG: グロウル, 範囲は [0, 100], 実数
  MD: 歪み, 範囲は [0, 100], 実数
* 改良: 音高予測エラーが約1/10まで低減

0.6.1 (2016年4月7日)

* 問題修正：R直前のノート時々短くされる（wavtool mode)
* 問題修正：プロジェクト全域フラグがノートフラグに正しくオーバーライドされる問題。
* 改良：mrqファイルフォーマット更新
* 設定可能新機能：
  auto-update-llsm-mrq on/off
    wavファイルの更新時間と比較して、関連llsmとmrqを自動的更新する機能。
      もしwavファイルがllsmより新しい場合だと再分析を行う。
      そして、もしwavファイルがmrqよりも新しい場合、再分析する前にピッチ予測をも行う。

0.6.0(2016年 3月 30日)

* 問題修正: 64bitバージョンでUACの警告が絶えずに出てしまう問題
* 問題修正: wavtoolモードで1番目のノートのタイミングがずれる問題
* 問題修正: "b"フラグ時々子音抑えない問題
* 改良: 新しいノートもしくはプロジェクトが編集されない場合Moresamplerの再合成は要らなくなる
* 改良: F0予測をさらに頑健化
* 新機能: 8種類の Moresampler Extension Flag（略してMEF）を追加
    Mt: 引き締まりさ, 値範囲: [-100, 100], 実数
    Mb: 息の多さ, 値範囲: [-100, 100], 実数
    Mo: 口開け具合, 値範囲: [-100, 100], 実数
    Md: ドライな声, 値範囲: [-100, 100], 実数
    ME: フォルマントを強調, 値範囲: [-100, 100], 実数
    Mm: 0.3.0以前の古いと0.3.0以降の新しいスピーチモデルを補間する, 値範囲: [0, 100], 実数, デフォルト: 100
    Ms: 安定化, 値範囲: [0, 10], 整数
    Me: 0.5.0のeフラグ、伸縮方式をループ無効化してストレッチへ強制するフラグを"Me"へ改名しました。
  MEFについて詳細な情報はホームページの用例（英語）へご参照ください
* 新機能: Pフラグサポート、音量ノーマライズをサポート、値範囲は[0, 100]、
  synthesis-utau-style-normalization が 'full' もしくは 'voiced' だけ有効、デフォルトは86、本家resampler互換です。
* 設定可能新機能: 
  analysis-f0-range-from-path on/off
  フォルダー名から原音音域を判定する機能。
　例えばC_D4だとピッチは294Hz前後と推定する。

0.5.0(2016年 3月 1日)

* 音質を犠牲すること無く多数の最適化を追加。
Moresampler 0.5.0は0.3.1と比較して合成速度を500%高速化、分析速度を200%高速化LLSMファイルサイズを少々小さく、もしくは概ねwavファイルと同等の大きさになりますた。wavtoolモードのメモリー消耗も低減
* このリリースからから32bitと64bitを添附
* 問題修正：入力ピッチが100Hz以下の場合歪みが発生する可能性を修正
* 問題修正：WAVTOOLモードの違法メモリーアクセス
* 新機能：「e」と「:e」フラグのサポート。それぞれ「引き延ばす」と「ループ」を指定する。パラメータなし。
* 新機能：Bフラグ　0.05刻みで無声音をモジュレーションする機能（/t/ /k/ /s/など）。例えばb20は200%強化する。(+100%)、b-20は子音成分完全に消します。調整範囲は[-20, 100]、自然数。
* 新機能：Aフラグ、ピッチ調整に応じて有声音をモジュレーションする機能。Aの付加数字を指定することでビブラートを豊かにする事ができます。調整範囲[-100, 100]、自然数。
* 設定可能新機能：
multithread-synthesis on/full/off：
有効化すると、WAVTOOLモードにおける最終合成段階はマルチスレッド化（高速化）する。FULLの場合Resamplerモードもマルチスレッド化。
本機能はMoresamplerを多数走らせる「マルチプロセス（複数起動）」と本質的違います。

0.3.1 (2016年2月7日)

* 問題修正：wavtoolにおける清音の時態ディテールがロストする問題を修正
* 新機能：frqeditor サポート
* 新機能：分析及び合成のマルチプロセス化サポート
* 新設定可能項目：
>analysis-anti-distortion on/off 
有効するとき、Moresamplerはノイズによってディストーション、もしくは小さい音量（量子化誤差）が発生して、分析結果が不正確する問題、それらはピッチ変更するとき「けたたましい音」もしくは「不快な音」になる。が、この機能は（理論上）発音が少々悪化する（ハッキリせず）。

0.3.0 (2016年1月29日)

* 新機能: アルゴリズムの改良、及び内部データ構造の大幅変更によって、全体の約50％を書き直しました。
* 新機能: LLSMファイルの生成する前、desc.mrqファイルをサーチして反映するようにしました。.mrq存在しない場合、Moresamplerは必要されるファイルを生成します。
.mrqファイルの内容は一種の周波数表で、機能自体はfrqファイルに近く、手動もしくはツールを使って編集可能です。編集可能のGUIツールは現在開発中です。
* 新機能: ログファイルの構造を改良して、より問題点を突き止めやすくなりました。

0.2.2 (2016年1月4日)

* 問題修正：周波数上限がサンプリング周波数を超える場合メモリーオーバフロー発生する問題を修正。
* 問題修正：有声音と無声音のフレーム境界に内挿不良が発生する問題を修正

0.2.2 (2016年1月1日)
* 問題修正:Resamplerモードに於いて、入力音声より最終出力音声の方のサンプリングレートが高い場合、一部クリップ音が発生する問題を修正しました。

0.2.1 (2015年 12月 15日) 
* 問題修復: USTの終わりに多数のRノートがある場合、合成モード (wavtool モード) が触発されない問題。
* 問題修復: ピーチシフト後のゲインが正確に合わない問題
* 問題修復: 稀に発生するwav 出力の問題
* 問題修復: 各LLSMファイルの間最大ノイズ周波数上限が不整合の問題
* 機能改良: 正弦分解の時間軸解像度を高めました。

0.2.0 （2015年 11月 9日)

* 問題修復:ステレオWAVファイルを読み込んでいるときにクラッシュする問題
* 問題修復:未知の形式のピッチベンド情報を読み込むときにクラッシュする問題
* 問題修復:WAVTOOLモードで，設定どおりに 8/24/32-bit WAVファイルを出力できない問題
* 問題修復:ログファイルに，非ASCII文字が出力されない問題
* 問題修復:UTAU-ノーマライズモード(synthesis-utau-style-normalization)が有効なときに，ノイズ要素に対して不正確な
* 問題修復:GAIN値を付加していた問題
* 問題修復:WAVTOOLモードでのノイズ要素の連続不良，および，フェード不良
* 問題修復:再推定したF0が使用されていなかった問題
* 改良：ピッチ推定をより頑健に改良
* 改良：位相アライメントを改良
* 改良：ノイズエネルギー処理を改良（LLSM部）
* 新機能:UTAUモジュレーションパラメータをサポート
* 新機能:ログファイルに日時情報も出力（UTCベース）
* 新機能:ピッチ調整フラグ "t" をサポート
* 新機能:genderフラグ "g" をサポート (不安定．次期バージョンにて改良予定)

* 新設定可能項目：

>analysis-noise-reduction on/off
LLSM分析時に，自動的にノイズリダクションをする機能の有効化/無効化
その特性上，長い時間の WAVファイルになるほど効果あり

> synthesis-duration-extension-method stretch/loop/auto
音長拡張メソッドの選択
autoは，元音長と目標音長を基に使用メソッドを自動判定

>analysis-biased-f0-estimation on/off （実験的機能）
バイアスを加えたF0推定機能の有効化/無効化

音高連結と有声/無声推定の修正プロセスにおいて，有声/無声判定確率を強調する
主な効果は，ノイジーな，あるいは，粗い録音状態の音声をノイズと誤判定される率を抑えられること．
Moresamplerの識別プロセスは，まず大きいバイアスを加えて false positive(*１)を検出しますが，
この機能が有効であると，通常（*２）音声では有声/無声判定率が悪化します．

*１：
（真陽性）true positive： 「有声音が有声音として検出される」
（真陰性）true negative:　「無声音が無声音として検出される」
（偽陽性）false positive： 「有声音が無声音として誤検出される」
（偽陰性）false negative： 「無声音が有声音として誤検出される」

*２：
クリアな，スムーズな音声を指す．
MoresamplerはWORLDと同様に，スタジオ収録音声を想定しています．
そのため，有個性な音声，ノイズが比較的多い音声は苦手とされます．
前述のノイズリダクション機能でそれを補いますが，長い音声になるほど有効なため，補いに限度があります．
したがって，ノイズのある環境での連呼式収録は，現状では鬼門となります．
適応できる範囲が狭いため，現状ではデフォルトで off です．

--------
0.1.7（2015年 10月 9日．内輪向け実験バージョン）

* 問題修復:（一つ以上の）空ノートが選択され音声合成されるときにクラッシュする問題
* 問題修復:時々，音声合成が止まる問題
* 問題修復:（UTAUの仕様に合わせて）ピッチベンドが音長を超えて外挿されてしまう問題
* 問題修復:ノイズフィルタリングのための weak COLA（弱定数重畳加算法）の因子の問題
* 新機能：高域での位相の再構築とアライメントの改良（より自然に聴こえる歌声を生成）
* 新機能：一部で発生する「ガタッ」というグリッチ音を自動修復
* 新機能：音素の切り替え箇所の急激な位相変化を自動的にスムージング

新設定可能項目
synthesis-utau-style-normalization on/off
音量が 100%に設定されているとき，合成音声のピーク音量が最大音量の 1/2 を超える各セグメントに適応ゲインを適用する．
（UTAUスタイルノーマライズ）

synthesis-loudness-preservation on/off
変更後も，音響心理学ベースで知覚ラウドネスを維持する．

dump-log-file <path-of-log-file>/off
ログファイル出力（有効時は，ファイルパス指定を兼ねる）
*：Moresamplerに問題が発生したときには，ログファイルの開発者への送信をお願いします．


0.1.5 (2015年 10月 3日)
最初公開版
一部のustでMoresamplerがなにも出力しないバグを修復
一部の設定がmoreconfig.txtで設定可能にした

0.1.4 (2015年 10月 3日)(内部バージョン）
* 問題修復:二点クラッシュする問題を修復
* 問題修復:単位連結における軽微な問題を修復

0.1.3 (2015年 10月 3日)(内部バージョン）
* 新機能:入力/出力におけるwavの任意サンプリング周波数をサポート
* 新機能: LLSMパラメータいにおいてUTAUスタイル音量ノーマライゼーションをサポーチ
* 新機能: resampler互換性モード搭載

0.1.2 (2015年 10月 2日)(内部バージョン）
最初機能化バージョン
