/abSynth-FM

FM Synthesizer with step sequencer for Arduboy

Primary LanguageC++

abSynth-FM

FM Synthesizer with step sequencer for Arduboy.

The FM Synthesis engine is derived from FMMelody.

Installation

You need Arduboy2 Library.

Usage

See this video.

IMAGE ALT TEXT HERE

IMAGE ALT TEXT HERE

Sequencer data format (send/receive via serial port)

Syntax

A series of bytes in hexadecimal digits, separated with delimiters.

Delimiters are newline, return, or space.

All characters from '#' to the end of line are ignored. You can use '#' to include comments in your data.

Data starts with a header section followd by a series of sequence section.

Header section

field type value
Signature uint8_t[4] 'abFM'
Version uint8_t 1
Num of Sequences uint8_t 1 or 16

Sequence section

field type value
Tempo uint8_t 56..240
Transpose int8_t -2..+2
Flags(reserved) uint8_t 128
Synth parameters uint8_t[5] 0..255
Notes int8_t[16] (below)
End mark uint8_t 128

Note data

type value description
rest -1 no sound in the step
tie -2 continue previous note in the step
note 48..84 48 for C4, 84 for C7

Example

One sequence

61 62 46 4D 01 01
3C 00 80 06 02 1B 01 02 3C 3C 43 43 45 45 43 FE 41 41 40 40 3E 3E 3C FE 80

16 sequences

61 62 46 4D 01 10
#Sequence 1-8
3C 00 80 06 02 1B 01 02 3C 3C 43 43 45 45 43 FE 41 41 40 40 3E 3E 3C FE 80
3C 00 80 05 02 1C 01 02 43 43 41 41 40 40 3E FE 43 43 41 41 40 40 3E FE 80
60 01 80 07 05 26 05 02 40 40 40 FE 40 40 40 FE 40 43 3C 3E 40 FE FF FF 80
60 01 80 07 05 26 05 02 41 41 41 41 41 40 40 40 40 3E 3E 40 3E FF 43 FE 80
60 01 80 07 05 26 05 02 41 41 41 41 41 40 40 40 43 43 41 3E 3C FF FF FF 80
4A FF 80 05 09 20 02 02 41 45 48 4C 41 45 47 4A 40 43 47 4A 40 43 45 48 80
C0 00 80 00 08 22 08 07 43 43 43 43 FF 46 46 46 46 FF 46 46 FF 46 46 46 80
94 00 80 00 08 22 08 07 3C 48 3C 45 3C 41 3C 43 3C 48 3C 4A 3C 47 3C 48 80
#Sequence 9-16
4C 00 80 07 03 20 01 02 34 39 3C 45 3B 3F 43 3F 42 FE 40 FE 3B FE 37 FE 80
7E 00 80 02 0C 00 07 07 3C 48 4B 4A 48 46 44 43 41 3F 3E 3F 3B 3C 3E 37 80
82 FF 80 04 01 10 01 02 3C 3C FF 3C 43 43 FF 43 45 FE 3C 45 41 FE 45 41 80
F0 00 80 04 01 10 01 02 3C 3E 40 42 44 46 48 4A 4C 4A 48 46 44 42 40 3E 80
78 FF 80 04 01 08 03 02 3E 3E 3E 3E 3E 3E 3E 3E 41 41 41 41 3C 3C 3C 40 80
73 FF 80 04 01 08 03 02 3C FE FE 3C FF 37 37 37 3C FE FE 3C FF FF 3C 3F 80
82 FF 80 02 0C 00 07 07 34 FF 45 FF 34 FF 45 34 FF 34 45 FF 34 FF 45 34 80
82 FF 80 02 0C 00 07 07 34 FF 45 FF 34 FF 45 34 FF 34 45 34 45 45 34 44 80