Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unityでインタラクティブミュージックやってみた

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Cova8bitdots Cova8bitdots
July 17, 2018
2.6k

 Unityでインタラクティブミュージックやってみた

サポーターズColab で登壇した時の資料です

Avatar for Cova8bitdots

Cova8bitdots

July 17, 2018
Tweet

Transcript

  1. ΠϯλϥΫςΟϒϛϡʔδοΫͱ͸ આ໌ ΠϯλϥΫςΟϒϛϡʔδοΫ ‣ ର࿩తͳԻָ ‣ ϢʔβʔͷೖྗʹΑͬͯԻָ͕มԽ ‣ ࡞ۂऀ(੡࡞ऀ)ͷҙਤ͠ͳ͍
 λΠϛϯάͰมԽ͢ΔՄೳੑ͕͋Δ

    ྫ) ɾϢʔβʔͷϘλϯೖྗͷλΠϛϯάͰ ɹBGM͕ऴΘΔʢεϓϥτΡʔϯͷχϡʔεը໘ʣ ɾCrypt of NecroDancer
 ɹγϣοϓ͕ۙͮ͘ͱϝϩσΟʔΛՎ͏ ɹళ௕ͷ੠͕ฉ͑͜Δ ΞμϓςΟϒϛϡʔδοΫ ‣ దԠతͳԻָ ‣ ঢ়گʹԠͯ͡ಈతʹมԽ͢ΔԻָ ‣ ࡞ۂऀ(੡࡞ऀ)ͷҙਤ௨Γʹ
 ੍ޚՄೳ ྫ) ɾεʔύʔϚϦΦϒϥβʔζͷ࢒Γ͕࣌ؒ
 ɹ୹͘ͳͬͨΒςϯϙ্͕͕Δ ɾϘεઓͷ֤ܗଶͰҟͳΔBGMΛྲྀ͢ ࢀߟɿCRIϛυϧ΢ΣΞɹήʔϜԻָΛม͑Δ ʮΞμϓςΟϒϛϡʔδοΫͱ͸ʁʯɹ(2009)
  2. ΠϯλϥΫςΟϒϛϡʔδοΫͱ͸ ͳͥ஫໨͞Ε͍ͯΔʁ ΠϯλϥΫςΟϒϛϡʔδοΫಋೖྫ ▸ FINAL FANTASY XV
 ಠࣗͷα΢ϯυγεςϜMAGI Λ։ൃɾར༻
 http://cedil.cesa.or.jp/cedil_sessions/view/1447


    ▸ εϓϥτΡʔϯγϦʔζ
 χϡʔεը໘Ͱεςʔδ঺հͷͱ͖ͷSEͱΩϟϥΫλʔͷಈ͖͕BGMͷ1,3ഥ໨ͱಉظ
 χϡʔεը໘ͳͲϢʔβʔͷϘλϯೖྗͷλΠϛϯάʹ߹ΘͤͯBGM͕ऴྃ͢Δ
 ৄࡉͳղઆΛ͍ͯ͠Δϒϩάɹhttp://blog.nine-gates.com/1640/
 ▸ FTL: Faster Than Light
 ότϧBGMͱ௨ৗBGM͕γʔϜϨεʹ੾ΓସΘΔ
 https://youtu.be/l6AJdn8RTNM AAA λΠτϧ͔ΒΠϯσΟʔζ·Ͱ༷ʑͳήʔϜͰಋೖɾ࣮૷͞Ε͍ͯΔ
  3. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ UNITY ͷΦʔσΟΦपΓͷ࿩(෮श) ▸ Unity5.x ͰΦʔσΟΦ͕ڧԽ͞Εͨ ▸ ݸਓతʹ͸5.x ͷΞοϓσʔτ͸ΦʔσΟΦΞοϓσʔτͱݺΜͰ·͢ɻͦΕ͘Β͍େਐา

    ▸ AudioMixer ͷ௥Ճ, SnapShot ػೳͷ௥Ճ ▸ MasterVolume ͷ؅ཧ͕Մೳ ▸ SnapShot ͷ੾ସʹΑΔμοΩϯάػೳͷ࣮ݱ ▸ LPF, HPF ͳͲͷ֤छϑΟϧλ͕ΧςΰϦຖʹదԠՄೳ
 ▸ ADPCM͕ར༻Մೳʹ ▸ ADPCMͱݴ͑͹εʔϑΝϛɻʢFCͰ΋Ұ෦Χηοτ͸ར༻͞Ε͍ͯͨʣ
 εʔύʔϚϦΦϒϥβʔζ3ͷBGMͰςΟϯύχͷԻͱ͔͕ೖͬͨͷ͸ADPCMͷ͓͔͛
 ▸ ωΠςΟϒϓϥάΠϯΛ͔͚ΔΑ͏ʹͳͬͨʂ ▸ αϯϓϧίʔυͷίϝϯτͷগͳ͞΍ʮͲ͏ͤઐ໳ͷਓ͔͠࢖ΘΜͰ͠ΐʯతͳײ͡ͳͨΊ
 ϋʔυϧߴ͍Ͱ͢ʢମݧஊ ▸ ҰԠαϯϓϧΛՃ޻ͯ͠ಠࣗϓϥάΠϯΛ࡞ͬͯΈ·͕ͨ͠
 Ի৴߸ॲཧͷجຊతͳ஌͕ࣝແ͍ͱख΋଍΋ग़·ͤΜɻ ▸ Ұݟ༷׬શ͓அΓ
  4. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ UNITY ͷΦʔσΟΦपΓͷ࿩(ϛυϧ΢ΣΞपΓ) ▸ ήʔϜۀքͰ࢖ΘΕ͍ͯΔϛυϧ΢ΣΞ ▸ CRI ADX2( CRI

    MiddleWare) ▸ ࠃ಺ͷѹ౗తγΣΞ཰ ▸ ॻ੶΋͋ΔͷͰ೔ຊޠ৘ใ͕ଟ͍
 ▸ Wwise( Audiokinetic ) ▸ ίϯγϡʔϚʔͰͷ࠾༻཰͕ߴ͍ ▸ ੈքతʹඪ४Ͱ࢖ΘΕ͍ͯΔ ▸ ADX2ͰՄೳͳ͜ͱ͸େ఍Ͱ͖Δ ▸ ϓϥάΠϯΛಠࣗʹ։ൃ΋Մೳ
 ▸ FMOD( Firelight Technologies) ▸ UnityͷΦʔσΟΦͷத਎ ▸ ѹ౗త೔ຊޠ৘ใͷগͳ͞(ന໨
  5. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ UNITY ͷΦʔσΟΦपΓͷ࿩ ▸ ࠓճ͸͜ΕΒϛυϧ΢ΣΞʹཔΒͳ͍ͰؤுͬͯΈ·͢
 ֤छϛυϧ΢ΣΞఏڙͷձ༷ࣾ͢Έ·ͤΜ ▸ ඇϛυϧ΢ΣΞͰ͋Ε͹ @geekdrums

    ͞Μ࡞੒ͷMusicEngine 
 ͱ͍͏ͷ͕͋Γ·͢(ࠓճ͸࢖͍·ͤΜ)
 https://github.com/geekdrums/MusicEngine
 
 
 ࢀߟ ▸ UnityͰα΢ϯυΤϯδϯ(ADX2, Wwise, FMOD)Λѻ͏ࡍʹ
 ͓͍͑ͨ͞ࣄ
 https://qiita.com/dTAT/items/2226d261498947dc2bda
 ݟʹߦͬͨΒ͍͍ͶϘλϯΛԡͦ͏ʢϚʣ
  6. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ α΢ϯυԋग़ ▪جຊతͳ΋ͷ ‣ ϛϡʔτ ‣ LowPassFilter ‣ HighPassFilter

    ‣ Reverb ‣ Echo ‣ Fade ‣ FadeIn ‣ FadeOut ‣ CrossFade ▪ͪΐͬͱߴ౓ ‣ μοΩϯά ‣ αΠυνΣʔϯೖྗ ‣ ࠶ੜτϥοΫͷมಈ ‣ τϥοΫ(ϨΠϠʔ)ͷ૿ݮ ‣ ࠶ੜҐஔͷγʔΫ ‣ ϏʔτಉظʢΫΥϯλΠζʣ ‣ ֤छϑΟϧλ ‣ ϑϥϯδϟʔ ‣ ϐονγϑτ ؔ܎͕ਂ͍߲໨ ؔ܎͕ਂ͍߲໨
  7. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ CROSSFADE ▸ Cross FadeͷΠϝʔδ͸ҎԼͷײ͡ ࣌ؒ Իྔ CrossFade Πϝʔδ

    BGM_A BGM_B τʔλϧͷԻྔ ࣌ؒ Իྔ ࣮ࡍ BGM_A BGM_B τʔλϧͷԻྔ ɾΠϝʔδ௨ΓʹͳΒͳ͍ ɾCrossFadeதʹτʔλϧͷԻྔ͕
 ɹมԽͯ͠͠·͏
  8. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ CROSSFADE ▸ ௚ઢมԽͷ৔߹ ▸ FadeIn : A(t) =

    t ▸ FadeOut: B(t) = (1-t ) ▸ ΤωϧΪʔ ʹ ▸ ͜͜ͰS1 (t) = S2 (t)=1 ͱԾఆ͢Ε͹
  9. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ CROSSFADE ▸ ࡾ֯ؔ਺ͷΧʔϒͰ࣮૷ͯ͠ΈΔ ࣌ؒ Իྔ CrossFade Πϝʔδ BGM_A

    BGM_B τʔλϧͷԻྔ ࣌ؒ Իྔ ࣮ࡍ BGM_A BGM_B τʔλϧͷԻྔ ɾԻྔมԽ͕ແ͍͔Βҧ࿨ײΛݮΒͤͨ ɾࣗવʹBGMΛ੾Γସ͑Ͱ͖Δ
  10. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ ࠶ੜτϥοΫͷมߋ ▸ ॎͷભҠ ▸ ࠶ੜτϥοΫ(AudioSource)ͷ૿ݮ ▸ ผָثͰԋ૗͞Ε͍ͯΔτϥοΫʹ੾Γସ͑Δ
 https://twitter.com/giginet/status/985420935657275392


    youtu.be/2fDdrdVjVIw
 ▸ BGMʹϦζϜηΫγϣϯ͕௥Ճ͞ΕΔ
 youtu.be/l6AJdn8RTNM ▸ ԣͷભҠ ▸ ࠶ੜҐஔΛγʔΫ ▸ 1A -> 2A -> Ξ΢τϩ ▸ ֤·ͱ·ΓͰτϥοΫΛ෼ׂ͢Ε͹
 τϥοΫͷ੾Γସ͑ʹΑΔٖࣅతԣભҠͷ࣮ݱՄೳ
  11. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ ॎͷભҠ ▸ جຊํ਑ɿAudioSourceͷ਺ʹΑΔΰϦԡ͠ ▸ ָ֤ثɺϨΠϠʔຖʹԻݯΛ༻ҙ ▸ શ෦ಉ࣌࠶ੜͭͭ͠ɺ֤AudioSourceͷԻྔΛૢ࡞ ▸

    ͋·Γʹ΋ྔ͕ଟ͘ͳΔͱॏ͍ ▸ ΍Γ͍ͨ৔߹͸ϛυϧ΢ΣΞʹཔΖ͏(εςϚ)
 ▸ ύλʔϯʹԠͯ͡ԻݯΛ༻ҙ ▸ BGMΛ֤ύλʔϯʹԠͯ͡੾Γସ͑Δ ▸ CrossFade͕׆͖Δ!!
  12. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ ԣͷભҠ ▸ Unity ͰભҠϙΠϯτΛఆٛ͢Δͷ͸৘ใྔతʹ΋ॲཧతʹ΋೉͍͠ ▸ ಛʹLoopԻݯΛ࢖͏ͱͳΔͱ೉қ౓͕͞Βʹ্͕Δ
 ▸ ભҠϙΠϯτΛݶఆ֤ͯ͠τϥοΫΛ༻ҙ

    ▸ ΠϯτϩɾϧʔϓɾΞ΢τϩͰ۠੾Δ ▸ ϢʔβʔͷλΠϛϯάΛݟͭͭʮྑ͍λΠϛϯάͰτϥοΫΛ੾Γସ͑Δʯ ▸ ʮྑ͍λΠϛϯάʯ͕ඇৗʹॏཁ
 গ͠Ͱ΋ζϨΔͱϢʔβʔʹόϨΔˍؾ࣋ͪѱ͍α΢ϯυʹͳΔ ▸ CrossFade͕׆͖Δ!!
  13. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ ࠶ੜτϥοΫͷมߋ ▸ ભҠ͢Δͱ͖ͷ஫ҙ఺ ▸ ਺ms Ͱ΋ζϨΔͱBGMʹʮউखʹʯΤϑΣΫτ͕͖ͭ·͢ ▸ ݻఆ௕ζϨΔ

    ▸ EchoϑΟϧλ͕͔͔ͬͨঢ়ଶ ▸ ͣΕ෯͕࣌ؒͰมΘΔ ▸ ϑϥϯδϟʔ͕͔͔ͬͨঢ়ଶ ▸ ϑϥϯδϟʔɿϗϫΠτϊΠζͰδΣοτΤϯδϯΛ࡞ΔͳͲͷΤϑΣΫλʔ
 ▸ τϥοΫؒͰʮςϯϙ(BPM)ʯ͕ҟͳΔͱͦ΋ͦ΋ؾ࣋ͪѱ͍Ͱ͢ɻ ▸ FadeOut͸ૣ͘ɺFadeIn͸௕ΊͳͲ޻෉͕ඞཁ
 ▸ τϥοΫؒͰௐʢίʔυʣ͕ҧ͏ͱ৔߹ʹΑͬͯ͸ෆڠ࿨Ի ▸ ୹2౓, ૿4౓ ҟͳΔ৔߹͸ɺΑ΄ͲҙਤతͰͳ͚Ε͹ආ͚Δ΂͖ ▸ 3౓, 4౓, 5౓, 8౓(ΦΫλʔϒ্) ͋ͨΓͰखΛଧͭΑ͏ʹ͢Δͱྑ͍
  14. UNITY ͰΠϯλϥΫςΟϒϛϡʔδοΫΛߦ͏ʹ͸ʁ ΠϕϯτͷϏʔτಉظ(ΫΥϯλΠζ) ▸ ࠶ੜτϥοΫʹʮBPMʯʮഥࢠʯΛఆٛ ▸ ຖϑϨʔϜ؂ࢹͯ͠೚ҙͷഥʹ੾ΓସΘͬͨΒΠϕϯτΛ࣮ߦͤ͞Δ ▸ [஫ҙ] ▸

    BPM͕͋·Γʹ΋ߴ͘ɺϏʔτ͕ࡉ͔͍ͱ
 ήʔϜΤϯδϯͷΞοϓσʔταΠΫϧ͕ߋ৽ݕ஌ʹؒʹ߹Θͳ͘ͳΔ ▸ 30FPS: 33[ms], 60FPS: 16[ms] ▸ BPM240 : 250[ms] : 62.5[ms] : 31.25[ms] 
 ▸ ԻήʔͰOnBeat ͷલޙ൑ఆΛ͠Α͏ͱ͢Δͱ
 લޙ1FະຬͩͬͨΓ͢ΔՄೳੑ͕͋Δ
  15. α΢ϯυγεςϜͷσϞϯετϨʔγϣϯ ੡࡞தͷα΢ϯυγεςϜ ▸ σʔλఆٛɿScriptableObjectΛར༻ ▸ AssetBundleԽ͠΍͍͢ ▸ ύϥϝʔλ͕๲େ( 30 ఔ౓)

    ▸ Inspector Ͱઃఆ͢Δͷ͸ݫ͍͠ ▸ ઐ༻ͷΦʔαϦϯάπʔϧΛ༻ҙ ▸ Load࣌ʹϓϩδΣΫτ಺ͷશՕॴʹ͋Δ
 AudioData ͷScriptableObjectΛऔಘ
  16. α΢ϯυγεςϜͷσϞϯετϨʔγϣϯ ੡࡞தͷα΢ϯυγεςϜ ▸ ϏʔτಉظγεςϜʹ͍ͭͯ 1. ΠϕϯτQueueΛఆٛ
 
 2. SoundManagerʹରͯ͠ΠϕϯτΛొ࿥
 


    
 3. SoundManagerଆͰBGMΛ؂ࢹͯ͠
 ࢦఆͷϏʔτʹ͖ͨΒQueueશ࣮ͯߦ ͱ͍͏ײ͡Ͱ࣮૷͍ͯ͠·͢ ʢҙ֎ͱ͜Μͳ΋ΜͰ͍͚ͪΌ͍·͢ʣ
  17. α΢ϯυγεςϜͷσϞϯετϨʔγϣϯ ੡࡞தͷα΢ϯυγεςϜ ▸ ॾࣄ৘ʹΑΓ·ͩGitHub্ʹެ։Ͱ͖·ͤΜʢ͝ΊΜͳ͍͞ʣ ▸ ςϯϙ͕Մมͳ৔߹ͷϏʔτಉظ͕ະରԠ ▸ LoopτϥοΫΛෳ਺ઃఆՄೳʹ֦ு ▸ Ξ΢τϩͷઃఆ௥Ճ

    ▸ αϯϓϧ͕Θ͔ΓͮΒ͍ͷͰΘ͔Γ΍͍͢αϯϓϧΛ࡞Δ ▸ υΩϡϝϯτ੔උ͖͠Εͯͳ͍ ▸ ֤छBugFix ▸ etc… ▸ ࠓळެ։༧ఆͰؤு࣮ͬͯ૷͍ͯ͠ΔͷͰ΋͏গʑ͓଴͍ͪͩ͘͞ ▸ ͪΌΜͱ͓൸࿐໨ग़དྷΔΑ͏ʹͳΓ·ͨ͠ΒɺͲ͔͜ͷษڧձͳͲͰൃද͢Δ༧ఆͰ͢
  18. UNITYͰΠϯλϥΫςΟϒϛϡʔδοΫ΍ͬͯΈͨ ·ͱΊ ▸ ΠϯλϥΫςΟϒϛϡʔδοΫ ▸ γʔϜϨεʹۂ͕มΘΔ ▸ Πϕϯτ͕Իָతʹؾ࣋ͪͷྑ͍λΠϛϯάͰ࣮ߦ͞ΕΔ ▸ Unity

    Ͱ΋ؤுΕ͹εΫϦϓτॻ͚ͩ͘Ͱ
 ͦͦ͜͜ΠϯλϥΫςΟϒϛϡʔδοΫ͸ग़དྷ·͢ ▸ ௿ෛՙɾ΋ͬͱ৭ʑ΍Γ͍ͨ৔߹͸ϛυϧ΢ΣΞΛ࢖͓͏ ▸ ͦ΋ͦ΋ద੾ͳ৔໘Ͱ࢖Θͳ͍ͱޮՌബͳͷͰ
 ήʔϜɾөըͳͲ͔Βԋग़ϓϥϯΛษڧ͠Α͏