素材の準備
さて、今回はストリングス(バイオリン)の音を作ってみたいと思います。まずは素材の準備。手持ちのライブラリの中から2つ選びブレンドさせました。サスティン音は切り取る箇所で最終的に全然違う音色になりますんで、とりあえず数秒鳴らす感じにしておきます。
また、当然ですが生楽器のサスティン音はピッチ、音量、音色ともに結構揺らいでます。必要以上の揺らぎは切り取る際の邪魔になりかねませんので、オートチューン系でピッチ補正を行ったり、ダイナミックEQでボワついている帯域を整えたりしておきます。下図で結構ピッチが揺らいでいる(オレンジのライン、緑色は補正後)ことが確認できると思います。
なお、サンプリングデータは32kHzで書き出しますから、折り返しノイズを軽減するためにローパスフィルタをかけておきます。使う音色にもよりますが10kHz、-12dB/octくらいでそれなりにイケるんではないでしょうか。下の方は20Hzでハイパスをかけてますが、それ以外は欲しい音色に応じてかけていけば良いと思います。
書き出し
仕様ではモノラル、32kHz、16bitとなってますが、この後の作業のために24bitで書き出しておきます。なお、この後はサンプル単位の作業になりますんで、サンプリングレートはここで32kHzに確定しておきます。ということで先ほどのローパスフィルタが必要というわけです。
サンプルの切り取り
素材が出来たら波形編集ソフトへ移動します。使うソフトは何でもいいですが、サンプル単位で編集できるものが必要です。私はWaveLab Elementsを使いました。
で、後で行うループの処理で最終的に5,000~8,000サンプルくらいの長さにしていきますので、この段階で切り出す範囲は大体8,000~10,000サンプル(約0.3秒)程度にします。調べてみると実際のゲームでの波形データも大体そんな感じでした。
切り出す際は色んな箇所を聴いてみて良さげな鳴り方をしている箇所を選んでください。ここでの切り出し方で最終的な音色が大きく変わってきます。ここが一番こだわるポイントになりますね。
ループの処理
SPC700で用いられる波形データはモノラル、32kHz、16bitという仕様以外にも、BRRに由来するものとして以下の仕様があります。
- サンプルデータの長さは16の倍数
- ループポイントも16の倍数単位
また、今回使用する予定のC700には、例えばKontaktにあるようなループのクロスフェード機能もありません(そもそもSPC700にはそんな機能はありません)。ちなみにchipsynth SFCにはクロスフェード機能はもちろんサンプル長やループポイントの16の倍数への自動調整機能があり、かなり便利なんですが、今回の作り方を覚えておくと他のサンプラーでも使いまわせるデータが出来上がりますのでこのまま進めます。
さて、次の作業です。ここではWaveLabのオーディオモンタージュで作業を行います。先ほど切り出したサンプルを2つ、波形の形を見ながら重ねます。私見ですが、波形を拡大して山谷が合うように重ねると結果が良いように思えます。この時、聴こえ方によってはクロスフェードの形を調整します。この重ねる作業の時、波形を大体合わせながら、さらには重ねるポイントを16の倍数にすることにより最終的な出来上がりの長さが16の倍数になるようにしておきます。
※今回はオーディオモンタージュにて手作業で処理しましたが、WaveLabであればループ箇所をクロスフェードさせる機能がありますのでそちらを使うこともできます。その場合はループ長を16の倍数にして「ループ調整」で適宜設定してください。しかしながら、BRRエンコードの仕様のことを考えると「ループ調整」でクロスフェード処理を行った場合は、この次の作業方法を変える必要がありそうです。まあ、最終的にループが綺麗に繋がればどちらでも良いと思います。
ループ範囲の確定
ループ範囲を決めます。"重ねたポイント=ループの長さ"になりますので、その長さで確定。マーカーを打っておきましょう。
理屈は下図に示しておきます。要するに本来ループの端で行うクロスフェード処理を真ん中で行おうということです。これにより端の部分の波形は完全一致することになります。
サンプルの追加
今回は波形すべてをループさせる仕立てにしてますので、以下のことを考慮しないといけません。
BRRの仕様上、データそのものは"前のサンプルとの差"が記録されてましてそれをデコードしていってるわけですが、データの構造およびその処理が16サンプル毎となってます。これにより、例えばループの開始ポイントを1サンプル目(先頭サンプル)にした場合は前のサンプルデータは無い(=0)なわけですから、エンコードおよびデコードの過程で本来の波形データとは異なるものになってしまいます(前のサンプルがそもそも0ってのはなかなかありえないと思います)。さらには、当然前のブロック(16サンプルの塊)も0ですからデコードの補間が変わる可能性が高く、結果的にせっかく設定したループがうまく繋がらなくなってしまいかねません。というわけで、これを回避すべくループの開始ポイントの前に1ブロック分(16サンプル)追加してあげます。
今回の作成方法であれば単純に上図のように範囲を拡げるだけでOK。補足で示したようにクロスフェード機能を使ってループ範囲を設定した場合は、ループ部分の最後から16サンプル分をループ範囲の前にコピーします。
最後にこの範囲を切り出し、ノーマライズをかけて16bitにて書き出したら完成です。
C700での読み込み
早速DAW上でC700に読み込ませましょう。
C700の仕様上、wavを読み込ませた場合は先頭にダミーブロック?が追加されてしまうようです。ちなみにchipsynth SFCではそのようにはなりませんでした。ですので今回のループポイントは16+16=32となります。その他、Root KeyやSample Rateの値を設定します。
今回作成した音色で鳴らしてみたものが以下です。
特に弦の打ち込み時にはADSRを細かく変更していくことがキモなようです。でないと、とってもベタ打ちになっちゃいます(それはそれで味ですが)。DQのデータでもかなり細かくいじってるようですね。なお、曲中で、特にアタックのコントロールを行う音色についてはこのように波形すべてをループさせたものを用意し、管などの素材そのもののアタックを使いたい音色についてはアタック+以降のサスティン部でループさせたものを用意すると良いかと思います。
とまあ、こんな感じで手間はかかりますが、より実機風の演奏に近づくのではないでしょうか。今回は弦の音色について解説しましたが、次回は素材のアタックを活かした管の音色や、鍵盤楽器や打楽器等の減衰系の音色の作り方についても書いていきます。