M8 Community Tips, Tricks, and Findings

Various things we’ve discovered, or really handy info pulled from the meetup videos, web forums, etc, that aren't necessarily documented in the manual.

I’d like to keep this document focused on useful, utilitarian tricks you can use when working specifically with the M8

Don’t worry too much about formatting or cleanliness, I just want to gather all the info here, and I’ll tidy it up myself. Sources of info or demos are appreciated though


PROTIP:
Read the manual first―you’ll be glad you did!

 

System

M8 Boot menu

Template Song

Template Song ideas

Custom Startup Sequence

You can open /System/STARTUP.m8s on the SD card and save over it.

Shortcuts

Play entire song from Phrase View

Creating new vs cloning (phrases etc)songs

Fast jump to table

Moving Chains  (Song View)

Bookmarks (Song View)

Live Mode Shortcuts

Tap Tempo

Fix Glitchy Playback

Instruments

Sampler

Auditioning and and loading tips

Sample range limitations

Downconverting samples

Tuning samples

Time-stretching

Granular Instrument!

Temp-Syncing loops (great for breaks)

Tape Stop effect

Backspin effect

Using wavetable samples in OSC mode

EZ wavetable recipe

Slices

File-based (cue marker) slices

Fine Adjustments to Start / End points

Round Robin samples using Slices + Tables

Using notes with slices

Creating sliced kits

FM

FM to classic wave shapes

FM Chords

Transcribing FM (DX7) patches

FM Ratios to Intervals

Simple :1 Ratios (Approximate)

Equal Temperament vs Pure Harmonic Series (Precise)

FM Drums Tips

Macrosynth

Visual guide to each instrument

Plucked

vvWave Paraphonic

Specific Instrument Recipes

Mikey303’s Acid Bassline tips

Hard Sync sound

Ambient Instrument - from paletochen

Electric bass/guitar sounds with WAVSYNTH

Electric guitar sounds with FM

Tables

Table sequencing rules (precedence)

Tables as Arpeggios

Table Velocity

Table Tick Speed commands

Tables as Envelopes

Custom Envelope shapes

Superfast Decays

Misc Table Envelope Tips

Tables with different subsections

(Advanced) Freeze first table step

Randomize notes/slices with a table

Random sequences of notes

Tables & Instrument triggers

Table behavior changes across firmware versions

2.6.0: HOP00 in table row 0 no longer pauses

Using TPO commands in an aux table to apply global swing & other grooves

Grooves

Triplet Grooves

4-step Grooves

16-step Grooves

Groove-based Polyrhythms - a 5 over 4 loop (20 steps)

Interchangeable 4-step grooves

Step-early (previous phrase) chords that work with SHIFT+PLAY

Envelopes and LFOs

(Non-ADSR) Envelope tricks

Snappier “envelopes”

Things that invalidate an AHD envelope

Sequencing

Song Mode chain cycling

Global ¾ time phrases

Polyrhythms - 3 over 4 loop.

Random Quantised Melodies

Glissando

Understanding DEL

Understanding RAN

Microtiming via table

Misc

Hex values for (Instrument) Filter Frequencies

Explanation of pitch offsets when using Scales - Instrument and FM Operators

Mixing 100% on the M8

Getting a good mix without EQ

More tips fox mixing 100% on the M8

Wangus’s SEDLOCK  technique (advanced)

RSync workflow for backing up M8 Songs + Instruments

Global Tape Warble

M8 Resources

References

Dirtywave M8 operations manual

M8 Tracker Chords

Wav Paraphonic chords (improved)

Online tools

M8 Web Display

Matey (share M8 instruments)

M8 Themer

M8 Theme Tool (M8THE.ME)

PTI Tools (sliced kit creator)

Chordmate3

Chordmate2

Chordmate

Offline tools

m8c

cuecat

M8-js

M8 Files

Instruments

Templates

M8 Community Starter Pack

Samples from http://httpwww.xyz        

M8 Discord #resources

Sliced instruments

Sliced drum kits

M8 .m8n Scales


System

 M8 Boot menu

From firmware 2.7.2+:

  • Hold SHIFT + OPTION while powering on the device

Note: The battery level will never hit 100%, according to the members on Discord.

Template Song

From https://www.elektronauts.com/t/m8-tracker/125103/1083

  • Save a song to /System/TEMPLATE.m8s and it will be the default when creating new

Template Song ideas

From @yesimnathan (iHz)'s M8 template at https://github.com/nchowning/M8-template

  • Provide utility tables (80-FF) for common functions, like chords, arps, and pitch bend
  • Provide utility chains for common functions (blanks, KILs, SNG jumps, metronomes)

From ineffable-twaddle in discord:

  • Place utility chains/phrases near the bottom of the template (got idea from iHz’s M8 template)
  • This keeps the chains out of the way, but it’s easy to jump to by holding OPTION+down
  • Since they're part of the song, they won't get purged by "clean phrases/chains"
  • Warning: All lower chains are pushed down by copy/pastes on the rows above, and chains will  permanently scroll out of the song if they are pushed past row FF.  To avoid this, I start them around D0.


Custom Startup Sequence

You can open /System/STARTUP.m8s on the SD card and save over it.


Shortcuts

Play entire song from Phrase View

From https://discord.com/channels/709264126240620591/754405144325521530/909097036186538025

  • SHIFT + PLAY in Phrase view

Creating new vs cloning (phrases etc)songs

From trash80 in discord:

  • EDIT x2 (double tap) to create a new empty object…  
  • If you go into select mode first (so, SHIFT-OPTION, then EDIT-EDIT), it will make a copy (shallow clone) of the selected thing into the first empty slot (instead of just creating a new empty one).
  • Press EDIT one more time (so, SHIFT-OPTION, then EDIT x3) for a “deep clone”, cloning phrases inside chains as well.

Fast jump to table

From M8 Discord Meetup #2:

  • Select a TBL FX so the value is  highlighted
  • Hold SELECT + press Right
  • Jumps immediately to that table, skipping intermediate screens

Moving Chains  (Song View)

From https://www.elektronauts.com/t/m8-tracker/125103/996

In Song view:

  • Make a selection, then hold down EDIT.
  • You should see a little “x” appear on the left.
  • While holding EDIT, press up or down.
  • You’ll shift your selected chains up or down the song grid, even pushing other chains up or down as necessary.

Bookmarks (Song View)

From M8 Discord Meetup #3

  • In song view, tap OPTION x3 times
  • Only color of the chain is changed,         nothing else

Live Mode Shortcuts

  • In Live mode, SHIFT OPTION twice will select a row, then press PLAY to trigger at once. (Similarly smaller selections work also.)
  • Hold Left and press Play to cue the whole row
  • (Left + Play also works in Song mode)

Tap Tempo

  • When the Tempo parameter is highlighted on the Project page, tapping [ EDIT ] will allow you to insert a tapped tempo.

Fix Glitchy Playback

  • Sometimes, due to SD card differences, a song with samples might start playing back choppy, and the M8 in general just slows down, or starts behaving funny. One potential fix for this is to go into the file browser for anything (whether loading samples, instruments, or songs), and do a directory sort (shift + option). It will take a second, but for me at least, this has a near 100% success rate of fixing the choppy sample playback.

Instruments

Sampler

 Auditioning and and loading tips

  • To quickload a new sampler instrument: when LOADing a new instrument, select a sample instead.
  • When selecting samples, you can press PLAY to listen to the sample
  • If you hold PLAY on a sample while the phrase is playing, the sample will replace each note in the current phrase, The sample playback will be affected by the following
  • Any parameter in the instrument and envelope pages (Envelope, VOL, FX, detune, degrade, filter etc.) will be applied
  • If there is any note in the currently active phrase the sample will only play (and loop) through the length of the active PHRASE.
  • This happens even if there is no actual NOTE in the NOTE field, e.g. if there is anything in the INST field it will not allow the sample to play through.
  • Hit SHIFT+PLAY to hear the sequence play in the back-ground.  After that, you can audition the sample with PLAY in the context of your sequence.

From glooms in discord:

  • I find if you have a folder with multiple folders of drum hits (like kicks - snares - perc ) you load the kick then copy that instrument and you’re already in the folder where your other drum samples are makes it [auditioning new drum sounds in context] fast

Sample range limitations

From trash80 in discord:

  • The higher the bit depth (and stereo vs mono), the more demanding on SD streaming.  So the highest possible note you can play is affected intentionally to limit the demand on the SD card per channel.
  • So, say if it’s 24-bit stereo: the highest note is 1 octave above c-4,  24-bit mono should be two, 16-bit stereo 3 octaves, 16-bit mono 4, 8-bit [...]
  • (Those might not be the exactly true ranges, but it’s close enough)

  • Also: you may have issues playing 8x stereo 24-bit samples, depending on how well the SD card performs.
  • Usually it’s not worth keeping samples 24-bit

Downconverting samples

  • (To preserve as much dynamic range as possible:) normalize first to 0db and then downconvert to 16-bit
  • If the samples are level-balanced as part of a kit, normalize them all together to keep their relative levels intact.

Tuning samples

  • Use DETUNE to fine-tune your sampler instrument.
  • Each tune increment is 1/16th of a semitone.
  • For one octave, you will need 12 semitones x 16 increments, or 192 DETUNE increments (C0 in hex)
  • For large pitch changes, you can use the N column in the instrument’s default table
  • To pitch up by two octaves, set all N steps in the table to 18
  • This works for all instrument types, not just samplers
  • Drawback: if you switch to a non-default TBL, the pitch change will no longer apply
  • The amount a sample can be pitched up is limited by its bit-depth (for performance reasons)  (trash80 @ discord)

 .

Time-stretching
From
M8 Discord Meetup #1

  1. Load sample
  2. Sample PLAY mode to 02 FWDLOOP
  3. LFO to 03 LOOP ST
  4. LFO: OSC to 03 RAMP UP (ramp dn for reverse)
  5. LFO: TRG to 01 RETRIG (loops) or 02 HOLD (plays once)
  6. LFO: FRQ to number of bars + beats (20 = 2 bars)
  • Use AMT param to adjust how far the loop scans through sample
  • Use FREQ param to adjust amount of time stretching
  1. stays synced to tempo

Tips:

  1. LENGTH param adjusts size of grain (0-4 range is good)
  2. Sometimes PLAY mode to 04 FWD PP works better, especially with ambient samples.
  3. Can also use (LT1,2)  lfo start commands to change start point after note playing
  4. Can also use (LF1,2) lfo freq command to change speed of timestretch
  5. Tweak sample’s DETUNE to change the pitch
  • LENGTH is relative to slice, so add slices to get finer grained control bars)

Granular Instrument!

How to create a granular instrument on your M8 (with 8 grains):

  1. Start a new project
  2. Create a sample instrument set to FWDLOOP (also try REVPP for noise samples) with a LOOP ST of 0 and a small LENGTH.
  3. Now set two LFOs, one DRNK T with a small FREQ and low AMT, and one RAMP UP with a larger FREQ and AMT FF.
  4. Place a note an octave or two down (C2 or C3) if you want more ambient - but you can also use the default C4. Make the velocity small.
  5. Randomize the Play all tracks at once. (If your SD card complains, feel free to downsample.start of the loop position in the phrase.
  6. Place the exact same thing on all tracks.
  7. )

To use, record the output to a new sample. You could use this in real-time, but it'll eat up as many tracks as you want grains (each track is one grain).

There may be some small glitches, if so, use reverb or tweak the parameters.

Temp-Syncing loops (great for breaks)

From the instrument screen:

  • Load sample
  • PLAY: FWDLOOP
  • LENGTH: 00

From the envelope screen:

  • LFO: LOOP ST
  • OSC: RAMP UP (RAMP DN for reverse)
  • TRG: RETRIG
  • FRQ: 20
    [adjust to bar length. 1 bar = 10 (16 steps), 2 bars = 20 (32 steps)]

Then:

  • Play with LOOP ST until you get the start of the loop right
  • Add as many FE (empty) bars in Chain needed to complete the number of bars needed.
  • So if the loop is 4 bars, it should look like:
  • 00
  • FE
  • FE
  • FE

  • Adjust the LFO’s AMT until loop is perfect (you need to play from the Chain window to play all

Tape Stop effect

From M8 Discord Meetup #1:

  • Use a combo of PIT and PSL on a sample instrument
  • Set the original pitch w/ a pitch command
  • Set target pitch and slide length in next row
  • Use velocity to turn volume up or down via ramp

Backspin effect

From M8 Discord Meetup #1:

  • Combine pitch slide effect with playmode reverse effect

Using wavetable samples in OSC mode

From BLEO in discord (2021/11/18):

> For working w/ single-cycle waveforms loaded in the same file, if I set the mode to OSC, how does M8 know the size of each waveform (is there a setting I can use, or should I use slices?)

  • The LENGTH parameter requires you to know how many samples waveforms there are in the file and set it.
  • So if there are 16 waveforms in the file:
  • Set the LENGTH to 10 (10 in hex = 16 in decimal)
  • Increase the LOOP START by increments of 10 to jump to each waveforms.
  • But there may be a bug in osc so YMMV (I had an issue last week jumping around with length 0 so it might just be the 0 setting that has the issue, but makes the infamous monowave.wav sorta unusable) [note: probably fixed in firmware version 2.0.9, 2021-11-27]

EZ wavetable recipe

This is the easiest way I've found to do wavetables.

  • Pad all your wavetable files to have 256 waveforms each (pad with silence - see below for script). This way you don't need to figure out how many waveforms there are in each file.
  • Set PLAY to OSC and LENGTH to 00.
  • LOOP START will now select the waveform: 00 is the first one, 01 second one etc.
  • You can modulate LOOP ST to cycle through the waveforms.

Python script to pad your wavetables with silence to be 256 waveforms each (you may need to batch resample at the end). THIS IS DESTRUCTIVE so operate on a copy of your wavetables folder:

import librosa

import soundfile as sf

import os

# Define the folder path containing the .wav files

folder_path = "/path/to/folder"

# Iterate over all .wav files in the folder and subfolders

for root, dirs, files in os.walk(folder_path):

    for file_name in files:

        if file_name.endswith(".wav"):

            # Load the audio file

            audio_path = os.path.join(root, file_name)

            audio, sr = librosa.load(audio_path, sr=None)

           

            # Change the length of the audio file to N samples by padding the end with silence (N = 256 * the number of samples per wave). e.g. if 2048-samples per wave, then N = 524288

            target_length = 524288 # SET THIS ACCORDING TO THE FORMULA!

            if len(audio) < target_length:

                # If the audio file is shorter than 524288 samples, pad it with silence

                audio = librosa.util.fix_length(audio, size=target_length)

           

            # Save the modified audio file using soundfile

            sf.write(audio_path, audio, sr)

This script takes all your wavetables in the folder recursively and, if they are shorter than 256 waves, it will pad them with silence at the end so that they are exactly 256 waves in length. You need to set target_length with the following formula:

target_length = 256 * number of samples in each waveform (

I recommend resampling the resulting files to be 256 (or 512) samples per wave at 16 bits. This seems to work best with the m8. I like to have several folders with various levels of downsampling (a folder for 1024, a folder for 512, a folder for 256 etc.) since the built-in m8 downsampler doesn't change the playback speed.


Slices

File-based (cue marker) slices

  • With FILE (cue marker) slices, the SLI command reads a maximum of 32 slices (00–1F in hex).  This limit is due to memory limitations (Trash80 in discord)

Fine Adjustments to Start / End points

  • STA / LEN adjustments are relative to each slice.  So to get more fine grained control you can slice, dial in the correct location, then adjust from there with STA or LEN commands.

Round Robin samples using Slices + Tables

From ddm64 in discord:

  • Multisample each drum: many subtle variations, different enough to sound pleasing, similar enough to be unnoticeable.
  • Put it all into a single WAV and into the m8, like so:
  • In the sampler instrument:
  • table TIC 00 (so it advances to the next row on each note)
  • slice setting at the number of slices you have
  • play mode forward
  • In the table’s note offset column: an increasing number each time to auto jump to next slice! round robin!


  • You can get fancy and instead put several variations of drum into one WAV. I did this with cymbals. made sense to do 2 crashes, splash, & china all together for easy programming. 4 round robins each. THO in this table keeps it looping.

     
  • THO in the phrase selects which cymbal / articulation you want. really helpful in busy sections. i'm sometimes tweaking this a bit for taste, you don't really know which will work until you try it. crazy huh?! Fin.

Using notes with slices

From impbox@discord (2022/01/30):

  • if SLICE is FILE, the note specifies the slice, C1 being the first slice, etc.
  • You can still use PIT to set the pitch
  • if SLICE is OFF, the note specifies the pitch, treating C4 as the base pitch of the sample
  • You can still use SLI to set the slice to use
  • This only works on files with embedded cue markers

So: you can use notes like normal with slices if:

  • The .wav file contains slice markers
  • SLICE is set to OFF
  • You use SLI to select them

Creating sliced kits

  • Batch-converts multiple .wavs
  • Supports cue markers (M8 max: 32 slices) and equally-spaced kits (M8 max: 128 slices)
  • Preserves mono if all samples are mono
  • Drag & drop wavs into GUI, select .WAV to download (defaults to .PTI)
  • Only supports cue markers (M8 max: 32 slices)

  • Supports cue markers (M8 max: 32 slices) and equally-spaced kits (M8 max: 128 slices)
  • To render slices with cue markers:
  1. Add a project marker for each slice (default key: M)
  2. Render as WAV, using settings:
  • “Write BWF chunk” enabled
  • Change “Do not include markers or regions” to “Include Markers only”
  • (Optional, recommended): WAV bit depth at a max of “16 bit PCM”

FM

FM to classic wave shapes

From M8 Discord Meetup #1

  • Algorithm 00 - turn up D Feedback -> Saw wave
  • Add Operator C Feedback -> Square wave
  • For noise, just crank the feedback all the way up

FM ChordsFrom impbox in discord and M8 Discord Meetup #1:

  • Use algo 0B Assign MOD2,3,4 to PIT on 3 operators.
  • Then in the phrase, play the root note of the chord and FM2:03 FM3:07 FM4:0A for a minor7 chord for example
  • Set the SCA or SCG to force the PIT-driven operators to play within a scale


Transcribing FM (DX7) patches
From https://youtu.be/07z3vBH4n5s?t=7371

  • Mute 2 of the operators on a 6-op fm patch to figure out which ops are actually integral to the sound


FM Ratios to Intervals

From https://www.elektronauts.com/t/fm-ratios-to-intervals/62243

Refer to these ratios if you aren’t using the MOD>PIT trick to get FM Chords

Simple :1 Ratios (Approximate)

(For more accurate ratios, see the next table)

1:1 = Unison

2:1 = 1st Octave

3:1 = Fifth

4:1 = 2nd Octave

5:1 = Maj 3rd (-13 cents)

6:1 = Fifth

7:1 = Min 7th (-30.4 cents)

8:1 = 3rd Octave

9:1 = Maj 2nd

10:1 = Maj 3rd (-13 cents)

11:1 = Tritone (-47.9 cents)

12:1 = Fifth

13:1 = Min 6th (+41.3 cents)

14:1 = Min 7th (-30.4 cents)

15:1 = Maj 7th (-11 cents)

16:1 = 4th Octave

Equal Temperament vs Pure Harmonic Series (Precise)

FM Drums Tips

(Meetup #17) FM drums walkthrough by A_Rival: M8 Tracker - Discord Meet-up #17 

From wangus: https://discord.com/channels/709264126240620591/754405144325521530/944320866823573554

  • a lot of “FM drums” on the M8 are not really FM per say. More like using the FM instrument as a number of somewhat independent oscillators.
  • When I’m doing synth drums on the M8, the vast majority of the time I am using the A>B + C + D algorithm; D often noise, C often a transient oscillator, and B often the main tonal body (e.g. the boom of a bass drum), with the single modulator A to allow some more timbral depth to the body
  • Only the simplest “FM” at play; feels more subtractive in practice, like 3 oscillators through a filter and amp/limiter
  • The expert level of drum crafting is getting into 400Hz 200Hz tables.  big can o worms, but huge when you want independent contours for pitch, MODx, filter cutoff, amp gain, etc.  envelopes and LFOs only get so much control

From ddmm64@discord:

  • Use LFO in HOLD mode with RAMPD T or EXPD T to modulate stuff such as operator levels, ratios, etc.
  • Great for sharp attacks, and to get extra "envelopes"
  • Look at other FM synth patches for drum sounds
  • I've drawn inspiration from OPL2 and OPL3 patches, as well as LXR-02 patches
  • The LXR-02 manual (ch11, p39) has nice tips for making drum sounds with FM
  • I rarely end up with close replicas, but I can get in the ballpark.

Fixed frequency for an FM operator

To set an FM operator to a fixed frequency, we can use negative tracking to counteract the effect of the frequency being changed by the note. set MOD source to TRACKING

  • set DEST  to a MOD[1,2,3,4] assigned to PIT of an operator
  • set AMT to 24
  • set SRC to NOTE
  • set LVAL to 3C and HVAL to 18. Note that having an HVAL lower than LVAL makes the effect negative.

Further explanation: by default, the frequency of each operator tracks the note being used to play the synth (multiplied by the RATIO factor). If we use the TRACKING modulation (a new feature in firmware 3.0) with NOTE as a source and a negative effect on the PITCH of an operator, it can be tuned so that the effect cancels out the default NOTE tracking, resulting in a fixed pitch that depends only on the ratio, at least for a certain range.

Trick was first suggested by wangus@discord, I (ddmm64@discord) found these working values by quick  trial and error - possibly other values could work better. Maybe RATIO as a destination could work too.

There’s different ways to use fixed frequency operators, this was a feature in the Yamaha DX7 so that’s one source of inspiration. From an old magazine about the DX7:

Macrosynth

Visual guide to each instrument

See illustrated chart at www.vo1t.com/Euro//BraidsIllustrated1.8.pdf 

WARNING: some information in this PDF doesn’t apply to the M8’s macrosynth implementation, and some information (wav paraphonic cords) turned out to be wrong (discussion on discord).  It’s still a good guide for getting an idea about what COLOR and TIMBRE do for each instrument.

Plucked

Pseudo-polyphony (Paraphony)

  • Plucked is kind of polyphonic (paraphonic)―a new note doesn't "stop" the audio from the previous one. (laserdogrob@discord)
  • Up to 6 Plucked notes can overlap  (
  • Envelopes (like volume) and FX (like KIL) affect all overlapping notes
  • KIL04 works well to clear lingering notes immediately before playing new notes (laama@discord)

Technique

  • Plucked responds to TRG to retrigger notes
  • TRG is either off (00) or on (01)
  • Try AMP: FF + LIM: POST on Plucked to get some modular like distortion on it (from glooms@discord)
  • Plucked with a bandpass filter + some POST amp + a bit of PSLxx = nice bendy/plucky effect (from laamaa@discord)
  • Use two channels for pseudo-fingerpicking, think lower strings and higher strings.
  • You can transpose them independently for different shapes while keeping the other half ringing freely. (from Spookyswirls@discord)

Wave Paraphonic

Visual Summary (source: www.vo1t.com/Euro//BraidsIllustrated1.8.pdf)



WARNING: some of the chords in the image above turned out to be wrong: discussion on discord

M8 Notes

Specific Instrument Recipes

This section covers specific “how do I get that sound” tricks

Mikey303’s Acid Bassline tips


From
discord

  • Any sequence will do but basically you want a KIL03 on the step before any new note that isn't a tie/slide. It's pretty dang close to how the 303 seq behavior sounds
  • PSL06 is a good slide time but the 303's is technically variable on how far the target and destination are from each other (iirc)
  • And then whatever synth you're using you wanna make an accent note behavior because what's an acid line without accent
  • Example:
  • Demo (from discord):

Hard Sync sound

with Macrosynth (from peterswimm):

  1. Select OSC shapes 07 (SQUARE SYNC) or 08 (SAW SYNC)
  2. Modulate the Timbre (TBR)

with Wavsynth (from trash80):

  1. Set SIZE to FF.
  2. Modulate MULT (MUL)

Example Wavsynth Instrument (from laamaa):

Ambient Instrument - from paletochen

Instrument:

Phrase 00:

  • A C-4 Note, V64  and Instrument 00

Phrase 01:

  • A G-5 Note, V54 and Instrument 00

Electric bass/guitar sounds with WAVSYNTH

From wangus, discord:

  • Sine oscillator,
  • Dial up MULT higher than you’d think,
  • Then use WARP to squish the MULT into the start of the wave, so you get back to a bassy territory.
  • Then a bit of SIN amp can really dial in the tone.

Very FM-sounding (because technically MULT+WARP is like a sort of phase modulation, and SIN amp is like modulating a zero-frequency sin carrier)

Electric guitar sounds with FM

From Malik, discord:

  • i got good results with the fm synth. One two SIN operator pair with ratios 1 and 2 (or sliiiightly detuned from that) with the same envelope on volume on both for the body of the sound. The 1:2 ratio creates this pronounced first harmonic that is louder than the fundamental which is kinda how i hear lower guitar strings and bass strings.
  •  A very slight and short envelope on Pitch can introduce twang.
  •  Put the other two operators also in a pair:
  • the modulator with CLK shape
  • the carrier as a SIN at a higher ratio with a very short volume envelope to emulate the pick sound.
  • The LP + HP Filter without modulation can emulate the pickup
  • Distortion then can be added via feedback on the carrier of the "body" pair or the amp section or both
  • it doesn't sound super realistic per se, but it kinda feels like a guitar


Tables


Table sequencing rules (precedence)

M8 FX precedence (trash80, discord):

  • FX commands are executed from RIGHT to LEFT ( 🠈🠈🠈 )
  • Tables first, then Phrase
  • DEL FX has higher priority than anything (DP, m303, discord)
  • Therefore modifier FX (e.g., CHA, RAN) do not affect DEL

Groove:

Tables as Arpeggios

From M8 Discord Meetup #2:

  • Use N (transpose command) in table to arp notes on every trigger
  • Adjust table TIC to control arp speed

Table Velocity

From M8 Discord Meetup #2:

  • Velocity value in table multiplies velocity in phrase
  • You can only make notes quieter via velocity in table

Table Tick Speed commands

  • A table TIC command placed on the final row (F) takes effect immediately, setting the default TIC for that row. (From M8 Discord Meetup #2)
  • All TIC values are tempo/step-synced except for TICFF, which runs at 200Hz per tick

Tables as Envelopes

There are lots of ways to make custom envelopes in tables:

Custom Envelope shapes

From M8 Discord Meetup #2:

  1. Use a VOL command followed by a REP command to decrement/increment volume at table tick rate
  2. In a table, use a REP command after a command - this becomes your hold
  3. Example from impbox in discord:

            
    VOL01

REP10

VOLF0

REP05

VOLFF

REP11

Superfast Decays

From discord:

  1. Start with an envelope with a short decay

Then use a fast table to gradually lengthen the decay (DE1/DE2) to approximate an exponential decay

Misc Table Envelope Tips

  • Use TICFF if you need to go fast―it runs at 200Hz regardless of the tempo
  • Use REP to make smooth changes; it interpolates between values
  • Use HOP to hold values without changing
  • In tables, the first digit of HOP set the number of times to repeat the hop
  • Set HOP to hop to itself x times before moving on (except on row 0)


Tables with different subsections

From M8 Discord Meetup #2:


Table:

  • Use HOP fx to partition a table into multiple sections
  • Two basic patterns:
  • HOP back to the beginning of the section (looping)
  • to the HOP’s own step (one-shot)

Pattern:

  • Use THO to jump to these different sections

(Advanced) Freeze first table step

from impbox in discord:
To keep the table frozen by default
unless you use a THO:

Randomize notes/slices with a table

From M8 Discord Meetup #1:

Instrument:

  • Set table TIC rate to either:
  • 00 (advances on each new note), or
  • 06 (advances in time with steps)

Table:

  • Set all table N columns (transpose) to the notes you want to randomly choose from
  • Set fx command in row of table to HOP00
  • Set all other rows in this column to RAN values (in newer firmwares it's RND)
  • Each time a note triggers, it will jump to a random step in the table, transposing the note

Random sequences of notes

From M8 Discord Meetup #2:

To use CHA to play a
sequence of notes (instead of just one step):

  • Put a single note in a row
  • Create a table
  • Set table tick 06 commands at end of all table rows to keep table in sync w sequencer
  • Put note offsets in table too í
  • Use TBL command to select this table on note trigger row
  • Use CHA command with left random set to occasionally trigger this sequence of notes

Tables & Instrument triggers

This is good to know if your tables are stopping/retriggering unexpectedly:

  • A value in the instrument column (“I”) causes the instrument to trigger, which:
  • (Re-)starts the table
  • Reverts the TBL command to default (the instrument)
  • To avoid re-triggering an instrument, leave the instrument column blank
  • You can still re-trigger envelopenññ ins with ET1/ET2 and things like STA, SLI, TRG
  • You can still change notes from the pattern’s note column (“N”), the table’s transpose column (also “N”), or with PIT  
  • There can only be one table running per track
  • Triggering any instrument will interrupt the previous instrument’s table
  • You can create a free-running table from a spare track
  • Just have the instrument make no sound and trigger it only once

Table behavior changes across firmware versions

2.6.0: HOP00 in table row 0 no longer pauses

This worked briefly in 2.5.3, but was changed in  2.6.0, done to support HOP + RAN in tables.  You’ll need to change the tables in any 2.5.3 songs or instruments that used HOP00 from row 0, or they won’t hold the first step correctly in 2.6+.

Using TPO commands in an aux table to apply global swing

A simple “swing” groove consists of delaying alternate subdivisions of a beat. This can be simulated (or achieved, if you like) by using tempo adjustments, for instance each odd phrase step (or 16th note) playing at slightly slower than the even ones. Placing these tempo changes in an aux table means they can be repeated indefinitely as a track plays. This can be combined with Grooves for further messin’. Note: in order that the table doesn’t cause the track to get progressively faster or slower the tempo changes must add up to 0 overall; if you add 3 you must subtract 3.

A simple example would be to have the following commands at the top of a column of the aux table:

        TPOFE

        TPO02

        HOP00

The help text at the bottom of the screen will show the tempo change in decimal - i.e. FE = -2

Start the table going with a TBX command, it doesn’t matter which track the command is placed in.

Caveats: the main thing to note is that the delay audio effect will be affected, with long feedback decays accumulating glitches due to the course interpolation. This is not necessarily unpleasant. The tempo changes will also affect the timing of tic-based modulators, although typically this will be a subtle effect. Lastly, this will likely affect tempo detection in devices slaved to the M8’s MIDI clock and won’t have any effect at all if the M8 is slaved to an external MIDI clock.


Grooves

  • Grooves come from LSDJ, so check out LSDJ tutorials to pick up additional techniques:

Triplet Grooves

4-step Grooves

From trash80 in discord (and the M8 manual):

  • Use a four-step groove that skips every fourth step with 00:

    0 08

1 08

2 08

3 00 ← 00 = skip this beat

  • Benefits:
  • Easy to swap a 4-step groove in the middle of a phrase with other 2/4 step grooves
  • Swapping in this groove creates an instant  on that 4-step beat
  • Drawbacks:
  • Every fourth step in the phrase is ignored
  • Need to keep track of which steps are ignored and never put anything on them  

16-step Grooves

From  mikey303 in discord:

  • Use a 16-step groove:
  • 12x steps of 08 at the start
  • 4x steps of 00 at the end
  • Benefits:
  • Easy to keep track of ignored steps:
  • Just use steps 0–B
  • Last 4 steps are unused
  • Drawbacks:
  • 16-step grooves aren’t good for swapping mid-phrase

Groove-based Polyrhythms - a 5 over 4 loop (20 steps)

Start with:

  • Two phrases (01 and 02) on the same song row
  • Two custom grooves (04 and 05)

Phrase 01 (the 4):

  • Place the notes every 4 steps and use a Groove GRV05

Phrase 02 (the 5):

  • Place the notes every step and use Groove GRV04

  • So the 5 notes of Phrase02 will be played within the 1st 4 bars of Phase01 (0-3) due to the Groove of 4...and repeat again.

Interchangeable 4-step grooves

From @impbox on Discord:

  • Try to make every 4 steps add up to 24 (it'll say 96 at the bottom) and only change groove on a 4th of a phrase 0,4,8,C
  • E.g.:
  • 6,6 groove
  • 7,5 groove
  • 8,4 groove
  • 8,8,8,0 groove
  • 7,7,5,5 groove
  • 3,4,5,C
  • “Switching back and forth between straight time and  time mid phrase is super fun.”

Step-early (previous phrase) chords that work with SHIFT+PLAY

From @wangus in Discord (2022-06-22):

 

A pretty common practice is to change a chord (or whatever) a sixteenth note early.  Normally this is kind of a pain to program, because you need to put the chord one phrase before where it's really meant to line up with.  So you can't do things like SHIFT+PLAY a bar and hear the whole chord.

The technique:

  1. Make a groove 01 that's:

06

00

0C

06

[06 filling the rest of the steps]

  1. Put a GRV01 at step 0E of each phrase.


Now if you SHIFT+PLAY from any phrase, the chord starts on the beat (so you immediately hear it), but any following chords play with the one-step-early vibe, and it loops with the correct groove.  [assuming your GRV00 is standard 06/06, but this technique could be tweaked for whatever]

Envelopes and LFOs

(Non-ADSR) Envelope tricks


As of firmware 3.0 the M8 supports true ADSR envelopes (which require an explicit OFF fx to release).  However, there are many alternate techniques that produce more targeted envelope-like effects:

From wangus in discord (2021/10/27): Like many features of M8, there are loads of ways [to simulate a Release stage], though maybe not the direct option you might expect. You could:

  • R: Use the phrase or table’s V column (volume) to ramp down volume arbitrarily
  • A+S+R: Set the AHD envelope HOLD to the length of your note
  1. You can do this per-note with HOx FX.
  2. The Hold stage now acts like sustain &  the Decay stage now acts like Release
  1. S: Set AHD envelope Attack, Hold, and Decay all to 00 and the instrument will hold forever.
  2. R: Then when you want it to decay, do an envelope decay command (DE1/DE2).
  • The decay will start immediately
  1. A+S: Set AHD Attack and Decay the way you want in the envelope, but set the Hold to FF
  2. R: To release the note: use HOx to set the Hold to 00
  • This essentially stops the note, and allows the decay to happen like a release
  • (Note: Hold FF only lasts about 2 and a half phrases)  

  • Use a table to gate the AHD Release behavior behind a HOP (or in another table)
  1. R: Use TBL/THO to  jump to the table or position with the release behaviora
  • Using a table:
  1. A+S: Heep retriggering the AHD envelope (ETx) so it never gets through its Hold stage.
  2. R: Then use a phrase FX like THO to break the loop and proceed to the envelope’s Decay.

  • Using a table:
  1. ∞:  Use FX timed with REP and HOP to make an envelope with whatever stages you need

  • Using an LFO with AMT set to 0
  1. R: Retrigger (LTx) and turn up the depth (LAx) when you want the “envelope” to release
  • This works in addition to any actual envelopes you may have

Snappier “envelopes”

Envelope parameters are configured in ticks, which is sometimes too slow to create snappy transients.  Here are some options:

  1. Use an exponential LFO shape and hold the ending:
  1. Set the LFO’s  OSC = EXP DOWN and TRG = HOLD  (from Mare in discord)
  1. Or use a fast table as an envelope
  1. TICFF goes really fast  (200Hz)
  2. Tempo doesn’t affect TICFF

Things that invalidate an AHD envelope


(from
OldSchoolBuzzer):  

  • KIL
  • Note retrigger (RET)
  • Underlying sound being shorter than the envelope
  • Envelope Amount/ETx = 0 will make the envelope inaudible

Modulator Modulation order

When putting a modulator target as MOD RATE or MOD, it applies to the next modulator in the following order: 1 > 2 > 3 > 4 > 1

Sequencing

Song Mode chain cycling

  • Chains run independently from each other, so they cycle at their own respective lengths.
  • If your chain lengths have mismatched row or tick sizes, they will cycle out of sync with each other.  Instant polymeter!
  • Use or abuse this as you wish, or ensure chains are the same length to avoid it.
  • (Firmware 2.7+) To measure the total ticks in a chain: Stop playback, place the cursor on the final chain, and hold down OPTION.  The measurement starts from the top of the latest gap.

Global ¾ time phrases

From M8 Discord Meetup #1:

  • Set first 12 rows of groove to 6 (normal)
  • Set last 4 rows of groove to 00 (skip steps)
  • Same effect as setting HOP00 on 13th of phrase, but applies to all phrases that use this groove

Polyrhythms - 3 over 4 loop.

First we need 2 chains for every polyrhythmic:

  • Calculate the number of steps: 3x4 = 12
  • In Phrase 01 (the 3) you place the note every other 4 steps

  • In Phrase 02 (the 4), the other way around, every other 3 values

  • Place a HOP00 to reset the phrase on the last tick of the polyrhythm

Random Quantised Melodies

From https://www.elektronauts.com/t/m8-tracker/125103/1001

  • In a phrase, you can use CHA (chance) and then PIT (pitch) on the same step as any note to create a probability that the original note could be triggered (to the left of the CHA command) and also another different probability (to the right) that the pitch of the note will change.
  • NOTE: this will sometimes mean that PIT changes without the note playing.  To ensure both fire together or not at all, keep both the note and PIT to the left of CHA.
  • You can also use a table to set the notes of the scale that can be randomly triggered.

Glissando

From trash80@discord:

  • Specify a note, but without any value in the instrument column (“I”)
  • (This changes the pitch without retriggering the instrument)
  • Do this in combination with the PSL command = Glissando!
  • The same effect can be accomplished by combining PIT + PSL

Understanding DEL

From impbox,  Avrilcadabra, ilzxc, and trash80 on discord:

The most important caveats are these:

  • There can be only one active DEL at a time
  • An overlapping DEL replaces the previous DEL
  • DEL has higher priority than anything (DP, m303, discord)
  • Therefore: modifier FX like CHA and RAN do not affect DEL

With that in mind:

  • You can use DEL to overwrite (replace) steps
  • You can DEL by more than a step
  • You can DEL steps into subsequent phrases

Understanding RAN

(TODO: this could use more review/testing; no one in the discussion was certain that RAN is always additive and there apparently some edge cases)

From discord discussion:

  • RAN is an addition effect (probably); it is relative and unipolar
  • in RANxy,each digit (the x and the y) work independently:
  • RAN20 can only result in 00, 10, or 20 (not any value between 0–20)
  • RAN26 will pick randomly within 0–2 for x and also 0–6 for y.
  • For FX that use each digit to control separate things, you can randomize each one independently
  • Examples:
  • Jump between chord types in Macrosynth’s Wav Paraphonic: COL00, RANx0
    (only randomize the first digit)
  • Randomize vibrato’s speed 0–3 and depth by 0–2: PVB00, RAN32
    (randomize each digit independently)
  • Randomize reverb send between 0–255: SRV00, RANFF
  • Random/bipolar +/-12 around the current cutoff: CUTF4,RAN18
    (drop 12, add 0–24)

Microtiming via table

From https://discord.com/channels/709264126240620591/754405144325521530/1097121820743843850

Figured out a nice way to play with microtiming using (drum) one-shots!

  • Load the sample
  • set tic speed to FF
  • Set up table as follows:
  • Row 0 - STAFF
  • Row 1 - REP00
  • Row 2 - STA00
  • Row 3 - HOP03
  • Adjust Row 1 (REP-Command) to delay the Note by 5ms-increments

This is, of course, assuming that the very end of your sample is silent so you can use STA-FF as a silence-buffer so to speak. Will post a clip later. Using different sections of your table and THO you can set up different microtiming or alternate between straight and delayed hits to achieve a loose/drunk feel in a higher resolution than a 07-05 Groove and it saves some headache using tempo manipulation approaches.

I have this set up as an empty Sampler-Instrument-Preset, very handy!

Misc

Hex values for (Instrument) Filter Frequencies

From Dimitri Eugensson @ discord:

Explanation of pitch offsets when using Scales - Instrument and FM Operators

From impbox @ discord:

Mixing 100% on the M8

Getting a good mix without EQ

From mikey303 @ discord:

Mixing alternatives to EQ:

  • Gain staging
  • Filter shaping
  • instrument timbre selection
  • use of limiter

Specific Tips:

  • Make good use of the filters on samples where you aren't tying them to envelopes
  • The Bandstop filter is your friend
  • Using the limiter will get you a better mix than EQ would
  • Make deliberate choices to pick things that mix well together and don't fight for frequency space
  • aka: don’t use all bass-heavy instruments
  • Try playing with the negative space between instruments
  • (responding to “what about bass music?”:)
  • bass music isn't ALL bass―it requires its own speciality of clarity, and that’s by making one or two things the bass emphasis, and having everything else support it
  • doing things like... having the kick drum automate the bass synth's volume
  • that will get you 1000000000000x further than EQ
  • These are all design philosophies you pick up with time and practice

From aaron drumcorps@discord:

  • sidechain most things to kicks (3.0.0+)
  • high-pass filter out all sub bass on every instrument which does not require low bass
  • run into the master limiter pretty slammin

More tips fox mixing 100% on the M8

Wangus’s SEDLOCK  technique (advanced)

‘...randomized, generative arpeggiations of random length that are still roughly synced with the other (deterministic) tracks.  A technique to have cross-interactions on M8 track sequences.

I call it "SED-locking".’  

Writeup at: https://weeklybeats.com/wangus/music/sedlock

(Spoiler: it isn’t reliable as a technique, but it you read the writeup you’ll learn a lot of advanced techniques, and see some very clever ways to exploit them)  

RSync workflow for backing up M8 Songs + Instruments

(from ddm64)

I usually don't back up the samples on the SD, except for a special subdirectory of stuff that I sample or render myself. For instruments I do

  • rsync -rcv --delete /mnt/m8sd/Instruments/ ./Instruments

where ./Instruments is in my m8 backup git repository. Same for the ./Songs directory.

-c is a flag that tells rsync to do checksums, as the sd doesn't have valid timestamps. For large files this is fairly slow, but songs and instruments are tiny so it's fine

Global Tape Warble

        Example by Laamaa

  1. Prepare multiple Scales, all chromatic.
  2. Slightly detune each of them (Microtuning).
  3. Make a utility Phrase running alongside the whole song.
  4. In that phrase, switch between the prepared Global Scales using the SCG command.
    All Instruments following the scale will now warble.
  5. For extra flavor, add slight tempo automation and make use of the DJF-Bandpass.

M8 Resources

References

Dirtywave M8 operations manual

The link to the latest manual is always available at https://dirtywave.com/pages/resources-downloads

M8 Tracker Chords

M8 Tracker Chords (google doc, by impbox)

  • Charts of how to make chords on the M8, using:
  • Intervals (ascending & descending)
  • ARP
  • Table-based arps
  • Macrosynth’s WAV PARAPHONIC (using COLOR)
  • FM (3 methods: RATIO, PIT 1mods, PIT mods w/Scales )

Wav Paraphonic chords (improved)

WAV PARAPHONIC CHORDS (by Monster Logo Studios)

  • Heavily-researched charts for each chord Macrosynth’s WAV PARAPHONIC can make
  • Includes hex values for COLOR,  relative semitones, chords
  • Based on Braids source code, with observations on quirks or non-obvious behaviors
  • More detail and accuracy re: wav paraphonic than the older M8 Tracker Chords doc

Online tools

M8 Web Display

https://derkyjadex.github.io/M8WebDisplay/

View, control, and hear a USB-connected M8/M8 Headless from a web browser.  


Matey (share M8 instruments)

https://www.impbox.net/matey/ 
(from @impbox)
Share, visualize, document, and comment on .m8i instruments

  • Instruments can include usage descriptions and audio samples!
  • Download All button downloads every .m8i on the site as a .zip
  • Uses discord login to authenticate


M8 Themer

https://m8.uvu.la/
(from @CheeToS)

Create, visualize, and share .m8t color themes

M8 Theme Tool (M8THE.ME)

https://m8the.me/#/ 
(from @euphemism)

Create, visualize, and share .m8t color themes (all screens; animated!)

  • Click the LOAD / SAVE buttons for .m8i files
  • Click the color boxes for swatches

PTI Tools (sliced kit creator)

Stitch & Slice - Create beat sliced Polyend Tracker instruments

Drag & drop wav files to create sliced kits  

  • Option to download as cue-marker file .WAV (M8), or .PTI ( Polyend Tracker)
  • Tool’s max slices: 48
  • WARNING: the M8 SLI command supports a maximum of 32 cue marker slices

Chordmate3

ChordMate
Chord progression design tool with a lot of features

  • Mobile-friendly
  • Outputs hex offsets for inputting into FM synth or tables.

Chordmate2

https://www.impbox.net/chordmate2/ 
Chord progression design tool

  • Plays back chord progressions
  • Displays notes that should work in the melody

Chordmate

ChordMate

Tool for figuring out nicely-voiced chord progressions

  • Outputs hex note offsets for use in FM synth or with ARP

Offline tools

m8c

GitHub - laamaa/m8c: Cross-platform M8 tracker headless client

  • Executable client for M8 headless mode.
  • Cross-platform ready
  • Can be built in Linux, Windows (with MSYS2/MINGW64) and Mac OS
  • Useful on resource-tight systems like Raspberry Pi

cuecat

GitHub - rupa/cuecat: concatenate WAV files, with cue points or even spacing

  • Glues multiple WAV files together in a single sliced file
  • Concatenates WAV files, either with a cue point at each boundary, or evenly spaced.

M8-js

GitHub - whitlockjc/m8-js: JavaScript library for parsing Dirtywave M8 files, complete with a CLI for interacting with M8 files.

  • JavaScript library for parsing M8 files
  • (Rudimentary) CLI for interacting with M8
  • Handles files from multiple firmware revisions

m8-sample-organizer

GitHub - birds-inc/m8-sample-organizer - a Python script to organize and convert your samples for the M8 tracker

  • CLI Python script to do various cleanup:
  • Converts audio files to M8-approved 16-bit WAV files
  • Removes duplicate words, punctuation and common filler phrases (like processed and final)
  • Simplifies layers of folders into one level
  • Detects new files added to your library each time you run it

M8 Files

Instruments

Templates

  • Well-designed, very well-documented, easy to customize
  • Utility tables for chord arps and pitch bends
  • Utility chains at the bottom of the template

M8 Community Starter Pack


https://archive.org/download/ChipmusicResources/M8_Community_SD-card_Starter_Pack.7z

Samples from http://httpwww.xyz

  • first few slices are silent, because the lowest note in each set is a G
  • de-glitched and prepared as slices for the M8

M8 Discord #resources

Sliced instruments

  • All 88 keys of a piano recorded in stereo and spaced evenly
  • Set slices to 88 and you've got a stereo piano instrument

Sliced drum kits

  • .wav files with embedded cue-markers
  • Set SLICE to FILE to use
  • x5 TG500 drum kits in evenly-sliced M8-friendly .wav files
  • kits are roughly in GM order

M8 .m8n Scales

  • The “JUST*.m8n” scales are designed to be used in the key of C.  If you need to change keys, transpose the scale (e.g., using the first digit of the SCA/SCG FX)  (details)

Various Discord Sample Packs