Beispiel #1
0
CWToneGen
newCWToneGen (
			  REAL gain,	// dB
			  REAL freq,	// ms
			  REAL rise,	// ms
			  REAL fall,	// ms
			  int size,		// samples
			  REAL samplerate) // samples/sec
{
	CWToneGen cwt = (CWToneGen) safealloc (1, sizeof (CWToneGenDesc),
		"CWToneGenDesc");

	setCWToneGenVals (cwt, gain, freq, rise, fall);
	cwt->size = size;
	cwt->sr = samplerate;

	cwt->osc.gen = newOSC (cwt->size,
		ComplexTone,
		(double) cwt->osc.freq, 0.0, cwt->sr, "CWTone osc");

	// overload oscillator buf
	cwt->buf = newCXB (cwt->size, OSCCbase (cwt->osc.gen), "CWToneGen buf");

	return cwt;
}
Beispiel #2
0
DttSP_EXP void
SetKeyerRamp (REAL newramp)
{
	EnterCriticalSection(update_ok);
	ramp = newramp;
	setCWToneGenVals (gen, gain, freq, ramp, ramp);
	LeaveCriticalSection(update_ok);
}
Beispiel #3
0
DttSP_EXP void
SetKeyerFreq (REAL newfreq)
{
	EnterCriticalSection(update_ok);
	freq = -newfreq;
	setCWToneGenVals (gen, gain, freq, ramp, ramp);
	LeaveCriticalSection(update_ok);
}
Beispiel #4
0
DttSP_EXP void
SetKeyerGain (REAL newgain)
{
	if ((newgain >= 0.0) && (newgain <= 1.0))
	{
		EnterCriticalSection(update_ok);
		gain = (REAL) (20.0 * log10 (newgain));
		setCWToneGenVals (gen, gain, freq, ramp, ramp);
		LeaveCriticalSection(update_ok);
	}
}