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;
+	}
+}