Casio CT S1 and Midi

CT S1 'Midi Architecture

CT S1 has two different 'sound engines': one is the one that you access on the front panel and play via the CT keys, the seconds is an 'internal standard GM1 (General Midi version 1) engine' that is 'isolated' from the CT-keys but can be played via external midi keyboards, midi sequencers etc - or by the CT keys themselfs applying the 'ring trick'.

Depending on the select 'GM sound bank', a GM engine bank either has the standard 'GM1' sound palette consisting of 128 sounds, or a 'mix' of CT sounds and GM1 sounds.

             [CT keyboard]---(midi)---'ring'---\     [external midi (keyboard)]
                   |                            \             |
                (direct)                         \            |
           ________|_______________              _\___________|_____
          |                        |            |                   |
          |   CT Keyboard Engine   |            |     GM Engine     |
          | 61 CT 'onboard' Sounds |            |   CT + GM Sounds  |
          |________________________|            |___________________|

The advantage of the 'GM engine':
- it has more sounds than the the 'pure' CT-engine: 61 CT sounds PLUS 128 GM1 sounds
- it has the 'GM features' to customize sounds, e.g. 'chorus', 'vibrato', ADR-envelope, filter-cutoff, portamento etc.
- it can be used to layer additional sounds (restricted by CT polyphony though!)

GM Sounds: channels and bank-select/program changes

The GM engine is composed of CT-sounds and 'GM1' sounds, depending on the 'selected bank'.
The sounds can be accessed on channels 1-9, 11-16. Channel 10 has the default 'GM drunkit'.

The sound-bank architecture is that of standard GM:
128 'main banks' x 128 'sub-banks', each with 128 sounds.

The 'main bank' selector is addressed by the so called 'msb'-value, the 'sub bank' selector is by the 'lsb'-value
A 'bank' (main+sub bank) is identified by a 'msb - lsb' pair (so called 'bank select')
The sound in each bank is referenced by the 'program' or 'program change' value

  1. Channels 1-9, 11-16:

    for any channel:
    - in banks "msb=2 ; lsb=0 or "msb=2 ; lsb=64", the 128 sounds are the 61 'CT sounds' plus 67 standard GM sounds
    - in any other bank, its 128 sounds are the 128 standard GM sounds
         bank:                                program:    
        msb lsb   1 .......................... 61 62 ........................ 128
         2   0    [ CT sounds 'without effects' ] [     GM sounds 62-128        ]
         2  64    [ CT sounds 'with    effects' ] [     GM sounds 62-128        ]
         'rest'   [                      GM sounds 1-128                        ]
    
  2. Channel 10: GM Drumkit

    Channel 10 holds the standard GM Drumkit: you can e.g. run a midi drum-machine (PC/tablet/phone-app or sequencer) against that channel.
NOTE: in Midi-Commander, Channels are used by their 'midi value', which is less 1. E.g. Midi-Channel 1 is '0' in MidiCommander

Android 'MidiCommander' and the 'ring trick'

'MidiCommander' is a free app for Android devices for easily building 'control panels' to control keyboards, sound modules etc by midi. 'MidiCommander' can also be used to 'inject' Midi 'note on/off' signals coming from the CT keys back into the CTs own 'GMs engine', what we call the 'ring trick' (citing of one of the greatest movies ever :)) and which allows to play the GM engine sounds on the CT keys:
You can play the 'GM engine' in parallel ('layer') to the CT sounds or switch the CT to 'local off' to only play GM sounds.
You can use faders, knobs to customize the GM sounds (reverb, chorus, envelope, filter etc.)

INSTALLLING 'MidiCommander' on your Android Device

- Download and install free app 'MidiCommander' by Bordero from Google Play Store

- Copy the 'CT-S1.setup' profile file from your PC to your Android device into the folder 'MidiCommander' in the Android root directory.
  In MidiCommander, open menu '...' (settings), go to 'Manage Setups', call 'Import Setup' and load the profile

- Configure MidiCommander: 
  - open the '...' menu, go to 'Global Settings', set 'Midi In Mode' to 'Thru'
  - open the '...' menu, to to 'Global Settings ', set 'Android Midi Drivers' to "OFF"
 
- Connect the Android device to the Casio:
  You must use a so called 'OTG adapter': without this adapter, the Android device cannot control the CT. 
  The model of the 'OTG adapter' depends on your Android device:
  - old devices with mini/micro USB socket: special adapter cables marked 'OTG adapter cable'
  - recent devices with USB-C sockets     : most cheap USB-C to USB-A adapter is working as OTG adapter
                                            a double pack of USB-C-A 'china' adapters (ebay, amazon) is 3 Euros/USD

  Plug the adapter into the device. 
  The adapters usually ends in an USB-A socket: use a standard USB-A-to-micro-USB cable to go to the Casios micro-USB socket.
  IMPORTANT: the USB-A/micro-USB cable must be a DATA cable (a lot of cables are just 'charger' cables and won't work)

           [Android]{USB mini/micro/C}----[Adapter]{USB-A}----[USB 'A-to-micro' cable]{USB-micro}----[CT S1]
  
- Start MidiCommander: it should immediately connect to the CT. Eventually accept 'auto startup'

Using 'MidiCommander'

If you have confirmed 'autostart', MC (MidiCommander) will start automatically each time you physically connect CT and Android device.

Now you have to decide if you want to 'layer' sounds from CT and GM-engine or play only GM sounds:
This is done by the CT function 'local control' ('FUNCTION'-button + key F#2 toggles on/onff).
Local control 'off' disconnects the 'CT sound engine' from the keys):
     - to layer GM and CT, set local control ON (default at CT boot)
     - to play isolated GM-sound switch off 'local control OFF

MC has 2 operating modes:

Important NOTES:
- MC uses the 'midi value' for channels, which is 'channel less 1': e.g. channel '1' is set as value '0' in MC
- all elements of in the MC setup are interacting with channel 1 - to play the GM sound, keep the 'CT TX channel also to 1

Tip: GM-sounds can also be played with the CT 'surround'

CT Sounds and Controllers

CT S1 Midi Controllers

The following Midi Controllers (Control Changes, tuninig, pitch) can be used to customize the GM-engine sounds.
- you can use the faders or knobs to set an effect, note down the CC (control change) and its value and add this to a patch-'button'
- 'bank-select' and 'program change' can be also set on patch-buttons: set the program number, the 'msb 0' and 'lsb 32' bank ids
- 'Tuning' can be set by PRN messages (faders, knobs).
- 'Pitch bend' cannot be set as an MC control, but used with e.g. an external midi keyboard.
  Special
  ===================================================================================
    En msb lsb    Pitch Bend
    Cn vv         Program Change
  
  Control Changes
  ===================================================================================
       CC#       Effekt:
    dez.  hex
    0	00	Bank Select  MSB
    32	20	Bank Select  LSB
  
    1	01	Modulation
    7	07	Channel Volume
    10	0A	Pan (default: 64)
    11	0B	Expression
  
    64	40	Damper Pedal on/off (Sustain)   (63 off, >64 on)
    66	42	Sostenuto Pedal  (63 off, >64 on)
    67	43	Soft Pedal 	 (63 off, >64 on)
  
   (71	47	Filter Resonance            # listed in CT-S1 midi spec, but does not work)
    74	4A	Filter Cutoff / Brilliance  (default: 64)
  
    73	49	Attack Time (default: 64)
    75	4B	Decay Time  (default: 64)
    72	48	Release Time (default: 64)
  
    65	41	Portamento On/Off	(63 off, 64 on)
    5	05	Portamento Time
    84	54	Portamento Control (Anlauftiefe 'vor erstem Ton') 
  
    76	4C	Vibrato Rate 
    77	4D	Vibrato Depth
    78	4E	Vibrato Delay
  
    91	5B	Reverb Level
    93	5D	Chorus Level
  
    100	64	Registered Parameter Number (RPN) - LSB
    101	65	Registered Parameter Number (RPN) - MSB
    120	78	All Sound Off	0 (Midi Panic)
    121	79	Reset Controllers (pitch, mod, expression, soft, sostenuto, hold (sustain))
  
  Tune
  ===================================================================================
    coarse tune (RPN):
    B0 65 00
    B0 64 02
    B0 06 vv       # vv default =  40 00
    B0 64 7F 
    B0 65 7F
    
    fine tune (RPN):
    B0 65 00
    B0 64 01
    B0 06 mm       # mm ll default =  40 00
    B0 26 ll
    B0 64 7F 
    B0 65 7F

CT S1 'CT Sound list'

⇒ see 'CASIO CT S1 User Guide', chapter 'Tone List'

CT S1 'GM Sound list'

⇒ search WWW for 'GM sounds' (GM1-sounds)

Epilogue ...

MidiCommander needs some learning and 'discovery' of its possibilities - but after you went through you can have a lot of fun :)

When using the CT in 'layer' mode, it sends on 2 TX channels (default channel 1 and 2): then it's even possible to built up complex soundscapes.