Quantcast
Channel: untergeek » Midi
Viewing all articles
Browse latest Browse all 5

Taming Arturia’s Beatstep: Sysex codes for programming via iPad

$
0
0

Arturia Beatstep in sequencer mode (animated GIF)Nice. New. Toy. Arturia’s Beatstep controller is a steal for 99 Euros – it just feels great. Large, solid pads, smooth, reassuring encoders. Did I mention there’s a 16-step sequencer included? And a CV/gate interface? Must-have. I sold my QuNexus for this.

Just like the QuNexus, it is an ideal extension for iPad music. And just like the QuNexus, Beatstep needs to be programmed via a controller program to work. At least Arturia had the common courtesy to include a Mac version of the controller software, still it is a nuisance for iPad users like me that they have to use a computer just because one key sends the wrong note and triggers the wrong event.

So I thought about building a small controller panel for TB Midi Stuff, the same app I used for my Matrix-1000 controller. A bit of work with the controller software and a MIDI monitor gave me what is needed for that: the Sysex codes to control the Beatstep’s behaviour.

May be some time until I get round to building that panel, in the mean time there you are. No, don’t thank me, Arturia.

V1.11, last update 28 November 2014

Controller Parameter Send and Request

The sysex implementation is very granular. Every individual parameter for every individual controller can be requested or sent by one command.

Sending a parameter

This is the generic command string to set an individual parameter:

F0 00 20 6B 7F 42 02 00 pp cc vv F7
  • pp is the number parameter that is to be set – from 1 to 6. (Arturia’s MIDIControlCenter software always transmits all six of them, but I guess you can send them individually. First things first though: parameter 1 sets the mode of a controller.)
  • cc is the number of the controller in question: 0x20-0x2F addresses one of the sixteen encoders, 0x70-0x7F addresses one of the sixteen pads. The volume controller has number 0x30 and behaves like any other encoder. The Stop button has 0x59, the Play button has 0x58 – and just like the sixteen pads, you can program them to mean about everything. You probably shouldn’t.
  • vv is the value for this parameter, e.g. the MIDI channel the control should send on.

Sending a string of this format to the BeatStep sets the addressed parameter for the addressed controller with the addressed value.

Requesting a parameter

To find out about the actual value for this parameter, you can send a request string:

F0 00 20 6B 7F 42 01 00 pp cc F7

The BeatStep will answer with a Sysex string in the format mentioned above. AFAIK you’ll have to wait for the BeatStep to respond before sending the next request, or the poor thing will be rather confused and ignore some messages.

There are also a few global control strings, they have a slightly different format and are listed further down.

Let’s have a look at the parameters and their possible meanings.

Sysex for the Pads

The pads 1-16 have controller numbers 0x70 to 0x7F. The Start button (0x59) and Stop button (0x58) are just like the pads, although they are normally dedicated to their function and cannot produce aftertouch signals.

Pads work in one of five mode: as MMC start/stop buttons, as switched MIDI CCs (think sustain pedal), as MIDI note key, or as Program Change buttons.

The first parameter determins the mode:

  • F0 00 20 6B 7F 42 02 00 01 cc vv F7

cc is the controller you like to program, vv sets the mode: 0=off, 7=MMC, 8=CC Switch, 9=Note, 0x0B=Program Change. Hm. Makes you wonder which modes the missing values might activate.

Parameters for the known modes:

MMC Mode

Invoked by F0 00 20 6B 7F 42 02 00 01 cc 07 F7.

Setting the parameter:

  • MMC command: F0 00 20 6B 7F 42 02 00 03 cc vv F7 (vv: 1=Stop, 2=Play, 3=Deferred Play, 4=FastForward, 5=Rewind, 6=Record Strobe, 7=Record Exit, 8=Record Ready, 9=Pause, 10=Eject, 11=Chase, 12=InList Reset)

CC Switch Mode

Invoked by F0 00 20 6B 7F 42 02 00 01 cc 08 F7.

Setting the parameters: Send F0 00 20 6B 7F 42 02 00 and then…

  • 02 cc vv F7 to set MIDI channel (vv: channel-1, 0-15)
  • 03 cc vv F7 to set the CC (vv from 0-127)
  • 04 cc vv F7 to set the Off value (vv from 0-127)
  • …05 cc vv F7 to set the On value (vv from 0-127)
  • …06 cc vv F7 to set the behaviour: 0=Toggle, 1=Gate

Toggle means that one push switches the button on, the next switches it on, while Gate sends On as long as the button is pressed.

Note Mode

Invoked by F0 00 20 6B 7F 42 02 00 01 cc 09 F7.

Setting the parameters: Send F0 00 20 6B 7F 42 02 00 and then…

  • 02 cc vv F7 to set MIDI channel (vv: channel-1, 0-15)
  • 03 cc vv F7 to set the note (vv from 0-127, C0=18)
  • …06 cc vv F7 to set the behaviour: 0=Toggle, 1=Gate

Toggle means that one push switches the button on, the next switches it on, while Gate sends On as long as the button is pressed.

Aftertouch (channel pressure) is transmitted in Gate mode only. In Toggle mode, velocity is transmitted with Note On and Note Off messages.

Program Change Mode

Invoked by F0 00 20 6B 7F 42 02 00 01 cc 0B F7.

Setting the parameters: Send F0 00 20 6B 7F 42 02 00 and then…

  • 02 cc vv F7 to set MIDI channel (vv: channel-1, 0-15)
  • 03 cc vv F7 to set the actual Program Change value (0-127)
  • …04 cc vv F7 to set the Bank LSB (0-127).
  • …05 cc vv F7 to set the Bank MSB (0-127).

Please note that PC mode is transmitting full MIDI PC messages, including a 14-bit bank value.

Sysex for the Encoders

The encoders 1-16 have controller numbers 0x20 to 0x2F, the large volume dial has controller number 0x30.

Encoders work either as MIDI CC controllers – one of 120 controllers that can be assigned any value, as long as it’s between 0 and 127 – or as the more modern RPN/NRPN controllers that are used by many machines to control internal parameters.

The first parameter determins the mode:

  • F0 00 20 6B 7F 42 02 00 01 cc vv F7

cc is the controller you like to program, vv sets the mode: 0=off, 1=Midi CC, 2=RPN/NRPN. Once again, guesswork about modes 2 and 3.

CC Mode

Invoked by F0 00 20 6B 7F 42 02 00 01 cc 01 F7.

Setting the parameters: Send F0 00 20 6B 7F 42 02 00 and then…

  • 02 cc vv F7 to set MIDI channel (vv: channel-1, 0-15)
  • 03 cc vv F7 to set the CC number that is used.
  • 04 cc vv F7 to set the lowest possible value (Absolute mode only)
  • 05 cc vv F7 to set the highest possible value (Absolute mode only)
  • …06 cc vv F7 to set the behaviour: 0=Absolute, 1-3=Relative mode 1-3 (don’t ask me).

RPN/NRPN Mode

RPN/NRPN are command sets to address the limits of CC messages: they can control more parameters (16384 instead of 127) more precisely (with a value range from 0 to 16383). In theory, at least, as even a Beatstep encoder set to (N)RPN will only transmit values between 0 and 127.  A good description of RPN/NRPN messages here.

Invoked by F0 00 20 6B 7F 42 02 00 01 cc 04 F7.

Setting the parameters: Send F0 00 20 6B 7F 42 02 00 and then…

 

  • 02 cc vv F7 to set MIDI channel (vv: channel-1, 0-15)
  • 03 cc vv F7 to set Coarse/Fine: 0x06=Coarse, 0x26=Fine (this actually determins whether the MSB or the LSB of the parameter is sent)
  • 04 cc vv F7 to set the Bank LSB of the parameter to be sent
  • 05 cc vv F7 to set the Bank MSB of the paramter to be sent
  • …06 cc vv F7 to set the type: 0=NRPN, 1=RPN

 

Global settings

  • Global MIDI channel – F0 00 20 6B 7F 42 02 00 50 06 nn F7 (MIDI channel-1, 0-15)
  • CV/Gate interface receive channel – F0 00 20 6B 7F 42 02 00 50 0C nn F7 (MIDI channel-1, 0-15)
  • Knob acceleration – F0 00 20 6B 7F 42 02 00  41 04 nn F7 (0=slow, 1=medium, 2=fast)
  • Pad velocity curve – F0 00 20 6B 7F 42 02 00  41 03 nn F7 (0=linear, 1=logarithmic, 2=exponential, 3=full – I prefer exponential).

Programming the sequencer

Control strings for the sequencer are of the format:

F0 00 02 6B 7F 42 01 00 pp ss vv F7
  • pp is the parameter – 0x50, 0x52, or 0x53. 0x52 is the MIDI note of this step, 0x53 switches the step on (0x7F) or off (0x00), 0x50 is used for the sequencer’s global parameters – see below.
  • ss is the number of the controller in question: 0x20-0x2F addresses one of the sixteen encoders, 0x70-0x7F addresses one of the sixteen pads. The volume controller has number 0x30 and behaves like any other encoder. The Stop button has 0x59, the Play button has 0x58 – and just like the sixteen pads, you can program them to mean about everything. You probably shouldn’t.
  • vv is the value for this parameter, e.g. the MIDI channel the control should send on.

The request string for the sequencer is:

F0 00 02 6B 7F 42 01 00 pp ss F7

Global Sequencer settings

The global settings of the sequencer follow the same pattern explained above

  • MIDI channel – F0 00 20 6B 7F 42 02 00 50 01 nn F7 (channel-1, 0-15)
  • Transpose – F0 00 20 6B 7F 42 02 00 50 02 nn F7 (base note is C5= 0x3C, to transpose down 12 semitones to C4, nn=0x30 and so on)
  • Scale: F0 00 20 6B 7F 42 02 00 50 03 nn F7 (0=chromatic, 1=Major, 2=Minor, 3=Dorian, 4=Mixolydian, 5=Harmonic Minor, 6=Blues, 7=User)
  • Mode: F0 00 20 6B 7F 42 02 00 50 04 nn F7 (0=forward, 1=reverse, 2=alternating, 3=random)
  • Step size: F0 00 20 6B 7F 42 02 00 50 05 nn F7 (0=1/4, 1=1/8, 2=1/16, 3=1/32)
  • Pattern length: F0 00 20 6B 7F 42 02 00 50 06 nn F7 (1-16 steps, 1-0x10).
  • Swing: F0 00 20 6B 7F 42 02 00 50 07 nn F7 (no swing = 0x32 or 50%, maximal swing = 0x4B or 75%.)
  • Gate: F0 00 20 6B 7F 42 02 00 50 08 nn F7 (0-0x63 for 0-99%)
  • Legato: F0 00 20 6B 7F 42 02 00 50 09 nn F7 (0=off, 1=on, 2=reset)

Storing/Recalling a Preset

The BeatStep features 16 preset memories. Each preset stores a full set of parameters, i.e. all controllers, all sequencer steps. These commands store/recall the parameters into the BeatStep’s working memory:

Store Command:

F0 00 20 6B 7F 42 06 mm F7

…stores the actual settings for the controllers and the sequencer (i.e. the working memory) to memory bank mm (1-16).

Recall Command:

F0 00 20 6B 7F 42 05 mm F7

…recalls the settings from memory bank mm.

Please note that the recall sequence does not initiate a parameter dump – if you want to read out a memory bank, you’ll have to recall it first, then request and read each parameter individually.Verwandte Artikel:


Viewing all articles
Browse latest Browse all 5

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Imágenes de Robin Hood para colorear


Dino Rey para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Toro para colorear


People Walk Away Quotes, Inspire Quotes


Long Distance Relationship Tagalog Love Quotes


Mr. Bolero Best Tagalog Quotes


RE: Mutton Pies (mely)


Pokemon para colorear


Winx Club para colorear


Girasoles para colorear


Sapos para colorear


Renos para colorear


Dromedario para colorear


Tagalog Sad Love Quotes – Lungkot


Love Quotes Tagalog


Tamis Ng tagumpay


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario



Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC