// ==========================================
// CHECK INPUT CONFIGURATION (I 1.1)
// ==========================================
A I 1.1
SPB M001
// If Input = 0: Reset everything
L 0
T MW 10
SET
R M 12.0
CLR
= M 12.1
= Q 1.0
BEU
// ==========================================
// STEP 1: MELODY STATE MACHINE
// ==========================================
M001: L MW 10
L 0
==I
SPBN ST01
L W#16#0018
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST01: L MW 10
L 1
==I
SPBN ST02
L W#16#0018
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST02: L MW 10
L 2
==I
SPBN ST03
L W#16#0018
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST03: L MW 10
L 3
==I
SPBN ST04
L W#16#0030
T #Tmp_Freq
L S5T#350MS
T #Tmp_Duration
JU PLAY
ST04: L MW 10
L 4
==I
SPBN ST05
L W#16#0014
T #Tmp_Freq
L S5T#150MS
T #Tmp_Duration
JU PLAY
ST05: L MW 10
L 5
==I
SPBN ST_E
L W#16#0018
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST_E: L 0
T MW 10
CLR
= Q 1.0
BEU
// ==========================================
// STEP 2: NOTE DURATION CONTROL
// ==========================================
PLAY: AN M 12.0
L #Tmp_Duration
SE T 10
SET
S M 12.0
A T 10
SPB GEN
SET
R "M 12.0"
L MW 10
L 1
+I
T MW 10
CLR
= Q 1.0
BEU
// ==========================================
// STEP 3: FREQUENCY GENERATION
// ==========================================
GEN: AN M 12.2
L #Tmp_Freq
SD T 11
A T 11
= M 12.2
FP M 12.3
SPBN OUT
AN M 12.1
= M 12.1
OUT: A M 12.1
= Q 1.0