My ? is...is there a way to momentarily toggle
mute, solo while in a live mixing process?
In logic 9 i am in expert view in the control
surface assignment window. I have assigned solo buttons on 8 tracks to my midi keyboards
white keys starting at c1. The on/off toggle
works fine. Press key down once to turn solo on, and then press again to toggle
off. I would rather hold key down to toggle on, then release to toggle off. Does anyone
know if this can be achieved in logic 9? Thanks!

Peter Ostry

Staff member
First, look if Logic learned the correct value. For the note C1 on Channel 1 the "Value Change" field should show 90 24 Lo7. If it doesn't, you can type that yourself.

Second, it is a matter of the velocity. You want a very high value when you press the key but not hit the key with full strength. Multiply the value by 100, this way you get MIDI maximum from velocity 2 on.

Third, of course do not set the mode to "Toggle". Leave it as "Scaled" or set it to "Direct". Both work.

Upvote 0


Pete, i have typed in the value in the field (multiply) you mentioned and
switched to direct and it works..... but, when i turn learn mode off, the
press 1 on press 2 off toggle comes back. I am wondering if it has anything
to do with the touch/release field. The instructions read, to add an integer
value to this field, and i am not sure what that is.
Upvote 0

Peter Ostry

Staff member
... but, when i turn learn mode off, the
press 1 on press 2 off toggle comes back.
This was the wrong order of actions.

Here is the standard process:

  1. Switch Learn mode on.
  2. Press and release the key.
  3. Switch Learn mode off.
  4. Check the learned value, correct it if necessary and set the multiply field.
Editing data while the Learn mode is on makes no sense because when you release the key, Logic learns the note-off. And it always tries to figure what you mean, so it may interpret your message in a way you don't want.

If you learn a button, best is to press it slowly three times. Then Logic should be sure what kind of control this is. Always work slowly in Learn mode and switch the Learn mode off before you edit anything.

Under rare circumstances it makes sense to press a button or key and switch Learn mode off before releasing the button or key. Or vice versa: pressing, turning Learn mode on, releasing and turning Learn mode off. But this is seldom necessary, only if you can't get a certain behavior otherwise.
Upvote 0

Peter Ostry

Staff member

you told me that the solo function via keys is still not working for you (please stay in the forum for questions). I tried again, this time with a real keyboard and found out that my first screenshot was not entirely correct. Toggling by keys does not work here with the mode set to "Scaled" but must be "Direct". For me it worked with the fake keyboard but not with a real controller. However, you can easily try what works and what not.

Btw, Apple provides a separate manual for Controller Assignments:
It is not very easy to understand but may help you. For certain tasks you need to understand the functions, working with custom assignments is not plug 'n play and sometimes it is just trial and error.

Below are the data that work for me:

1. Controller Assignment Parameter
For the test I've set the Channelstrip to Selected Track. This does not make sense if you want to solo more than one channelstrip but is good enough for testing.

2. Input Message
Make sure that Logic learned from the right controller. If you have something else running, Logic might learn something else while the Learn mode is on. You may need to set the dropdown menu to your keyboard manually after learning. And check the learned value. If it does not show what you wanted to learn, learn again or type the value into the field. The grey field below shows you what the code in the field means.

3. Value
For your application the Format menu must show "Unsigned". Set Multiply to 100 because of the velocity thing we discussed and Mode should be "Direct".

You should have everything like my data, only your controller will have a different name (unless you also named it "Keyboard" in the Mac's Audio/MIDI Setup). Remember, don't change values while you are in Learn mode. You can tweak the parameters afterwards.

After you got this running with a single key we can talk about assigning multiple keys to multiple channels.
Upvote 0


Hi Pete,
Still no success. I have all set the same exact way you illustrate. Once again to no
resolve. I am trying to figure out the touch and release field, thinking maybe this
has something to do with the momentary action. Thanks!
Upvote 0

Peter Ostry

Staff member
I don't believe it.
Try the attached Logic project. Just set your Keyboard in the Assignments panel and hit the Key C1.


  • KeySolo.zip
    117.5 KB · Views: 120
Upvote 0


HI Pete,
I opened key solo and pressed c1 key and solo still toggles on/off.
Since it's working for you, it must be another parameter in logic
that i have to contend with. I went back to the default CS settings.
earlier today. I will have to keep searching. The ? i am asking
myself is what can temporarily disable the momentary function
in any other parameter? THANKS.
Upvote 0

Peter Ostry

Staff member
This was my fault, sorry. I gave you a solo toggle but you had this already and want a momentary solo ... I do not know a way to do this with Controller Assignments, maybe someone can enlighten us and explain the settings for a momentary function.


Here is the solution for the Logic environment:

What do we want?

We get notes from C1 to G1 from a keyboard. Each note should solo one of eight channelstrips when pressed and un-solo when released. The velocity must not have an influence. We agree to cable directly to 8 dedicated channelstrips, there is no switching matrix in this version. And we agree that the notes used are chromatic because handling only white keys would require individual filtering. Notes outside the range C1-G1 should go to the sequencer for playing.

What do we need?

Logic usually works with the internal message type "Fader", so we are going to use this. The solo button reacts to Fader, Channel 1, number 3. A high value turns solo on, a low value turns it off. Therefore we need to convert the notes within the range C1-G1 to this message and send the events to eight channelstrips individually.

How do we do that?

We convert the note range to Fader messages, convert note numbers to channel numbers, set the required message number, split the channels and finally set every channel back to 1 to deliver them to individual channelstrips. It may sound strange first to change the channels and then set them back to 1 but it is easier this way and needs less configuration when we want another note range or something else. Note: If we would want only the white keys from the keyboard, the patch would look different.

The whole patch


We get our notes from the Physical Input object. The first transformer works exclusively on our note range and converts these notes to Fader messages. Other notes and al controllers go to the sequencer and therefore to the selected track in teh Arrange window.

The second transformer sets each note to its own MIDI channel and sets the message number generally to 3 as required for the solo buttons of the channelstrips. The messages are then split by channel number and finally, when we have 8 individual lines, all lines are set back to channel 1 and cabled to the channelstrips.

To cable the 8 transformers to their channelstrips, either drag the cables across windows or hold the Alt key, click on the output of a transformer and select the channelstrip from the popup menu.

The first transformer

This first transformer sends everything but the notes C1-G1 to its upper outlet. Our 8 notes are converted to Fader messages with a Data Byte 1 value (former pitch) of "note number minus 36". Key down sends 127, key up sends 0. The converted values are sent to the lower outlet of the transformer.


The mode menu is set to "top cable" because we want to separate our solo notes from everything else we need for playing.

Input (Conditions)

  1. We deal only with notes, other messages should go through.
  2. We work only inside the range C1-G1.

Output (Operations)

  1. We convert the message type to Fader.
  2. The following second transformer will convert the former "Pitch" to "Channel", so we need a usable MIDI channel range. C1 is note number 36, we subtract 36 to get a zero from the lowest note. There is a bug in Logic 9, subtracting does not work for note pitch. Therefore we add -36 which is the same as subtracting.
  3. We don't want velocities but need just key down or key up. For that we use a transformer map. Incoming value 0 remains 0, all other velocities are set to 127. This way we have only two states, regardless how hard we press the keys on the keyboard.

If you want another note range, you have to adopt the substraction. Just subtract the MIDI note number of the lowest note, this gives you a zero and that is what you need.

The second transformer

After we got our Fader messages and prepared for channel numbers we shift the former pitch value, now Data Byte 1, over to the MIDI channel. And we set Data Byte 1 to number 3, which is the message for the solo buttons of channelstrips.


We have everything set in the first transformer, no need for more filtering. To route Data Byte 1 to the channel, click on the middle part of the black vertical line until it goes into the direction you want.

What do we have now?

We have 8 Fader messages on 8 channels, each with number 3 to switch solo on or off. Pretty good! We just need to split the channels and finally set them back to channel number 1 because the solo buttons like this very much.

Final stage

Splitting channels is easy, the Channel Splitting object has 16 outputs. We cable the upper 8 outlets to transformers. There is nothing special in those transformers, they are identical. All of them just set the channel number to 1. Finally we cable each transfomer to a channelstrip and are done.

Sounds complicated? Maybe. But isn't really. Here is how the patch looks without the monitor objects:


And I attached a Logic project. The only thing you have to do is to cable the correct port of your incoming keyboard-MIDI from the Physical Input to the first transformer because my port would not work for you.


  • KeySolo_2.zip
    83 KB · Views: 107
Upvote 0


I found a way to do it. Try this with 1 track.
STEP 1. touch the solo button on the track you want to assign... then make sure the solo button is off.
STEP 2. Turn on learn mode and press the c1 key.
STEP 3. Turn off learn mode then choose rotate for value mode.
STEP 4. With learn mode off, turn on the solo button on same track
by pressing and holding down the c1 key.
STEP 5. Turn on learn mode, then release the c1 key.
STEP 6. Turn learn mode off and value mode should show rotate.
STEP 7. Press c1 key and release. A momentary toggle action should occur.

You can do it in these steps for each track you want assigned.
Or, you can assign other tracks by cabling the tracks you want assigned to
the 1 you have prepared in the mixer environment window.
(thanks for the tip). If you do it in this way, then all you have to do is
press the c1 key and all cabled tracks will respond.
I still think there maybe something to do with the touch/release field.
I will keep searching.
Upvote 0

Peter Ostry

Staff member
STEP 2. Turn on learn mode and press the c1 key.
STEP 5. Turn on learn mode, then release the c1 key.
Mhm, yes, you map solo-on and solo-off separately to note-on and note-off, which is a logical approach. I tried that before and it did not work. Now, with your step by step description it worked once out of four times. Not sure if we can recommend this as a common method. But when you have the "feeling" for that, it can work well for you.

Btw, when I got it working I noticed that the mode doesn't make much difference. It kept working with Direct, Scaled, Toggle and Rotate. And I had to multiply the note-on by 100 of course because of the varying velocity. Otherwise it didn't work always.
Upvote 0