public
Description: A proof of concept social crowd beat visualization thing, inspired by Giles Bowkett's RubyFringe talk.
Homepage:
Clone URL: git://github.com/xaviershay/socialbeat.git
name age message
file README Loading commit data...
directory artists/
directory lib/
file rakefile Thu Oct 09 22:14:18 -0700 2008 A rake task to run all specs [xaviershay]
file run.rb
directory spec/
directory vendor/ Sat Oct 11 14:02:28 -0700 2008 Vendor latest version of rbcoremidi [xaviershay]
README
= SocialBeat

A proof of concept social crowd beat visualization thing, inspired by Giles Bowkett's RubyFringe talk.

Only works on OSX, maybe only on Leopard

= Install

  gem install ruby-opengl
  gem sources -a http://gems.github.com
  gem install xaviershay-rbcoremidi

= Usage

  # Start archaeopteryx 
  # Open MIDI Patch Bay.app
  # Create a new input ("Archaeopteryx")
  # Create a new output ("SocialBeat")

  ruby run.rb artists/simple.rb
  vim artist/simple.rb # Try changing the base_color and watch it morph on the fly. oooooooooh.

  If it complains about loading rbcoremidi, this means that you have to compile it yourself.
  Grab it from github: http://github.com/xaviershay/rbcoremidi/tree/master, compile, and put the bundle into 
  vendor/rbcoremidi

= Current state

  DONE
  * Hot reloads your artist file
  * Accepts MIDI input

  TODO  
  * Some cool examples, esp with multiple inputs
  * Nested reloading (files included from an artist)
  * Canvas::OpenGl needs to be fleshed out so you can actually draw cool stuff
  * Make a screencast showing awesomeness
  * Profiling and performance work

= Architecture

  A subclass of SocialBeat::Artist is instantiated on the fly, as the code file changes.
  This instance is responsible for drawing and update logic. It is totally stateless - any state it wishes to
  keep should be stored in the env variable that is passed to it by SocialBeat::Runner
  This allows the hot swapping to work.
  Any drawing should be done on the canvas object, so that OpenGl can easily be switched out for 
  processing/directX/AWESOMEASCIIART/whatever