C# (based by Unity)
유니티 비트 쪼개기
grast
2022. 12. 1. 00:44
반응형
소스코드
public class MusicBeatSplitting : MonoBehaviour
{
private double bpm = 95.0;
public AudioClip sfx;
public AudioClip music;
public AudioSource sfxSource;
public AudioSource musicSource;
private Coroutine beatSplitting;
// Start is called before the first frame update
void Start()
{
sfxSource.clip = sfx;
musicSource.clip = music;
musicSource.Play();
beatSplitting = StartCoroutine(beatSplit());
}
// Update is called once per frame
void Update()
{
}
private IEnumerator beatSplit()
{
while(musicSource.isPlaying)
{
sfxSource.Play();
yield return new WaitForSeconds((float)(60.0 / bpm));
}
yield break;
}
}
핵심은 IEnumerator를 반환하는 코루틴함수 beatSplit() 인데 while문에서 60.0 / bpm 으로 설정함
각 악곡마다 정해진 bpm으로 60.0을 나누면 정확하게 4비트 등분이 됨.
각 게임의 경우에 따라 8비트, 16비트, 24비트, 32비트 등 세분화된 비트쪼개기는 개발자별 역량이 되는대로 알아서 커스텀할 것.
주의사항은 악곡의 구성인데 최초 악곡이 시작되기 전 무음구간이 존재하는 경우에는 비트쪼개기가 맞지 않을 수 있음. 또한 사용할 악곡의 BPM을 소숫점을 절대로 버리는 일 없이 정확하게 알아야함.
동영상에서 사용된 악곡은 펌프 잇 업 Infinity 에 수록된 WezDevine - Bang The Bass 라는 악곡. BPM은 95.0
핵심정리
4비트 나누기 = 60.0 / (악곡의 BPM);
n비트는 4비트 나누기 기준으로 알아서 커스텀
p.s 001: 동영상이 짤렸을 경우 이쪽으로(네이버 블로그)
반응형