Exemplo n.º 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));
    }
        public NoiseGenValues(AllNoiseValues parent, PerlinParameters parameter, Vector2 center)
        {
            this.parameter = parameter;
            prng           = new System.Random(this.parameter.pSeed);
            octOffsets     = new Vector2[this.parameter.pOctaves];
            float amplitude = 1.0f;

            for (int i = 0; i < this.parameter.pOctaves; i++)
            {
                float offsetX = prng.Next(-100000, 100000) + this.parameter.pOffset.x + center.x;
                float offsetY = prng.Next(-100000, 100000) - this.parameter.pOffset.y - center.y;

                octOffsets[i] = new Vector2(offsetX, offsetY);
                // Increase maxValue by amplitude (for avging)
                parent.maxPosHeight += amplitude;
                amplitude           *= parameter.pPersistance;
            }

            if (this.parameter.pScale.x <= 0.0f)
            {
                this.parameter.pScale.x = 0.0001f;
            }
            if (this.parameter.pScale.y <= 0.0f)
            {
                this.parameter.pScale.y = 0.0001f;
            }
        }
Exemplo n.º 3
0
    private static int[,] GetNoiseMap(PerlinParameters perlinParameters)
    {
        int   width       = perlinParameters.width;
        int   length      = perlinParameters.length;
        int   seed        = perlinParameters.seed;
        int   range       = perlinParameters.range;
        int   octaves     = perlinParameters.octaves;
        float persistance = perlinParameters.persistance;
        float lacunarity  = perlinParameters.lacunarity;

        return(PerlinNoise.GenerateHeights(width, length, seed, range, octaves, persistance, lacunarity));
    }
Exemplo n.º 4
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);
    }