diff options
author | DaveHodder67 <dave.hodder@focusrite.com> | 2015-06-16 14:22:17 +0100 |
---|---|---|
committer | DaveHodder67 <dave.hodder@focusrite.com> | 2015-06-16 14:22:17 +0100 |
commit | cb506c00731140dd08b8d26a52bceeb743975399 (patch) | |
tree | da92e0debf6d55586698b154f54dbbfcf49277dc | |
parent | a9461c7847088a25dfa5f9851b4c96ffc50a5238 (diff) | |
download | launchpad-polymaker-cb506c00731140dd08b8d26a52bceeb743975399.tar.gz launchpad-polymaker-cb506c00731140dd08b8d26a52bceeb743975399.zip |
updated README
-rw-r--r-- | README.md | 46 |
1 files changed, 34 insertions, 12 deletions
@@ -1,28 +1,50 @@ | |||
1 | # Launchpad Pro | 1 | # Launchpad Pro |
2 | Open source firmware for the Launchpad Pro grid controller! | 2 | Open source firmware for the Novation Launchpad Pro grid controller |
3 | |||
4 | # Philosophy | ||
5 | We could have released the full source for the factory shipping firmware, but we've decided not to for a variety of reasons. Instead, we created a simplified framework for developing "apps" on Launchpad, which comprises a build environment, application entry points / API, and a library of low level source code. Our reasoning is as follows: | ||
6 | |||
7 | - There is no value in customising low level routines such as LED multiplexing or ADC scanning - this code has been carefully tweaked over many months to deliver the best results, and is not something you'd want to tweak. I'm prepared to be convinced otherwise! | ||
8 | - There is very little value in customising main() or other low level features, and again these things are hard to do well. | ||
9 | - If we shipped the application firmware as-is, we'd have a support nightmare on our hands (imagine the support calls - my "Launchpad Pro is behaving strangely..."). Instead, we wanted to create a clear boundary between "normal" usage with Ableton, and custom firmware. As such, Ableton integration has been removed from this firmware, as has the setup / navigation functionality. | ||
10 | - If we left the Ableton integration and menu structure in place, open firmware developers would have to work around it. They would also potentially consume precious RAM/CPU resources. I've a feeling this isn't what you'd want, but again, we're interested to hear your feedback. | ||
11 | - Licensing requirements for the CMSIS library version we use are ambiguous. Yes, we could port to the public version, but why bother, given the above reasoning - I'd prefer to spend my time on good documentation and examples. As such, all the CMSIS code is compiled into launchpad_pro.a, and we do not need to distribute the headers. | ||
12 | |||
13 | I'm sure you'll have feedback for us, so please do get in touch! I'm [blogging the process too](http://dvhdr.tumblr.com/) if you'd like to read my musings. | ||
3 | 14 | ||
4 | # Installation | 15 | # Installation |
5 | This project uses Vagrant to manage the build environment. As such, you need to: | 16 | This project uses [Vagrant](https://www.vagrantup.com/) to manage the build environment. As such, you need to: |
6 | 17 | ||
7 | 1. Install Vagrant | 18 | 1. Install [Vagrant](https://www.vagrantup.com/) |
8 | 2. Install VirtualBox (or another virtualisation platform of your choice) | 19 | 2. Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads)(or another virtualisation platform of your choice) |
9 | 3. vagrant up | 20 | 3. `vagrant up` |
10 | 21 | ||
11 | # Building | 22 | # Building |
12 | SSH into the Vagrant "box" by doing `vagrant up | 23 | SSH into the Vagrant "box" by doing `vagrant up` |
13 | At the command prompt, type `make | 24 | At the command prompt, simply type `make` |
14 | |||
15 | This will generate the firmware .bin file, which is no use to you (yet). | ||
16 | 25 | ||
17 | You need to convert it to a sysex dump format (or we may be able to automate this). Instructions to follow... | 26 | This will generate the firmware launchpad_pro.syx file in the build directory. You can then upload this to your Launchpad Pro from the host! |
18 | 27 | ||
19 | # Uploading to a Launchpad Pro | 28 | # Uploading to a Launchpad Pro |
20 | Bootloader firmware update instructions here (Sysex Librarian / MIDI-OX / ...?) | 29 | Bootloader firmware update instructions here (Sysex Librarian / MIDI-OX / ...?) |
21 | 30 | ||
31 | # API | ||
32 | The most crucial parts of the API are: | ||
33 | |||
34 | - Recieving messages from the pads and buttons | ||
35 | - Writing colours to the LEDs | ||
36 | - Sending and receiving messages from the USB and MIDI ports | ||
37 | - Receiving a tick message to drive timing based code | ||
38 | |||
39 | Up for debate: | ||
40 | |||
41 | - Flash read / write access | ||
42 | - Setup button behaviour | ||
43 | |||
22 | # Debugging | 44 | # Debugging |
23 | We decided not to support or encourage using a JLink or similar for debugging, as opening a Launchpad Pro to fit a debugging header can easily damage the FSR (force sensitive resistor) sheets. | 45 | We decided not to support or encourage using a JLink or similar for debugging, as opening a Launchpad Pro to fit a debugging header can easily damage the FSR (force sensitive resistor) sheet. |
24 | 46 | ||
25 | Instead, you're going to have to do things the old fashioned way - by blinking LEDs or sending MIDI messages. | 47 | Instead, you're going to have to do things the old fashioned way - by blinking LEDs or sending MIDI messages. FWIW, that's the way I've developed this version of the firmware - dogfooding all the way ;) |
26 | 48 | ||
27 | If you want to test code in detail, we suggest developing it on a host (we'd love to release our simulator environment at a later stage, but there are currently no plans to do so). | 49 | If you want to test code in detail, we suggest developing it on a host (we'd love to release our simulator environment at a later stage, but there are currently no plans to do so). |
28 | 50 | ||