Jump to content

Quick Guide to Logic's Meta Events


David Nahmani

Recommended Posts

Meta Events are events in Logic that behave like MIDI events, and are used to control some advanced features in Logic. Only Logic can generate and interpret Meta Events, so their use is confined within the Logic universe.  

 

So what can you do with Meta Events? A bunch of things. You can change songs, change tempo, stop playback, and even change the values of Conditions and Operations parameters in a Transformer Window! For a real world application of that latest feature, check out this thread on Controlling MIDI Velocity with the Mod Wheel. (scroll down the page about 8 posts)

 

How do you create a Meta Event? By recording a Meta Fader movement onto a MIDI Track. In the Environment, go to New > Fader > Auto.

 

http://logicprohelp.com/tipsimages/005.gif

 

In this fader's parameters, set "Output" to "Meta" and - 1 - to whichever Meta Event # you want to control. Here are the Meta Event numbers:

 

46 Assign Alias

49 Goto Screenset

50 Goto Song

51 Goto marker

52 Stop playback

96 Set fader range minimum

97 Set fader range maximum

98 Set the fader value without sending.

99 Bang! Causes the fader to re-send its current value. The bang data value can be used  to make the fader to increment-without-rollover (127), decrement-without-rollover  (125), increment-with-rollover (123) or decrement-with-rollover (121). Use values one  less than those shown, to have the bang passed through to all connected faders.

100 Tempo Control
122 Set transformer map value for the currently selected map position.
123 Select transformer map position.
124 Set transformer condition maximum (bottom) parameter, if any. (This applies to all  conditions not set to All).
125 Set transformer condition minimum (top) parameter, if any. (This applies to all  conditions not set to All).
126 Set transformer operation maximum (bottom) parameter, if any. (This applies to all  operations not set to Thru).
127 Set transformer operation minimum (top) parameter, if any. (This applies to all  operations not set to Thru).

So let's say you want your Logic song to goto screenset 3 when the SPL reached say, position 10 1 1 85. How do you do this?

First move your fader to a value of 2 (that way you'll have only one Meta Event to create to change its value to 3). You set your fader to

Output: META
- 1 -: 49

Now you record arm a MIDI Track, hit pause and record on the transport window; double-click on the Beat/Bar position counter and enter 10 1 1 85. Move the fader to a value of 3. Woops. Logic took you to Screenset 3! That's normal, but the important part is that now you can hit stop and go back to your previous screenset, and you'll see that Logic has recorded the Meta Event "gotoscreenset" with a value=3. You can see the details by opening your newly created MIDI Region in an Event Editor.

Now if you start playback anytime before bar 10, when Logic reaches 10 1 1 85 it will read the META Event and go to screenset 3. Is that cool or is that cool?

Now you see how you can easily program Logic to jump from bar 5 to bar 15, back to bar 2... only using goto Marker and Stop Playback Meta Events: HAVE FUN!

Link to comment
Share on other sites

  • 3 months later...
  • 2 weeks later...

I have a question on the forum (which has been ignored) re: Using meta events for lyrics in a midi file.

When you import a midi-karaoke file (.kar) Logic interprets lyrics as meta events (#60) I want to find out if I could create a midi file with lyrics, and how. (Well, I know you can because I have some that came with a consumer model Suzuki piano. They scroll the lyrics in the window (as do Yamaha files created in XG Edit))

I've always imagined you could play a melody that the lyrics would associate with, and then turn the note events into meta events, and then type in lyrics. Tedious but do-able.

Am I on the right track? (no pun....)

 

I am asking all this because I cannot find a program on Mac that will create .kar files. Lots of players (including Quicktime) but no creators.

Link to comment
Share on other sites

  • 4 months later...
Now you see how you can easily program Logic to jump from bar 5 to bar 15, back to bar 2, and stop on bar 50 only using goto Marker and Stop Playback Meta Events: HAVE FUN!
There is a current topic on Apple's LUG about the now defunct Studio Vision Pro (and also Cubase SX3), and their easy function of being able to play a song's verses and choruses etc. in any order. It was suggested that marker meta events could get Logic to do the same thing. I've got that to kinda work, but how do you create the scenario you mention above? Surely if you jump from bar 5 to bar 15 and then back to bar 2, when the SPL gets to bar 5 again it will go to bar 15 and then bar 2 and round in circles without ever getting to bar 50? BTW. is there meta number for goto bar? I hope I've made my question clear..:roll:...... :D
Link to comment
Share on other sites

  • 4 months later...
  • 10 months later...

Is there a way to have Meta Event 100 (Tempo Change) happen in real time or while stopped? I would like to be able to play the Ultra beat sequencer during guitar lessons and just change the tempo with a CC knob. It would be also cool to do this in real time with touch tracks.

 

It seems the only way the tempo will change is after it is recorded and played back from a MIDI/Instrument track.

Link to comment
Share on other sites

  • 2 months later...

Dear all,

 

Thanks for the hints using faders and meta events in thet environment window.

 

Entering meta events works fine, but somehow I do not manage to send a Song Select event (meta 50) to my external MIDI device. The docs say, these are for internal use for Logic, but it is also said that one can control external sequencers with this.

 

The external device is an Emu Orbit V2, and the Song Select event chooses the current beat when it is in beat mode. I have tested this successfully with my own little test program using CoreMIDI.

 

The instrument used is correcetly configured, ie. midi port 2, channel 16. As you can see from the screenshot, a note-on is sent as well, and the Orbit receives it fine.

 

I created a slider in the environment window, using Meta event 50. Wanted to connect it to a direct midi output, but somehow the "New" menu does not provide for creating an output.

 

I have Logic Gold 6 on Mac OS X 10.4.10. OK, this forum is called "LogicPro Help Forum", but I still hope for some aid even though I have only the Gold version.

 

Thanks in advance for any advice!

Logic-meta-song-select.jpg.3d518b58b65171f54c220a98c56699a5.jpg

snapshot of a sequence

Link to comment
Share on other sites

  • 8 months later...
Is there a way to have Meta Event 100 (Tempo Change) happen in real time or while stopped? I would like to be able to play the Ultra beat sequencer during guitar lessons and just change the tempo with a CC knob. It would be also cool to do this in real time with touch tracks.

 

It seems the only way the tempo will change is after it is recorded and played back from a MIDI/Instrument track.

 

you must create a new fader>special>tempo control and put it between physical input and Seq input.

 

http://img48.imageshack.us/img48/5300/picture2rw6.png

 

cheers

Link to comment
Share on other sites

  • 4 months later...

I'm trying to set controller #4 to change the decay time in Ultrabeat. Would I somehow use meta events for this? Unfortunately it appears UB only allows velocity to modify the envelopes. (unless I'm missing something)

 

I can use an automation assignment, but when I've done this in the past, my assignments get lost. I can't remember the file name, but one post suggested backing up a particular file so that when this happens I can re-introduce my automation assignments. I couldn't get this to work either (when I replace the file, the assignments are skewed.)

 

Basically, I was hoping to write some environment macros to do the same thing as automation/controller assignments.

 

Thanks,

 

Richard

Link to comment
Share on other sites

I have used Meta events but with very little success. Just yesterday, I was trying to do a single edit of a remix I had completed. At first, I tried snipping time to just delete the sections I didn't want. However, the automation of the vocals and the delays got completely screwed up.

 

Then I tried using Meta events to skip the sections I didn't want (as one would with the reverse-cycle, pulled from right to left). I would put the meta marker in a MIDI file on the output bus and then place the marker when i wanted it usually 16 or 32 bars later and when it did the transition, it was anything but seamless.

 

First off it did not play up till the meta event and then it did not come back in immediately after it jumped. There is no second comment. Isn't the whole point of jumping to a marker to have the audio keep going? It cut out before it even jumped and then after. Totally useless.

 

I then tried bouncing but apparently in offline mode, Meta Events are ignored.

Link to comment
Share on other sites

Unfortunately you found out the hard way that Meta Events used to jump from marker to marker do not work in quite the way you might otherwise expect. They will indeed cause Logic to jump from one marker to another, but as you said, audio playback is far from seamless.

 

And yes, those events will be ignored during offline bounces...

 

I recently experimented with these same Meta Events and found lots of strange behavior, but the worst of which was that not even MIDI tracks would play back correctly when jumping to a new marker.

 

:cry:

Link to comment
Share on other sites

So the question becomes then, is there any usable use for the Marker Meta event. I mean, it should work if bouncing is online, correct?

 

Hard to say whether it could be expected to work properly during an offline bounce if it barely works just on normal playback.

 

Still, there is some usefulness to be found in the Go To Marker meta event. I had a client who requested a custom environment in which he wanted 20 environment buttons, each one set to output a Go To Marker meta event (1 - 20). I created a separate layer for these, and then put them in a frameless floating window which lived at the top of the arrange window. This gave him one-click accessibility of these 20 different marker positions, and also freed up 20 key commands that would have been needed for that functionality.

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...
  • 5 months later...

You can't bang parameters of a plugin. But what you can do is have a bunch of faders connected from the output of a channel strip. Each fader would be programmed to respond to -- and mirror -- the value of specific parameters that you tweaked. You could then bang those faders and send the values back to the channel strip.

 

A more elegant (and complicated) way would be to use the mapset functions to set various map values within a transformer in response to the parameters you tweaked in a given plugin. You could then read out the map values at a later time and send them back to the channel strip.

Link to comment
Share on other sites

Hi ski,

thanks

 

You can't bang parameters of a plugin. But what you can do is have a bunch of faders connected from the output of a channel strip. Each fader would be programmed to respond to -- and mirror -- the value of specific parameters that you tweaked. You could then bang those faders and send the values back to the channel strip.

 

I did this before but i searched a more elegant way....

 

A more elegant (and complicated) way would be to use the mapset functions to set various map values within a transformer in response to the parameters you tweaked in a given plugin. You could then read out the map values at a later time and send them back to the channel strip.

 

...something like this. :D

 

Ok....Meta Events 122 and 123 are the once i have to deal with.

 

Ski an other question, is there a way to make a cable switcher "see" which track is selected in the arrange just by selecting the track without any other action?

Link to comment
Share on other sites

:)

 

Here's the concept behind mapping in a transformer. First, determine how the map is going to work for you. There are two operations: writing, and reading. Let's talk about writing first.

 

The easiest approach I've found is to have the map position equate to the parameter number. Then you set the value for that position to be the value for the parameter. The result: the map position and the value of that position represent the data for a single parameter.

 

For example, say you have an EQ and you want to store a static value for the low cut/shelf band. First you have to find out what parameter that is in the EQ. Without going into the procedure for how to determine this, I can tell you that if the EQ is in the first insert slot of a channel strip, this parameter will generate "fader" events with the following form:

 

fader 2, 5, x        

• 2 represents the "MIDI Channel" of the fader event (when you adjust a parameter for an audio FX in insert slot 1, it generates fader events on channel 2)

• 5 represents the parameter number of the low cut/shelf band in a channel EQ

• x represents the parameter value, which will typically range from 0 - 127

 

Then you need some environment programming to read the output of the channel strip, take the fader 2/5/x event and store "x" in map position 5. Just move that parameter until it reaches the value you want to store. You can use a cable switcher to allow or prevent data from reaching this little "memory" you're creating in the transformer map.

 

When it comes time to recalling that data, you'd need to create an event in the environment which would be processed by the transformer to do two things:

 

a) read out the value of map position 5, and...

b) form a fader 2, 5, x message (x = the value stored in map position 5) which you'd then send back to the channel strip.

 

Storing data in a map is demonstrated in the attached file. Open the transformer called "map" and then play the song. You'll see the value of that EQ band being written to the map dynamically. (If you don't see the value changing, click on the background of the environment so that the transformer window no longer has focus). But of course, the idea would be to store a static value in there for later recall.

 

Reading the data back out is a more complicated scenario which I just don't have time to get into. (sowwy)

 

To your other question about selecting a track and having a cable switcher see which track is selected, no, that's not possible.

xformer map.logic.zip

Edited by ski
Link to comment
Share on other sites

Hi ski,

i understood the idea immediately and it's a very efficient and brilliant way.

 

I don't know if it is going to much off topic but you got mod powers ill post it here...so it's getting a little nerdy....but it shows a way how it can be set up...

 

http://www.speedupmydaw.com/images/Map%20and%20Recall%20Plugin%20Data.png

 

I use:

note on to set the transformer map position and

note off for recalling the data for the map position.

 

turn the knob "plugin data" to write into the map position that is set via the note on value.

 

How poeple can check if it works? :D

 

1) Press a note on the keyboard --> C2 for example

the right monitor will display that the map of the "Save Map transformer" has the value 0 at position 12 <-- (this you can see in left monitor value or the knob "Set map position")

C2 is position 12 .....C#2 =13..... aso

 

2) Set the knob "plugin data" for example to the value of 50. This will write the value into the map position 12 of the "Save to Map" transformer.

 

3) If you press now C2 on the keyboard again the value 50 should be recalled.

 

Thanks for the inspiration.

Mapping and recalling plugin Data.logic.zip

Link to comment
Share on other sites

  • 2 years later...
  • 1 year later...
  • 3 years later...
:)

 

Then you need some environment programming to read the output of the channel strip

 

 

Wow, an 8 years old post, who knows if someone's still there to answer my question?

 

I'd like to know if it's possible to take a value generated by an insert effect (In my case the BPM Detector) and use it in an environment object like a transformer, and in case, how could it be done?

 

Thank you very much!

mV

Link to comment
Share on other sites

Yes. The BPM counter outputs two different kinds of "fader" events in response to the material it's trying to sense the tempo of. I think the most important one to focus on is what I'm about to describe...

 

When the BPM value settles in, the plugin generates fader events with the following form:

 

fader 2, 0, v

(v = value)

 

The value of v will vary according to the setting of the :2 and x2 buttons.

 

You can certainly tap this information and use it to do something. For example, shown below is an environment setup using a transformer to detect when the BPM is 124 (this causes the BPM counter to output a fader event with the definition of fader 2,0,56. In response to this event, the transformer generates a MIDI Volume message at a value of 127. You can, of course, choose whatever event you want to be generated in response.

 

bpm.thumb.png.6fe14ca963715f0d68746c092da18b0e.png

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...