Logic Pro Environment issues perhaps, but unsure!?

Hi there,

Im Dan and im studying BA Product Design in London. Im currently using a Macbook Pro, 2.8 GHz Intel Core i7, 6 GB 1600 MHz DDR3, AMD Radeon R9 M370X 2048 MB with Logic Pro x 10.2.2

I have been doing my final major project for a while, but I am very new to Logic and Arduino use. I have come from a stage of not knowing anything to a better place, but still struggling, along with the fact that no one in my uni seems to know much or very little on the logic side of things.

I have a composition which is made of 6 layers. 3 of the layers are main parts that are playing the majority of the time (red, green, blue) and the other parts (yellow) act as accent layers. All of these layers will be linked to button inputs which will be inlayed in some form of seated furniture, so that the song is activated to start playing when sat on along with it only activating that specific layer.

xglkrn.png


My aim is this, there will be 3 buttons, that when sat on/activated will in effect press play for the composition. All the layers will already be muted,

2cmm7f6.png


so when the button is activated it not only starts the composition playing, but also unmutes that specific layer, for example button 1 is activated, composition starts playing and also layer 1 (red strings) is unmuted. Then if the other buttons are activated they will also unmute their relevant layer, and then we have 3 layers working together.

2hs3djc.png




So the yellow layers are accents (added bits to add variety and depth) and they act as bonus layers. So an example of this would be if RED layer and GREEN layer where activated, then YELOW layer 2 (ethereal mallets) activates as well.

24nk0h1.png


The same work for GREEN and BLUE, except that YELLOW layer 4 (Mystical vox) will be activated.

2cqgx8g.png


The third accent yellow layer activates once all 3 (RED GREEN BLUE) layers are activated, becoming a bonus for the bonus tracks (hopefully that makes sense?).

160c74m.png


The last part of this concept is that the number of buttons activated (either 1, 2 or 3 buttons, with there being 3 buttons in total) that tempo will be changed. The track will start playing at 110bpm when 1 button is activated, when 2 buttons are activated it drops to 90 and 3 it drops to 70.

In relation to my Arduino equipment if anyone knows or needs to know anything about it, I am using a Teensy 3.2 board which has a pullup resistor and currently have 3 buttons (but i have access to more).


I have figured out how to link the separate buttons to the mute function on the separate layers without having to have the layer selected (midi enviro, control surfaces, control assignments, hit mute on layer/instrument (e.g. strings RED), cmd L, hit button) which was a major hurdle conquered.

Things i need help with please!!!:

- I am wanting to be able to know how i can somehow send a midi note/message that will in effect change the starting tempo to 90 or 70 dependant on the number of buttons activated and then when no buttons are activated, it sets it back to 110. Im not sure of the best way to do this is by controlling a tempo fader in the environment or not? So like when button1 is on, it sends a midi message which is equivalent to 90bpm for example.

this is all partly achieved using the Arduino coding which i have a bit of help for, but its the connections i need help with and then things will look something similar to this in the coding;

when button1 and button 2 are ON send midi message to activate bonusYELLOW layer2 and change bpm to 90.

when buttons1,2,3 are ON activate bonus YELLOW layers4,5,6 and change bpm to 70

when bpm is 70 with buttons1,2,3 activated but button3 is turned OFF then bpm is 90 and mute bonus YELLOW layers2,3





I have been trying to understand the terminologies and ways in which Arduino and Logic both work and specifically MIDI, but I have to confess that it has all been fairly overwhelming as there is so much information and my brain gets overloaded, but none the less i have tried my hardest and continue to try so please be patient with me if i leave some dumb questions/answers.

Apologies for such a long post, but i really appreciate the help and time you have given! I am at my computer a lot at the moment so i can share more screenshots etc if need be for more clarity. Im GMT+0 timing so dependant on where people are from, I may not be able to answer/respond straight away.

-Dan
 
... how i can somehow send a midi note/message that will in effect change the starting tempo to 90 or 70 ... Im not sure of the best way to do this is by controlling a tempo fader ...
Tempo Fader, yes. It is the only way to set Logic to a specific tempo by MIDI. And you have to stay in the range of this fader (50-177 BPM).

Btw – the Tempo Fader is no special object. It's just a fader that outputs Meta Event 100 (= tempo control). You can also use a button or any other object that can send Meta Events. This applies to most objects in the "Fader" menu. Sliders, knobs, buttons and numerical boxes appear different and have different features, but basically they do the same and are often interchangeable.

... this is all partly achieved using the Arduino coding which i have a bit of help for, but its the connections i need help with and then things will look something similar to this in the coding;
It will not look similar. Arduino programming happens with text on a rather low level, while the Logic Environment is a proprietary graphic interface on a high level. We don't have logic gates for example, what makes your button-logic quite complicated. To be honest, I wouldn't do that in Logic but rather with the Arduino board or with a Max patch between the board and Logic.

when button1 and button 2 are ON send midi message to activate bonusYELLOW layer2 and change bpm to 90.
Here is an example.

Basic idea:
Two Cable Switchers in series let a message only pass if both switches are open. This is our version of an AND gate with 2 inputs and 1 output. If the 'gate' is open (both buttons down), we trigger a Sysex fader that sends everything we need for the desired function.

How it works:
A transformer after each button lets the button message through, which sets the switch to 0 or 1. Additionally it generates a Bang message that is used for triggering. Button 1 operates switch 1 and sends the Bang through the switch. If switch 2 is closed, nothing happens at the output. Button 2 operates switch 2 but sends the Bang to switch 1 (always through the whole chain). If switch 1 is closed, nothing happens at the output. If both switches are open, the Bang message leaves our input stage. The bang triggers a SysEx Button with two stored events: One to set the tempo, one to unmute channelstrip 'YELLOW 2'. These messages are on different MIDI channels and get splitted after the Sysex button. The 'unmute' message needs to get converted to Logic's 'Fader' type, because for some unknown reason we cannot store this type in the Sysex button.

Below is a screenshot with button 1 already on, tempo at minimum and the Mute button of the second channelstrip activated. Only switch 1 is open, the bang message from button 1 could not go through ...

image.png


... and here after button 2 was clicked. You see the Bang event in the monitor after the input stage, the two events sent by the SysEx button called 'Meta & Mute' and the Channel Splitter that gets the two messages apart. The tempo fader got set to 40 (= 90 BPM) and the Fader message (converted in the last transformer) unmuted the channelstrip.

image.png


If you don't know how to make such a patch I can explain the details, but you may run into problems with your other patches.

when buttons1,2,3 are ON activate bonus YELLOW layers4,5,6 and change bpm to 70
Same system as the patch above, just with three buttons, more lines in the Sysex button and some more splitting and converting. Remember, each button operates it's own Cable Switcher, but all buttons must send the bang message to the first switch (serial method).

when bpm is 70 with buttons1,2,3 activated but button3 is turned OFF then bpm is 90 and mute bonus YELLOW layers2,3
This sounds complicated for the Logic Environment. I don't deal with this idea unless we get to a stage where it makes sense. Furthermore, I am afraid I would pick a single function and make a big mess in the Environment, just to learn that there is more functionality and the patch almost useless. I am however willing to support you for individual functions.
 
Upvote 0
First of all thankyou very much for your detailed help!

I understand my aims are fairly complicated, but I will try my best now to set up my environment like the second image you showed.


I have tried to set it up as you have shown and would really appreciate it if you are able to go into further detail for me.

261yk48.png


I arranged the bonus tracks (yellow ones before) on the right, and the main 3 tracks (3 & 33 act as one) above the buttons that they would correspond to. I also placed a button for the OFF section that the switches connected to and the section just after the first monitor that is not names just as place holders now as i wasn't sure what they where, incase you wandered why they were there. Hope this makes sense

-Dan
 
Upvote 0
Sorry I am currently updating this so I dont waste anyones time. here is description of the system i want to create, as i got confused before and there are slight changes.

Things i do have or know how to do:

- created a composition

- know how to use my improvised midi device with 3 buttons, and get the separate buttons to be controller assigned to specific layers of the composition, to allow for mute/unmute without having to have the specific layer highlighted


Things i want to achieve:



- a system that activates 3 main buttons to play composition and unmute that specific layer that is attatched to the button e.g. button 2 is activated, composition start playing all on mute and layer 2 is unmuted.

- when buttons next to eachother (1&2 or 2&3) are activated, it triggers a bonus layer to be played (these are accent layers) and when all 3 buttons are activated 3 bonus layers are played (bonus for 1&2, 2&3 and third bonus layer because of all being activated)

- 3 separate buttons that control tempo when triggered, so the composition plays at 130bpm (regardless of how many layers are unmuted currently) and then when 1 of the tempo buttons is activated it drops to 110bpm, 2 tempo buttons drops it to 90bpm, and 3 tempo buttons drops to 70bpm
 
Upvote 0
I have tried to set it up as you have shown
The three switches in your screenshot are not serially cabled, this won't work.

Here is the system in a better readable form:
image.png

The transformers send two messages for each button click. They do it very fast but always in the specific order. The first message sets the corresponding switch to 1 or 0 depending on the button state. The second message is a Bang and all Bangs go to the first switch. If any switch is OFF, nothing happens at the output. If all switches are ON, a Bang appears at the output and can trigger whatever we want.

In case you don't know – the Logic 'Bang' message is the Meta Event number 99. It is used to trigger other objects. If you send a Bang to a button, slider or number box, this object sends it's current value. The Bang itself may go through following objects but in most cases this doesn't matter, you will lose the Bang somewhere on the way. If it disturbes something, you can stop the Bang with a transformer.

I also placed a button for the OFF section that the switches connected to and the section just after the first monitor that is not names just as place holders now as i wasn't sure what they where, incase you wandered why they were there.
Replace these two buttons by 'Ornament' objects.

We use the Ornament object to collect or distribute messages. In the first case (the OFF state of the switches) the Ornament collects the cables from the uppermost switch outputs and nothing else happens here. The second Ornament is just used to keep the cable out of the way.

——

For other details, please give me a little time to rethink the system. Maybe I find a better, more generic way for the switching logic.
 
Upvote 0
Good idea, a couple of objects less.

Do you know a better way for a logical AND gate than the serial switchers I used?
Ideally we would get a different number for each button combination.
 
Upvote 0
Hi guys, I really appreciate the help you have given me! Been talking to some of my tutors and one was telling me to go and try learning and using max msp to do what i want to do, but ideally ide like to stick to logic as i have everything set up in logic, have to teach myself max msp, dont know if max msp will even work and also i only have like 10 days to get this to work!!! what do you think? I have a bit of money left I am willing to give out if we can get this system to work. Im sorry im not better as all of this, its totally new to me and ive been rapidly trying to learn as well as do 10 other things at the same time!
 
Upvote 0
Good idea, a couple of objects less.
Do you know a better way for a logical AND gate than the serial switchers I used?
Ideally we would get a different number for each button combination.

Peter, your visual scheme tutors are awesome as always (Daniel I advice you to follow the Peter's instructions).

I'm very busy with the AG Logic Articulation switching toolkit application update and cannot come 100% into that specific Environment setup. Here is something which can help:
1). As I mentioned the Buttons (or Faders) objects can be set to "Sysex" output definition, so they can behave as Scripter containers - i.e you can keep and bang lots of MIDI data there. This optimizes the Logic Environment which "MIDI Signal flow" is limited to 397 Cables (Thru) according to my deep researches in the pass. For example a Sys Button can give optimization of 50-100 cables etc.
2). The Switches take lots of Environment cabling and resources. For example you can use a single Condition Transformer Mapper which is just a single Transformer object. You can set up to 128 Map Conditions in that Transformer, which is equivalent of 128 Cable Switchers for example.
In some cases you may need a few (Pre - Transformers) to control the Conditions in the Main Condition Transformer. As a whole the entire scheme is about 5-6 Transformers instead of scary Environment fields.
For example I use a few MIDI signal Transformers for my Environment MIDI Channel Switcher which was announced back in 2005 and several Transformers for the vintage AG plectra EXS24 instruments Chord Translator.
 
Last edited:
Upvote 0
Really appreciate the help and advice! My friend mentioned to me today that he may be able to help me a little, so I will sit down with him at some point hopefully and go through all of this with him that will probably understand it better than me.

I will let you know how i get on! thankyou!
 
Upvote 0
Do you know a better way for a logical AND gate than the serial switchers I used?
For example you can use a single Condition Transformer Mapper which is just a single Transformer object.
I see. Although maps may be harder to handle for him, we should use this method if the project continues here in the forum. Otherwise, with a growing feature list, the patch would become a huge mess.

——

Been talking to some of my tutors and one was telling me to go and try learning and using max msp
This is a good advice. If you plan more of projects like this one, you should definitely go to Max. Almost everything is possible there and you can control Logic too. But you need time, Max is a complex visual programming environment.

My friend mentioned to me today that he may be able to help me a little
Ok, that is a better way than a forum, especially for the many details. Feel free to come back if you have specific questions.
 
Upvote 0
Hey guys, so I made progress with my friend and managed to use Arduino controlchange messages that did the trick and controlling the tempo fader.

The current issues I have are this:

So when i map 3 separate buttons to the tracks channel strip volume controller, it works a treat, making the volume go high to silent. The last 2 pictures show me pressing the buttons that activate the volume faders at the bottom right to show they are working as expected.

fi9ag6i.jpg


wTYGrN9.jpg


agynATU.jpg


7qKQfnT.jpg



So when two tracks are activated at the same time, like track 1 and track 2, then that activates a bonus layer. This would activate Bonus 1&2. When i map the midi controller buttons to the channel strip called Bonus 1&2, it only partially works.

5yJR3Sx.jpg


Cta4bs0.jpg



So when I take my finger off of the buttons, the Bonus 1&2 channel strip remains at a high volume.

dUSM5BA.jpg



And when I press the button that is linked to Track 2, it does not effect the Bonus 1&2 channel strips volume.

2lnRygI.jpg



But when i press the button mapped to Track 1, it triggers Bonus 1&2's volume to go down.

If i change the 'value change' section under controller assignments from

B0 07 7F B1 07 Lo7

1324xe1.png




to
B0 07 Lo7 B1 07 Lo7

IegjPuD.png




It links Track 1 to Bonus 1&2. So when i press the button mapped to Track 1, it also activates Bonus 1&2 without the buttons mapped to Track 2 being activated.

0YwbiBO.jpg



So any ideas why they are acting like this. I have a feeling that it must be something to do with the 'value change' midi input message and the way they are written. When i press both buttons at the same time, the 'value change' area has those letters and numbers in the area, but also has a load of others too, but i delete them as the buttons dont work correctly if i leave the rest of the information in there, so i delete what is not needed.

I really need to get this working ASAP and im so close, so I would really appreciate your help!

-Dan
 
Upvote 0
Now I lost you completely. You switched from Environment to Controller Assignments and seem to try to implement a kind of switching-logic there. But the Assignments are not made for this, they need a brain (in your case the Arduino) that tells exactly what to switch. Some tricks are possible, maybe you can help the Assignments with a small Environment patch between mixer channels. But I cannot tell more because I still do not know what should happen with each button combination.

Just a hint:
Don't fiddle with messages in the Assignment panel if you don't really know what you are doing. Rather think about multiple assignments for each hardware button.

Best would be to let the Arduino send exactly what's neded.
 
Upvote 0
Back
Top