MIDI Implementation Proposal

Slightly prefer the Function based organization (and the OP seems to have a sliver of Function based to it) .

What about backwards compatibility? The midi spec is already in use, so I doubt we’re going to remove the current set of CC’s .

On the mixer volumes, I see your point. On the track volume, I assume this works in tandem with Select CC 52? If so, that works for me. You might want to add “previous” and it might be OK to give up a future track 9 for that. On part, perhaps it only makes sense to adjust volume on the current part.

Is select like a cursor? You might need to have more than one type of select: select track (as in 6x6 mode today without midi), select track in mixer view, and select for midi commands that don’t have track number embedded.

IMHO on timing mode, I hope changes to this would not affect already queued commands. For simplicity, I’d really like the concept of a default mode and a mode that only affects the very next command (and then reverts back to your default). That avoids tap dancing/extra midi commands to pop the mode back to the default.

They should definitely stay away from the current documented CCs and maintain complete compatabilty with what has been done so far. Once you release MIDI spec, it should be immutable. (all the more reason to find a forward looking pattern and try to stick to it).

Exactly.

If I understand correctly, you are thinking of a scenario where you are Selecting a track, but want the expression control to manipulate the Track that you just left? This could be more reason to dedicate a CC for each Track volume. Others loopers tend to do that.

There’s also the potential, as I might have mentioned before, for dedicating 1 CC or Note values for convenience or macro commands. Basically, batching up a few commands to define a pattern for behavior.

I would probably avoid this for now, simply for the fact that I don’t know what support there is for adjusting the volume of a part in the engine.

That’s a valid way to state it, yes. It’s not necessarily a UI thing (though it could be) as much as it provides context for subsequent commands.

I think part of your idea is that there would be a Select command that would also change views in the Aeros UI. That’s not what I imagined. Certainly if you were in Mixer view, and you issued a Select command, it would probably be best to have the track also selected in the UI. Same for the Loop screen.

I think of most software as having an engine with a bunch of “private” functions. The UI is just one way the developer created to access those functions. MIDI would be a second way. There, of course, could be UI interaction through MIDI when it makes sense. Easy way to look at it is thinking about a MIDI command to change Stop Modes: Immediate, EOM or EOL. Issuing that command should not mean switch to Settings in the UI.

I do know that the model I propose lacks any form of commands meant to specifically drive the UI. That, to me, is another discussion. One that I would have qualms about if I were the developer. The thing is, when MIDI commands are dependent on UI on a device like Aeros that presents a software UI, then when the developer wants to change that UI, the MIDI spec may have to change with it or fill up with deprecated commands. It goes against the idea of having an immutable MIDI spec and greatly increases the maintenance burden and user pain.

I do think there is a level of UI driven commands that makes sense, especially generic ones such as Scroll, Focus and Click. Anyway, sorry for the tangent, my goal is have a conversation on needed performance CC commands. A whole other topic probably awaits for UI based interfaces and the much needed PC commands to load songs.

A big part of that lays within the capability of the Aeros engine, which I don’t know. If the Aeros engine itself could have queued commands pending with various Timing Modes, then it stands to reason that it would be possible via MIDI.

What I’ve done for now is revised the Function based model and added values to the various modes that explicitly use the Settings default. That’s also reaching as I don’t know whether changing the Timing mode in the first place must overwrite the Settings value … or even if can actually be done in real time (dynamically). If it all can be done, this may be a good case for a convenience or macro command that fully initiates the change and the behavior that follows.

I also realized just now that I missed the Lock/Unlock commands, so I added them as well. That is SUCH a powerful feature, I really have begun to rely on it. I can only dream of what may be possible with MIDI interaction (within the rules of the Lock feature itself, of course).

I didn’t mean that a Midi command would modify the UI view directly (or change screens so you would see that) upon selecting a track, but given how 6x6 mode works, a midi command probably needs to change the “selected” track (which would show up in the UI as the internal model changes). And once you do that, you need to keep that separate from the notion of “select track” in the mixer (which would be nice to have midi controls as well). I agree it’s a slippery slope to tie the midi to the UI, but it also gets confusing if you ignore it.

At some point it would be nice to enable a super hands free UI mode with the help of midi, but was not thinking about that right now … and that would likely require internal changes to the Aeros. I’ve been pushing for this without midi…

In terms of backward compatibility (which I’m a big fan of), hopefully we don’t have functionality duplicated across CC’s (but not at the expense of the future).

I would also like to see midi control of the input/output routing settings. Suspect others would like other settings accessible via midi.

I think I see, you want to have different contexts for Select, so you could Select a Track for a looping command and Select a different Track for a Mixer command and keep working with both in parallel. Is that it? That’s a good one!

I know this isn’t an official SS document, but I think hashing this kind of stuff out is really valuable as they consider their own MIDI implementation.

1 Like

Another refinement. Separating out what I’m calling “Instant Action Commands” from “Select Action Commands”. I think it would be more easily readable and makes specific controllers more catered to different kinds of uses. Also provides a little more space in each controller for expansion.

Loop Commands (instant action) - CC: 80
0: Exit Record Mode (ie: Play Mode. Takes a track out of Record or Overdub mode)
1-6: Record Part Number (value = part) (Records on next available Track in Part)
7: Record Next Part (Records on the first Track in the next unused Part)
11-16: Play Part Number (value = (part + 10))
17: Play Next Part
21-26: Record Track Number (value = (track + 20))
27: Record Next Track
31-36: Overdub Track Number (value = (track + 30)
41-46: Record or Overdub Track Number (value = (track + 40) (Record if New, otherwise Overdub)
51-56: Undo Track Number (value = (track + 50))
61-66: Redo Track Number (value = (track + 60))
71-76: Undo/Redo Track Number (value = (track + 70))
81-86: Lock Track Number (value = (track + 80))
91-96: Unlock Track Number (value = (track + 90))

Loop Commands (select action) - CC: 81
0: Select Next Song Part
1-6: Select Song Part Number (value = part)
10: Select Next Track
11-16: Select Track Number (value = (track + 10))
20: Record Selected Part (Records on next available Track in Part)
21: Record Selected Track
22: Play Selected Part
23: Overdub Selected Track
24: Record or Overdub Selected Track (Record if New, otherwise Overdub)
25: Undo Selected Track
26: Redo Selected Track
27: Undo/Redo Selected Track
28: Lock Selected Track
29: Unlock Selected Track

Mix Commands (instant action) - CC: 82
1-6: Mute Track Number (value = track)
7: Mute All
11-16: Unmute Track Number (value = (track + 10)
17: Unmute All
21-26: Mute/Unmute Track Number (value = (track + 20)
31-36: Solo Track Number (value = (track + 30) (Mutes all other tracks. Use ‘Unmute All’ instant action to remove Solo)

Mix Commands (select action) - CC: 83
0: (reserved for possible Select Next Song Part reference)
1-6: (reserved for possible Select Song Part Number)
10: Select Next Track
11-16: Select Track Number (value = (track + 10))
20: Mute Selected Track
21: Unmute Selected Track
22: Mute/Unmute Selected Track
23: Solo Selected Track (Mutes all other tracks. Use ‘Unmute All’ instant action to remove Solo)

Timing Modes - CC: 85
Governs the timing used by related commands
0: Stop Immediate
1: Stop End of Measure
2: Stop End of Loop
3: Stop Default (Use Aeros Settings Value)
10: Change Immediate
11: Change End of Measure
12: Change End of Loop
13: Change Default (Use Aeros Settings Value)
20: Mute/Unmte Immediate
21: Mute/Unmute End of Measure
22: Mute/Unmute End of Loop
23: Mute/Unmute Default (Use Aeros Settings Value)

Workflow Modes - CC: 86
Governs the Record, Overdub, Play order
0: Default (Use Aeros Settings Value)
1: ROP
2: RPO

Footswitches - CC: 87
Performs actions as if the user was pressing a footswitch on the unit.
0: Left Switch Press
1: Left Switch Release
2: Left Switch Long Press
3: Left Switch Long Press Release
4: Left Switch Double Tap
10: Middle Switch Press
11: Middle Switch Release
12: Middle Switch Long Press
13: Middle Switch Long Press Release
14: Middle Switch Double Tap
20: Right Switch Press
21: Right Switch Release
22: Right Switch Long Press
23: Right Switch Long Press Release
24: Right Switch Double Tap
30: Stop Switch Press
31: Stop Switch Release
32: Stop Switch Long Press
33: Stop Switch Long Press Release
34: Stop Switch Double Tap

Selected Track Volume Expression - CC: 20
0-127: Volume Level of Track selected by CC: 83, values 10-16

Track 1 Volume Expression - CC: 21
0-127: Volume Level

Track 2 Volume Expression - CC: 22
0-127: Volume Level

Track 3 Volume Expression - CC: 23
0-127: Volume Level

Track 4 Volume Expression - CC: 24
0-127: Volume Level

Track 5 Volume Expression - CC: 25
0-127: Volume Level

Track 6 Volume Expression - CC: 26
0-127: Volume Level

Click Volume Expression - CC: 27
0-127: Volume Level

Master Volume Expression - CC: 28
0-127: Volume Level

I want to go into a little of the rational for having both Instant Action commands and Select Action commands using just 1 example, because they might seem redundant at first, but each does solve a very specific need better than the other.

Using Mute and Unmute.

Use Case #1: I have a bank in my 4-button foot controller to execute actions in a specific song with specific needs. One of those may be to Mute and Unmute Track 2.

Switch 1: Set for Toggle and pass in these specific commands for the ON and OFF states: CC: 82 Val: 2 (Mute Track 2) or CC:82 Val 12 (Unmute Track 2). (or just use CC: 82 Val: 22 if it suits your controller better and you don’t need state persistence loaded in by a preset).

Use Case #2: Same 4-button controller, but now what I need is a way to generally control the Mute or Unmute for any one of the tracks at any given time.

Switch 1: Scrolls through the Selected track with CC: 83 Val: 10.
Switch 2: Mute Selected Track with CC: 83 Val: 20
Switch 3: UnMute Selected Track with CC: 83 Val: 21

(or use Switch 2 for both Mute and Unmute using CC:83 Val 22, which makes this Use Case function almost exactly like the Mixer page on the Aeros today)

User Case #3. Same 4-button controller, similar to User Case #2, but I really only need to Mute/Unmute track 1-2 and 4-6 at any given time

Switch 1: Uses the Controller’s own Scroll function (ie: Step) to scroll through all Tracks, but skips over Track 3 with CC: 83 Val: 11, 12, 14, 15, 16. (one of the controllers that I own can store up to 16 steps with each footpress of the same button, another one I own allows for 5 steps.)
Switch 2: Mute Selected Track with CC: 83 Val: 20
Switch 3: UnMute Selected Track with CC: 83 Val: 21

If you look at the proposal in this way, I think it is easy to see the greater potential for users developing their own specific workflows. What we have today is only what’s in the italicized section in Use Case #1 above.

1 Like

I’d like to throw in what I would be trying to do with the Aeros - and perhaps this is already possible with what has been implemented? If someone could help guide me on whether I should bother trying (i.e., purchase) or wait until the MIDI was been completed before purchasing an Aeros, I would be very grateful! I want to avoid pulling the trigger and then not knowing if it will ever work the way I’d like it to…

Basically, I would like to pair an Aeros with an Elektron Octatrack, MC6, or other MIDI playback device to accomplish what many people (like Elise Trouw) are doing with Ableton currently with looper plugins and automation - that is, have the MIDI start record, mute, unmute, add tracks, change parts, stop, play, all from MIDI CC messages. Sort of shape the performance as you go and trigger the recording and play.

This would allow a hands-free setup that would keep the focus on the performance of the parts in sequence, rather than needing to manually turn loopers on and off, mute, etc.

When I watch some of these looper videos I do not sometimes get the sense of joy from the performer because of all the technical stuff going on. But when I see the Ableton-based performances, I see a lot more of the performer than the top of their head as they tap tap tap. Hope this makes sense? I can explain further if needed. I would expect there to be some constraints, I mean, no one is expecting this to be Ableton, but the capability that it has today is incredible and would seem like enough if it can be automated fully with MIDI. This would make an awesome gigging monster.

So, what you do think? Try it now or wait for a fuller MIDI implementation? Thanks for reading!

1 Like

you can try using this software with the aeros as well.
i hope that helps for some use cases.
2 Likes

You guys all get this whole midi thing way more than I but I’m trying to get up to speed and desperately want to see Aeros very versatile and a joy to perform with rather than the tremendous stresser it is currently. Coming from using an Infinity I love the extra tracks/parts available. I haven’t pulled the trigger on a midi foot control yet. I feel like Maestro only offering 6 switches, the price and it’s size isn’t what I’d really be interested in. But until I know a foot control will actually be of benefit, I’m not going there. I can only hope SS is paying some heed to your thoughts.

1 Like

The MIDI implementation in Aeros is the minimum required to match the ideas for use that the developers had in mind for combining it with the BeatBuddy and subsequent Maestro release. Unfortunately, there is no single workflow pattern that matches a majority of users or even songs, so in that regard it is currently very restrictive. I’m controlling some features with MIDI, but not the way I really want to.

Your list of wants are not that long, and Aeros does a lot of those things on a surface level, but the way it achieves them may not be want you expect. The most glaring issue is that it doesn’t Play or Overdub from MIDI. What I mean is, you can start a recording of a part or a track, but your only option then is to record another part or track, you cannot simply put it into “play” mode (or even overdub mode). Once you have a couple parts recorded, you can move around from one part to the next … and that DOES put it into play mode from a recording state … but it’s not something you can do until you have a couple parts already to work with. I have to use the switch on the Aeros itself nearly all the time to suit my compositions. Basically, you can’t perform a lot of the conveniences you would expect … I like to program one switch that transitions through various states logically, so I don’t hunt around for which switch to press next. I can do that with their MIDI currently to toggle some song parts, but you can’t do something like have a switch that Records, Plays and Overdubs with successive presses as the switch on the Aeros itself does.

Muting is major roadblock for me as well. The MIDI implementation uses only a toggle state … you can’t command a track to either be muted or unmuted specifically … it must toggle. Sometimes that’s what you want, but there are a lot of other times you need to reuse switches in a logical way where you want to be very specific what you want a track or tracks to do for muting. People who develop complex MIDI workflows know what I’m talking about.

Frankly, I could write a novel about the roadblocks I’ve faced, yet I’m determined to just get on with it instead of waiting for the upgrades. Bottom line: The MIDI implementation in Aeros has a VERY narrow scope suited to one persons idea of a workflow for a song and nothing else. I hope they do away with the concept of trying to figure out MIDI workflows and just give us all the discrete commands to do it ourselves.

3 Likes

Oh man, thanks for pointing out the XOR nature of the mute and solo messages. It’s seems like it’s so close, but having the MIDI messages operated solely on the current state of the device would make for a fragile live system. One slip up, and you’re out of sync if you’re trying to automate the looper.

I really hope they add absolute messages as well (in addition to the XOR), so that you could, say, run an “init” MIDI routine and have the looper exactly in the state you expect for a new performance, in addition to going from recording a track into play and not be forced to start a new track - if I understand correctly - that would be very limiting.

With the conditional trigs having been added to Octatrack, the combo could turn the Aeros into a very cool interactive looper that is almost self-run, by sending CCs to Aero on first play of an OT loop, and then mute for later - so that you can build up parts but make an arrangement that changes over the course of the performance. As it stands, there seems enough for it show potential. I might give it a try and see how far I can get. I love the looping features it has, I mean, it’s brilliant in this way. Definitely would be keen to have Auto Quantize - another way it could sync to OT.

My ultimate goal is to have an automated work flow that you can record parts with minimal fuss that get muted and then come back as the arrangement calls for it, with periods carved out for more improvisational moments, hence the need to be able to “reset” state of the pedal in case you go nuts. This is still all very exciting. I hope they are listening and I hope they come back with a MIDI spec that makes all of this possible.

Ableton really loves the performers who can do these “effortless” jams (after hours of pre-production and programming). Think of the way that Ableton can be automated by MIDI - every aspect (just about). That was truly groundbreaking and has allowed so much creativity beyond what they could have imagined. SS could certainly have a great vehicle on their hands if they made this possible, even if it was not what they had imagined it would be used for.

1 Like

I also didn’t mention that you cannot load songs with PC messages. There’s a way to open the song loading screen and scroll though songs which is … I guess … one way to do it. Not really what a live performer wants. There is a command to start a new empty song based on the one you have currently loaded … which at first I thought would be a good way to reinit my session during practice … but it didn’t remember the “Lock Track” state (a newer feature of Aeros which I sometimes use which you can set before you start performing). And … Lock Track isn’t support in the MIDI commands … so bending down anyway.

2 Likes

Thanks for info @RockDebris. Yeah changing songs via PC messages will be pretty important for live performance.

I want to thrown in also, the Elektron Octatrack’s MIDI implementation incorporates both MIDI notes and CC messages. The MIDI notes are more geared towards operating the OT’s discrete operations via a MIDI controller (play, stop, record), while the CCs allow automation of other functionality (volume, panning, effects). It sure would be simpler to sequence a note sequence rather than a bunch of MIDI CC for the basic automation, so I hope it’s something they consider.

Here’s a link to their manual: https://www.elektron.se/support/?connection=octatrack-mkii#resources
Check out pages starting at 137. I’m no expert in MIDI automation, but this seems pretty cool to me.

Meanwhile I’ve placed my order for an Aeros, so be expecting more feedback soon as I explore the device in person. I’m pretty excited at the possibility of it augmenting my production workflow right now, and then hopefully incorporate it into a live show once that’s a thing again. I think the combo of it and the Octatrack is going to make a powerful duo. I love what it does today, and can’t wait to see what tomorrow brings.

1 Like

Oh I agree. I like the pattern of using Notes for discrete commands and not taking up entire CC ranges for that same, single concern or purpose (It also opens up the possibility of easily doing a few things from a simple MIDI keyboard if it suits your setup). Alternatively, pick a CC and fill that one up with discrete commands (that’s actually what the EHX 95000 does on CC 3). It’s still 128 potential commands filling up 1 space regardless how you slice it. I think with what could turn out to be a large set of controls and features in Aeros, you do want to plan a bit more carefully. At this point however, I’ll take even a badly planned implementation just do a few more critical things. Welcome to fray. I hope you don’t have to wait as long as I have.

1 Like

This is what I do actually. In my case I use Bandhelper on my ipad for set lists and each song has either a backing drum track, or if I play with a drummer, a click track as Recording 1. Recording 2 is a MIDI file that I have created using MidiEditor that runs in parallel with the backing or click track. The Midi file controls the looper as well as Preset changes on all my Midi enabled gear. It turns effects like Harmony on and off on my VoiceLive.

You are right about performance. I play guitar, sing the vocals, and play bass with a combination of looped bass lines (using a Whammy to drop the guitar an octave) and playing simple bass notes with a set of basspedals. I am able to relax more and focus on my vocals and guitar with this setup. Still use the basspedals to play some simple bass lines and synth parts, but no more foot dancing for the looper and pedal presets.

My advice to you is wait. Aeros has been an expensive space holder on my board for months, waiting for MIDI implementation. There are a lot of us frustrated because I think many assumed the MIDI thread started by Singular Sound indicated it was happening soon, but we are all still waiting months later.

3 Likes

And from the looks of it, people will still be waiting months for all of it since they’re going to be breaking it up into different firmware releases. Next firmware is only supposed to be memory fixes and very little midi stuff, and then maybe lucky to get the other firmware by september for more midi stuff?

You won’t catch me defending SS over their MIDI implementation to date, however anyone who imagined it was going to be ready so soon after the last firmware release was just setting themselves up for even more disappointment.

Anyway, this thread was an attempt by me a while back to circulate some ideas among the community; best to let it fade unless anyone wants to add ideas (and there are probably better monitored threads now to do that as well).

@BrennanSingularSound I won’t be offended if you want to delete the whole thread if it interferes or maybe conflicts with any official info SS needs to put out. It could see it being confusing when it gets top posted.

1 Like

No need to delete, I can just close, please go ahead and check this out, this post will shed some light on MIDI plans.

Reopening to just post this here!

4.1.x beta is out!