Skip to content
A proof of concept social crowd beat visualization thing, inspired by Giles Bowkett's RubyFringe talk.
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
artists
lib
spec
vendor/rbcoremidi
README
rakefile
run.rb

README

= SocialBeat

A proof of concept social crowd beat visualization thing, inspired by Giles Bowkett's RubyFringe talk.
Here is an introductory screen cast, under 3 minutes long: http://vimeo.com/2139958

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
Something went wrong with that request. Please try again.