Programming the Roland TB-303

start | Sequencer | Sound | Software: app - manual - policy - about |

With this app you can backup the contents of the tb303 sequencer to a database in a user friendly way. The advantage of this approach is that a lot of things can be automated from then on.

Good things to have:
- create a non volatile memory for patterns and tracks
- make it easily accessable using a web interface (no flash, no java, no html 5)
- have an instant overview of all the patterns and tracks on one page
- have a multi-user system where you can view and use each others patterns
- write out the pattern programming steps in plain English "press this, press that"
- things I will think of later

The first four steps are in a finished state.

I have listened to a lot of music, but acid and house really hit me. When listening to a house music radio programme in 1993, I discovered that the sounds were created by a little silver box called the Roland tb303. I had to have one. Since 1995, when the internet became mainstream, I spent a few obsessive weeks every year on het net searching for information about the machine and checking auction websites. But the 303 had already become too expensive, so in the next years I bought Propellerheads Rebirth (now free), a Novation Bass Station, using my voice to emulate the thing. But it was not the real deal.

Then, 15 years later in 2009, I decided to start my own business, building webapps and websites. I'd been doing this work since 1995, so it seemed like a brilliant idea to go working by myself. And it was a good year. So in December I thought "now or never" and bought a mint 303 in a package deal with a mint 606 for €2000. Both with their original boxes, the "Chord Shift Scale", manuals, carrying bags, etc. Needless to say, both were switched on continuously for 8 months. Every time I walked past the synths I listened to the patterns and twisted the knobs cautiously.

However, the yearly obsession did not fade. In November 2010, I decided to make a website explaining all the workings of the sequencer of the 303. The editing of the patterns was a bit complex and I did not want to read through the manual every time. A few weeks later, some bloggers already had found the site (e.g. DIN Sync). It was a happy moment when I checked the log of the website visitors and see them coming from those blogs.

In 2011 I was familiar enough with the button-pressing to take the 303 with me to live gigs: synchronizing with a dj, playing live with a jazz band. Different setups. And I thought "wouldn't it be handy to have a webapp for the sequencer", because I had to write down the patterns for each gig. And that didn't work. So in November 2011 I took up the project: building a Track/Pattern Programming Helper web-application for the TB-303, for my own conveniece.

I decided that the webinterface had to be exactly the same as the sequencer interface in the tb303, but with the addition of a few handy things:
- less error prone and a more accessable interface than a piece of paper,
- better overview of your tb303 sequencer contents and printable for live sets,
- usage of text markers for patterns/tracks creation.

It turned out to be 2 straight months work of interface designing, database modelling, php/javascript/sql programming and testing, testing, testing on pc and touch screen tablet.

The webapp is in a stable state, but will remain "alpha" until I have cleared the prio items below. When I have cleared the "soon" items it will be in beta state. But if you want you can test drive it now. The development tempo will slow down considerably from now on, because the big chunks are done, and one cannot develop continuously without having some fun in between by just using it. Which is the whole point of developing this app. Please send me feedback to the email link provided if you find any bugs, and I will squash them. It's too early to send feature requests, so please don't.

See the to do list below.

To do (probably somewhere during the last months of 2012):
The [PRIO] lines need to be done, before going test-phase live with the app.
The [SOON] lines need to be done, before going public with the app.
The remaining lines are for future development.

index page
- [PRIO] a policy page describing the terms of use, ownership, account maintanance, la die dah etc
- [PRIO] give administrator privileges to an account for maintanance purposes (delete users/sets, reset passwords)
- [PRIO] check for csrf attacks
- [PRIO] programmers hacking manual
- [SOON] create a management info page with user last login time, the percentage somebody's using the app, a log of every "input textfield"
- [SOON] polish the interface of this page

patterngroup page
- [PRIO] also delete patterns and tracks when deleting a set or user to keep database clean
- [PRIO] delete all database contents and start fresh
- [PRIO] test input boxes
- [SOON] jump down when renaming Pattern Group IV

pattern page
- [PRIO] test input boxes
- [PRIO] C' + UP + DOWN sounds like low-C, show in "pitch" row.
- [SOON} tooltips on pitch row,
- [SOON] show a pointer in the PITCH table to mark where I am
- [SOON] mark the pitch that get attack with a dot (after slides stop)
- [SOON] feedback after update (in green)
- [SOON] "reset pitches" button
- navigate thru patterns from here,
- automatically write out tb303 programming steps
- quick-edit mode
- copy-paste (someone other's) Patterns
- ? when changing triplet/4-4 mode choose to "clear time data" or not?
- ? edit time data (add step, change 4/4) or clear time data only?

track page
- [PRIO] show in navigation when entering the pattern from the track page (&from=track)
- [SOON} navigation path and page info: show owner set/pattern/track
- [SOON} include track length constraints on page 66 manual
- [SOON} delete all Bars ('are you sure?')
- [SOON} contemplate whether to get rid of the dc and ds checks
- [SOON} test input boxes
- [SOON] feedback after update (in green)
- [SOON] ascending order for the Bar drop down list
- [SOON] color bar red if edited but not saved (javascript)
- color code 'used Patterns', 'just inserted' Bars
- view/edit mode switch (start in edit for tracks with zero Bars)

master site pages
- "pattern write": 'mode selection' differences during real time recording when synced and when not synced.

- nov 10: the webinterface is finished. all pages now have a basic interface and design i can build upon.
- nov 11: the database is modelled and created, the php programming is in progress.
- nov 13: the login is operational.
- nov 15: the patterns in the "pattern group" page are now database driven
- nov 18: changed the database model, rewrite pattern group page to support a more rigid hacker proof model
- nov 21: finished rewriting of the pattern group page
- nov 22: finished the pattern page, now for some polishing of the code, lost checks etc
- nov 26: pattern page: finishing code and interface polishing
- nov 27: pattern group page: code polishing. start working on track page
- dec 11: track page interface/design, improving the initial design, make the interface even more clear.
- dec 12: track page interface/design, polishing the details/icons.
- dec 26: track page is now dynamic using dummy database data. now making the editing dynamic.
- dec 27: built the logic and constraints behind the editing of the markers.
- dec 28: simplified the track page design
- jan 2: done track page edit mode, now polishing things here and there.
- jan 4: done track page 'view mode'.
- jan 5: hack test, thanks edu! beautified the programming code for the patterngroup page. edited the page you are reading now.
- jan 6: time invested in the app so far: 154 hours. development tempo wil go at a slower pace from here on.
- jan 7: cleanup of the complete tb303 website to prepare for the integration of the app in the navigation. thinking about a name for the app. cil thank you for correcting my English.
- jan 9: finished the manual pages
- jan 10: testing and editing the to do list

I'm going to test drive the 303 web app intensively and see how it holds up.

big thank you
cil for correcting my English
edu for hack testing
myself for building this app

copyright: - contact