The Dynamic Studio Module (DSM) format by proton / n-factor Description of the structure in a DSM Module. Header: 000 004 "DSm",1ah 004 001 Version, current is 20h 005 020 Songname 025 020 Composer 045 001 Channels used 046 001 Samples used 047 001 Songlength 048 001 Packinformation 049 001 Mastervolume (0-100%) 050 014 ** reserved ** Songinfo: 000 Chn Balance Control (0-15) xxx Sng Songlist Trackinfo: 000 Chn*Pat*8 Tracknames Sampleinfo: (*number of samples) 000 022 Samplename 022 001 Typ (8=8bit,16=16bit) 023 002 Length 025 001 Finetune (signed nibble) 026 001 Volume (0-64) 027 002 Repeat Start 029 002 Repeat Length 031 001 ** reserved ** Channelinfo: (*number of channels *number of patterns) 000 001 Sample 001 001 Note 002 001 Command 003 001 Databyte for command Samples: 000 ??? signed samples Description of all commands in Dynamic Studio v1.0 (by ???) To understand how to use effects with your samples, a description of the patternstructure will be needed. A pattern is built up out of tracks, or channels. Every channel can play one sample at a time. Now, without adding some effects, the samples will sound pretty much the same in all of your compositions. To avoid that, effects are used! There are currently 35 different effects supported in Dynamic Studio v1.00. Every channel consists of three sections: Note, Sample and Effect (the first two parts will not be mentioned in this chapter!). The Effect section con- sists of four sequential digits, like this: C-2 01 0000 Note Sample Effect Effects are created by changing the effect section from other values than 0. To be able to separate the four digits building up an effect, they will be referred to as HiCmd, LoCmd, HiData and LoData, see figure below: HiCmd----------+ LoCmd--------+ | HiData-----+ | | LoData---+ | | | | | | | | | | | 0 0 0 0 Effect All commands below will be described in the above format. For instance, the Volumeslide (Effect #A) will be described something like this: HiCmd: 0 LoCmd: A HiData: 0-F LoData: 0-F The above means that to produce the Volumeslide effect, you place a 0 in the HiCmd column, an "A" in the LoCmd column and a value from 0-F in the Hi- and LoData columns. This is what a channel might look like if we followed the above description: C-2 01 0A03 Note Sample Effect In this case, we play the note C-2 with sample No.#1 and use the Volume- slide command. We also put a value of 3 in the LoData column and left the HiData column empty (0). Since all commands are built up differently, there may be combinations of the four digits like this: HiCmd: 0 LoCmd: 1 HiData: 00-FF This means that the HiData field has been combined with the LoData column. An example of this is the Portamento Up command, that requires two digits of data: C-2 01 0129 Note Sample Effect In this case, we play the note C-2 with sample #2 and use the Portamento Up command. The HiData in this case equals to "29" (the LoData column has been combined with the HiData column). The full description for all different commands now follows. 1 Portamento Up HiCmd: 0 LoCmd: 1 HiData: 00-FF Portamento means "Sliding the frequency". This effect slides the current note upwards until it reaches the highest frequency, B-4. The HiData represents the speed with which you want to slide the note. Example: C-2 01 0109 Note Sample Effect The above example will play a C-2 with Sample #1 and slide the frequency up 9 times for that row. Try this: The portamento could be used to create a police sireen effect. Load a looped clean sound (like a sinewave) into Sample #1. Play a note slide the frequency up with this command and slide it down with the Portamento Down effect (later described!). 2 Portamento Down HiCmd: 0 LoCmd: 2 HiData: 00-FF This command works just like the Portamento Up effect, with the difference that it slides the frequency down. Example: C-2 01 0207 Note Sample Effect The above example will play a C-2 with Sample #1 and slide the frequency down 7 times for that row. 3 Tone-Portamento HiCmd: 0 LoCmd: 3 HiData: 00-FF This command will automatically slide from one note to another. The effect requires two different notes to work properly. The HiData is the speed for the frequency slide. Example: C-2 01 0000 D#3 01 0304 --- -- 0304 --- -- 0304 Note Sample Effect The above example will first play note C-2. When it reaches the 2nd line, the D#3 will not be played as normal. Instead a slide from C-2 will begin and end at D#3. Note, that the D#3 might not be reached at the first line. Therefore, the two empty effect lines (--- -- 0304) are used in this case. Try this: The toneportamento is excellent to use with strings to avoid the string to be started all over. The string will just continue to loop and thereby give a smoother overlap to the next string. 4 Vibrato HiCmd: 0 LoCmd: 4 HiData: 0-F LoData: 0-F Vibrato means exactly what it sounds like, vibrating the frequency of a sound. The HiData describes the speed of the vibrato and the LoData describes the depth. The depth could better be described as how much from the original frequency the minimum and maximum fre- quencies should be. Example: C-2 01 0493 --- -- 0400 --- -- 0400 --- -- 0400 Note Sample Effect The above example will vibrate the sound with a speed of 9 and a depth of 3. Try different values out to see the result. Note: The three empty lines keep on vibrating the sound with the given Data values. 5 Toneportamento + VolumeSlide HiCmd: 0 LoCmd: 5 HiData: 0-F LoData: 0-F This command will continue the current Toneportamento and at the same time slide the volume either up or down. The HiData is the amount the volume should slide up and the LoData the opposite. Example: C-2 01 0501 Note Sample Effect The above example will continue a toneportamento and slide the volume down at a fairly slow speed. Try this: The command is of course used together with the Toneportamento effect. Use the effect on looped sounds. 6 Vibrato + Volumeslide HiCmd: 0 LoCmd: 6 HiData: 0-F LoData: 0-F This works like the Toneportamento + Volumeslide effect, except that it continues vibrating a sound instead of sliding the frequency. The HiData digit specifies the value with which you want to slide the volume up, and LoData the slide down value. Example: C-2 01 0620 Note Sample Effect The above example will continue a previous vibrato and at the same time slide the volume up at a speed of 2. 7 Tremolo HiCmd: 0 LoCmd: 7 HiData: 0-F LoData: 0-F Tremolo is a variant of Vibrato. Vibrato vibrates the frequency of a sound, tremolo vibrates the volume of a sound. Example: C-2 01 0793 --- -- 0700 --- -- 0700 --- -- 0700 Note Sample Effect The above example will vibrate the sounds volume with a speed of 9 and a depth of 3. Try different values out to see the result. Note: The three empty lines keep on vibrating the volume with the given Data values. 9 Sampleoffset HiCmd: 0 LoCmd: 9 HiData: 00-FF This command will play a sound beginning at a specified offset. Let's say we have a voice sample saying "DYNAMIC STUDIO IS GREAT!". With this command we can get the sample to play "GREAT!" instead of the entire sample by adjusting the offset. The HiData represents the HiByte of the sample's size. If a sound has got a length of 2000 hexadecimally and we want to play the sound from the middle and forward we type: Example: C-2 01 0910 Note Sample Effect The above example will play sound #1 from offset 1000 and forward. A Volumeslide HiCmd: 0 LoCmd: A HiData: 0-F LoData: 0-F Volumeslide slides the volume for a sound either up or down. The HiData is the amount to slide the volume up and LoData the opposite. Example: C-2 01 0A0F Note Sample Effect The above example will slide the value down 15 steps times the speed for that line. Try this: This command can be used to creating bumping sounds. Load a looped sound into sample #1 and try the following: C-2 01 0A0F --- 01 0A0F --- 01 0A0F --- 01 0A0F --- 01 0A0F Note Sample Effect B Positionjump HiCmd: 0 LoCmd: B HiData: 00-7F The positionjump will let you jump from different positions in your song. Example: C#1 01 0B04 Note Sample Effect The above example will first play the C#1 and then jump to position 4 in your song. 11 Portamento Up - 5 HiCmd: 1 LoCmd: 1 HiData: 00-FF This command works like the normal Portamento Up command. The differ- ence is that it utilizes all five octaves that are available in Dynamic Studio. Example: C#4 01 1102 Note Sample Effect The above example slides the current note up two steps. Note: This command is Dynamic Studio only. 12 Portamento Down - 5 HiCmd: 1 LoCmd: 2 HiData: 00-FF This command works like the normal Portamento Down command. The difference is that it utilizes all five octaves that are available in Dynamic Studio. Example: C#4 01 1203 Note Sample Effect The above example slides the current note down two steps. Note: This command is Dynamic Studio only. 13 3D Simulate HiCmd: 1 LoCmd: 3 HiData: 00-FF This command is used fake a 3D sound. The HiData byte represents an angle for the sound to played at. The angles ranges from 00-FF and represents 0-360 degress. This is how you interpret the HiData values: (Far Back) 80 /\ / \ / \ (Far Left) C0 / \ 40 (Far Right) \ / \ / \ / \/ 00 (Far Front) Example: C#4 01 1380 Note Sample Effect The above example plays a '3D-sound' at the back center. Note: This command is Dynamic Studio only. 80 Panning Control HiCmd: 0 LoCmd: 8 HiData: 0 LoData: 0-F This command controls the balance. The LoData controls the balance value from 0-F. Example: C#4 01 080F Note Sample Effect The example above plays a sound at the far right. Note: This command is Dynamic Studio only. 81 Default Volumeslide Up HiCmd: 0 LoCmd: 8 HiData: 1 LoData: 0-F Works like the standard volumeslide with the difference that the volume stops fading at the sample's defaultvolume. Example: C#4 01 0812 Note Sample Effect The above example will slide the value up 2 steps times the speed for that line. It won't fade higher than the set default volume! Note: This command is Dynamic Studio only. 82 Default Fine Volumeslide Up HiCmd: 0 LoCmd: 8 HiData: 2 LoData: 0-F Works like the standard fine volumeslide with the difference that the volume stops fading at the sample's defaultvolume. Example: C#4 01 0822 Note Sample Effect The above example will slide the value up 2 steps for that line. It won't fade higher than the set default volume. Note: This command is Dynamic Studio only. 83 Default Fine Portamento Up - 5 HiCmd: 0 LoCmd: 8 HiData: 3 LoData: 0-F Works like the standard fine portamento with the difference that the frequency utilizes all five octaves. Example: C#4 01 0832 Note Sample Effect The above example will slide the frequency value up 2 steps for that line. Note: This command is Dynamic Studio only. 84 Default Fine Portamento Down - 5 HiCmd: 0 LoCmd: 8 HiData: 4 LoData: 0-F Works like the standard fine portamento with the difference that the frequency utilizes all five octaves. Example: C#4 01 0842 Note Sample Effect The above example will slide the frequency value down 2 steps for that line. Note: This command is Dynamic Studio only. 20 Set volume + Sampleoffset HiCmd: 2 LoCmd: 0-F HiData: 00-FF This example works like the Sampleoffset and Set volume commands together. The HiCmd represents the effect, the LoCmd represents the volume (see below for values) and the HiData represents the sample- offset the sound should be played from, just like the standard Sampleoffset command. LoCmd Volume LoCmd Volume 0 4 8 36 1 8 9 40 2 12 A 44 3 16 B 48 4 20 C 52 5 24 D 56 6 28 E 60 7 32 F 64 Note: All Volume in the above table are decimal values, NOT hexa- decimal! Example: C#4 01 2730 Note Sample Effect The above example will play a sound from sampleoffset 3000 hexadeci- mally at volume 32 (=20 hexadecimally!). The '32' is taken from the C Set volume HiCmd: 0 LoCmd: C HiData: 00-40 Sets the volume for a certain channel, or in other words, the current sample. The HiData ranges from 0-40 hexadecimally where 0 means no volume at all and 40 means full volume. Example: C#1 01 0C20 Note Sample Effect The above example will set the volume to 20 (half the maximum volume). D PatternBreak HiCmd: 0 LoCmd: D HiData: 00-63 This command lets you break a pattern and step to the next. The Hi- Data equals the line on the next pattern you want to jump to. This is entered decimally. Example: C#1 01 0D20 Note Sample Effect The above example will play the sound first and then directly jump to the middle of the next pattern. Try this: Use this command to get a different rhythm ######## than the standard 4/4, e.g 3/4, 2/3, ... E1 Fine Portamento Up HiCmd: 0 LoCmd: E HiData: 1 LoData: 0-F This command works like the Portamento Up command described before, with the difference that it will slide the frequency one time / line. Example: C#1 01 0E14 Note Sample Effect The above example will slide the note up four times. Note how to setup the E1 command! Try this: You can use this command to create chorus effects by using two channels and slightly slide one of the channels up. E2 Fine Portamento Down HiCmd: 0 LoCmd: E HiData: 2 LoData: 0-F Works like the Fine Portamento Up command, but slides the frequency down. Example: C#1 01 0E24 Note Sample Effect The above example will slide the note down four times. E3 Glissando Control HiCmd: 0 LoCmd: E HiData: 3 LoData: 0-1 Glissando is used together with the Toneportamento effect. What it does is to switch between two modes of frequency sliding. Normally Toneportamento slides straight up to the next note. With Glissando turned on the toneportamento effect slides one semitone at a time. Example: C#1 01 0E31 Note Sample Effect The above example will turn Glissando ON. E4 Set Vibrato Waveform HiCmd: 0 LoCmd: E HiData: 4 LoData: 0-3 This effect changes the waveform for the Vibrato command. As default the vibrato command uses a standard sinewave but that can be changed with this command. Example: C#1 01 0E40 C#1 01 0E41 C#1 01 0E42 C#1 01 0E43 Note Sample Effect The first line sets a standard sinewave for the vibrato, the second a Ramp Down wave, the third a standard Squarewave and the last line a random curve. E5 Finetune current sample HiCmd: 0 LoCmd: E HiData: 5 LoData: 0-F All samples can have different finetunes. For some parts in your song you might want to temporarily change the default finetune value for a specific sample. This is acomplished with this command. Example: C#1 01 0E56 Note Sample Effect The above example will set the finetune to +6. To understand the different values for this command, see the Finetune table in this manual. E6 PatternLoop HiCmd: 0 LoCmd: E HiData: 6 LoData: 0-F The PatternLoop command is used to loop specific parts of a certain pattern. The LoData byte has two states. If a LoData of 0 is set, it means "this is the line I want to loop from". If LoData is set to any other value it indicates the times the loop should run. Example: C#1 01 0C07 --- -- 0E60 --- -- 0EB1 --- -- 0E67 Note Sample Effect The above examples utilizes the PatternLoop command to fade a samples volume down to zero. E7 Set Tremolo Waveform HiCmd: 0 LoCmd: E HiData: 7 LoData: 0-3 This effect changes the waveform for the Tremolo command. As default the tremolo command uses a standard sinewave but that can be changed with this command. Example: C#1 01 0E70 C#1 01 0E71 C#1 01 0E72 C#1 01 0E73 Note Sample Effect The first line sets a standard sinewave for the tremolo, the second a Ramp Down wave, the third a standard Squarewave and the last line a random curve. E9 NoteRetrig HiCmd: 0 LoCmd: E HiData: 9 LoData: 0-F This command will 'trig' a note for a certain amount of times. The LoData is the number of times the note should be retrigged. This command is dependant of the speed of the song. If you're playing a pattern at speed 6 and retrig a note with a value of 1. The note will be played every 1/6th of the current line. In other words, the note will be played six times. Specifying a '2' for the above con- ditions will trig the note every 2/6 times, in other words the note will be played 3 times, like this: Example: C#1 01 0E93 Note Sample Effect EA Fine Volumeslide Up HiCmd: 0 LoCmd: E HiData: A LoData: 0-F Works just like the standard Volumeslide except that it only slides the volume once / line. Example: C#1 01 0EA2 Note Sample Effect The above example will slide the volume up two steps. EB Fine Volumeslide Down HiCmd: 0 LoCmd: E HiData: B LoData: 0-F Works just like the standard Volumeslide except that it only slides the volume once / line. Example: C#1 01 0EB2 Note Sample Effect The above example will slide the volume down two steps. EC NoteCut HiCmd: 0 LoCmd: E HiData: C LoData: 0-F This commands cuts or stops the sample after a certain amount of time within one line. It is used to cut sounds that must be stopped before the next line, the next line is too far away so to speak. Example: C#1 01 0EC3 Note Sample Effect The above example will cut a note at tick three within the current line. 'Ticks' are equal to the current speed's value. Playing a song at speed 6, means we have 6 ticks before getting to the next line and so on. ED NoteDelay HiCmd: 0 LoCmd: E HiData: D LoData: 0-F NoteDelay is used to delay a note a certain amount of time within a single line. This will get a sample to play slightly after it normally should be played. Example: C#1 01 0ED3 Note Sample Effect The above example will delay a note to be played at tick three within the current line. 'Ticks' are equal to the current speed's value. Playing a song at speed 6, means we have 6 ticks before getting to the next line and so on. EE PatternDelay HiCmd: 0 LoCmd: E HiData: E LoData: 0-F This commands delays the entire pattern for a certain amount of time. It is used to 'pause' the pattern. The LoData is the number of notes the pattern is to be delayed before playing the next line. Example: C#1 01 0EE9 Note Sample Effect The above example will delay the entire pattern for nine notes. F Set Speed / BPM HiCmd: 0 LoCmd: F HiData: 00-FF This command controls the speed of the song. All values for HiData between 00-1F will set the speed of the song. Values between 20-FF hexadecimally will set the BPM (BeatsPerMinute). All songs have a default speed of 6 and 125 BPM. Example: C#1 01 0F03 C#1 01 0F85 Note Sample Effect The first line sets the patternspeed to three, the second changes the BPM to 133 decimally.