fbpx
Skip to main content

MIDI Forum

Applying "Expressio...
 
Notifications
Clear all

Applying "Expression" to... expression

8 Posts
4 Users
0 Reactions
5,923 Views
Jason
Posts: 439
Honorable Member
Topic starter
 

I am now using Cakewalk to apply expression controllers to fade out the last 10 seconds of my songs. As is tradition, everything has to get more complicated that it first appears.

The first song it worked flawlessly.

The second song, one of the channels already has expression controllers running the entire length of the channel, so when I apply the fade out expression controllers, they get overridden and the Slap Bass just keeps on a-slappin, while all the other channels politely fade away.

Aside from manually deleting all of the expression that was there first, is there any other way I can force it to use the expressions that I add in instead?

 
Posted : 30/07/2022 8:17 am
Carlos
Posts: 86
Estimable Member
 

I know this dimming thing is done with controllers but what if it's done with sysex? Master Volume appears at https://github.com/jazz-soft/SysEx, maybe it can be useful although I don't really know what it was designed for.

 
Posted : 31/07/2022 6:15 pm
JohnG
Posts: 226
 

The "normal" way of providing fade-outs in most SMF's I've seen is by graducally lowering the value of CC#7, channel volume.
Actually it makes more sense than expression.

 
Posted : 01/08/2022 4:04 am
Jason
Posts: 439
Honorable Member
Topic starter
 

[quotePost id=15320]The "normal" way of providing fade-outs in most SMF's I've seen is by graducally lowering the value of CC#7, channel volume.
Actually it makes more sense than expression.[/quotePost]I did try CC 7, but CC 11 actually provides the desired results with my particular files.

I need to input a start and end value for it to use. CC 7 sets the channel volume, so when the "fade" kicks in, starting at a value of 127, all notes crank up to full volume. I'm guessing that my channel volumes have been previously set to assorted lower values. With CC 11, it sets the volume to a percentage of the current volume, so the notes never play louder than intended. At a value of 127 they play at their original volume, and fade from there, rather than kicking to full blast first, and then fading. The only drawback that I see is that volume dynamics during the fade are lost in favor of having the song fade out when I remove the existing expression values.

I'll check and see if the channel volumes are a fixed value between the files by default. If so I'll give that another shot, just starting at the "current" value rather than at 127.

 
Posted : 01/08/2022 4:55 am
JohnG
Posts: 226
 

CC7 and 11 will (should) give the same resultant volume, but an expression pedal is something that the player uses, the channel volume can be thought of as the fader on the mixing desk.
By default (according to the MIDI spec.) CC7 is set to a value of 100, CC11 to 127.
A GM reset tissued at the very start of the file should do this.

The value of CC7 is then altered to achieve the correct volume balance between the different instruments in the song.
CC11 is used to achieve ... well ... expression.
Just my experience of examining all sorts of commercial SMFs, mainly XG and GS, over the last 30 years or so.

There's a large bundle of XG files available on the internet archive if you search on "Yamaha XG MIDI library".
Download the .rar file. It's fairly large.
Examining how these files are authored was certainly eye opening for me when I first started out with my DB50XG mounted on a Waveblaster card.
JohnG.

 
Posted : 01/08/2022 8:09 am
Bavi_H
Posts: 267
Reputable Member
 

I agree Volume is typically used for fade outs. However, in Jason's case, the spc2midi conversion process he is using generates many Volume events throughout its tracks. So in that case, it is easier to just use Expression for fade outs. However, Jason is now noticing sometimes there are also some existing Expression controllers. So if both Volume and Expression are already being used, how do you apply a fade out?

Cakewalk has a scripting language called CAL or Cakewalk Application Language. (If you want to learn about the CAL language, you can read the PDF file linked in this post: Re: CAL manual or guide in PDF.)

I wrote the attached CAL script that lets you apply an Expression fade out when there are already Expression controllers in use.

Download: expression-fadeout.zip

Steps:

1. In the track list window, drag in the measure numbers at the top of the right pane to select the the desired range for the fade out in all tracks.
2. Go to the Process menu, select the "Run CAL" command, then open the "expression-fadeout.cal" file.
3. After the script has run, save the MIDI file (as the same file name or as another file name if desired). In the saved file, Cakewalk will change the channel number of every event to match the channel number of the track.

Notes:

• This script first inserts a series of dummy controllers (CC12) as an "envelope" to specify the desired fade out. Then it combines the envelope controllers and the existing Expression controllers into an set of output Expression controllers that fade out.
• CAL scripts are slower than normal Cakewalk commands. This script takes about 5 to 10 seconds to run. If you want to cancel the script while it's running, hold down the Esc key on the keyboard.

 
Posted : 01/08/2022 10:37 am
Jason
Posts: 439
Honorable Member
Topic starter
 

I wrote the attached CAL script that lets you apply an Expression fade out when there are already Expression controllers in use.

Thanks, I'll give it a shot.

I did check my files, and they do indeed make heavy use of both CC 7 and CC 11. I've already done 5 songs by manually deleting the existing CC 11s from the last 10 seconds, and it's working pretty good, but is also a tad awkward to do. So if the script works, that'll be swell! 😀

EDIT: The script works great! Thank you! So it appears that Cakewalk is the final missing piece of my (editing) process that I have been looking for all this time :p I'm not sure how I never tried it before now. On to "production!"

CAL scripts are slower than normal Cakewalk commands. This script takes about 5 to 10 seconds to run. If you want to cancel the script while it's running, hold down the Esc key on the keyboard.

In my test run it was nearly instantaneous. (I have a fairly beastly gaming laptop). And even if it took 10 seconds, that's still several minutes worth of editing shaved off of each file. Score!

 
Posted : 01/08/2022 12:18 pm
Jason
Posts: 439
Honorable Member
Topic starter
 

I think I had an issue with my previous soundtrack where occasionally the script would not fade out certain channels. I can't for the life of me remember what I did to resolve the situation.

Naturally, the very first song of the second soundtrack I am trying to finish has this issue, and so now I am stuck.

Any chance you can tweak the script to make it "more inclusive" or something? Or help me figure out what's going wrong?

I noticed that it ...

Welp, it has CC 43 in addition to CC 11, and from what I've read, CC 43 should be "fine tuning" for CC 11. For some reason it seems to keep the volume up when it should be fading. I duplicated the script and changed 11 to 43 in the script, and ran that after running the original fade out script, and it seems to have taken care of the issue. Whew.

 
Posted : 08/10/2022 3:59 pm
Share: