Jump to content

Monitoring Note Off


lifeinasong

Recommended Posts

All I want to do is have the keyboard object in the environment accurately represent the notes being played from a sequenced midi instrument track. It works fine when I'm playing live but not on playback after I've recorded something. It seems the note off messages are not transmitted so the notes that appear on the keyboard "stick" and don't release after they are played. Everything sounds perfectly fine but I want to see it displayed on the keyboard object the same way. Can anyone help me figure out how to send the note off messages to the keyboard and/or monitor object(s or whatever)? PLEASE HELLLLP MEEEEEE!!!javascript:emoticon(':lol:') I swear if we ever somehow met I'd owe you the sweetest high five ever!
Link to comment
Share on other sites

  • 2 months later...
Indeed, Logic doesn't output noteoffs in the way you'd expect. Having said that, I've come up with a three-transformer fix, file attached. Post back if you want an explanation of how it works.

 

I notice that there's 2 differences on handling NOTE OFF messages.

MIDI Instrument and MIDI Performance (midi file)

Link to comment
Share on other sites

What do you mean by "MIDI Instrument"?

 

Also, would you mind taking a minute to explain what differences you've found in this thread rather than taking us elsewhere to have this discussion? Thanks.

 

When I click on a key on my MIDI Instrument (keyboard) I see a NOTE ON message, once I release it, I see a NOTE OFF message.

 

When I drag a MIDI Performance (midi file) onto a track and play it, even though there's a NOTE ON/NOTE OFF in the actual midi file, actually it's either a NOTE OFF or a RUNNING STATUS message with velocity set to zero, you only see at input, the NOTE ON message.

 

This is the 2 difference on handling NOTE OFF messages I've seen in Logic.

Link to comment
Share on other sites

Thanks for posting back.

 

Some add'l questions for you so we can continue with this interesting discussion without ambiguity...

 

When you say that you see a note off message when you release a note from your keyboard, are you talking about an $8n message, or, a $9n message with a velocity of zero?

 

Also, how/where are you monitoring this data?

 

Finally, do you see any difference in the playback of a SMF as opposed to MIDI data recorded and played back in Logic?

Link to comment
Share on other sites

Thanks for posting back.

 

Some add'l questions for you so we can continue with this interesting discussion without ambiguity...

 

When you say that you see a note off message when you release a note from your keyboard, are you talking about an $8n message, or, a $9n message with a velocity of zero?

 

Also, how/where are you monitoring this data?

 

Finally, do you see any difference in the playback of a SMF as opposed to MIDI data recorded and played back in Logic?

 

Sorry for the late reply.

 

Here's how I monitored it in Logic. (dead link removed by admin)

 

First I played my keyboard and it shows the NOTE ON/NOTE OFF messages. That's because the keyboard is the one transmitting those messages.

 

Then I play a MIDI file, notice that there's no NOTE OFF messages in the playback of that MIDI file.

That's because the MIDI file doesn't contain any NOTE OFF messages.

What it does contain is a MIDI Specification called RUNNING STATUS.

 

Here's the definition of the MIDI RUNNING STATUS message.

http://home.roadrunner.com/~jgglatt/tech/midispec/run.htm

 

Now, that's not to say that NOTE OFF messages don't exist anymore, but I think all current DAW's are supporting RUNNING STATUS and not NOTE OFF messages when saving a MIDI file.

I wrote an Objective-C MIDI library and since I didn't have the actual MIDI Specification documents, that RUNNING STATUS was killing me until I found that link that described RUNNING STATUS.

Once I updated my Objective-C library to support RUNNING STATUS, I was able to read MIDI files.

 

When you say that you see a note off message when you release a note from your keyboard, are you talking about an $8n message, or, a $9n message with a velocity of zero?

Since I'm using my MIDI Keyboard, it generates a $8n (NOTE ON) message when I press a key followed by a $9n NOTE OFF) message when I release a key.

FYI - If $9n message contains a velocity value, that's ignored since by MIDI definition $9n is a NOTE OFF message.

 

Finally, do you see any difference in the playback of a SMF as opposed to MIDI data recorded and played back in Logic?

I don't see a difference if a SMF contains MIDI NOTE OFF messages or a MIDI RUNNING STATUS message, as in playback.

But if you created a Enviroment MACRO that supported NOTE OFF/ON messages, you'd have to update that MACRO to support a RUNNING STATUS message.

Link to comment
Share on other sites

There's a lot to reply to, but for now I'll just touch on this:

 

Since I'm using my MIDI Keyboard, it generates a $8n (NOTE ON) message when I press a key followed by a $9n NOTE OFF) message when I release a key.

FYI - If $9n message contains a velocity value, that's ignored since by MIDI definition $9n is a NOTE OFF message.

 

I'm afraid that's not correct.

 

Note on command are $9n, followed by two data bytes: the note number and then the velocity value. We can call this $9n, nn, vv.

 

There are then two kinds of note off commands:

 

• a note-on with a velocity of zero ($9n, nn, 0)

• an $8n command followed by the note number and the release velocity ($8n, nn, rv)

 

The $8n command byte can be thought of as a "true note off" command. In devices that don't respond to release velocity, the "rv" value is simply ignored.

 

When data is being sent under running status, these two strings would be equivalent:

 

$9n 64 64 32 32 64 0 32 0

 

$9n 64 64 32 32 $8n 64 64 32 32

Link to comment
Share on other sites

There's a lot to reply to, but for now I'll just touch on this:

 

Since I'm using my MIDI Keyboard, it generates a $8n (NOTE ON) message when I press a key followed by a $9n NOTE OFF) message when I release a key.

FYI - If $9n message contains a velocity value, that's ignored since by MIDI definition $9n is a NOTE OFF message.

 

I'm afraid that's not correct.

 

Note on command are $9n, followed by two data bytes: the note number and then the velocity value. We can call this $9n, nn, vv.

 

There are then two kinds of note off commands:

 

• a note-on with a velocity of zero ($9n, nn, 0)

• an $8n command followed by the note number and the release velocity ($8n, nn, rv)

 

The $8n command byte can be thought of as a "true note off" command. In devices that don't respond to release velocity, the "rv" value is simply ignored.

 

When data is being sent under running status, these two strings would be equivalent:

 

$9n 64 64 32 32 64 0 32 0

 

$9n 64 64 32 32 $8n 64 64 32 32

 

My bad, you're right. I posted that early this morning and was kind of tired.

 

I just check my comments in my objective-c midi library.

I reversed in my posting 0x8 and 0x9.

 

Event Type Value Parameter 1 Parameter 2

------------- ------- ------------- -----------

Note Off 0x8 note number velocity

Note On 0x9 note number velocity

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