Mattilyn Mattroe contributions


#1

Hi!

I don't know github and my axoloti laptop is offline so I'll post stuff here beforei figure that out.

Launch control XL objects

Here's some objects I put together for the launch control XL by messing with the factory midi objects and rbrts launchpad objects. All of them work with the first default bank CC's and notes on channel 9, so pretty plug and play.

First up, a sequencer help patch. Bottom right button on the launch control xl is play, bottom 16 buttons are step toggles, top two rows of knobs control the pitch of the corresponding step -

launch control xl.axp (63.2 KB)

Here's the light objects, for displaying values from a table on the knobs or bottom buttons, based on rbrts matrix display launchpad object

matrix display LCXL.axo (7.1 KB)

matrix display knobs LCXL.axo (6.9 KB)

These are for displaying the current step on the knobs or bottom buttons, the light that runs across the buttons as a sequence is playing.

step display LCXL.axo (4.4 KB)

step display knobs LCXL.axo (4.4 KB)

This is a step toggle for the bottom 16 buttons

step toggle LCXL.axo (3.3 KB)

Here is a keyboard input for the bottom 16 buttons - outputs midi notes 64-80, or 0-15 in axoloti, if you see what I mean.
keyb LCXL.axo (2.9 KB)

And some gate objects for the buttons

bottom buttons LCXL.axo (3.4 KB)

lower right buttons LCXL.axo (1.5 KB)

upper right buttons LCXL.axo (989 Bytes)

Hope they're useful.

Mattilyn


808 or korg electribe style step sequencer
Launchcontrol XL Led Feedback
Send list of midi notes to controller
#2

I came here from another thread, it does look like a very interesting collection!
I will certainly play with this...


#3

So, I'm now in the library...

Here's my first upload as a test, let me know if it worked!

matroe/math/vel sense

it's a combination of math objects that gives an easy way to add a velocity sensitivity control. It's useful for some other things too.
When sensitivity is at 0 the velocity is always at max, and gradually gets more responsive as sensitivity goes up.

Screenshot of the help patch:


#4

Some new midi objects and a patch. They're untested in version 2, and most likely won't work. I'll update them when I finally move on to 2...

Midi looper objects.
matroe/midi looper/
A suite of objects to make a midi looper patch.

There's a "midi looper" patch in the matroe folder, and a copy of it as a help patch:

It works in a similar way to ableton's session view clipslots; If you trigger an empty clip it starts recording at the beginning of the next bar. If you trigger it again, or it reaches the maximum bar length, it stops recording and plays at the next bar.

The patch is setup to record channel 10 and send it to DIN, with 8 clipslots available with a max length of 4 bars each.

This is all adjustable, you can change channel or output and have a longer maximum length and more or less slots, but the size of table needed will change depending on settings and they can get pretty big.

It records notes, pitch bend, CCs and mono aftertouch (poly touch version is in the works). It is 16 note polyphonic and can quantize notes to 16ths. It has an "erase shift" - if on and you hold a note, that note is deleted from the loop.

It has an internal clock and metronom, and can send clock, but will automatically switch to an incoming midi clock and start/stop messages if received.

Let me know if you come across any problems, but it seems stable in my tests so far.


Midi in simple sequencer
#5

And some launchpad pro sysex objects...

matroe/LPadPro/layout
matroe/LPadPro/txt display

They send sysex, one changes the "layout" mode on the launchpad pro: note/drum/fader/programmer.

The other displays scrolling text on the launchpad.

They are quite a clear example of code to send sysex if you're interested in that kind of thing...


#6

matroe/midi/clock auto

A mod of the internal clock object. It has an internal clock that can be sent out to hardware. If an external midi clock is received it stops the internal clock and, if set to send midi, it will also thru the external clock.

matroe/midi/monitor plus

A mod of the factory midi monitor. It can now log channel pressure, clock and clock start/stop messages.
It also displays the device (numerically) and port the message came from.

Midi thru objects

matroe/midi/thru CC - only thru's CCs on the selected channel
matroe/midi/thru ch - thru's any midi on the selected channel
matroe/midi/thru clock - thru's incoming midi clock to one or two outputs
matroe/midi/thru ch exclude - thru's all midi except from the midi on the selected channel
matroe/midi/thru ch translate - all midi from the inchannel will be sent out on the outchannel
matroe/midi/thru shift - midi on the selected channel will be thru'd. If the shift inlet is high it will be sent on the shiftchannel.
matroe/midi/thru options 2.0 - a midi thru with detailed options, an update of the one I posted somewhere in the forum previously...


#7

Hey Matt

just wanted to say thank you properly for the easy to follow sysex objects, had a chance today to fool around with them and had some of my sysex hardware making lovely noises that they couldn't possibly have made by themselves, a bit like their owner and axo coding, they really appreciated the help...... not sure how it correlates to how many bon bons, pomme frites and Pied Apples I owe you off the back of this but now maybe I can give them in HEX.

Also, am I correct in thinking that on 1.0.12 at least I can't send this sysex stuff out the din, that it has to be usb?

Cheers again, Hoorays for Matt


#8

Thanks! Nice to hear they're useful!

I've got no reason to think that it wouldn't work with the din, I just limited the object because I was thinking of the launchpad pro. Just realised it's not using the output attribute at all...

Try it and see. I don't have any din sysex stuff to test. Just a matter of changing:

MidiSendSysex(MIDI_DEVICE_USB_HOST, 2, sysexArray, 9);

To :

MidiSendSysex(MIDI_DEVICE_DIN, 1, sysexArray, 9);


#9

Awesome, thanks Matt will give it a try


#10

No Dice on the Midi Din sysex, or at least none from my preliminary tests (might be another reason why none of my coding attempts worked), will just use usb host and do a cable work around, it sure would have been nice to go direct....but at least sysex is available to me, opens up a lot of possibilities..thanks again for your help


#11

same here, nothing comes out of DIN port at all when sending SysEx to it.
anyway, USB works, so i'll try USB MIDI interface.

EDIT: yes, USB MIDI interface did the trick, and Launchpad Pro received SysEx message via its MIDI In (minijack) port and reacted to it properly.
so, we've got a workaround for old gear.

EDIT 2: also, no luck with USB device port.
seems like SysEX send works only with USB [host] port for some obscure reason (i guess somewhere in firmware).


#12

@reubenfinger @chaocrator you guys are a bit unclear here, is DIN midi still not working after you alter @MattilynMattroe's object by replacing the device in the midisendsysex line?


#13

@weasel79 exactly.
since i have to modify it anyway, i started with trying to send SysEx to different ports :slight_smile:


#14

Hey Weasel, no din isn’t working to send sysex with this object on 1.0.12.

However 2.0 has din sysex support so it probably will work there. I haven’t yet migrated to 2.0 so haven’t tested


#15

does not compile on 2.0:

compiling /home/private/chaocrator/axoloti-2.0.0/build/xpatch.cpp
In file included from /opt/Axoloti/app/api/xpatch.h:21:0,
                 from <command-line>:0:
/home/private/chaocrator/axoloti-2.0.0/build/xpatch.cpp: In member function 'void rootc::instancecustom::dsp(rootc*, bool, int32_t)':
/opt/Axoloti/app/api/midi_legacy.h:18:44: error: 'midiSendSysEx' was not declared in this scope
 #define MidiSendSysEx(dev,port,bytes,len)  midiSendSysEx(dev,bytes,len)
                                            ^
/home/private/chaocrator/axoloti-2.0.0/build/xpatch.cpp:172:2: note: in expansion of macro 'MidiSendSysEx'
  MidiSendSysEx(MIDI_DEVICE_DIN, 1,sysexArray,13);
  ^~~~~~~~~~~~~
/opt/Axoloti/app/api/midi_legacy.h:18:44: note: suggested alternative: 'MidiSendSysEx'
 #define MidiSendSysEx(dev,port,bytes,len)  midiSendSysEx(dev,bytes,len)
                                            ^

#16

Thanks for testing, I wonder if it's implemented differently indicated by "midi_legacy.h:18:44: error:"


#17

MIDI implementation in 2.0 is significantly different, it introduced virtual MIDI ports layer and other things.
(that's the reason for me to keep at least one board at 1.0.12, because it serves MIDI routing via Miditech MIDIface 8x8. in new implementation virtual 8 MIDI i/o ports just can't address 16 physical i/o ports of MIDIface. in 1.0.12, i have all of them working, plus Axoloti's own MIDI DIN ports, totally 18.)


#18

Hey guys I tried to build a sysex object with @MattilynMattroe's launchpad object (thx matt :raised_hands:). Somehow no sysex was arriving.

BUT I managed to send sysex via the din output with this line of code suggested by johannes


#19

Thanks for that Smyth, will investigate, what are you trying to send sysex to?

I am sending it down the host port thru a Novation Remote SL and then on to din, sometimes the remote sl can be finnicky about start up sequence, so it has to be on & connected to a power source before connecting to the host port or it won't work, just a thought, also the sysex string is in decimal so you will have to convert your hex string,

eg alpha juno filter cutoff of (midi channel 4) is;

F0 41 36 03 23 20 01 10 i F7 (where i is the data being changed)

and in the object the sysex string appears as 240,65,54,3,35,32,1,16,i,247


#20

I'm sending sysex to my voice live touch. I'm using it to acces hidden parameters that can niether changed in the units ui nor through midi cc.

For the object hex or decimal doesn't really matter:

My strings are slightly more complicated because the Vlt uses 28bit values that are packed into four bytes and can be positive and negative.

I'm quite happy about this atm because my usb host ports are blocked by midi controllers anyway. But in the future I plan on changing my setup and using a midi interface to controll more of my hardware.