The definitive MIDI controller | This is not rocket science

Raspberry Pi cross-compilation

In the end it took several hours to set up a working cross-compilation environment for the RPi. The one that worked was the Vagrant/VirtualBox+QEmu setup from https://github.com/nickhutchinson/raspberry-devbox .

The instructions are rather short and self-explanatory, and what you end up with is a Vagrant (VirtualBox) VM with a Scratchbox/QEmu cross-compiler environment inside. Nice! Even though it’s a bit slow at least with the default 380MB memory share it gets, it was able to build Armstrong and the UI projects without any tricks.

The other compilers I tried were the QT cross-compilation environment from http://qt-project.org/wiki/RaspberryPi_Beginners_guide, which I got to compile everything, but the binaries simply wouldn’t run on the device. Some problem with the instruction set dialect or floating-point support, I guess. I also tried http://www.bootc.net/archives/2012/05/26/how-to-build-a-cross-compiler-for-your-raspberry-pi/ but couldn’t get the linker paths to work out right. Armstrong depends on several libraries and fbgui on even more; those I copied for these experiments as binaries from the RPi box itself after installing the packages there with apt-get.

With the Vagrant raspberry-devbox all of this was trivial: just boot the Vagrant VM, jump into the scratchbox as root, and apt-get all the necessary packages. And packages you need: this was the final list (plus dependencies I didn’t include here, but apt-get would find automatically) that worked:

libjack-dev libjack0 libportmidi0 libportmidi-dev libboost-dev libsndfile1-dev libsndfile1 libboost1.49-dev libboost-dev liblua5.2-0 liblua5.2-dev libsdl1.2debian libsdl1.2-dev autoconf libsqlite3-dev

The build command-line turned out to be something like this:

CFLAGS="-I../target/include -L../target/lib" CPPFLAGS="-I../target/include -L../target/lib" CXXFLAGS="-I../target/include -L../target/lib" ./configure --prefix=/home/vagrant/rpc-buze/target && make && make install

Nothing out of the ordinary then, as it should be. After pushing the binaries from target/ to the RPi, it just works!

rpc-buze first build

3 Responses

  1. Steve

    Hello, great work!

    I have been thinking about a MIDI sequencer for a few months now, and here is your page and almost exactly what I was envisioning! 1u rack, 4x MIDI outputs, using RasPi to create a graphical UI, keyboard and mouse for input. Wow.

    So what software have you tried to use so far on the Pi, to create sequences? I think NON sequencer looks great
    http://non-sequencer.tuxfamily.org/MANUAL.html

    Or some sort of tracker? (ProTrekker, MIlkyTracker)?

    Great work with the Arduino MIDI timing optimization, hacking the RasPito play MIDI was looking like a real problem, better to dedicate the ATMega for that.

    Would love to see a video of the RPC in action!
    ~Steve

    January 25, 2015 at 16:35

    • ld

      The NON sequencer would be indeed very cool to have running on the Pi/RPC.

      I have written my own small MIDI tracker, but it’s not quite ready for any real use yet.

      January 25, 2015 at 19:40

  2. Steve

    Oh yeah SchismTracker has MIDI output apparently, give it a shot perhaps.

    ~Steve

    January 25, 2015 at 16:59

Leave a Reply

Your email address will not be published. Required fields are marked *