How to transpose a single Midi Chan on the WK3000 from within a midi file playing back on the WK3000 SMF file Player by using CAL script  
   

(Contributed by drjazz.  We appreciate Stephen's  contribution.  We at WkStudio could not program CAL if our lives depended on it. If you can't get this to work, please post your questions in the WkStudio Forum, I am sure our wise members will be more than happy to help you! )

I had some midi files from Band in a Box (bass & drums).  I was using on the WK-3000 internal SMF with me as a one man jazz  trio. I had a gig with a singer and needed to transpose several songs up/or down to the singers key.

Since I already knew the songs in my key I recreated the BIAB midis in the singers key but used the enclosed Cakewalk Sonar script to get the WK-3000 to transpose my part. I am playing on midi CH4 to my original key.

Example the song "As Time Goes By... Play it again Sam!" The singer wants to do it in Eb, but I know it in key of C. The new BIAB midi file is in Eb and I adjust CH4 to "coarse tune" up 3 semitones so I can play the WK-3000 keyboard with a Key of C fingering.

I tried using the WK3000 Mixer and also Registration Memory to do this transpose.  Once you press the SMF player button, the WK-3000 ignores Mixer or Registration setting;  hence the need for this solution.

I used the RPN midi function to embed this command into the beginning of my BIAB midi files so that CH4 would switch keys once the SMF started playing.
In order to avoid "undoing this transpose at the end of the song" with and embedded command, after the SMF play finishes- I just hit the BLUE " piano settings key" on the WK3000 which brings it back to zero transpose & Grand Piano

The RPN midi sequence is as follows

CC100 = 02 ---> LSB -set up coarse tune

CC101 =0 MSB

CC6= 67 ---> Data - Coarse tune up 3 semitones from Zero which is 64 CC38 =0 ---> end the RPN sequence

You can use your favorite midi editor to insert this sequence, I used Cakewalk a Cakewalk SONAR CAL script to do it. Now- I need to figure out how to use a similar principle to set up a Keyboard Split from within a midi backing file!!

Best of Luck
Stephen/drjazz@ntelos.net

; BANKSEL.CAL CAKEWALK SONAR SCRIPT

;

; This routine will insert a Bank Select combination into a selected track ; The user may change the NOW time for the insertion. ; (do

(if (< VERSION 20)

(do

(pause "This CAL program requires CAL version 2.0 or higher")

(exit)

)

)

(dword time Now)

;parameters for casio Adv Tone Stereo Grand Piano cc0=51 , cc32=0, patch=0

(int msb 51)

(int lsb 0)

(int pat 0)

; Delete existing bank-change events around this time.

; The spread of 3 ticks is because below we insert the events

; spread apart by a tick each to ensure their ordering.

(= From time)

(= Thru (+ time 2))

(forEachEvent

(do

(if (&& (== Event.Kind CONTROL) (== Control.Num 0))

(delete)

(if (&& (== Event.Kind CONTROL) (== Control.Num 32))

(delete)

(if (== Event.Kind PATCH)

(delete)

)

)

)

)

)

; Insert the new events

(insert time 3 CONTROL 0 msb)

(insert (+ time 1) 3 CONTROL 32 lsb)

(insert (+ time 2) 3 PATCH pat) ; end setting up Midi CH 4 for Stereo GR Piano ; start Midi RPN prog to coarse tune Midi CH 4 up 3 semitones - values in decimal

(insert (+ time 3) 3 CONTROL 100 2) ; RPN LSB- coarse tune func

(insert (+ time 4) 3 CONTROL 101 0) ; RPN MSB

(insert (+ time 5) 3 CONTROL 06 67) ; RPN data 64= 0 tune , 67=+3 semitones

(insert (+ time 6) 3 CONTROL 38 00) ; RPN end comand

 

 

 

)

;; end CALscript