add gitignore
re implement devise and bootstrap
migrate user auth and create view new keyboard
add validations for key and keyboard
updates
Bugfix: couldn't set up app due to missing database.yaml

The database.yml file was missing because it had been added to the .gitignore.  I removed it from the .gitignore and created a new yaml file. Now the rake db:create file works.

Analogy: not having the database.yml file is like giving someone a house without giving them the keys.  They have to take the trouble to change the locks before they get inside.
When I press the keycodes listed on a keyboard page, a noise is made

The deveopment of the script can be seen in the commit history of this fiddle: http://jsfiddle.net/tararoys/2Sexn/35/

The difference between this commit and the fiddle is that I needed to call keyboard.init in a document.ready. The keyboard knows which of your keyboard keys to wire up based on the keycodes listed in the key divs. The javascript was trying to read the divs before the page had loaded.
You can now choose different notes for your keys, and play them.

We have officially reached a very annoying MVP.
Added hard-coded volume of .5 to every key.

For some reason, the panner, delay, and volume settings are being saved as zeros to the database, so they don't render on the page.  As a result, I can't extract them from the html divs. I therefore hardcoded a volume of .5 on line 39 of keyboard.js instead of using jquery to extract it from the page
Created default Middle C keyboard in the seeds file
Frequency is stored as float in database

Currently, the middle C keyboard is having issues with tartini beats. If you play three tones at once, it sounds like somebody sawing something with power tools.  Fascinating! http://www.animations.physics.unsw.edu.au/jw/beats.htm
Installed rspec into the project

Huzzah tests
Keyboard has a field called name
Does activerecord let you create an attribute you did not define in the database with the new function?

Nope!

Activerecord attributes are like a toolbox where the tools all are nested in their own space.  For example, if your toolkit has a hammer, there will be a hammer-shaped space that the hammer can fit into exactly. http://amigakit.leamancomputing.com/catalog/images/computer-toolkit-26-piece.jpg   Tools can be missing, but you can't put a completely differet tool in that sort of kit, because there isn't a space for it.
Keyboard belongs to a user because it has a user id
A keyboard must have a name

You are not allowed to create a keyboard without a name.
Unanswered Question: it "Does the new command create a keyboard id?"
Unanswered Question: Can objects exist without being inserted into the database?
Unanswered Question: Why does the new command let objects exist without being inserted into the database?
What is the difference between create! and create?

Specifically, why does create fail silently when trying to insert invalid data, and why does create! give an error?