libsidplayfp
3.0.0
Main Page
Classes
Files
Examples
File List
src
builders
sidlite-builder
sidlite
WavGen.h
1
/*
2
* This file is part of libsidplayfp, a SID player engine.
3
*
4
* Copyright (C) 2025-2026 Leandro Nini
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
// Based on cRSID lightweight RealSID by Hermit (Mihaly Horvath)
22
23
#ifndef SIDLITE_WAVGEN_H
24
#define SIDLITE_WAVGEN_H
25
26
#include <utility>
27
28
namespace
SIDLite
29
{
30
31
class
ADSR
;
32
class
settings
;
33
34
using
wg_output_t = std::pair<int, int>;
35
36
class
WavGen
37
{
38
public
:
39
WavGen(
settings
*s,
unsigned
char
*regs);
40
void
reset();
41
wg_output_t clock(
const
ADSR
*adsr);
42
43
inline
unsigned
char
getOsc3()
const
{
return
oscReg; }
44
inline
unsigned
char
getEnv3()
const
{
return
envReg; }
45
46
private
:
47
unsigned
char
*regs;
48
settings
*s;
49
50
int
PhaseAccu[3];
// 28bit precision instead of 24bit
51
int
PrevPhaseAccu[3];
// (integerized ClockRatio fractionals, WebSID has similar solution)
52
unsigned
int
NoiseLFSR[3];
53
unsigned
int
PrevWavGenOut[3];
54
unsigned
char
PrevWavData[3];
55
signed
char
PrevSounDemonDigiWF[3];
56
unsigned
int
RingSourceMSB;
57
unsigned
char
SyncSourceMSBrise;
58
59
unsigned
char
oscReg;
60
unsigned
char
envReg;
61
};
62
63
}
64
65
#endif
// SIDLITE_WAVGEN_H
SIDLite::ADSR
Definition
ADSR.h:30
SIDLite::settings
Definition
sl_settings.h:32
Generated by
1.15.0