public void Play() { int[] melody; PerlinParameters perlinParameters; MelodyParameters melodyParameters; perlinParameters = new PerlinParameters(); perlinParameters.range = 2 * 8; perlinParameters.length = 2; perlinParameters.width = 4; melody = MelodyProvider.GenerateMelody(perlinParameters); MelodyProvider.PrintMelodyData(melody); StartCoroutine(PlayMelody(melody)); perlinParameters.range = 1 * 8; perlinParameters.length = 1; perlinParameters.width = 4; melodyParameters = new MelodyParameters(); melodyParameters.octave = 4; melody = MelodyProvider.GenerateMelody(perlinParameters, melodyParameters); StartCoroutine(PlayMelody(melody: melody, initialWait: 4, noteDuration: 2)); perlinParameters.range = 1 * 8; perlinParameters.length = 1; perlinParameters.width = 8; perlinParameters.seed = 44; melodyParameters = new MelodyParameters(); melodyParameters.octave = 6; melody = MelodyProvider.GenerateMelody(perlinParameters, melodyParameters); StartCoroutine(PlayMelody(melody: melody, initialWait: 8, noteDuration: 4)); }
public static int[] GenerateMelody(PerlinParameters perlinParameters, MelodyParameters melodyParameters = null) { if (melodyParameters == null) { melodyParameters = new MelodyParameters(); } Debug.Log("Generating melody with parameters: " + melodyParameters.ToString()); const int NOTE = 0; const int PAUSE = 1; int[,] noiseMap = GetNoiseMap(perlinParameters); int[] melody = new int[noiseMap.GetLength(0)]; for (int i = 0; i < melody.Length; i++) { melody[i] = noiseMap[i, NOTE] + melodyParameters.octave * 12 + melodyParameters.tone; } return(melody); }