GithubHelp home page GithubHelp logo

looplauncher's Introduction

looplauncher

LoopLauncher is an experiment in midi control using a Teensy and stomp buttons to send note on/off messages to a host.

Parts list

Parts Total $62

Modifications

I ended up using an 8x10" piece of plexi and laying out the pedal as if it were going to be 8x5. Laying out the design in plans to use a box that size and only finding the 7.4x4.7 worked out so that the layout fit in the underside of the enclosure, so I went with it.

Rather than wiring up an external contrast control, I ended up using PWM to set the contrast, I'll need to do something about the brightness as well, as I want to allow flexibility in the pedal at runtime without making physical modifications.

Hookup and Layout

The trigger buttons run 1-3, left to right on the bottom and 4-6 left to right on the top. The right three control buttons run vertically on the right hand side. The controller is perf board mounted vertically with the usb port facing downward. This will allow feeding the micro to B usb cable out the bottom of the perf board and back up to the back/top of the enclosure. This layout allows the lcd to be installed vertically centered between the 2 & 4 buttons and leaves just enough room for a perf board to the right of the lcd. I've routed the wires from each of the bottoms on the outside of each button post and to the far right side of the enclosure so that all buttons will present on the right side of the controller. The lcd and perf board are mounted to the front of the enclosure (or in my modification to an acrylic face) and held back by standoffs. The upside to the acrylic face is that I just press fit the lcd to the acrylic rather than cutting a through hole.

Buttons to Teensy The trigger and control buttons are wired to pins 1-9 and the second lugs are all sent to the ground.

Lcd to Teensy

  • Lcd 1 to GND
  • Lcd 2 to Vin (+5V instead of the 3.3V pin)
  • Lcd 3 to 22 (we'll send a PWM to control contrast)
  • Lcd 4 to 19
  • Lcd 5 to GND
  • Lcd 6 to 18
  • Lcd 7, 8, 9, 10 Not Used
  • Lcd 11, 12, 13, 14 to 17, 16, 15, 14
  • Lcd 15 to Vin (+5V no the 3.3V pin)
  • Lcd 16 to Gnd

Buttons to Teensy

  • Trigger buttons and control buttons wired to 0-9

Code

The LoopLauncher lib and an example that presumes you wired things up like I did is in the LoopLauncher subdirectory.  The pedal functions similar to the Looptimus pedal. The 6 trigger buttons send note on/off when pressed according to the bank that you are in. By default, when the pedal is powered, the first bank is selected (displayed as 1, but indexed at 0 in the code). Hack away.

#include <LoopLauncher.h>

LoopLauncher launcher = LoopLauncher();
LiquidCrystal lcd(19, 18, 17, 16, 15, 14);

void setup() {
  int launchPins[6] = {2, 1, 0, 8, 7, 6};
  launcher.begin(5, 4, 3, launchPins, 6, &lcd);
}

void loop() {
  launcher.update();
}

That's all there is to running it. This version presumes an lcd is used to display. A 7-segment display could also be used, but you'd have to adjust the code as well. I'll likely make the next one w a 4-digit 7-segment display to simplify config. MidiChannel can be controlled in the code ... I suppose that should be made configurable from the pedal as well.

Caveats I'm not really settled with the implementation. I'm sure it's sloppy all over. Feel free to suggest/make contribute changes.

What's Next?

  • Adding a means to send static notes regardless of selected bank or mode (perhaps long pressing to get to an alternate mode an then sending set notes for each button).
  • Adding a root/5th mode to allow playing of pads rather than triggering. The alternate mode will behave differently in that a triggered note will not send on off when the button is released. Rather another button or 'stop' will have to be pressed to end the previous note.
  • Adding a means to change modes (Normal vs Pad)

looplauncher's People

Contributors

ffsoup avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.