mirror of
https://github.com/ConjureETS/OuijaMTLGJ2016.git
synced 2026-03-24 02:01:06 +00:00
93 lines
2.1 KiB
C#
93 lines
2.1 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class SoundGen : MonoBehaviour
|
|
{
|
|
float[] ratios = new float[14];
|
|
AudioSource audio;
|
|
float sec;
|
|
float[] scale = new float[5];
|
|
float[] noteTimes = new float[6];
|
|
float currNoTime;
|
|
|
|
float BASE_NOTE;
|
|
int modif;
|
|
public int SilentInB;
|
|
public int minBeat;
|
|
public int maxBeat;
|
|
public int noteChanger;
|
|
public float slowerEffect;
|
|
void Awake()
|
|
{
|
|
modif = 0;
|
|
ratios[0] = 1f; ratios[1] = 55f/51.91f; ratios[2] = 55f/48.99f; ratios[3] = 55f/46.25f; ratios[4] = 55f/43.65f; ratios[5] = 55f/41.20f;
|
|
ratios[6] = 55f/38.89f; ratios[7] = 55f/36.71f; ratios[8] = 55f/34.65f; ratios[9] = 55f/32.70f; ratios[10] = 55f/30.87f; ratios[11] = 55f/29.14f;
|
|
ratios[12] = 2f; ratios[13] = 2f * ratios[1];
|
|
|
|
BASE_NOTE = 1f * ratios[noteChanger] / slowerEffect;
|
|
|
|
scale[0] = ratios[0];
|
|
scale[1] = ratios[3];
|
|
scale[2] = ratios[5];
|
|
scale[3] = ratios[7];
|
|
scale[4] = ratios[10];
|
|
//scale[5] = ratios[9];
|
|
//scale[6] = ratios[11];
|
|
//scale[7] = ratios[11];
|
|
//scale[8] = ratios[13];
|
|
|
|
noteTimes[0] = 4f;
|
|
noteTimes[1] = noteTimes[0] / 2;
|
|
noteTimes[2] = noteTimes[0] / 4;
|
|
noteTimes[3] = noteTimes[0] / 8;
|
|
noteTimes[4] = noteTimes[0] / 16;
|
|
|
|
currNoTime = noteTimes[Random.Range(minBeat, maxBeat)];
|
|
audio = GetComponent<AudioSource>();
|
|
audio.pitch = BASE_NOTE; //G#
|
|
sec = 0f;
|
|
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
|
|
sec += Time.deltaTime;
|
|
|
|
if(sec > currNoTime * (7f / 8f))
|
|
{
|
|
audio.volume -= Time.deltaTime * (currNoTime * (1f / 8f) * (8f / currNoTime));
|
|
}
|
|
if(sec > currNoTime)
|
|
{
|
|
|
|
//silent = (Random.Range(0,2) == 0) ? true : false;
|
|
audio.volume = 0f;
|
|
audio.Stop();
|
|
//if(!silent)
|
|
//{
|
|
sec = 0f;
|
|
if(Random.Range(0, SilentInB) == 0)
|
|
audio.volume = 1f;
|
|
currNoTime = noteTimes[Random.Range(minBeat, maxBeat)];
|
|
|
|
// if(Random.Range(0,5) == 0){}
|
|
// else
|
|
// {
|
|
modif += Random.Range(1, scale.Length);
|
|
audio.pitch = BASE_NOTE * scale[modif % scale.Length];
|
|
// }
|
|
|
|
//audio.time = currNoTime;
|
|
audio.Play();
|
|
//restart = true;
|
|
}
|
|
|
|
//Debug.Log(sec);
|
|
//Debug.Log(Time.deltaTime + " reg");
|
|
//audio.pitch += (Time.deltaTime * 1/100);
|
|
|
|
}
|
|
|
|
}
|