<p>I'm about to start a project that will record and edit audio files, and I'm looking for a good library (preferably Ruby, but will consider anything other than Java or .NET) for on-the-fly visualization of waveforms.</p>

<p>Does anybody know where I should start my search?</p>

[{'answer_id': 41209, 'author': 'hoyhoy', 'author_id': 3499, 'author_profile': 'https://Stackoverflow.com/users/3499', 'pm_score': 3, 'selected': True, 'text': "<p>That's a lot of data to be streaming into a browser.  Flash or Flex charts is probably the only solution that will be memory efficient.  Javascript charting tends to break-down for large data sets. </p>\n"}, {'answer_id': 41213, 'author': 'hoyhoy', 'author_id': 3499, 'author_profile': 'https://Stackoverflow.com/users/3499', 'pm_score': 1, 'selected': False, 'text': '<p>The other option is generating the waveforms on the server-side with GD or RMagick.  But good luck getting RubyGD to compile.</p>\n'}, {'answer_id': 139933, 'author': 'Nick Haddad', 'author_id': 2813, 'author_profile': 'https://Stackoverflow.com/users/2813', 'pm_score': 2, 'selected': False, 'text': '<p>When displaying an audio waveform, you will want to do some sort of data reduction on the original data, because there is usually more data available in an audio file than pixels on the screen.  Most audio editors build a separate file (called a peak file or overview file) which stores a subset of the audio data (usually the peaks and valleys of a waveform) for use at different zoom levels.  Then as you zoom in past a certain point you start referencing the raw audio data itself.</p>\n\n<p>Here are some good articles on this:</p>\n\n<p><a href="http://www.xowave.com/doc/ref/waveforms.shtml" rel="nofollow noreferrer">Waveform Display</a></p>\n\n<p><a href="http://codeidol.com/java/swing/Audio/Build-an-Audio-Waveform-Display" rel="nofollow noreferrer">Build an Audio Waveform Display</a></p>\n\n<p>As far as source code goes,  I would recommend looking through the <a href="http://audacity.sourceforge.net/" rel="nofollow noreferrer">Audacity</a> source code.  Audacity\'s waveform display is pretty good and mostly likely does a similar sort of data reduction when rendering the waveforms.</p>\n'}, {'answer_id': 767378, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 2, 'selected': False, 'text': '<p>i wrote one:</p>\n\n<p><a href="http://github.com/pangdudu/rude/tree/master/lib/waveform_narray_testing.rb" rel="nofollow noreferrer">http://github.com/pangdudu/rude/tree/master/lib/waveform_narray_testing.rb</a></p>\n\n<p>,nick</p>\n'}, {'answer_id': 1146155, 'author': 'endolith', 'author_id': 125507, 'author_profile': 'https://Stackoverflow.com/users/125507', 'pm_score': 1, 'selected': False, 'text': '<p>Processing is often used for visualization, and it has a Ruby port:</p>\n\n<p><a href="https://github.com/jashkenas/ruby-processing/wiki" rel="nofollow noreferrer">https://github.com/jashkenas/ruby-processing/wiki</a></p>\n'}]
['https://Stackoverflow.com/questions/41188', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2293/']