2015年11月10日火曜日

海苔音源をプログラミングでなんとかしてみるソフトをちょっとだけ試してみた

Twitterで流れてきた音圧戦争の果てに潰れた音源を補間する…というソフト(のサンプル)をちょっとだけ試してみた。





<正弦波の場合>
試す前から言ってる事がなんか違う気がしてならないけどそれは置いといて、

まずサンプルめいて付いてきた10Hzは人間は聞いてもまずわからないのでWaveGaneで聞こえる正弦波1kHzを用意。
そもそも20Hz以下は大半の人間は可聴範囲外です

16bit 44.1kHzなWAVEファイルの1kHz正弦波


それをただ音量上げてから補正してみると画像的には綺麗に。結果をWAVEファイルで貼り付け(重い&IE非対応)

ごめんこの画像1kHzだったorz
1kHz正弦波+1dB


補正した1kHz正弦波+1dB


1kHz正弦波+2dB


補正した1kHz正弦波+2dB


補正した1kHz正弦波+2dB(プリゲイン設定-1)


1kHz正弦波+6dB


補正した1kHz正弦波+6dB


「なんで画像Waveconvでノーマライジングしてんの?」ごもっとも。出力波形を全く見ずにとりあえず突っ込んでました()





<楽器の音の場合>
とりあえず手元にあった素材がこちら↓

某R○land TD-10?のスネアの音らしい。既にクリッピングしてるよやったね(棒)
著作権的にヤヴァイので上げられないよ!

こいつを元波形としてとりあえず補正してみるとこうなる↓


設定-3の場合


設定-6の場合

なんかみょいーんと伸びていってる箇所があるんですがこれは。

大きく潰れるとどうにもならない模様。まあ補間しようにも手がかりが無いからなぁ。

お次は元波形を更に6dB持ち上げてみた奴↓

派手にクリッピングしてます。ちなみに私の耳では割れてるのかわかりませんでした()


流石に元波形からは遠い感じが。まあ6dBもクリッピングさせる事なんてそうそう無いはず(慢心)





<あくまでサンプル>
ちなみにこのソフトで補正できるのはクリッピングだけなので本当に海苔な曲には無力です。

具体的にはWAVES L3-16Sonnox Inflator等々でギッタンギッタンにしてあるのはどうあがいても無理です。

元波形をKRISTAL Audio Engine上のTLs 4032 Pocket Limiterでギッタギタに潰した波形。

見ての通り露骨にクリッピングしてる部分がないです。ちなみに補正かけても特に変化しませんでした(ぇ

例としてテキトーに海苔音源を作成↓Jeroen Breebaart Broadcastでギタギタに潰しております。

拡大してみるとこんな感じに。

補正かけると音量がすごい小さくなっただけで終了。というかなんであんなクリップすんの…?

結論(という程テストしてないが)としては海苔音源というより「マスタリング工程で1dB程度クリッピングしてる音源」に関しては効果がありそう。


あと何故かFFmpeg rev.34028でWAVE変換したファイルや上記SoundFontの波形を読み込むとエラーが出た

Creative WaveStudio7で名前を付けて保存しなおしても駄目。uLilithでWAVEからWAVEに変換しなおすと読み込めた謎。

とりあえず携帯動画変換君付属のffmpeg build 4759で出力したWAVEは読めたのでそれで処理しとけばいいや…




※2016/2/14追記※
作者様から新バージョンが出たとのコメントを頂きましたので試してみますた。
結構前(2016/1/1!!)に出てたのに気づいてなくてすいません…

今回は時間の都合で1dBクリッピングしてる1kHz正弦波のみで実験(手抜きじゃないよ!)

元波形と1dBクリッピングは上に貼ってあるので省略な。

スプライン補間版(decropper.exe)かけた1kHz正弦波(1dBクリッピング)


ぶっちゃけ今回も耳じゃよくわからなかったので元ファイルとの差分を用意してみたよ!


アッハイ

音量的に写りもしなかったのでWaveSpectraに投げ込んでみるとこんな感じでした。

ぶっちゃけ差分の作り方がひどくテキトーなのでそこで生じた分もありそうなのよね…でも-60dB以下だった模様

ちなみに元ファイルと1dBクリッピング版の差分はこんな感じでした。




前回試したラグランジュ補間版と比較するとこんな感じに。


正弦波ではスプライン版の方がいい感じかな?ゲイン考えなくていいし

で、前回同様クリッピングしてる某Soundfontのスネア音をスプライン版にかけてみたよ↓


繋がりがラグランジュ版より自然になってる…けど元波形はおそらく下のチャンネルと同じなのよね。

過剰にクリッピングした音源に対しての補間量に関しては予測が難しそうね(無知)

なお今回もこのスネアの波形投げ込むとエラー吐いたのでuLilithでWAVE→WAVE変換してから読ませてます。


という訳でテストに使ってた携帯動画変換君の設定コピペも更新。

[Info]
Title=クリッピングした波形の補修
TitleE=CROPPED WAVE REPAIR
Description=http://qiita.com/YSRKEN/items/eca369f7a5a1b2b2385d
DescriptionE=http://qiita.com/YSRKEN/items/eca369f7a5a1b2b2385d

[Item0]
Title=クリッピングした波形の補修(ラグランジュ補間)
TitleE=CROPPED WAVE REPAIR(LAGRANGE INTERPOLATION)
Command0=""<%AppPath%>\cores\croprepair\croprepair2" "<%InputFile%>" -3"
Command1="mv -f "<%AppPath%>\repair+.wav" "<%OutputFile%>.wav""
Command2="rm "<%TemporaryFile%>""

[Item1]
Title=クリッピングした波形の補修(ラグランジュ補間) w/ 入力WAVE変換
TitleE=CROPPED WAVE REPAIR(LAGRANGE INTERPOLATION) w/ WAVE CONV.
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn "<%TemporaryFile%>.wav""
Command1=""<%AppPath%>\cores\croprepair\croprepair2" "<%TemporaryFile%>.wav" -3"
Command2="mv -f "<%AppPath%>\repair+.wav" "<%OutputFile%>.wav""
Command3="rm "<%TemporaryFile%>.wav""

[Item2]
Title=クリッピングした波形の補修(スプライン補間)
TitleE=CROPPED WAVE REPAIR(SPLINE INTERPOLATION)
Command0=""<%AppPath%>\cores\croprepair\decropper" "<%InputFile%>" "<%OutputFile%>_repair.wav" 5"
Command1="rm "<%TemporaryFile%>""

[Item3]
Title=クリッピングした波形の補修(スプライン補間) w/ 入力WAVE変換
TitleE=CROPPED WAVE REPAIR(SPLINE INTERPOLATION) w/ WAVE CONV.
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn "<%TemporaryFile%>.wav""
Command1=""<%AppPath%>\cores\croprepair\decropper" "<%TemporaryFile%>" "<%OutputFile%>_repair.wav" 5"
Command2="rm "<%TemporaryFile%>.wav""


え?普通のWindowsにmvは無い?だってmoveだと動かなかったんだもん…
さも当然のようにmvで書いて後から普通のWindowsには無い事に気付いた模様

move使うように書き換えるかMinGWインスコして、どうぞ(手抜き)

1 件のコメント:

  1. そのプログラムの改良版も出しました。ご確認いただけると幸いです
    http://qiita.com/YSRKEN/items/eca369f7a5a1b2b2385d

    返信削除