• This repository has been archived on 28/Jul/2021
  • Stars
    star
    145
  • Rank 254,144 (Top 6 %)
  • Language
    C++
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ARCHIVED REPOSITORY

This project is no longer being actively maintained and has been archived. The source code is still available for those who may find it useful.

About this repository

This repository contains C++ source code that demonstrates how to communicate with Ableton's Push 2 display. The example uses JUCE, allowing the use of all the existing juce::Graphics methods to render the content of the display. Thanks to JUCE, it is also cross-platform and can be compiled using MacOS, Windows, and Linux.

Together with our Push interface description, this enables you to take full control of Push to develop custom software.

To get an idea of what this can allow you to do, here's an example video of Mutable Instrument's drum sequencer "Grid" running standalone on a Raspberry Pi driven from a Push 2.

Note

The low-level classes used to communicate with the display are not tied to JUCE in any way. This means they can be extracted from this example and used in another framework if desired.

License

This software is distributed under the MIT License.

Dependencies

In order to communicate over USB, this example uses libusb. On MacOS and Windows, libusb is compiled as part of the example. On Linux, you will need to use your favorite package manager to install the development package; for example,

sudo apt-get install libusb-1.0-0-dev

Note that if you ship an application using libusb, you should ensure that you respect their licensing terms.

On Linux, you will also need to fetch the packages needed for JUCE.

How do I get set up?

Setting up the repository

Clone the repo (including the submodules for JUCE and libusb):

git clone --recurse-submodules https://github.com/Ableton/push2-display-with-juce.git

Building

The example uses the standard JUCE folder structure and, although it doesn't make any sound, is based on the "Audio Application" template from the Introjucer.

There are projects ready for Xcode and Visual Studio 2013, as well as a Linux Makefile-based system, all located in the Builds folder.

Running

Once the program is compiled, running it will open a window on the computer's screen and display an animation on the Push display. As a bonus, the computer window will display MIDI messages generated by touching the Push 2 pads, buttons, and knobs.

Note that by default on Linux, the USB port can only be used by root. Unless you change the device's permissions, you will need to sudo to execute the binary.

cd Builds/LinuxMakefile/

make

sudo ./build/juce2push2

Customization

If you would like to quickly hack some drawing of your own, have a look at the Demo::drawFrame() method in juce2push2/Source/Push2Demo.cpp.

Maintainers

Happy coding!

More Repositories

1

link

Ableton Link
C++
1,075
star
2

push-interface

The Ableton Push 2 MIDI and display interface manual.
641
star
3

m4l-connection-kit

Max for Live Connection Kit
C++
491
star
4

atria

A toolkit for modern C++ development
C++
436
star
5

maxdevtools

Python
255
star
6

aqt-stylesheets

Apply CSS style sheets to QML applications
C++
214
star
7

LinkKit

iOS SDK for Ableton Link, a new technology that synchronizes musical beat, tempo, and phase across multiple applications running on one or more devices.
Objective-C++
150
star
8

AudioPerfLab

An app for exploring real-time audio performance on iPhone and iPad.
C++
132
star
9

aqt-cassowary

Use the Cassowary constraint solver in QML applications
QML
54
star
10

ableton.github.io

Ableton's GitHub.io website
Sass
46
star
11

go-travis

Go library for accessing the Travis CI API
Go
33
star
12

python-pipeline-utils

Jenkins shared pipeline library for Python-related utilities
Groovy
25
star
13

groovylint

A CodeNarc wrapper for linting Groovy files
Python
19
star
14

windows-openssh

Ansible role to install Openssh on a Windows host
10
star
15

ansible-role-nix

Ansible role to install Nix
Jinja
10
star
16

ansible-role-jenkins-jcasc

Ansible role for installing Jenkins with JCasC
Jinja
4
star
17

ansible-role-prometheus-node-exporter

Ansible role to install Prometheus' node_exporter application
Jinja
4
star
18

postgres-pipeline-utils

Jenkins shared pipeline library to run Postgres in a Docker container
Groovy
2
star
19

ansible-role-sccache

Ansible role to install sccache
Jinja
1
star
20

ansible-role-jenkins-swarm-client

Ansible role to install Jenkins Swarm Client
Jinja
1
star
21

ansible-role-rustup-init

Ansible role to install rustup-init
Jinja
1
star
22

ansible-role-clang

Ansible role to install clang
Jinja
1
star