Giter Site home page Giter Site logo

impulse-bitwig's Introduction

Impulse25 Bitwig

An improved control script for the Novation Impulse 25/49/61 allowing Bitwig users to use all features of the Impulse devices. Additionally the target of this script is to allow users to access the most important functions of Bitwig directly from the Impulse without using a mouse or computer keyboard.

Basic features

  • Working: Midi keyboard
  • Working: Channel aftertouch
  • Working: Modwheel
  • Working: Pitchbend
  • Working: All rotary encoders
  • Working: Transport buttons
  • Working: Master fader
  • Working: Midi/mixer button
  • Working: Track select buttons (shift + octave up/down)
  • Working: Plugin, midi, mixer, page up, page down buttons
  • Working: All drum pads including aftertouch
  • Not implemented (yet): Clip launch functions
  • Not implementd (yet): Autodiscovery. The controller must be added manually atm.

Regarding Impulse 49 and 61 versions

Since I don't own these devices for now the 8 faders and fader buttons probably won't work. But while reverse engineering the Impulse's template data I most probably found the relevant midi messages the faders and buttons send. So, as soon I find the time I can add support for these too.

Advanced features

Since the Impulse devices have quite a lot of buttons and LEDs and a Display we can send data to, I want to make as many Bitwig features as I can accessible via the Impulse.

Midi messages the impulse accepts

  • Drum pad cc/note on values: Set the brightness of the background led.
  • Midi / Plugin / Mixer State
  • F0 00 20 29 00 71 0F 5A 00 00 00 06 09 05 F7: Go into boot menu and be ready to receive a firmware update. This is the first part of a firmware update.
  • F0 00 20 29 00 70 F7: Get firmware version. Example response: F0 00 20 29 00 70 00 00 06 05 08 00 00 06 09 03 0D F7 == Boot version: 658, Main version: 693
  • F0 00 20 29 [sender midi id] 06 01 01 01 F7: Device inquiry + activating the connection to the computer. Example response: F0 00 20 29 67 07 19 F7 == 719 is the device id of the Impulse 25. I can't find the Pdf anymore where I found this but I think 71A is the 49 key version and 71B the Impulse 61.
  • F0 00 20 29 00 08 [8 bytes of ascii text] F7: Show the given text on the text display of the Impulse.
  • F0 00 20 20 00 09 [3 bytes of ascii text] F7: Display text in the big 3 charachter area of the display.
  • F0 00 20 29 43 00 00 [impulse template] F7: Write the given template data into the ram. This is the same as manually changing all settings/mappings and lights up the 'save' element on the display meaning that a user can save the current settings as a template.

Template sysex

At any time when we send the template sysex message we can overwrite the currently selected (or even changed and unsaved) template.
There is almost complete documenation of the template data format. So it's quite easy to create your own template without having to manually set all values on an Impulse device.

Limitations of the Impulse devices

While reverse engineering and testing all features of the Impulse 25 I came across several things that might not be intutive and owners should know. Maybe someone from Novation/Focusrite reads this at some point and uses it as inspiration for firmware updates.

  • Some, but not all buttons send midi messages both for pressing and releasing them.
  • The Midi/mixer button below the master fader sends messages only on button release and sends different CCs depending on the button's state.
  • The Octave up/down buttons change the keyboard octave only on button release - this feels slow while performing. (It would be extremely useful if this would send a midi CC message.)
  • When changing the octave the display lights up an 'octave' element. But this is only lit directly after pressing an octave button. I'd have expected this to keep being lit as long as the octave is changed.
  • (BUG?) When pressing shift + any other button and then releasing them, shift does not send a midi message for the button release.
  • In midi state (after pressing the midi/page-down button) everytime an ecoder is rotated, the text display is set to 'CC# XX'. It's not possible to send text to the display in this case because it gets overwritten immediately. The same goes for the master fader in midi mode.
  • The encoders in plugin and mixer state send a CC with the direction of the change while in midi mode they send absolute values. This is a limitation because we can't use the encoders in midi mode as generic buttons since when the absolute value is the minimum or maximum no more midi messages are sent.
  • We can change the background color of the drum pads by sending midi messages to the Impulse. BUT only if the device is in clip launch mode. What we can do tough is setting the brightness by sending a midi message.
  • In the default template (BascMidi) the rotary encoders 7 and 8 use the same CC values as rewind and fast forward making it impossible to distinguish between them.
  • There's no way of programmatically triggering a dump of the current template. If we could do this it would be possible to programmatically change specific values which would enable us to add many features that are impossible right now.

Color codes for the drum pads:

When the impulse is in clip launch mode (and only then), we can set the pad's colors by sending CC events: sendNoteOn(0xb0, 60 + [0-7], [color]); These are the available colors:

0 Off
1 Red dark
2 Red medium
3 Red full
4 Off
5 same as 1
6 same as 2
7 same as 3
8 Red dark blinking
9 Red medium1 blinking
10 Red medium2 blinking
11 Red full blinking
12 same as 8
13 same as 9
14 same as 10
15 same as 11
16: Green
17 Yellowish green
18 Light orange
19 Orange
20 same as 16
21 same as 17
22 same as 18
23 same as 19
24 Green blinking
25 Yellowish green blinking
26 Light orange blinking
27 Orange blinking
28 same as 24
29 same as 25
30 same as 26
31 same as 27
32 Green
33 Yellowish green
34 Greenish yellow
35 Yellow
36 same as 32
37 same as 33
38 same as 34
39 same as 35
40 Green blinking
41 Yellowish gree blinking
42 Greenish-yellow blinking
43 Yellow blinking
44 same as 40
45 same as 41
46 same as 42
47 same as 43
48 same as 32
49 same as 33
50 same as 34
51 same as 35
52 same as 36
53 same as 37
54 same as 38
55 same as 39
56 same as 40
57 same as 41
58 same as 42
59 same as 43
60 same as 44
61 same as 45
62 same as 46
63 same as 47
64 same as 0
65 same as 1
โ€ฆ

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.