The program is running on a C64 NTSC with
a 1571 disk
drive, connected to a VGA monitor through
an external TV tuner, using the
s-video input.
As a personal challenge, I wanted the
entire program to be less of 4K in
size, and that is the reason
why I reused all the sound I could. The
program uses 312 bytes of digital
sound, 296 of these corresponding
to speech data. The sound is
generated at
a rate of 7,8 KHz, synchronized with the
video, and there is not
a significant difference of speed running
the program on PAL or NTSC
machines.
Testing a singing
synthesizer on a C64
This demo program is based on the TAV64
v1.0 engine, with the addition of some
routines to generate the musical notes
from C1 to C3. The program is just the
first test of the new singing routines,
using a example song in order to determine
the necessary parameters to get the
correct notes and durations found in a
score. To mantain the sound quality, the
notes are restricted to the range from C1
to C3, since octave 3 requires to reduce
the sample count per cycle to values below
an acceptable quality, given the
relatively low 7.8KHz sample rate used by
the speech engine.
I'm currently working on the definition of
the text language necessary to represent a
song, ideally should be compatible with
the current speech commands, and it should
be possible to combine commands to speak
and to sing in the same text. The song the
demo sings is Argentina's National Anthem,
chosen because is old enough to be public
domain, and becase I could get the score.
The notes could be wrong, since I don't
fully understand the musical notation, and
I had to learn as I developed the program.
Testing TAV on
a (Sinclair) Spectrum 48K
This video shows TAVZX beta 3. To run the
synthesizer, the
Z$ variable should be previously assigned
a text, then call the program,
which searches for Z$ into the BASIC
variables area, in case Z$
doesnot exist, the program returns without
error, in case Z$ is found,
the text is processed. The program runs on
any Spectrum model, since is
designed for the 48K model, driving the
internal speaker and MIC output. The
generated sound is digital, with a sample
rate of about 9.5KHz and 4-bit quality,
using pulse-width modulation. The speech
engine could sing, but there is no
interface defined yet for the user to
control that feature. The
video was captured from the composite
video output of a Czerweny
Spectrum (argentinian clone) and the audio
from MIC output.
Testing
TAV81 on
EightyOne emulator
This is TAV81 beta 5, a port of the
Spectrum
48K version, generating sound through the
TV signal. The program reserves 5000
bytes in a 0 REM line. Just as the
Spectrum version, the
Z$ variable must be assigned a text before
running the synthesizer, if Z$
is found in the BASIC variables area, the
text is processed, otherwise
the program returns without error. A 16K
RAM expansion is required to
run the program, which I don't currently
own, so the video
shows TAV running on EightyOne. The sound
quality is the same as in the
Spectrum version, 9.5KHz sample rate,
4-bit quality, using pulse-width
modulation.