Sound Recognition v1.0 (SVGA version - SIGNAL1-directory)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Written by Bas van Gaalen and Sandor van Kollenburg in
September and November '96 as a schoolproject.
Use numberkeys on gray keypad to change the record-
and detectionlevels. And press L to switch between
Detection mode and Learning mode.
A few notes:
~~~~~~~~~~~
Sound Recognition is, as it says above, a schoolproject I made together with
Sandor van Kollenburg. The original goal was to recognize one of two
instruments using a computer. We restated this objective to make the program
a little more flexible.
It's fairly simple in use. There are basically two states the program can be
in: a detection-mode and a learning-mode. In the learning-mode SR excepts
input from the Sound Blaster which then can be saved to file by pressing
<Enter>. If SR is in detection-mode it simply scans the SB-input, performs
an FFT on the inputsignal and compares the result against a database of
pre-saved FFT-signals.
When saving the signals in learning-mode SR will save the file on the first
empty space it can find (check the SPR-directory). So if you delete *.SPR-
files, things will go badly wrong, 'cos other *.SPR-files will get
overwritten. This is not a bug, just lack of mood to make a better save-
procedure. I thought about making a small SPR-manager for this, but I leave
all that up to you. Does the word 'Overkill' ring a bell? :)
The sourcecode of this project can be found in the SRC-directory. Most units
are included, but not all. To compile you will also need some units of one
of other projects: Gfxfx2. This package can be found on my homepage:
http://www.il.ft.hse.nl.
The GUI-unit and SVGA-unit are substracts of Gfxfx3, which is still in the
making. To keep track of Gfxfx3, also see my homepage.
The FFT-unit was made by me using information from a schoolbook, as you can
read in the sourcecode. I increased the speed of the unit considerably; in
fact, it's ready for an ASM-port if you feel up to it. Some people actualy
ask money for such a thing. (Try to find a FREE FFT-source on the Web. I'll
bet you're unable to! Well, except this one...)
The SBDSP-unit I found on the Web somewhere. I hacked it a little for use
with this project; just hoping Romesh doesn't mind...
In the SPR-directory you'll a find a couple of *.SPR-files, which represent
certain 'Sound Prints', as I called them. These are recordings of transformed
(FFT) input-signals, including an Instrument-name as the first 21 bytes.
This program should be able to detect much more then simple Sounds, like a
piano, vibraphone, gitar, whatever. I testes it once with voice and it
actualy recognized yours truly...
Sound Recognition v2.0 (SVGA version - SIGNAL2-directory)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Written by Bas van Gaalen and Sandor van Kollenburg in
September and November '96 as a schoolproject.
A few notes:
~~~~~~~~~~~
This version differs from version 1 in the way it detects the input-signal.
Now it uses a scaling routine, to scale the FFT-signals from the database
to the input-signal, sothat it should be Frequency Independant. It works
perfectly nice in theory and actualy a little in practice. But not for a
very wide range of frequencies, since the pattern changes too much (and I
have a real lack of 'pattern compensators' in contrast to Star Trek).
The program records other types of information than version 1 (if
interested: check some constants at the top of the sourcecode) so the
learning-mode is cranked out.
You'll find two more *.EXE-files in the SIGNAL2-directory: TESTFREQ.EXE and
SHOWSGNL.EXE. The first is to demonstrate the scaling process. The second
is a little analyse program to analyse the samples.
In the SPR-directory you'll find a number of samples I recorded from my
keyboard/synthesizer. Those aren't actualy used by the main program, but
you can play around with 'em (I used 'em to test the theory with the
TESTFREQ.EXE-program).
Okay, just have fun using this little thingy, and if you use any of it
you know who to give credit...
Signed,
Bas van Gaalen,
Eindhoven,
January 17, 1997.
PS.: You did use the -d option when you unzipped this, didn't you?!