狠狠撸

狠狠撸Share a Scribd company logo
1週間ゲームジャムで作った
音楽レースゲームの話
ふみ@fumilin
自己紹介
? 株式会社Aiming
? ソフトウェアエンジニア
? Unity使い
? 音に触れる機会が多い
清水 史人(@fumilin/ふみ)
目次
? 一週間ゲームジャムと作ったゲームの話
? 可変テンポ曲の実装についての别解
https://unityroom.com/unity1weeks
1週间ゲームジャムで作った音楽レースゲームの话
https://unityroom.com/games/nouveaumonde
1週间ゲームジャムで作った音楽レースゲームの话
1週间ゲームジャムで作った音楽レースゲームの话
今回のゲームの要素
? ゴールと同時に曲が終了する
? ギミックに当たると自機は加速/減速/ジャンプ
? 地面に接地時、摩擦で少しずつ減速
? 自機は止まらない
? プラスなギミックに当たった時のタイミングが合う
? BPM可変にする必要がある
試行錯誤(1/2)
? ピッチ変更(PitchShifter)+再生速度変更(speed)の組み合わせ
? PitchShifterのパラメータを変更するとプチプチ音が途切れる
? このゲームではPitchShifterのパラメータを常に変更する必要がある
? WebGLではそもそもPitchShifterが使えない
=> 使えない
試行錯誤(2/2)
? 再生速度変更(speed)のみ
? 音源を複数用意してクロスフェード
? 音程が変わるのでクロスフェード時に不協和音が心配
? 1.5倍のBPMの曲を同時再生すると協和音っぽくなる
=> 行けそう!
協和音
? 相性の良い音の組み合わせ
? ドとファ、ドとソ、ドとド、ドとド↑など
? 周波数が単純な整数の比で表される
? 聴覚的には「うねり」の少ない音
? ドとソの例(2:3)→
不協和音
? 相性の悪い音の組み合わせ
? ドとド#、ドとファ#など
? 周波数が複雑な整数の比で表される
? 聴覚的には「うねり」が多かったりする
? ドとド#の例(15:16)→
パワーコード
? 音の濁りの少ない和音
? 音階的にはドとソの関係。完全五度。
? 平均律だとドが523.251Hzだとしたらソは783.991Hz=1.4983倍 1.5倍
? ドの音を1.5倍速で再生するとソの音になる
? 逆にドの音を0.666倍速で再生すると下のソの音になる
音素材の準備が大変
? BPM170で1:33の曲
? 33/50/75/113/170BPMの差分作成
? BPM33では8分の曲を書き出すことに
? intro(BPM33まで)は別ファイル
? 低速部分はドラムやベースをカット
ゲームを公開して
? わりと遊んでもらえた
? いくつかコメント付いた
平均律なBPM 速度変化による曲のアレンジについて
可変テンポ曲の実装についての别解
疑問に思っていた事
? 完全五度(パワーコード)の他に成立するものは?
? BPMに端数が出た場合の処理は?
? 低速時も高速時と同じアレンジの曲を流したらどう聞こえる?
? PitchShifter使った場合はどんな感じ?
? 平均律な音程で鳴らすとどんな感じ?
? クロスフェード時の音量はどうすればいい?
鲍苍颈迟测で実演
完全五度の他に成立するもの
? オクターブ
? 完全四度はちょっと辛い。
? 適当だとダメそう。
? 隣接BPMならコーラスっぽく聞こえるので低速域/高速域ともにセーフ
? 最高速の時だけ特別な曲を流すこともできそう。
BPMに端数が出た場合の処理
? 85BPMの曲があって、オクターブ下の音源作る時、DAW的に小数点が指
定できない場合43BPMで書き出したほうが良いのか、それとも42BPM
のほうがいいのかどちらですか?
? オクターブ伸長現象を考慮すると42BPMのほうが良さそう。
? 170BPMに対して84BPMを合わせても成立してそうだけど、コーラスっ
ぽさが出るので、必要でなければしなくてもいいかも。
http://gc.sfc.keio.ac.jp/class/2006_14454/slides/10/85.html
低速時も高速時と同じアレンジの曲を流したら
? 単体で聞いて成立してたら大丈夫。
? 多分好みによる。
? けどせっかくなら低速であるということを曲にこめたほうが良いはず。
? NouveauMondeでは、低速時は宇宙っぽく何もない/透き通った感じにし
た。
PitchShifterを使った場合
? 常にPitchShifter特有のノイズが入る
? ↑はFFTSizeやOverlapを増やせば多少軽減されるがタイミングずれる
? Pitch変更時に更にプチプチとしたノイズが入る
? 音量をVolumeとPitchShifterあり/なしで変更する必要がある
? 頻繁にPitchを変更しなければ使えそう。
平均律な音程で鳴らす
? 音的には良さそう。
? タイミングが合わない/フィードバックがないことがあるので、今回は仕
様を変更する必要がある。
- ギミックに当たったら必ず1音上昇/下降
- 摩擦で遅くなるのを無くす
- 理論値が出しやすくなるので差がつくように何か入れる
クロスフェード
? クロスフェードが必要かは、仕様による。曲のつなぎ目が分かるので、シームレスに
BPMが変わる場合は必要。
? PitchShifterを使う場合はプチプチノイズにごまかされるので無くても平気。
? LinearではなくEaseOutSine的な補間のほうが音量が沈まなくて良さそう。
? Linear `y=x` EaseOutSine `y=sin(x)`
? 例えば真ん中(0.5)だとLinear[A:0.5 B:0.5] EaseOutSine[A:0.7071 B:0.7071]
? 同じ曲の場合は0.5+0.5で1。別の曲は位相が合わなくて聴覚上の音量は減ってそう。
まとめ
? 2つの曲を重ねる場合は、オクターブまたは完全五度が良さそう。
? オクターブで重ねる場合、BPMの端数が0.5なら切り捨てが無難。
? 音量の補間はLinearではなくEaseOutSine。
? PitchShifterを使う場合は、パラメータの変更は最小限に。

More Related Content

1週间ゲームジャムで作った音楽レースゲームの话