You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
VirusAttack/olcCodeJam2023Entry/soloud_vizsn.h

83 lines
1.5 KiB

/*
SoLoud audio engine
Copyright (c) 2013-2018 Jari Komppa
vizsn speech synthesizer (c) by Ville-Matias Heikkilä,
released under WTFPL, http://www.wtfpl.net/txt/copying/
(in short, "do whatever you want to")
Integration and changes to work with SoLoud by Jari Komppa,
released under same license.
*/
#ifndef SOLOUD_VIZSN_H
#define SOLOUD_VIZSN_H
#include "soloud.h"
namespace SoLoud
{
class Vizsn;
struct VizsnResonator
{
public:
float a, b, c, p1, p2;
float resonate(float i);
float antiresonate(float i);
};
struct VizsnBank
{
VizsnResonator r[10];
float pitch;
float frica, voice, aspir, bypas, breth;
};
class VizsnInstance : public AudioSourceInstance
{
public:
VizsnInstance(Vizsn *aParent);
~VizsnInstance();
virtual unsigned int getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize);
virtual bool hasEnded();
public:
Vizsn *mParent;
VizsnBank mBank0, mBank1, mBank0to1;
int mNper, mNmod, mNopen;
int mEchobuf[1024], mPtr;
int mCurrentVoiceType;
float mPitch;
char *mS;
float mBuf[2048];
unsigned int mBufwrite;
unsigned int mBufread;
float vcsrc(int aPitch, int aVoicetype);
float noisrc();
float genwave();
void setphone(VizsnBank *aB, char aP, float aPitch);
void slidePrepare(int aNumtix);
void slideTick();
int mA;
int mB;
int mOrgv;
float mGlotlast;
};
class Vizsn : public AudioSource
{
public:
char *mText;
Vizsn();
virtual ~Vizsn();
void setText(char *aText);
public:
virtual AudioSourceInstance *createInstance();
};
};
#endif