Home Page

Functions And Keywords Page

Alphabetical Index

Next Topic

Previous Topic

Sample Programs

Updates And Corrections


Edit Menu Functions

Most of the things you can do using the commands in the EDIT drop-down menu from the front panel you can do in CAL by calling the corresponding EDIT function. This is because the options available in the dialog boxes resulting from clicking on an EDIT command are part of the CAL EDIT functions. In Cakewalk version 3, each edit command has an option in its dialog box called "Use Event Filter". Checking this box opens the Edit Event Filter set-up screen where specific filter settings can be made before doing the edit. Later versions do away with this check box and offer a "Select" sub-menu off of the EDIT menu where you can open the event filter window before selecting the specific edit you wish to carry out. Either way, in order to properly implement these filters for an EDIT function, CAL requires the running of three separate event filter set-up functions that emulate the screen selections. Most of the time all three must be called one or more times to provide the necessary setup information before the actual EDIT function can be called to do the work. Please keep in mind that these event filter setup functions MUST be run before the CAL30 EDIT function can be run with the "Use Event Filter" argument activated. Leaving out this step can cause all sorts of unpredictable behavior in your EDIT functions. As far as the CAL40 versions of these EDIT functions are concerned, you should at least use the "ResetFilter" function before using the EDIT functions. This is because they have no "Use Event Filter" argument. The event filters are always active for these guys and therefore they assume the filter settings are valid when they run. You must make sure the event filter is at the very least reset ahead of time. Using the event filter functions will make more sense if you are familiar with the edit event filter screens as used in Cakewalk.

Some of the advanced features in Cakewalk versions after 4, including the audio and clip edit functions, are available as part of their CAL40 EDIT syntax in an undocumented format that I have tried to decipher and document here. Even though the evolution of these functions may have started at version 5, I will be giving you the forms of these enhanced functions as they appear in version 6 and will refer to them generically as version 6 variations of the CAL40 functions or CAL60. If you are using version 5, you will have to test these functions by recording them as macros and checking the argument string that results in order to see which arguments version 5 added. These enhanced version 6 functions seem to be unchanged in versions 7 and 8, so even though they are referred to as version 6 variations, the documentation applies to the higher versions as well. Also note that all of the CAL40 versions of the EDIT functions support the new "non-global" selection method that allows each view window to define its own selection criteria. The older CAL30 functions do not support this "non-global" selection method and so will act on events as if selected by the TRACK view using the highlighted track and the "From" and " Thru" markers only. This limitation not withstanding, there is allot you can do using these functions.

As mentioned in the opening Menu Functions page, there is a bug in version 6 that prevents the "EditInterpolate" function from following the "From" and "Thru" markers. Please review the section called Forcing EditInterpolate To Use Markers on the Tips, Techniques and Work-Arounds page for details and a way around the bug. I have tested the rest of the CAL40 EDIT functions in version 6 and so far found no such problem with any of the rest of them, although I was given to believe the problem was across the board. I also seem to remember a day when the "EditCopy40" and "EditPaste40" functions acted like the "EditInterpolate" function and I was forced to use the same work-around on them to ensure proper operation. However, I can't duplicate this problem and think I may have been mistaken. In any event, test your usage of these CAL40 functions well, and if you run into any odd behavior involving the markers in version 6, try the work-around I developed for "EditInterpolate" as a first course of action. This may be one of those bugs that's there one time and not another. If all else fails, stick to the CAL30 versions. I am lead to believe that this bug exists only in version 6. In that I have never used versions 4 or 5, I can't confirm or refute this. If you have this sort of problem in versions 4 or 5, please forgive the omission.

 
(EditCopy From Thru events filter tempos meters markers)
This function corresponds to the COPY feature in the EDIT drop-down menu in Cakewalk version 3. The "EditCopy" function copies the events in range to the Windows Clipboard for later pasting without disturbing anything in the sequence. When using the COPY feature in Cakewalk, you are presented with a dialog box containing a bunch of check boxes and, in early versions, with windows for setting the From and Thru markers. Later versions require you set the markers in the SELECT sub-menu or on the panel first, then click the COPY command. Either way, CAL collects all of these options for the function in the form of its arguments. Here is what they mean:
 
From and Thru
These are old friends by now and don't need much elaboration. They are the beginning and ending times of the selected part of the sequence and are in the form of raw time double words.
events
This is like the "Events" check box in the dialog box. Filling it in with a 1 or the constant TRUE is like checking this box. 0 or FALSE is like leaving the box unchecked.
filter
This is like the "Use Event Filter" check box or setting up the filter from the SELECT sub-menu. 1 or TRUE means use the filters and 0 or FALSE means don't use the filters (in other words, include everything in the COPY). Remember, if you use this feature by putting a 1 or the word TRUE in this argument, be sure to set up the filters before using this function. See below the functions "ResetFilter", "SetFilterKind" and "SetFilterRange".
tempos
Like the "Tempos" check box. 1 or TRUE means checked (include them in the copy) and 0 or FALSE means unchecked (ignore them).
meters
Like the "Meters" check box. 1 or TRUE means checked and 0 or FALSE means unchecked.
markers
Like the "Markers" check box. 1 or TRUE means checked and 0 or FALSE means unchecked.selected selected part of the
 
(EditCopy40 events tempos meters markers)
The CAL40 version of this function simply leaves out the "From", Thru" and "filter" arguments, assuming these settings have been made in advance. If you are using Cakewalk versions 6 or above, there are two arguments added to the end of the function like so:
 
(EditCopy40 events tempos meters markers audio clips)
 
The last two arguments correspond to the "Split Audio Events" check box and the "Copy Entire Clip As Linked Clip" check box. They follow the same 1 or 0 rules as the rest of the check box arguments. These new features are as yet undocumented, but I'm sure they make sense to version 6 owners who use the audio features from the EDIT drop-down menu.
 
(EditCut From Thru events filter tempos meters markers hole)
This is set up just like "EditCopy" above with the addition of the "hole" argument. It corresponds to the Delete Hole check box. A 1 checks it and a 0 leaves it unchecked. This function removes the selected events in range from the sequence and sends them to the Windows Clipboard.
 
(EditCut40 events tempos meters markers hole)
Like the "EditCopy40" function, this one simply leaves out the "From", "Thru" and "filter" arguments and depends on their being set in advance. The Cakewalk 6 version of this function adds the "Split Audio Events" and "Align To Measures" check box arguments at the end like so:
 
(EditCut40 events tempos meters markers hole split align)
 
(EditPaste time repetitions add_mode events tempos meters markers)
(EditPasteToTrack time repetitions add_mode events tempos meters markers track#)
Both of these version 3 functions can be replaced with this version 4 function:
 
(EditPaste40 time track# one_track repetitions length new_clip events tempos meters markers)
And the version 6 function:
 
(EditPaste40 align link time track# one_track repetitions length new_clip events tempos meters markers add_mode split)
 
Using the CAL30 functions "EditPaste" and "EditPasteToTrack" can get a bit harry when used in Cakewalk versions other than 3. For one thing, the "add_mode" variable called "HoleKind" in the Cakewalk documentation is ignored by Cakewalk versions 4 and above and defaults to blending the new events with the current contents in the destination track. The "EditPaste40" function doesn't support the "add_mode" feature either until version 6 where it again appears as one of the four new arguments at the end of the function.
 
Another thing is that in Cakewalk 3, documentation states that "EditPasteToTrack" will paste everything in the Clipboard to the one track who's number is contained in the variable "track" if "nMode" is set for single track mode and will paste multiply cut or copied tracks to new tracks but shifted in track number by the amount in the variable "track" if "nMode" is set for multi-track mode. The main problem is that there is no mention how or where "nMode" is set or how it is changed. In fact, there is no other mention of "nMode" anywhere in any Cakewalk or CAL documentation! This makes the feature rather enigmatic if not useless. As it seems to turn out, this function will always paste everything in the Clipboard, regardless of how many tracks it came from, to the single track number stored in the "track" variable. In Cakewalk 6, it is said that "track" will be the first track number where pasting will begin if multiple tracks were cut or copied. No mention is made of "nMode" or of "track" being used as an offset value. It is implied that if all events cut or copied were from only one track, they will be pasted to track number "track". In use however, it has the same effect as in Cakewalk 3. All events from no mater haw many tracks all go to track number "track". The "EditPaste" function is a bit different. In Cakewalk 3, all events cut or copied will be pasted back to the exact tracks from which they came regardless of how things are selected. In Cakewalk 6, Multiple tracks cut or copied will be pasted back in the same spacing order starting at the track under the cursor in the TRACK VIEW. This means that CAL will cut or copy events from tracks that CAL can be made to select, but the user must be sure to have the cursor in the first track they wish to use as the destination before running the CAL program because this destination cannot be selected by CAL. The CAL40 version of "EditPaste" has an argument that will set the destination track and another that will select "all to one track" or "separate track to separate track" mode, so this takes care of the problem. Here is a quick rundown of the various arguments in all of these paste functions:
 
time
This is the raw time where pasting is to start.
 
repetitions
This is the number of times that the data is to be pasted. In CAL30 functions, each repetition starts at the end of the previous repetition. In CAL40 functions, you can set a gap between repetitions with the next variable.
 
length
This is the amount of time to add as space between repetitions of pasted material.
 
add_mode
It's called HoleKind in Cakewalk speak, but I think it's confusing because it doesn't have much to do with holes, but does have to do with how pasted material is added to the destination. A value of 0 blends new material with current material in the destination track(s). A value of 1 replaces existing material with the pasted material, and 2 slides old material over and makes room for the new pasted material.
 
track#
This is the destination track number.
 
one_track
This is the same as the "Paste To One Track" check box. A 1 means yes and a 0 means no.
 
new_clip
This is the same as the "Paste As One Clip" check box. 1 is yes and 0 is no.
 
events, tempos, meters and markers
These correspond to the check boxes and determine which kinds of data are to be involved in the operation. A 1 means include them and 0 means ignore them.
 
split, align and link
These correspond to the "Split Audio Events", "Align To Measures" and "Link Repetitions" check boxes in Cakewalk 6. A 1 is checked and 0 is not checked.
(EditDelete40 events tempos meters markers hole split align)
This function is undocumented but is there just the same. Like its siblings above, the arguments correspond to the check boxes in the dialog box you see when you use the DELETE option in the EDIT menu in version 6. I can only assume that the original version 4 function lacked the split and align arguments, but in that this is one of those "undocumented" functions, I'm only guessing.
 
(EditQuantize From Thru filter strength times durations)
(EditQuantize40 res strength times durations swing window offset NLAOnly)
Quantizing in CAL offers limited access to all of the Menu QUANTIZE feature in version 3. The CAL40 version gives you all of the check boxes as arguments, and version 6 even adds the box for Stretch Audio Events like so:
 
(EditQuantize40 res strength times durations swing window offset NLAOnly stretch)
 
If you are not quite up to speed with Quantizing, check the Help entry for the EDIT menu QUANTIZE feature. As with most of the new CAL40 functions, there are no arguments for the From and Thru markers, so set them elsewhere first. Here is a quick rundown on the argument list.
 
From, Thru and filter
These are used in the CAL30 version and correspond the usual From and Thru markers and the Use Event Filter check box.
 
res
This is the resolution in ticks that you wish to use. It places a grid of sorts over the track with grid lines spaced this many ticks apart.
 
strength
This says how much pressure you wish to place on out-of-time events to move them towards perfect timing. 100% puts them right on the money, but you loose any "feel" this way. 50% will move them half way towards perfection to tighten up the track without making the musicians sound like they've been assimilated by the Borg.
 
times
Do you want the event times effected by the function? A 1 is yes, a 0 is no.
 
durations
Do you want the note durations trimmed to fall on the resolution marks? 1 or 0.
 
swing
See the Help entry for this one. Simply put, it allows the "res" grid to sway on the upbeats to give a more improvised feel to the tempo.
 
window
You can very the time window this function will use to look for out-of-place events and correct only those that fall within this window. 100% means the window sees all. 50% means the window sees only half as much, ignoring events that fall in the blind half between resolution marks.
 
offset
This allows you to shift the resolution marks forward or back by some number of ticks so the grid lines can be placed at locations other than the usual choices for "res". If you set "res" by the tick, this feature is useless. However if you set "res" by the fraction of a note, like when selecting it from the EDIT menu QUANTIZE resolution list, then this argument can be used to fine tune the grid spacing.
 
NLAOnly
This corresponds to the check box called Notes, Lyrics, Audio Only. 1 is selected, 0 is not selected.
 
stretch
This corresponds to the Stretch Audio Events check box. 1 is yes, 0 is no.
 
(EditGrooveQuantize From Thru filter res window time duration velocity outwindow "pattern")
(EditGrooveQuantize40 res window time duration velocity outwindow "file" "pattern" NLAOnly)
Again, it is best to read up on the use of GROOVE QUANTIZE as it applies to the EDIT menu feature. The CAL30 version of this function was never documented, but can be recorded as a macro and/or used by Cakewalk 3 just the same. The CAL40 version adds the "file" argument, changes the use of the "pattern" argument, adds the "NLAOnly" argument (see "EditQuantize" above) and is without the "From", "Thru" and "filter" arguments. Like the above "EditQuantize40", the version 6 function has one more argument added to the end for the "Stretch Audio" check box.
 
(EditGrooveQuantize40 res window time duration velocity outwindow "file" "pattern" NLAOnly stretch)
 
The main points to notice are that these functions require a reference track as a source for timing. The easy way is to copy something to the clipboard and select CLIPBOARD as the source. Groove files can be obtained or created and used as well. You can enter a value from 0 to 100 for not only "window" but for "times", "durations" and "velocities" as well, allowing any or all of these parameters to be influenced by the reference track in varying degrees. There are 4 choices as to how to handle events that fall outside of the window. Setting "outwindow" to 0 selects "Do Not Change", 1 selects "Quantize To Resolution", 2 selects "Move To Nearest" and 3 selects "Scale Time". The CAL30 version uses the "pattern" argument to select a file name, which must be in quotes, or "< clipboard >" (note the use of both quote marks and arrowhead symbols) if using the clipboard for the reference. In the CAL40 version, the file name goes in the "file" argument and the "pattern" argument is for selecting from among multiple patterns within that file. Both the "file" and "pattern" arguments must be in quotes. If you wish to use the clipboard in the CAL40 version, both "file" and "pattern" must be empty quotes (like this; "") using both opening and closing quotes for both arguments with nothing, not even a space, within either set of quote marks.
 
(EditInterpolate dialog)

There are no differing CAL40 or CAL70 versions of this function. However, there are subtle changes to the way it works in versions 6, 7 and 8 as mentioned below. In general, to use this function you must set two groups of event filter setup functions, one group for the Search filter and another for the Replace filter. See the section on the "ResetFilter", "SetFilterKind" and "SetFilterRange" functions at the bottom of this page for more details. By the way, the documentation claims that using "EditInterpolate" in CAL will never give the user the event filter selection dialog screens. This is not so. In fact, the "EditInterpolate" will ALWAYS give you the filter dialog screens when running from CAL unless you defeat the display by including the "dialog" argument and giving it a value, any value at all. By tradition, the value is 1. At least this is the value CAL gives it when recorded as a macro. Without this added argument, the Search and Replace filter setup dialog screens are displayed showing the settings imposed by the event filter setup functions. The user is then free to examine and/or change these settings at run time. In version 7, the "EditInterploate" function's operation within CAL was changed slightly. If you fail to use the "dialog" argument, any settings made through calls to the filter setup functions are ignored and the user is presented an unaltered Search and then Replace filter setup dialog screen.just as if the user had selected Interpolate from the EDIT menu. The logic here was to allow the user to either set these filters at run time without having to make calls to the filter setup functions first, or inhibit the dialogs and have the function run autonomously using the setup functions as usual. The choice is now yours.

There is a quirk that I must mention about using the "EditInterpolate" function in Cakewalk versions 6. To make this function follow the values placed in the "From" and "Thru" markers, you must "re-acquaint" the function with those markers by placing a set of "dummy" commands just before it each time you try to use it. They force the function to "switch on" the ability to see the markers. Otherwise, the EditInterpolate function will always operate on the entire selected track from beginning to end instead of the segment defined by "From" and "Thru" as was mentioned in the introduction text at the top of this page. This undocumented quirk had me running around in circles for a while until I stumbled on the "dummy" command solution. It is the only one of the CAL30 functions that acts this way. I don't know if this solution is sanctioned by the Cakewalk people, but it works. See the section called Tips, Techniques and Work-Arounds under the sub-heading Forcing EditInterpolate To Use Markers for a discussion of this solution.
 
 
(EditLength From Thru filter percent start duration)
(EditLength40 percent start duration)
By now the difference between the CAL30 and CAL40 versions should be familiar as well as the addition of a new argument after "duration" for version 6, corresponding to the "Stretch Audio" check box.
 
(EditLength40 percent start duration stretch)
 
Although this function will stretch the starting times and/or durations of events by virtually any amount, the "Stretch Audio" feature is limited to between 25% and 400%.
 
(EditSlide From Thru filter amount units)
(EditSlide40 amount units)
The version 6 incarnation of this function adds check box arguments for "events" and "markers" to the end of the CAL40 version.
 
(EditSlide40 amount units events markers)
 
Otherwise, this is the same old "SLIDE" function we have all come to know and love.
 
(EditRetrograde From Thru filter)
(EditRetrograde40)
This function reverses the order of events in the selected part of a track. It has no arguments in the CAL40 version.
 
(EditTranspose From Thru filter amount diatonic)
(EditTranspose40 amount diatonic)
The Cakewalk 6 version adds an argument for the "Transpose Audio" check box after the "diatonic" argument.
 
(EditTranspose40 amount diatonic audio)
 
Otherwise, there isn't much to say about these fellows that you can't find in Help for the EDIT menu TRANSPOSE feature.
 
(EditVelocityScale From Thru filter begin end units)
(EditVelocityScale40 begin end units)
This function didn't change in version 6. Like the menu feature SCALE VELOCITIES, it changes note velocities over time. The argument "units" means scale by percentage if 1, or by velocity values if 0.
 
(EditFitToTime From Thru newThru method)
(EditFitToTime40 newThru method audio)
Cakewalk doesn't document the CAL40 version of this function. However, it does exist and has the argument list shown above. Version 5 probably added the "audio" argument, but due to lack of documentation, I'm not sure. See the EDIT menu version of this feature in the Help documentation for its use.
 
(EditFitImprov track)
(EditFitImprov40)
The CAL30 version has one argument, the track used for the reference track (remember that CAL sees track numbers as 0 through 255 and we see them as 1 through 256). The CAL40 version has no arguments. It expects the track to be selected beforehand.
 
(EditControlFill From Thru number channel begin end)
There is no variation on this function. It is used to apply a series of graduated controller events to the selected area of a sequence. They will be controller number "number" events set to channel number "channel" and run from a value of "begin" through a value of "end". The feature isn't really an EDIT menu feature, but corresponds to the "Series Of Controllers" feature in the INSERT menu.
 
(ResetFilter type everything)
Whenever you use one of the EDIT menu functions, you need to let CAL know what events to include in the action. The CAL30 functions (except "EditInterpolate") give you the option of placing a 0 in the "filter" argument thus removing the need for this and the next two functions. The edit will effect all events in range. The CAL40 functions don't have this argument and so should have AT LEAST this "ResetFilter" function run first to give it predictable access to events. This function has two arguments. The first, "type" selects the kind of filter being set. A 0 selects the general edit function filter, and corresponds to the screen you see if you check the "Use Event Filter" check box in Cakewalk version 3 EDIT menu features, or use the EDIT "Select" and then "By Filter" choice in later versions. A 1 is for the Interpolate search filter screen and a 2 is for the Interpolate replace filter screen. The next argument, called "everything", corresponds to the "ALL" or "NONE" buttons. A 0 is like clicking the "NONE" button and a 1 is like clicking the "ALL" button. This should be the first of the three filter setup functions run if you are going to use the filter feature. If you just want the CAL40 edit function you are about to run to operate on all events, just run this one and make sure "type" equals 0 and "everything" equals 1. When setting up the "EditInterpolate" function, you will likely run all three setup functions starting with this one. This is because it makes no sense to interpolate everything into everything. No net change to the sequence results. Therefore, you will want to reset both the search and replace filters and then use the next two functions to tune the filters to create the change you wish the "EditInterpolate" function to perform. Therefore, remember to run this function twice in a row, once with "type" set for 1 to reset the Interpolate search filter, and again with "type" set for 2 to reset the interpolate replace filter. The setting you wish to give the "everything" argument depends on what you want the interpolation to do. See the Help and/or user manual section on using the MENU "INTERPOLATE" feature for information.
 
(SetFilterKind type event include)
The next filter setup function selects the actual event kind to be effected. If the above "ResetFilter" function's "everything" argument was 0, or "NONE", then this function would select the events to be included. If "everything" was 1 for "ALL", then this function would be used to tell CAL which events to exclude. If several event kinds are to be included or excluded by this method, a "SetFilterKind" function must be run for each event kind. The "type" argument is the same as for "ResetFilter". A 0 is for the general edit functions, 1 is for the Interpolate search filter and 2 is for the Interpolate replace filter. The "event" argument is filled in with the constant corresponding to the event kind this function is setting up. The choices are NOTE, CONTROL, PATCH, WHEEL, KAYAFT, and CHANAFT. "Special" events are also selectable depending on which ones your version of Cakewalk supports. For versions 6 and above, they include RPN and NRPN, AUDIO, TEXT, SYSXBANK, SYSXDATA, LYRIC, MCI, EXPRESSION, CHORD, and HAIRPIN. The "include" argument is 0 to exclude this event kind and 1 to include it. Again, if you are doing an interpolate, you must run this function however many times is necessary to set any changes to the search filter and then again to set changes for the replace filter.
 
(SetFilterRange type parameter InRange min max)
This function is a bit odd for a number of reasons I will try to explain in a moment. First, the argument list. The "type" is set the same way as for "ResetFilter" and "SetFilterKind". The "parameter" argument corresponds to the various sections on the filter screen that allow you to choose the parameters for the event types. You would enter a number from 0 to 12 for CAL30 and 0 to 17 for versions 6 or above. This is what the numbers correspond to:
 
0= Note Key
1= Note Velocity
2= Note Duration
3= Key Aftertouch Key
4= Key Aftertouch Value
5= Controller Number
6= Controller Value
7= Patch Change Patch Number
8= Channel Aftertouch Value
9= Pitch Wheel Amount
10= MIDI Channel Number
11= Beat Count
12= Tick Count
13= Patch Change Bank Number
14= RPN Number
15= RPN Value
16= NRPN Number
17= NRPN Value
"InRange" corresponds to checking the "exc" exclude check boxes. The "min" and "max" arguments are for the numbers you would find in the little screen windows that contain the range of possible values for each parameter. If you remember from using the Interpolate feature from the EDIT menu, you can ask the interpolator to accept a question mark "?" to signify that you wish to include "all such notes". For example, suppose you wish to change all G sharp notes to A notes for all octaves. Rather than run the interpolation setting the search filter for G#0 thrugh G#0 and the replace filter for A0 through A0 for the MAX and MIN values, then again for G#1 to A1 and so on up to G#9 to A9, you can just enter G#? to G#? in the search filter window and then A? to A? in the replace filter window and all G# notes will move up 1 semitone in pitch. If you record this action as a macro, you will note that some strange numbers are placed into the MAX and MIN arguments for the (SetFilterRange) functions. These special numbers tell CAL that a "?" was used and to act accordingly. When writing such functions from scratch, you must put these numbers in yourself. Oddly enough, it was found during a beta testing session that different people got different numbers for the same note values when recording macros using the "?" designator. The differing numbers were still related in an "out in left-field" sort of way, so don't be surprised that these numbers I am about to list and other numbers from the same notes that your system would generate instead will all work just the same! I have grouped the notes in ascending order from C and include both variations of accidentals as well as the "oddball" notations. Note that the first group in rows 1 and 2 follow a normal progression whereas the alternate accidentals in row 3 and oddballs in row 4 don't follow any discernable order.
C 128 Db 129 D 130 Eb 131 E 132 F133
F# 134 G 135 G# 136 A 137 Bb 138 B 139
A# 394 C# 641 D# 387 Gb 902 Ab 904  
B# 384 Cb 907 E# 389 Fb 900    
There are some quirks to using this function. The first is that the "exc" check box argument works EXACTLY BACKWARDS from any other check box argument. This means that A VALUE OF ZERO INDICATES THAT THE BOX IS CHECKED AND THE PARAMETER IS TO BE EXCLUDED AND A VALUE OF 1 INDICATES THAT THE BOX IS UNCHECKED AND THE PARAMETER IS TO BE INCLUDED. The easy way to think of this is a 0 means exclude and a 1 means include and don't worry about which means checked or unchecked. There is an oddity in the way the value for the pitch wheel is set up in CAL. On the screen, the little windows give a wheel range from -8192 to 8191. However, in CAL the range is from 0 to 16383. In order to enter the correct value in CAL you must take the desired value and add 8192 to it. Thus if you wanted a range from, say, -312 to 686 you would calculate (-312 + 8192 =7878) and (686 + 8192 = 8878) and so enter 7878 for "min" and 8878 for "max". Another quirk is that if you record a macro of the Interpolate operation from the EDIT menu and apply the same note value to both the MAX and MIN note fields, the macro will record the (SetFilterRange) function using number values that are 512 more than the note number should be. For example, if you record the macro assigning C5 as both the MAX and MIN note values, the macro will record a (SetFilterRange) function assigning the value 572 to both NOTE arguments instead of 60 which is the number for the note C5. It works just the same, and if it bothers you to see these obtuse values, you can change them to the "normal" values by hand without effecting the operation of the CAL script.
 

Now that you realize just what a zoo it is setting up these EDIT functions with filters, I will offer a ray of hope. In order to make the use of these functions easier, we can use the "macro" record feature in CAL to set up most of the arguments for us leaving just a bit of editing to polish things off. Refer to the Recording Macros section in the "Using The CAL View Window" section of this document.

Next Topic Top Of Page