package com.increpare.bfxr.synthesis.Synthesizer
{
public class PinkNumber
{
private var max_key:int;
private var key:int;
private var white_values:Vector.<int> = new Vector.<int>();
private var range:uint;
public function PinkNumber()
{
max_key = 0x1f; this.range = 128;
key = 0;
for (var i:int = 0; i < 5; i++)
white_values.push(Math.random() * (range/5))
}
public function GetNextValue():Number
{
var last_key:int = key;
var sum:uint;
key++;
if (key > max_key)
key = 0;
var diff:int = last_key ^ key;
sum = 0;
for (var i:int = 0; i < 5; i++)
{
if (diff & (1 << i))
white_values[i] = Math.random() * (range/5);
sum += white_values[i];
}
return sum/64.0-1.0;
}
};
}