Mercurial > hg > Game > Games
diff Orchestland/Assets/Scripts/MusicPlayer.cs @ 1:f7675884f2a1
Add Orchestland project
author | Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:09:20 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orchestland/Assets/Scripts/MusicPlayer.cs Fri Jul 17 23:09:20 2015 +0900 @@ -0,0 +1,48 @@ +using UnityEngine; +using System.Collections; + +public class MusicPlayer : MonoBehaviour { + public float bpm_default = 120f; + public int beat_change = 4; + public int beat_unit = 5; + public TempoCheck tempo_check; + + AudioSource source; + TimeStretch timeStretch; + float bpm_now; + int beat_count = -99; + int beat = 0; + float beat_f = 0f; + // Use this for initialization + void Start () { + source = GetComponent<AudioSource> (); + timeStretch = GetComponent<TimeStretch> (); + bpm_now = bpm_default; + } + + // Update is called once per frame + void Update () { + float time = source.time; + beat_f = time / (60f / bpm_default); + beat = Mathf.FloorToInt (beat_f); + if (beat_count != beat/beat_change) { + bpm_now = Mathf.Floor (tempo_check.GetTempoAverage ()/beat_unit)*beat_unit; + if (bpm_now > 80 && bpm_now < 200) { + timeStretch.speed = bpm_now / bpm_default; + } + + beat_count = beat/beat_change; + } + } + + public float GetBPM(){ + return bpm_now; + } + + public int GetBeat(){ + return beat; + } + public float GetBeatFloat(){ + return beat_f; + } +}