Patent ID: 7620656

Claim:
A system for synchronizing a visualization with audio samples comprising: a processor; and computer-readable storage media having instructions stored thereon, that if executed by the processor, cause the processor to perform a method comprising: means for receiving and preprocessing audio samples before the samples are rendered by a renderer that comprises part of a media player, to provide characterizing data derived from each sample, the characterizing data comprising a timestamp associated with each audio sample, the timestamp being assigned in accordance with how many, if any, additional audio samples are scheduled to be rendered and when the audio sample is calculated to be rendered by the renderer, wherein the audio samples are preprocessed by a Fast Fourier Transform to provide frequency data associated with the audio samples wherein the characterizing data further comprises the frequency data; means for holding the characterizing data using a storage medium associated with an audio sample; means for ascertaining the characterizing data associated with an audio sample that is currently being rendered by the renderer; said receiving and preprocessing further comprising ascertaining said characterizing data by querying the renderer for a time associated with the currently-rendered audio sample, and then using said time to identify a data structure having a timestamp that is nearest in value to said time; means for receiving characterizing data that is associated with the storage medium, having the timestamp that is nearest in value to said time, and using the characterizing data to render a visualization that is synchronized with the audio sample that is being rendered by the renderer, wherein the frequency data is used to render the visualization, wherein the visualization is rendered in a rendering area in which other media types can be rendered; and means for defining a frame rate at which the visualization is to be rendered, setting a threshold associated with an amount of time that is to be spent rendering the visualization, monitoring the time associated with rendering the visualization, determining whether the visualization rendering time exceeds the threshold, and providing an effective frame rate for rendering the visualization that is longer than the defined frame rate if the determined visualization rendering time exceeds the threshold.