PG Music Home
Posted By: MartinB Question for the experts - 05/24/09 12:02 PM
This is a question related to the rendering of midi signals. At times BiaB yields strange results when playing back its arrangements. Usually midi notes do sound during their midi duration. However, at times they do sound substantially longer. Why?

Here is how to reproduce this finding:
Load the demo song of Jazquint.sty. Set Guitar to solo such that you hear exclusively the guitar track; potentially reduce the tempo to s.th. like 60. Turn the chord Dm7 in the second bar to a shot. Press play and focus on the guitar notes of the Dm7 shot. Various synthies now yield different results. VSC DXi makes the guitar notes sound exactly during their midi duration here. Forte DXi and GS Wavetable, however, make these notes sound substantially longer - effectively botching a shot effect.

Now comes a related question.

With the style Jazquint.sty a typical guitar pattern are strums at each beat. Typically these strums are notated with respect to the respective midi durations -> long-short-long-short (long refers to durations of about 0:100, short is typically s.th. around 0:20). At times, though, some bars show up with midi durations short-short-short-short. At those bars the synthies create the following puzzling patterns -> Forte DXi: mostly long-short-long-short and sometimes even long-long-long-long, VSC DXi: long-short-long-short, Wavetable: long-short-long-short.

Why do different synthies create different renderings with respect to note durations?

Why do some synthies create long-short sounds with notes of durations short-short?
Posted By: John Conley Re: Question for the experts - 05/24/09 12:37 PM
Dare I guess reverb in the samples?
Posted By: MartinB Re: Question for the experts - 05/24/09 01:27 PM
Oh well, some inspection with the midi monitor reveals that there are a bunch of sustain controllers floating around with the midi data created by this style. Those song positions that create long sounding notes even if the note durations are rather short are accompanied by some non zero sustain controller values. Typically these values are indeed 127. That seems to account for long sounding notes with short midi durations.

Now, why do different synthies create different outputs?

In the second bar with the shot, the notes start out with a sustain controller value 127. At the end of the note durations the sustain controller value is turned to 5, not to zero.

Apparently different synthies react differently to sustain controller values, such a 0 correnponding to 'off' and any value different from 0 may correspond to 'on'. The VSC DXi seemingly takes a value 5 just as this value, thus effectively switching off sustain.

That is an interesting problem that popped up recently over at the German forum ...
Posted By: Mac Re: Question for the experts - 05/24/09 02:20 PM
Yes, different devices do indeed respond differently to MIDI controller 64 (sustain).

The 5 is not generally a problem, though, as the vast majority of GM synths use the 0-127 CC as a "bang-bang" and not a continuous action, typically defining the dividing point between Pedal Up and Pedal Downs at the halfway mark, or 064. (Here's where guys like Gary will chime in about their special Sustain Pedal situation, which is programmed to emulate half-damper action. You can get it, but it is going to cost you more money, whether hardware like Gary's piano or software as in some of the high end piano modeling synths. )

So the 127 is a Pedal Down and the 5 represents a Pedal Up. This is a common MIDI programming practice when creating a MIDI file for use with different GM synths because there exist some synths that don't like going all the way to zero, can't recognize it ("1-based" synths, for example). So setting the Controller for a number slightly above zero makes sure that every possible situation can be handled with the same setting, "5" or "3" being the same action as zero anyway.

The situation can be further exacerbated by certain software synths and their implementation, too. It is customary if not de rigeur to not send MIDI Note Off data in a MIDI file. Even though the original MIDI standard includes Note Off commands, it was found early on that the inclusion of the Note Off commands was superfluous for the most part, bloating the size of MIDI files needlessly when the MIDI Note Duration command literally does the same thing as a Note Off command placed at the end of every single note in a file. But there are indeed certain times when certain softsynths, particularly those of the DXi persuasion, will miss the Note Duration data point, causing longer or shorter notes, often causing the "hung note" situation, particularly on Pad tracks such as strings, synths or organs. That bug has been reported here numerous times. I have never found a cure for the situation other than to switch to a good hardware MIDI synth, where none of this has ever occurred here.

As for CC64 being used on guitar parts, I try to avoid that situation in my own MIDI sequences, simply because the real guitar has no sustain pedal in the first place. That is really something only the Piano, and a few other percussion instruments have in real life. Harp, etc. Still, even given that, the use of the Sustain CC64 is with us forever more than likely, especially in those downloaded-for-free MIDI files that are so ubiquitous. The funny thing about that situation and human nature is that almost everybody will blame the host program they use or the developers of the host -- and never the free downloaded MIDI file from an unknown stranger that they are trying to get to act right.


--Mac
Posted By: MartinB Re: Question for the experts - 05/24/09 03:53 PM
I read you Mac, yet here we have a pure BiaB setting - not talking about some downloaded midi files; it's all about the midi data created by BiaB.

The CC#64 controller value was probably a misleading trace anyway. Shifting the guitar track to the melody and editing the suspicious sustain controller value 5 down to 0 does not change anything with the strange playback behavior. Now what?

Maybe some soul from PG Music might chime in here ...
Posted By: Fred B Re: Question for the experts - 05/24/09 03:56 PM
Quote:

The situation can be further exacerbated by certain software synths and their implementation, too. It is customary if not de rigeur to not send MIDI Note Off data in a MIDI file. Even though the original MIDI standard includes Note Off commands, it was found early on that the inclusion of the Note Off commands was superfluous for the most part, bloating the size of MIDI files needlessly when the MIDI Note Duration command literally does the same thing as a Note Off command placed at the end of every single note in a file.



Mac,

I've never heard of a "MIDI Note Duration" command..
Can you please explain in more detail? How is it defined in the MIDI standard?

Thanks.
Posted By: Mac Re: Question for the experts - 05/24/09 04:06 PM
Note Duration is defined by number of MIDI Clock Ticks.

If you investigate using something like Event List viewer or the like, you should find that the majority of MIDI files do not contain Note Off data, only Note On and then the Duration data. This is contained in one parcel and thus there is no need to send a separate Note Off and time, which is another line of data.

MIDI standard is getting a bit long in the tooth, but it is what we have. Some of the ideas that the MIDI Manufacturer's Association first agreed upon way back when at the design tables turned out to be not so wonderful after all. Still, they did a pretty good job of it, considering. I often find myself wishing for a new standard that would encompass a few more musical parameters than what the current thing can yield. As it is, we spend time creating "illusion" more than anything else. Or -- if something doesn't work, try doing something else instead kind of thing.

Check out the Event List View to see the Note On and its Duration value.

Then look for any Note Off data...


--Mac
Posted By: Fred B Re: Question for the experts - 05/24/09 04:25 PM
Quote:

If you investigate using something like Event List viewer or the like, you should find that the majority of MIDI files do not contain Note Off data, only Note On and then the Duration data. This is contained in one parcel and thus there is no need to send a separate Note Off and time, which is another line of data.



Well, the event list of sequencers in general don't show the raw MIDI commands of the file but just a compact and readable interpretation. But when looking directly at the MIDI file with a MIDI-to-Text converter you'll see the original Note Off commands (usually Note On with velocity 0).

Posted By: MartinB Re: Question for the experts - 05/24/09 04:26 PM
The Event List displays Duration values, the Midi Monitor does not. The Midi Monitor lists a bunch of Note On commands with pertinent velocity values. A velocity value=0 is equivalent to a Note Off command.

This recalcitrant Jazquint style defeats a lot of velocity=0 commands, though ...
Posted By: Fred B Re: Question for the experts - 05/24/09 04:51 PM
The inconsistent behavior may be due to overlapping notes. I've noticed that different synths behave differently in this regard. If you have a sequence like this

Note On C5 ----- Note On C5 ----- Note Off C5 ----- Note Off C5

some synths stop immediately at the first Note Off while others require the second one (ie. matching number of Note Ons and Note Offs).

Posted By: Mac Re: Question for the experts - 05/24/09 05:38 PM
Quote:


NOTE ON and NOTE OFF Commands

By far the most common command blocks are the NOTE ON and NOTE OFF commands. A NOTE ON command might contain the following hexadecimal byte sequence:

0x92 NOTE ON, Channel 2
0x3C Pitch = Middle C
0x40 Velocity = 0x40

The hexadecimal value 92 identifies a NOTE ON command for Channel 2. Next, hexadecimal data byte 3C is a pitch (frequency) value corresponding to Middle C on the piano. Notes are assigned integer pitch values, increasing with frequency. There are 12 intervals in an octave, so adding or subtracting 12 (decimal) to a sequence of pitch values would raise or lower the pitch by one octave.

The last byte value of 0x40 indicates a turn-on velocity of 64, decimal. Actually, many keyboards don't use the velocity value at all, but simply use a fixed turn-on and turn-off velocity.

Now let's look at the NOTE OFF command. A typical NOTE OFF command block might appear as:

0x81 NOTE OFF, Channel 1
0x3C Pitch = Middle C
0x40 Velocity = 0x40

Here the bytes represent a NOTE OFF status word on Channel 1, a note pitch of 0x3C (Middle C again), and a turn-off velocity of 0x40.

Implicit NOTE OFF commands

A special case of the NOTE ON command allows it to be interpreted as a NOTE OFF command. This is true whenever the velocity value is zero: a zero-velocity NOTE ON command always equals NOTE OFF for the indicated pitch value.





(emphasis added)

The latter case above is now the defacto method for most cases. For reasons already given, but look at it like this: All Note On data is leaner and meaner than interspersing the Note Off strings. It is faster and demands less state change events.

This also depends on the coding of the software you use to view the MIDI data, though. Some will imply the Note Off that really isn't there, kind of like a smart filtering or interpretation situation. It may be necessary to be able to look at the raw MIDI data in order to see the real.


--Mac
Posted By: Fred B Re: Question for the experts - 05/24/09 10:41 PM
Quote:

This recalcitrant Jazquint style defeats a lot of velocity=0 commands, though ...



So I have looked at the exported MIDI file with a special editor to inspect the raw data. It turns out that on the guitar track on each beat the complete chord is generated *multiple* times with an offset of some ticks, and for each of these chords all but one Note On are immediately followed by a Note Off (velocity=0). Thus a strum effect is created but the method seems questionable. I'd suspect that sending Note On and Note Off with same pitch on the same tick may confuse some synths.

Posted By: MartinB Re: Question for the experts - 05/24/09 11:53 PM
What special editor did you use?

I have only access here to the event list and the midi monitor of BiaB or RealBand. Looking closer at those data I might have a clue now of what is going on here:

While in an above post I assumed that the CC#64 business might be a blind alley, it appears definitely to play a role. I was led to thinking it doesn't play a role, because setting the above mentioned CC#64 value from 5 to 0 didn't seem to change anything. Now, that holds true for the Forte DXi only - which was the active synth when I tried this exercise. Checking on the effect of setting a CC#64 value from 5 to 0 with either Wavetable or VSC DXi does, however, create results, which one would expect -> a nice shot and otherwise nice strumming patterns throughout the style.

So, why does Forte DXi seemingly botch this strumming exercise?

Looking at the Event list, it appears that the Forte DXi holds notes despite of some CC#64 value=0, supposed to silence played notes, whenever such a CC#64 command happens to show up after some note off command was issued. Most of the time this style creates CC#64 value=0 commands shortly before a pertinent note off command. In these circumstances the notes stop sounding with the Forte, VSC and Wavetable. Sometimes such a CC#64 value=0 command is issued slightly after such note off commands. In these instances VCS and Wavetable do silence notes anyway, however Forte keeps those notes sounding, thus compromising this style.

Weird ...
Posted By: Mac Re: Question for the experts - 05/25/09 12:32 AM
Sounds like the Coyote Forte may be programmed to accept any value above zero as Pedal Down...
Posted By: Fred B Re: Question for the experts - 05/25/09 12:39 AM
Quote:

What special editor did you use?



It's a self-made program written in Java.

As a Mac user I can't check the synths you're using but I still think the basic problem is that BiaB generates note on commands immediately followed by note off commands. This may result in timing issues with note management and sustain handling of some synths.

Posted By: Mac Re: Question for the experts - 05/25/09 01:38 AM
What Fred B says makes sense.

Matter of fact, there is even a command in the global Prefs, "Send extra Note Offs" -- I presume that is to handle stuck synths.

You might check to make sure you don't have that one st to true...


--Mac
Posted By: MartinB Re: Question for the experts - 05/25/09 09:48 AM
Quote:

Sounds like the Coyote Forte may be programmed to accept any value above zero as Pedal Down...



Forte DXi keeps pedal down even with CC#64 value=0, if this command is issued after a note off command.
If CC#64 value=0 is issued before a note off command, the note gets silenced after its duration.

Appears to be a timing issue and may well be a bug with the Forte Software.
© PG Music Forums