Programming Next

Articles Index

Rotate your screen to landscape mode to view this page.
The CASM is the first Yamaha-chunk in a style file following the MIDI data.

The CASM section holds the Ctab settings and some other settings of the style. Only some of these settings can be done at the keyboard.

In December 1999 I reverse-engineered the CASM. The original format was published March 2000.

By the arrival of the first Tyros keyboard the CASM section format was altered slightly.

These changes were reverse engineered in February 2003. The revised format was published October 25th 2004.

The CASM format was changed radically with the release of Tyros 3 in November 2008. This new format has been applied to later keyboards.

CASM Editor software program.

In the following x represents a byte.
No. CASM data Function Hex value       Comment
00 CASM CASM Marker 43 41 53 4d Beginning of CASM Section
01 xxxx CASM Length   Length of the entire CASM section
02 CSEG Section Marker 43 53 45 47 Beginning of CSEG Section within CASM. A CSEG Section holds information about style parts using equal settings.
03 xxxx Section Length   Length of the CSEG section
04 Sdec Parts Marker 53 64 65 63 Beginning of Sdec part within CSEG Section
05 xxxx Parts Length   Length of the Sdec part
06 Main A,Main B etc. Style parts   Style part names of the styles with this setting. Names are separated with commas, but no comma at the end of the part name string.
07 Ctab Channel Marker 43 74 61 62 Beginning of Ctab string
08 xxxx Channel Length   Length of the Ctab string
09 x Source Channel 00 - 0F The source channel in the MIDI part of the style file which holds note information. Valid values are 00 - 0F (= channel 1 - 16).
10 xxxxxxxx Voice Name   Voice name. Always 8 bytes. The voice can be called any name.
11 x Destination Channel 08 - 0F Source channel data must be remapped to a valid destination channel. Valid values are 08 - 0F (= channel 9 - 16).
12 x Editable 00 - 01 01 Channel Read Only - 00 Channel Editable
13 x Note Mute 00 - 0F

1. digit

2. digit

Notes to play (0 = not play)
1.digit = 0 (always)

2.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
     B    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
     Bb   1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
     A    1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
     G#   1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

3.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
     G    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
     F#   1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
     F    1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
     E    1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

4.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
     Eb   1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
     D    1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
     C#   1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
     C    1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Example: 0E A3 means that C C# F G A Bb and B plays. When other notes are pressed the accompaniment is muted.

14 x Note Mute 00 - FF

3. digit

4. digit

15 x Chord Mute 00 - 07

1. digit

2. digit

Chords to play (0 = not play)
1.digit = 0 (always)

2.digit = 3 2 1 0     add 4 if auto start
  1+2+5   1 1 0 0
  sus4    1 0 1 0

3.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  1+5     1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  1+8     1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  7aug    1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  M7aug   1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

4.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  7(#9)   1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  7(b13)  1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  7(b9)   1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  7(13)   1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

5.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  7#11    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  7(9)    1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  7b5     1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  7sus4   1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

6.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  7       1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  dim7    1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  dim     1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  m7M(9)  1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

7.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  mM7     1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  m7(11)  1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  m7(9)   1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  m(9)    1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

8.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  m7b5    1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  min7    1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  min6    1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  min     1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

9.digit = F E D C B A 9 8 7 6 5 4 3 2 1 0
  aug     1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  6(9)    1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  M7(9)   1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  (9)     1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

10.digit= F E D C B A 9 8 7 6 5 4 3 2 1 0
  M7#11   1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
  Maj7    1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
  Maj6    1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
  Maj     1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Example: 03 FF EF FF F8 means that when playing a Maj chord or a 7sus4 chord the accompaniment is muted.

16 x Chord Mute 00 - FF

3. digit

4. digit

17 x Chord Mute 00 - FF

5. digit

6. digit

18 x Chord Mute 00 - FF

7. digit

8. digit

19 x Chord Mute 00 - FF

9. digit

10. digit

20 x Source Chord 00 - 0B These settings determine the original key of the source pattern (i.e. the key used when recording the pattern). The default, CM7 (the source root is "C" and the source chord type is "M7"), is automatically selected whenever the preset data is deleted prior to recording a new style, regardless of the source root and chord included in the preset data.
Valid Chord Types are: Maj, Maj6, Maj7, M7#11, Madd9, M7(9), M6(9), aug, m, m6, m7, m7b5, m(9), m7(9), m7(11), mM7, mM7(9), dim, dim7, 7, 7sus, 7b5, 7(9), 7(#11), 7(13), 7(b9), 7(b13), 7(#9), M7aug, 7aug, 1+8, 1+5, sus4, 1+2+5
21 x Chord Type 00 - 21
22 x Note Transposition Rule 00 - 01 NTR specify the transposition rule to be used by the transposition table. Two settings are available:

ROOT TRANS (00): When transposed the pitch relationship between notes is maintained. For example, the notes C3, E3, and G3 in the key of C will become F3, A3, and C4 when transposed to F. Use this setting for parts that contain melodic lines.
ROOT FIXED (01): The note is kept as close as possible to the previous note range. For example, the notes C3, E3, and G3 in the key of C will become C3, F3, and A3 when transposed to F. Use this setting for chordal parts.

23 x Note Transposition Table 00 - 05 NTT specify the note transposition table to be used for source pattern transposition. The following table types are available. Note that to obtain the settings marked with *, the NTT setting in the Cntt section (line 32) must be set too.

BYPASS (00): No transposition.
MELODY (01): Suitable for melody line transposition. Use for melody parts such as PHRASE 1 and PHRASE 2.
CHORD (02): Suitable for chord transposition. Use for the CHORD 1 and CHORD 2 parts when they contain piano or guitar-like chordal parts.
BASS (03): Suitable for bass line transposition. This table is basically similar to the MELODY table, but recognizes "on-bass" chords allowed in the FINGERED 2 fingering mode. Use primarily for bass lines.
MELODIC MINOR (04): This table lowers the third scale degree by a semitone when changing from a major to a minor chord, or raises the minor third scale degree a semitone when changing from a minor to a major chord. Other notes are not changed.
*MELODIC MINOR 5th Variation (04)
HARMONIC MINOR (05): This table lowers the third and sixth scale degrees by a semitone when changing from a major to a minor chord, or raises the minor third and flatted sixth scale degrees a semitone when changing from a minor to a major chord. Other notes are not changed.
*HARMONIC MINOR 5th Variation (05)
*NATURAL MINOR. If BassOff (04). If BassOn (05)
*NATURAL MINOR 5th Variation (04)
*DORIAN (04)
*DORIAN 5th Variation (04)

NOTE
When NTR (above) is set to ROOT FIXED and NTT (also above) is set to BYPASS, the SOURCE ROOT and SOURCE CHORD parameter names change to PLAY ROOT and PLAY CHORD. In this case it is possible to change chords and hear how the results sound for all parts.
If "P" or "PRESET" appears for the SOURCE ROOT, SOURCE CHORD, NTR, or NTT parameter, the preset data uses special settings.

24 x High key 00 - 0B HIGH KEY specify the upper root limit. Chords with a root higher than the specified limit will be played in the octave immediately below the high-key limit. This setting is effective only when the NTR parameter (above) is set to ROOT TRANS.

Example: When HIGH KEY = F.
Root Motion: C C# D F F#
Notes Produced: C3-E3-G3 / C#3-F3-G#3 / D3-F#3-A3 / F3-A3-C4 / F#2-A#2-C#3

25 x Note Low Limit 00 - 7F NOTE LIMIT LOW and HIGH specify the low and high note limits for all notes in the specified part. Notes outside this range are transposed to the nearest octave within the range.

Example: When LOW = C3 and HIGH = D4
Root Motion: C C# D#
Notes Produced: E3-G3-C4 / F3-G#3-C#4 / D#3-G3-A#3

26 x Note High Limit 00 - 7F
27 x Retrigger Rule 00 - 05 RTR (Retrigger Rule) specify how notes held through chord changes will be handled. 6 settings are available:

STOP (00): The note is stopped, and resumes sounding from the next note data.
PITCH SHIFT (01): The pitch of the note will bend without attack to match the type of the new chord.
PITCH SHIFT TO ROOT (02): The pitch of the note will bend without attack to match the root of the new chord.
RETRIGGER (03): The note is retriggered with attack at a new pitch matching the new chord type.
RETRIGGER TO ROOT (04): The note is retriggered with attack at a new pitch matching the new chord root.
NOTE GENERATOR (05): This setting will only be available if programmed in the original style. A designated note is produced with designated pitch, length, and velocity matching the new chord.

28 x End Marker 00 End Marker for this channel
... and over from line 07 for each channel in the CSEG section.
When all channels are set, continue from line 29 with all channels with defined values in line 32.
29 Cntt New NTT 43 6E 74 74 Beginning of Cntt string
30 xxxx Cntt Length 00 00 00 02 Length of the Cntt string
31 x Source Channel 00 - 0F The source channel. Same value as in line 09.
32 x Note Transposition Table see next column NTT specify the note transposition table to be used for source pattern transposition. 11 table types are available:

Type Bass Off     Bass On
BYPASS not def. 80
MELODY + BASS not def. 81
CHORD not def. 82
MELODIC MINOR not def. 83
MELODIC MINOR 5th VAR 04 84
HARMONIC MINOR not def. 85
HARMONIC MINOR 5th VAR     06 86
NATURAL MINOR 07 87
NATURAL MINOR 5th VAR 08 88
DORIAN 09 89
DORIAN 5th VAR 0A 8A
... and now over from line 29 for each channel with defined values in line 32 in the CSEG section
... and now over from line 02 for each CSEG section in CASM