Jump to content

Logic Environment - Midi Instrument can't get rid of GM!


Nunstummy

Recommended Posts

I have a multi-instrument setup in the Environment with all the right banks and patch names for my XP 30.  Works great, when selecting a patch from the grid.  GM is turned off.  However, from the Arrange window, the Program names on the left are still GM.  So, if I select 59 from the multi-instrument object, it plays 'Cathedral', but 59 from the Arrange window says 'Muted-Guitar' which is the GM label for 59.  The XP30 plays 'Cathedral' either way, but I can't change banks from the Arrange window, or access all the patches in the multi-instrument object.

746387D7-E4DD-441A-9EFC-594597C27EA0.thumb.jpeg.e0348701d22348e004f469c7674d93e8.jpeg

4AC79291-D9F9-4F2F-90C8-BBD81C89A946_1_201_a.thumb.jpeg.eafa37f858237a31926af109297c82e5.jpeg

When I create a new track, I prefer to have a plain midi track (I don't select the 'Use External Instrument Plugin') and you can see there's nothing at this stage of setting a new track that say "use GM".  I'll also create a standard audio track to capture the analog audio from the XP 30 through my audio interface.  I just prefer this level of control.

1A422D05-2990-41FA-B84C-C28EB46FB5E8.thumb.jpeg.7139d9bd9ce200e6d020e0255bb4a94d.jpeg

 

It's probably something simple, but it's been driving me nuts.

 

Link to comment
Share on other sites

In the second screenshot, you haven't chosen a bank. But is that track even assigned to the same "XP_30" multi instrument object (or sub-channel object) when the names are?

Remember, the names come from the object that's assigned to the current track, so if you have a different object assigned, Logic can't reach over into some other unassigned environment object to get the names from it.

It's difficult to say without inspecting your project, but it doesn't look like the XP_30 object is assigned to that selected "Muted Trumpet" track...

Edited by des99
  • Like 1
Link to comment
Share on other sites

2 hours ago, Atlas007 said:

believe that you would have to make the XP-30 object assignable in the Environment and reassign the track accordingly in the Arrange window

That makes sense.  I couldn’t understand how the Arrange window attributes were derived on the left.  “How does Logic know which instrument to use?” I mistakenly thought the XP 30 being only assigned to the MT4 port 03 was the determine factor - but in retrospect, that seems silly.

I’ll look for the reassignment property in the Environment.

I’m having a lot of fun pushing the limits of Logic with these external instruments, even though I mainly use virtual instruments (and prefer them).  The interest in connecting external classic synths has been huge for a while, and really took off during the pandemic.  In my case, I was cleaning out my ‘old gear’ closet.

Link to comment
Share on other sites

A fundamental concept in Logic: every "track" in Logic has an environment object assigned to it that tells Logic what type of track it is, and where to route the track contents to.

That environment object could be an audio channel strip (that tells Logic which channel to route the tracks' audio through), an instrument channel strip, an environment multi-instrument object (that tells Logic where to route the MIDI data to) or any other object type etc. If you control-click on a track header and choose "Reassign", you'll get a menu of *all the environment objects* in the current project which you can reassign to this track. (There are other ways to reassign too.)

While these fundamental concepts were front and centre (and even advertised, Logic was an "object-oriented sequencer") in the early days of Logic, modern Logic hides some of this stuff a bit in various ways, though the fundamental concepts still apply.

lpx.thumb.gif.0f5b41924c7786a10030020db44840b5.gif

Edited by des99
  • Like 2
Link to comment
Share on other sites

Related… maybe.

From the ‘old gear’ closet. I bought a Casio CTK 591 for $30.  From within Logic, I created another multi-instrument but can only access 0-127 GM tones, of the 255 built-in tones.  Doesn’t seem to matter if I initialize the grid, or change the bank #.  I get the same GM tones.  It’s possible the limitation is just part of all Casio’s.  Or, perhaps there are unknown banks or program change CC’s. The Casio manual has little to offer on the midi implementation.  Why bother? I was after those classic 8-bit, cheesy, sounds. I have an open case with Casio, but that might be a waste of time.

Is there a way or shortcut to have Logic send Program #200? Just to see?

Edited by Nunstummy
Link to comment
Share on other sites

Program changes only support 128 presets per bank (MIDI is a 7-bit data format, which means 128 different values can be stored in 7-bits: 0-127).

To access more than 128 presets, you have to bank-switch, but it's possible the Casio doesn't support such MIDI features. Check it's manual and/or MIDI spec sheet, I'm sure you can find it online if you don't have one.

There's no such thing as a MIDI Program Change #200... ;)

Edited by des99
Link to comment
Share on other sites

32 minutes ago, des99 said:

fundamental concept in Logic: every "track" in Logic has an environment objec

Yep - that fixed it!  You guys are awesome!

When I first bought Logic it was owned by eMagic and the object oriented approach sold me.  It seems there nothing you can't do.  And if a feature is missing, you can script it yourself and even ad custom objects.  Of course, this isn't something I do ever day and those skills fade - plus today's Logic has far more builtin features than 20 year ago.

Thank You all!

  • Like 2
Link to comment
Share on other sites

Some devices need custom bank change messages, or you want to define custom patch names for specific bank numbers for devices that have a lot of banks, or non-contiguous bank numbers. Rather than selecting one of the ten or so existing bank change formats, you can define your own messages, as per the screenshot, so selecting the bank number sends the desired bank change message to call up the correct bank on the hardware.

it's not something that most people need though, the standard bank change formats usually cover conventional needs.

Edited by des99
Link to comment
Share on other sites

7 minutes ago, Atlas007 said:

does that mean to simply edit those two values until the hardware synth reacts accordingly (it switches to the desired preset bank selection)?

It really depends on the hardware synth. Some of them require more than one single message to change banks (typically a MSB message and a LSB message). The messages needed to change banks are normally detailed in the synth's manual. 

For example here are the bank messages for the EMU Pro 2000. As you can see each bank change requires two messages - also note that here all messages are set to (a) but sometimes it's better to specify a message order by setting the MSB to (a) and the LSB to (b) so they are sent in the expected order: 

Screen Shot 2022-09-22 at 11.58.09 PM.png

Link to comment
Share on other sites

Just now, Atlas007 said:

how to connect it to the track parameter selector so it would trigger the desired preset switch?

When you assign an instrument to a track and choose a bank in the Track inspector or in the patch name window, the messages you've defined as your custom bank messages in that window are sent to the instrument. 

Link to comment
Share on other sites

4 minutes ago, David Nahmani said:

When you assign an instrument to a track and choose a bank in the Track inspector or in the patch name window, the messages you've defined as your custom bank messages in that window are sent to the instrument. 

IIUW, the custom bank messages is tied to the instrument object? Does that mean that different instrument object would have its own custom bank messages?

Edited by Atlas007
Link to comment
Share on other sites

2 minutes ago, Atlas007 said:

IIUW, the custom bank messages is tied to the instrument object? Does that mean that different instrument object would have its own custom bank messages?

Correct on both counts. This custom bank format is per device ("multi-instrument") you set it up for, as different devices use different bank change formats, and patch names etc.

Edited by des99
  • Like 1
Link to comment
Share on other sites

10 minutes ago, des99 said:

No, you insert the MIDI messages you want as the custom message Logic will send for each bank number, but it really depends on what you are trying to do.

Does that mean that a single bank message can hold different MIDI messages (besides bank/preset selection) to control the target hardware device ?

Edited by Atlas007
Link to comment
Share on other sites

12 minutes ago, Atlas007 said:

Does that mean that a single bank message can hold different MIDI messages (besides bank/preset selection) to control the target hardware device ?

Yes, for every bank number, you insert the MIDI messages you want Logic to send when you choose that bank/program number. If you need to send three CC messages, a pitch bend and a sysex message in that order when you select a bank/program, you can set that up.

https://support.apple.com/en-us/HT201319

Edited by des99
Link to comment
Share on other sites

Ok that is very interesting and great tuition!

Thank you very much @des99 and @David Nahmani!

5 hours ago, des99 said:

If you need to send three CC messages, a pitch bend and a sysex message in that order when you select a bank/program, you can set that up

Unless I am missing something, considering that my TX-81Z doesn't seem to support bank selection (according to its MIDI implementation chart),

1404586576_Screenshot2022-09-22at23-36-49ModelMidiImplementationChart-YamahaTX81ZOwnersManualPage80.thumb.png.59d182e26c0c2ee5cc2129223617b0ea.png

does that mean that I could program SysEx data to send the preset's (Voice parameters) MIDI data using the custom bank select window? Or the custom bank select window is reserved to only transmit bank selections?

 

 

Edited by Atlas007
Link to comment
Share on other sites

7 hours ago, Atlas007 said:

Unless I am missing something, considering that my TX-81Z doesn't seem to support bank selection (according to its MIDI implementation chart),

Correct, bank changes were an addon to MIDI devices in the 90s, they weren't supported by early MIDI devices (because largely, they only had small patch libraries - bank changes only became necessary when instruments started to come with way more patches than the standard 128 program changes could handle).

7 hours ago, Atlas007 said:

does that mean that I could program SysEx data to send the preset's (Voice parameters) MIDI data using the custom bank select window?

No, that's not what it's for...

  • Like 1
Link to comment
Share on other sites

Let's dive a bit deeper here and talk about what the Multi Instrument in the Environment actually does when it comes to banks.

In the Main Window we can select out of up to 127 banks for that instrument; and those banks are consecutively numbered 0 to 127 (there's in addition the "no bank selected" entry). In theory (!) the MIDI specification allows for 16384 banks.

The Multi Instrument can only provide names for up to 15 banks (and the "No Bank Specified"... entry) which hints strongly at a 4 bit situation. If more banks could be created (with preset names) I haven't yet found it.

The Multi Instrument now translates those consecutive numbers (Bank 0 to Bank 14) to the actual bank/program messages used by the target devices. This can be done by either a number of preprogrammed messages:

148684990_Bildschirmfoto2022-09-23um13_23_12.jpg.d6b65039255824b56fed43999e885b85.jpg

or by defining a custom bank message if those variants are not sufficient.

How did we end up with such a mess when it comes to bank messages?

The Bank Select controller is very different from all other controllers in the sense that it doesn't control an aspect of the sound itself (like volume or sustain); instead it basically changes the state of the device. No one could force a manufacturer to use "bank select value 0" for the first bank and "bank select value 1" for the next one. There actually might be good reasons to have "gaps" in the values: for example a manufacturer might decide that the "piano bank" should always be at bank select value 10, or an orchestral bank should always be at value 32 and so on.

Some manufacturers had used a completely different approach by limiting the size of a bank (for example to 100 entries instead of 128) and then using the remaining higher program changes (100 to 128) to switch between banks.

Then there's the pesky 14 bit problem (MSB/LSB situation) which isn't much of an issue for other controllers. But for bank changes it poses the question: Do the banks "live" in the MSB area or in the LSB area? If it's MSB - why have LSB at all? If it's purely LSB: Do we still have to send the MSB? And so on...

The Multi Instrument takes care of this translation - in the track itself we can select a bank and the program for bank 0 to 14 simply by name. The full command that must be sent to switch the device to the proper location is none of our problems. That's what the Multi Instrument does automatically behind the scenes.

MIDI and its command structure are clearly a child of the early 80's when resources and computing power were extremely limited. Think of the DX7: 32 internal memories, 32 more on the card. With the benefit of hindsight it probably would have been better to implement program/bank changes in a different way...

  • Like 2
Link to comment
Share on other sites

7 minutes ago, gacki said:

The Multi Instrument can only provide names for up to 15 banks (and the "No Bank Specified"... entry) which hints strongly at a 4 bit situation. If more banks could be created (with preset names) I haven't yet found it.

You can actually do this, but it requires a slightly hacky workaround - the Logic manual I linked to above actually mentions it, and I used this method to sort out patch names from my XV-5080 which has way more than 15 banks... I also made them contiguous and ordered to my needs, so eg selecting "Bank 1" doesn't necessarily select the bank that 1 would select on the hardware, rather it selects my user bank (which might be bank 30 on the hardware), and then the various preset banks, then the various card banks and so on, which are all on the hardware distributed over the number range (the "gaps" as you mention).

Great post!

Edited by des99
Link to comment
Share on other sites

1 hour ago, des99 said:

Correct, bank changes were an addon to MIDI devices in the 90s, they weren't supported by early MIDI devices (because largely, they only had small patch libraries - bank changes only became necessary when instruments started to come with way more patches than the standard 128 program changes could handle).

No, that's not what it's for...

Des99 my old friend - I have a different viewpoint on this....  For example I have a Ketron SD90 which requires sysex message for almost every feature to be manipulated/triggered/set. Customer bank messages can in fact include sysex message to be sent upon bank selection.  In Logic there are 16 unique banks and within each of the 16 banks you can send up to 16 midi messages ( most would be PC and likely MSB, LSB type information - however you can send anytime of midi information including system exclusive messages.

In the pic below - when bank 1 is selected - I am sending an MSB, a note, a program change, a system exclusive message and even a pitch bend - in that order. ( sorry forgot to highlight the PB) 

image.thumb.png.2d4ad3c7e2dd18ffb9af224d1f1c15a0.png

Link to comment
Share on other sites

15 minutes ago, volovicg said:

Des99 my old friend - I have a different viewpoint on this....  For example I have a Ketron SD90 which requires sysex message for almost every feature to be manipulated/triggered/set. Customer bank messages can in fact include sysex message to be sent upon bank selection.

You seem to have misunderstood me. I included in my example to Atlas, sending sysex messages in almost the exact way you describe, so I obviously understand that.

See my post above:

13 hours ago, des99 said:

Yes, for every bank number, you insert the MIDI messages you want Logic to send when you choose that bank/program number. If you need to send three CC messages, a pitch bend and a sysex message in that order when you select a bank/program, you can set that up.

Atlas then suggested that (paraphrasing) "as you mentioned sysex events, can I use that to put complete sysex dumps for patches in", at which point I said no - a bank change message is not designed to send a 5K voice dump, but *is* designed for you to put custom messages in, including things like *small* sysex messages, for devices that need instruction in that manner.

So you are in actual fact entirely in agreement with my understanding of how to use this function, and are in fact demonstrating the exact use case I was describing.

I think you just missed that Atlas was asking to put complete voice dumps in custom bank messages, and I said "that's not what it's for" (I didn't really want to go into the full complexities of that at that point). You seem to think I was saying you can't put sysex events in here, but as I already gave that as a use case in my example, it's clearly not the case.

I don't even know offhand if there is a limit to the length of sysex events in the custom bank message editor.

Edited by des99
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...