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
xaviershay (author)
Mon Nov 03 13:32:26 -0800 2008
commit  02afaad5f2f87262580667d4ba452b2341046c56
tree    af8c3ecebbd21c3eabf7172fa28821727109c4e2
parent  1107dcb91e5492000a773829895a86fcb98df7c2
socialbeat / README
100644 47 lines (33 sloc) 1.683 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
= 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