mirror of
https://github.com/birth1mark/orbis8.git
synced 2026-10-28 22:06:46 +01:00
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
//
|
|
// ZEPTO-8 — Fantasy console emulator
|
|
//
|
|
// Copyright © 2016—2020 Sam Hocevar <sam@hocevar.net>
|
|
//
|
|
// This program is free software. It comes without any warranty, to
|
|
// the extent permitted by applicable law. You can redistribute it
|
|
// and/or modify it under the terms of the Do What the Fuck You Want
|
|
// to Public License, Version 2, as published by the WTFPL Task Force.
|
|
// See http://www.wtfpl.net/ for more details.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
namespace z8
|
|
{
|
|
|
|
// Synth parameters for waveform generation
|
|
struct synth_param
|
|
{
|
|
uint8_t instrument = 0;
|
|
bool custom = false;
|
|
uint8_t filters = 0;
|
|
uint8_t key = 0;
|
|
float freq = 0;
|
|
float volume = 0;
|
|
float phi = 0;
|
|
float last_advance = 0;
|
|
float last_sample = 0;
|
|
bool is_music = false;
|
|
};
|
|
|
|
//
|
|
// A waveform generator
|
|
//
|
|
|
|
class synth
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
INST_TRIANGLE = 0, // Triangle signal
|
|
INST_TILTED_SAW = 1, // Slanted triangle
|
|
INST_SAW = 2, // Sawtooth
|
|
INST_SQUARE = 3, // Square signal
|
|
INST_PULSE = 4, // Asymmetric square signal
|
|
INST_ORGAN = 5, // Some triangle stuff again
|
|
INST_NOISE = 6,
|
|
INST_PHASER = 7,
|
|
};
|
|
|
|
static float waveform(synth_param ¶ms);
|
|
};
|
|
|
|
} // namespace z8
|