Jump to content

Hans Zimmer Style Control of Logic Pro X


speakerfood

Recommended Posts

Hi,

 

I watched this excellent video tutorial from Junkie XL, which shows how he has a touchscreen set up to perform different functions in Cubase, which he got from our dear friend Hans Zimmer.  One of the things was to control the visible tracks in his enormous template.

 

I set up a similar system with Lemur on an iPad. Because Logic Pro doesn't have the same level of control as Cubase it is limited to 9 groups of tracks, but it's enough to do the job.

 

UPDATE (29-08-2019): Logic now has 31 groups, I'm building an updated template, with much more control. Including quantisation, automation views, marker selection, global tracks selection, control faders, etc.

 

[vimeo]196847577[/vimeo]

 

In order to have it working:

 

In Logic Pro, assign each section to a different Group, so Woodwinds (all tracks, including the summing bus) to Group 1,  Brass to Group 2. etc, like this:

 

668956831_Schermafbeelding2016-12-23om13_30_29.thumb.png.b04f1cc92a0117a3511eb7abe65b9a2d.png

 

Have the Key Commands 'Toggle Hide Group' respond to CC1, channel 1, value 1 through value 9 for each group (B0 01 01 through B0 01 09), like this:

 

1418549122_Schermafbeelding2016-12-23om13_32_21.png.51f48c9e4b589c8f24fae80767300357.png

 

Have the Key Command 'Unhide All Tracks' respond to CC1, channel 1, value 32 (B0 01 20)

Have the Key Command 'Hide All Empty Tracks' respond to CC1, channel 1, value 33 (B0 01 21)

 

In the Lemur Editor, you can change the labels of the sections to your own taste, as well as the articulations for each section. The articulation buttons send out note C-2 through C-1. Here's the zip containing the Lemur file.

 

Logic Pro Group View Control.jzml.zip

Edited by speakerfood
Link to comment
Share on other sites

  • 3 months later...
  • 2 months later...
  • 7 months later...
  • 7 months later...

I was looking for doing this same thing, hooking it up to my launchpad mini, but in the end, it was not streamlined enough for me, so I developed this program, that can control logic and select track with voice just like you would ask siri to do it.

 

 

The beta of the app is available LPX Voice Commander

 

Let me know what you think about that solution :)

Link to comment
Share on other sites

  • 4 weeks later...
  • 4 months later...

In order to have it working:

In Logic Pro, assign each section to a different Group, so Woodwinds (all tracks, including the summing bus) to Group 1,  Brass to Group 2. etc, like this:

Have the Key Commands 'Toggle Hide Group' respond to CC1, channel 1, value 1 through value 9 for each group (B0 01 01 through B0 01 09), like this:

Have the Key Command 'Unhide All Tracks' respond to CC1, channel 1, value 32 (B0 01 20)

Have the Key Command 'Hide All Empty Tracks' respond to CC1, channel 1, value 33 (B0 01 21)

I really like this, but I'd like to be able to use key commands instead of a MIDI controller. How do I go about doing this? Sorry if this sounds like a stupid question!

Link to comment
Share on other sites

Those ARE key commands. Just open the key commands window and search “Hide Group” and you’ll see them. You just assign a key to each command.

Yup, I saw them in the Key Commands window, but I want it to work the way it does in the video. I want to hit one command and just show a single Group.

Let's say I have 3 different groups: Drums (1), Bass (2) and Keys (3), and all groups are visible in the Main Window. The way it works as key commands, if I want to see just the Drums Group 1, I have to hit the Toggle Group 2 and then Toggle Group 3 in order to hide them so that I see just the Drums Group 1. I want to eliminate the need to hit those two key commands in order to see Group 1, and just hit a single key command to see Group 1. I hope this makes sense!

Link to comment
Share on other sites

The video used the Lemur system. With Logic's Remote App, you can only toggle Hide.

That's what I was saying. I was asking how to do this using only key commands.

However, at the time the video was made, Logic only allowed this for 9 Groups. Now it allows it for 32, so lots of options.

Ah, just noticed that too, now the wheels in my head are turning, thanks!

 

EDIT: Hmmm, the 32 groups thing doesn't change a thing in terms of functionality. It just means that you have a maximum of 32 groups instead of 9 now, which is still really cool and useful if you need a lot of groups.

I rewatched the video and I'm guessing that the Lemur uses some sort of "macros" system, meaning that it still has to toggle all the other groups sequentially in order for you to end up with the group you want to see. In that case, I can use Better Touch Tool to do the same thing with its macros feature, and I can do it with key commands too. Thanks anyway!

Link to comment
Share on other sites

yes - there are a few apps -- even Mac's native Automator that'll let you program a Macro out of multiple key commands.

Yeah I never got on with the Automator. I just use Better Touch Tool because it's very simple to use and I use it with my Trackpad for custom gesture assignments anyway.

Personally, I usually just put each family (Wood, Brass, Perc, String) into its own track stack. I also have stacks within stacks to sub group (Pic, Flute, Oboe, etc)

I use Track Stacks too extensively. I just wanted to be able to view each Instrument Stack the way it's shown on the video. Kinda nice to just view a single Instrument Stack on it's own and zoomed in a little especially if you have a number of instruments in the stack itself.

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 months later...

Hey guys!

 

Yo Rinus, I like what you did here, interface looks really clean.

 

Here's what I don't understand, and what prevented me from using this mapping (maybe I'm doing something wrong lol!):

 

Why would you route this to CC1, Channel 1 AKA the most important midi CC ever, the Modwheel? :o I know you would never change window sets when recording something, but I do think it's inconvenient when it interferes with the mod wheel data when I'm playing around.

 

Is there an easy way to change this? pretty new to Lemur but I wasn't able to dive in to your script and find the corresponding midi channels..

Link to comment
Share on other sites

  • 1 month later...

Hi Joris,

 

Using CC1 is not a problem, as everything that is assigned to a control in Logic gets ignored, as long as it's coming from Lemur. CC1 from other controllers can still be used.

 

BTW, I'm updating the template, with much more groups and sub-groups to control. Keep you posted.

Link to comment
Share on other sites

  • 2 weeks later...

Working on a new template, this picture is obviously work in progress. But we got quantise buttons working :-)

 

The group view selection part let's you store and recall up to 4 combinations of groups to view. And you can show/hide all the instruments of a section (for instance Brass) or just one instrument type.

 

Screenshot_2019-09-03-11-59-46.thumb.png.b25e5224698c46313fabccc49b8588fb.png

Link to comment
Share on other sites

  • 8 months later...
Any ideas on how to jump to specific tracks? I have some macros on Keyboard Maestro that need specific tracks selected first on Logic. Tried voice commander, apparently it can retrieve track names from logic and also select specific tracks without adding a control surface. That's exactly what I want to do with KM but without the voice part.
Link to comment
Share on other sites

  • 1 month later...
Any ideas on how to jump to specific tracks? I have some macros on Keyboard Maestro that need specific tracks selected first on Logic. Tried voice commander, apparently it can retrieve track names from logic and also select specific tracks without adding a control surface. That's exactly what I want to do with KM but without the voice part.

 

I tried voice commander but I didn't see how it could select a specific track by name, and I'm definitely not sure if that's even possible. How would you access the array of track numbers and names? Logic does send a track name as OSC message, but only if you select it.

Link to comment
Share on other sites

  • 3 months later...
Any ideas on how to jump to specific tracks? I have some macros on Keyboard Maestro that need specific tracks selected first on Logic. Tried voice commander, apparently it can retrieve track names from logic and also select specific tracks without adding a control surface. That's exactly what I want to do with KM but without the voice part.

 

I tried voice commander but I didn't see how it could select a specific track by name, and I'm definitely not sure if that's even possible. How would you access the array of track numbers and names? Logic does send a track name as OSC message, but only if you select it.

 

 

Hi, you say you have tried? And it did not work? Couple of things to consider:

 

1. With the demo version, you will only be able to select the top 5 tracks of your project.

2. Make sure the remote iOS app and your mac are connected to the same wifi network or personal hotspot

3. Make sure the Voice Commander controller is running on your mac and that Logic is selected in the Daw target dropdown menu (see attachement).

4. Make sure Voice Commander is listening (tap the big middle button on the remote, it will listen continuously for the commands listed in the controller),

else you can also tap on a track row in the track view of the controller to check if the setup is working fine.

 

Let me know if you have any questions,

select_target.gif.636817badbd852ed6b6f0e5d375f9d50.gif

IMG_1977.PNG.6dd6b4135bb75b0d726c281e55d2adaf.PNG

Link to comment
Share on other sites

  • 2 years later...

Hi everyone!
Sooo, 2022, anyone came up with a solid solution for the touchscreen workflow?
Lemur is out of date I think, right? 
Anyone has a decent workflow with logic remote? I mean only the key command possibility? One problem I have is, that connecting remote to my huge orchestral template causes Logic to crash instantly. So, that is out of question for me too. 
Been trying to dive into TouchOsc, but it's pretty annoying I think.

A lot is possible with key commands in Logic, although it always takes you three steps more to actually achieve what you intend to. 
Wondering if someone has found a good approach yet?!

Thanks everyone, 

best Raffaele

Link to comment
Share on other sites

If you like to build your own stuff you should look at TouchOSC which is much better maintained than Lemur ever was.

I have several screen where I do specific tasks, but it is very very much tailored to my personal workflow and not for everyone.

It does take a lot of time to setup everything and I've gotten Logics Scripter Plugin to convert Keyswitches for each instrument. Big time saver once it's setup, but for every instrument I have to create the conversions first... I switched from thinking to have to setup everything once and for all to doing it as I go along for the ones I'm actually using on a regular basis.

Link to comment
Share on other sites

4 hours ago, wonshu said:

If you like to build your own stuff you should look at TouchOSC which is much better maintained than Lemur ever was.

I have several screen where I do specific tasks, but it is very very much tailored to my personal workflow and not for everyone.

It does take a lot of time to setup everything and I've gotten Logics Scripter Plugin to convert Keyswitches for each instrument. Big time saver once it's setup, but for every instrument I have to create the conversions first... I switched from thinking to have to setup everything once and for all to doing it as I go along for the ones I'm actually using on a regular basis.

Hey Wonshu
Thx for the reply!
Well, I guess I have no other chance to dive into TouchOsc again. It just smells so complicated and looks like  a huge timeconsumer, and I don't know if I'm capable of achieving what I want! haha. Logics Scripter Plugin always scared me! LoL!
Is there a way you could show me your stuff and teach me the first couple of steps?
That would be great!
Have a good day, best
Raffaele

Link to comment
Share on other sites

This really grew out of what I found was actually practical for me while working.

I have a spreadsheet to document everything, so I remember which MIDI message is already in use and where to continue for new controls.1803557573_Screenshot2022-12-02at18_23_14.thumb.png.91f7a583e064970368ffed14d2b903f8.png

 

I have keyswitches setup this way:

1353219182_Screenshot2022-12-02at18_25_32.thumb.png.0c940caa725139896d6ba2d704ad620d.png

 

Mostly I control u-he instruments, but I also MIDI learn other instruments with those X / Y controllers

1247998268_Screenshot2022-12-02at18_26_15.thumb.png.bcedcfbd05578b82c777b44ed655ac69.png

 

This is the Scripter that transforms the incoming MIDI to the one that the instrument expects.

function HandleMIDI(event)
{
	if (event instanceof Note && event.channel == 4 && event.pitch == 0) { 
		event.channel = 1
		event.pitch = 24; // legato  
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 1) { 
		event.channel = 1
		event.pitch = 31; // Tremolo
    }

	if (event instanceof Note && event.channel == 4 && event.pitch == 2) { 
		event.channel = 1
		event.pitch = 28;  // Staccacto
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 3) { 
		event.channel = 1
		event.pitch = 28;  // Spiccato UNUSED
    }

	if (event instanceof Note && event.channel == 4 && event.pitch == 8) { 
		event.channel = 1
		event.pitch = 32;  // Trill
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 5) { 
		event.channel = 1
		event.pitch = 29;  // Pizzicato
    }
	if (event instanceof Note && event.channel == 4 && event.pitch == 12) { 
		event.channel = 1
		event.pitch = 30;  // Col Legno
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 16) { 
		event.channel = 1
		event.pitch = 48;  // Ostinatos
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 19) { 
		event.channel = 1
		event.pitch = 49;  // Scales
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 20) { 
		event.channel = 1
		event.pitch = 34;  // Aleatoric
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 21) { 
		event.channel = 1
		event.pitch = 50;  // Ostinatos
    }

	event.send();

}

This should get you a good way on your way. But really the central question is: what do you need your controllers for.

 

 

 

 

Link to comment
Share on other sites

16 hours ago, wonshu said:

This really grew out of what I found was actually practical for me while working.

I have a spreadsheet to document everything, so I remember which MIDI message is already in use and where to continue for new controls.1803557573_Screenshot2022-12-02at18_23_14.thumb.png.91f7a583e064970368ffed14d2b903f8.png

I have keyswitches setup this way:

1353219182_Screenshot2022-12-02at18_25_32.thumb.png.0c940caa725139896d6ba2d704ad620d.png

Mostly I control u-he instruments, but I also MIDI learn other instruments with those X / Y controllers

1247998268_Screenshot2022-12-02at18_26_15.thumb.png.bcedcfbd05578b82c777b44ed655ac69.png

This is the Scripter that transforms the incoming MIDI to the one that the instrument expects.

function HandleMIDI(event)
{
	if (event instanceof Note && event.channel == 4 && event.pitch == 0) { 
		event.channel = 1
		event.pitch = 24; // legato  
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 1) { 
		event.channel = 1
		event.pitch = 31; // Tremolo
    }

	if (event instanceof Note && event.channel == 4 && event.pitch == 2) { 
		event.channel = 1
		event.pitch = 28;  // Staccacto
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 3) { 
		event.channel = 1
		event.pitch = 28;  // Spiccato UNUSED
    }

	if (event instanceof Note && event.channel == 4 && event.pitch == 8) { 
		event.channel = 1
		event.pitch = 32;  // Trill
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 5) { 
		event.channel = 1
		event.pitch = 29;  // Pizzicato
    }
	if (event instanceof Note && event.channel == 4 && event.pitch == 12) { 
		event.channel = 1
		event.pitch = 30;  // Col Legno
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 16) { 
		event.channel = 1
		event.pitch = 48;  // Ostinatos
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 19) { 
		event.channel = 1
		event.pitch = 49;  // Scales
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 20) { 
		event.channel = 1
		event.pitch = 34;  // Aleatoric
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 21) { 
		event.channel = 1
		event.pitch = 50;  // Ostinatos
    }

	event.send();

}

This should get you a good way on your way. But really the central question is: what do you need your controllers for.

hey thanks for the details!
I'm gonna use keycommands workflow mainly. I just want to press the one button and not all the ten thousand keycommands I got in my brain. 🙂 quicker and faster. So this is what I'm trying to achieve. Actually, like logic remote (key command tab), just more solid and stable. 
Did you had to do all those formulas or does this the scriptor for you? Cause I ain't a programming cat at all. 🙂

Link to comment
Share on other sites

16 hours ago, wonshu said:

This really grew out of what I found was actually practical for me while working.

I have a spreadsheet to document everything, so I remember which MIDI message is already in use and where to continue for new controls.1803557573_Screenshot2022-12-02at18_23_14.thumb.png.91f7a583e064970368ffed14d2b903f8.png

I have keyswitches setup this way:

1353219182_Screenshot2022-12-02at18_25_32.thumb.png.0c940caa725139896d6ba2d704ad620d.png

Mostly I control u-he instruments, but I also MIDI learn other instruments with those X / Y controllers

1247998268_Screenshot2022-12-02at18_26_15.thumb.png.bcedcfbd05578b82c777b44ed655ac69.png

This is the Scripter that transforms the incoming MIDI to the one that the instrument expects.

function HandleMIDI(event)
{
	if (event instanceof Note && event.channel == 4 && event.pitch == 0) { 
		event.channel = 1
		event.pitch = 24; // legato  
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 1) { 
		event.channel = 1
		event.pitch = 31; // Tremolo
    }

	if (event instanceof Note && event.channel == 4 && event.pitch == 2) { 
		event.channel = 1
		event.pitch = 28;  // Staccacto
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 3) { 
		event.channel = 1
		event.pitch = 28;  // Spiccato UNUSED
    }

	if (event instanceof Note && event.channel == 4 && event.pitch == 8) { 
		event.channel = 1
		event.pitch = 32;  // Trill
	}
	if (event instanceof Note && event.channel == 4 && event.pitch == 5) { 
		event.channel = 1
		event.pitch = 29;  // Pizzicato
    }
	if (event instanceof Note && event.channel == 4 && event.pitch == 12) { 
		event.channel = 1
		event.pitch = 30;  // Col Legno
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 16) { 
		event.channel = 1
		event.pitch = 48;  // Ostinatos
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 19) { 
		event.channel = 1
		event.pitch = 49;  // Scales
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 20) { 
		event.channel = 1
		event.pitch = 34;  // Aleatoric
    }
    	if (event instanceof Note && event.channel == 4 && event.pitch == 21) { 
		event.channel = 1
		event.pitch = 50;  // Ostinatos
    }

	event.send();

}

This should get you a good way on your way. But really the central question is: what do you need your controllers for.

 

2 minutes ago, wonshu said:

Yes, I did those. But really it's about just replacing the MIDI note or CC to reflect what the instrument expects.

Welp, 🙂 no clue what to do. haha. 
can you type an example for how to trigger a key command with scriptor? braincapacity is limited haha

 

Link to comment
Share on other sites

All scripter does in my case is transform the MIDI note from what my TouchOSC controller sends to what the instrument (for example Modern Scoring Strings) expects.

So for example MIDI note 01 on channel 2 comes in from TouchOSC and gets transformed to  MIDI note 17 on channel 1. Note 17 on channel 1 is JUST AN ARBITRARY EXAMPLE now.  You'll have to determine what the instrument you're keyswitching expects.

I'm sorry, but you will have to do some work yourself. I cannot set this up for you and if this is too complex, then maybe this is not the solution for you. As you said, you use Logic Remote. Just keep using what works for you!

Link to comment
Share on other sites

thx a lot wonshu, I didn't mean to make you work for me 🙂
I will get there somehow, am reading some material about it now. 
Logic remote doesn't work. my orchestral templates are way to big for it to handle. makes logic crash when I try to use remote with my template.
this is why I'm looking for an alternative, more solid and stable thing. 
all the best to you!
thanks a lot for all the help!! much appreciated! best raffaele

Link to comment
Share on other sites

On 12/3/2022 at 11:29 AM, wonshu said:

All scripter does in my case is transform the MIDI note from what my TouchOSC controller sends to what the instrument (for example Modern Scoring Strings) expects.

So for example MIDI note 01 on channel 2 comes in from TouchOSC and gets transformed to  MIDI note 17 on channel 1. Note 17 on channel 1 is JUST AN ARBITRARY EXAMPLE now.  You'll have to determine what the instrument you're keyswitching expects.

I'm sorry, but you will have to do some work yourself. I cannot set this up for you and if this is too complex, then maybe this is not the solution for you. As you said, you use Logic Remote. Just keep using what works for you!

Hey 
I figured it out! 🙂 working on a template now for all the keycommand triggers! works nicely!
thx for all the inputs!
best 
raffaele

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...