void renderElement(const trailDesc & element, float level) { glColor4f(1.f * (element.group == 0), 1.f * (element.group == 1), 1.f * (element.group == 2), element.intensity * msys_powf(1.f - level, 1.5f)); glVertexPointer(2, GL_FLOAT, 0, &(element.vertices.x1)); glDrawArrays(GL_QUADS, 0, 4); }
float sorollet_saturate(float value, float saturate_max) { // http://www.musicdsp.org/showArchiveComment.php?ArchiveID=42 if(value < saturate_max) { return value; } else if(value > saturate_max) { float tmp = value - saturate_max; return (0.1f + saturate_max + tmp / (1 + msys_powf((tmp) / (1 - saturate_max), 2))); } else if(value > 1) { return ((saturate_max + 1) * 0.5f); } return value; }
float sorollet_synth_note_to_frequency(int note, int octave) { // return (440.0f * pow(2, ( ( note - 69 + (octave - 4) * 12 ) / 12.0) ) ); return (440.0f * msys_powf(2.0f, ( (float)( note - 57 + (octave - 4) * 12 ) / 12.0f) ) ); }