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.
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
- 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
- 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".
- Like the "Tempos" check box. 1 or TRUE means checked (include them in the
copy) and 0 or FALSE means unchecked (ignore them).
- Like the "Meters" check box. 1 or TRUE means checked and 0 or FALSE means
- 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
- (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
- 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
- This is the raw time where pasting is to start.
- 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.
- This is the amount of time to add as space between repetitions of pasted material.
- 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.
- This is the destination track number.
- This is the same as the "Paste To One Track" check box. A 1 means yes and a 0
- 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
- (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
- 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.
- 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.
- 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.
- Do you want the event times effected by the function? A 1 is yes, a 0 is no.
- Do you want the note durations trimmed to fall on the resolution marks? 1 or 0.
- 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.
- 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
- 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
- This corresponds to the check box called Notes, Lyrics, Audio Only. 1 is selected, 0 is
- 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
- (EditGrooveQuantize40 res window time duration velocity outwindow "file"
- 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
- 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
- (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
- Otherwise, this is the same old "SLIDE" function we have all come to know and
- (EditRetrograde From Thru filter)
- 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
- 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)
- 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
- (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.
- 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.