Beispiel #1
0
    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));
    }
Beispiel #2
0
    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);
    }