mirror of
https://github.com/thestk/stk
synced 2026-01-11 20:11:52 +00:00
118 lines
4.2 KiB
Plaintext
118 lines
4.2 KiB
Plaintext
TK96CPP
|
|
A ToolKit of Audio Synthesis Classes
|
|
and Instruments in C++
|
|
Perry Cook, 1995-96
|
|
|
|
Please read the Legal and Ethical notes at the
|
|
bottom of this document.
|
|
|
|
For instant fun, if you get it to compile (see
|
|
below) type TestAllNext or TestAllSGIRT. The
|
|
former makes sound files of each instrument and
|
|
saves them under the instrument name. The latter
|
|
plays in real time from a SKINI scorefile.
|
|
|
|
For even more potential fun, try the GUI and MIDI
|
|
interface demos in the directory TCLSpecs. MIDI
|
|
is SGI specific for today, look for more support
|
|
later. TCL works on SGI, maybe elsewhere, but
|
|
you must have and install Tcl/TK.
|
|
|
|
For more documentation on this ToolKit, the classes,
|
|
etc, read the file HIERARCH.txt and the individual
|
|
class definitions.
|
|
|
|
SGI vs. NeXT vs. Intel vs. the world:
|
|
See Object.h and Makefile for machine-specific
|
|
items.
|
|
|
|
Initial public release. Some objects still beta.
|
|
|
|
This whole world was created with no particular
|
|
hardware in mind. These examples are intended
|
|
to be tutorial in nature, as a platform for the
|
|
continuation of my research, and as a possible
|
|
starting point for a software synthesis system.
|
|
The basic motivation was to create the necessary
|
|
unit generators to do the synthesis, processing,
|
|
and control that I want to do and teach about.
|
|
Little thought for optimization was given (see
|
|
Object.cpp), and therefore improvements, especially
|
|
speed enhancements, should be possible with
|
|
these classes. It was written with some basic
|
|
concepts in mind about how to let compilers
|
|
optimize (see Adrian Freed's home page for some
|
|
nice experience-based thoughts on that topic).
|
|
|
|
Your question at this point might be, "But Perry,
|
|
with CMix, CMusic, CSound, CShells, CMonkeys, etc.
|
|
already cluttering the landscape, why a new set
|
|
of stupid C functions for music synthesis and
|
|
processing?" The answers lie below.
|
|
|
|
1) I needed to port many of the things I've done
|
|
into something which is generic enough to port
|
|
further to different machines.
|
|
|
|
2) I really plan to document this stuff, so that
|
|
you don't have to be me to figure out what's
|
|
going on. (I'll probably be sorry I said this
|
|
in a couple of years, when even I can't figure
|
|
out what I was thinking.)
|
|
|
|
3) The classic difficulties most people have in
|
|
trying to implement physical models are:
|
|
|
|
A) They have trouble understanding the papers,
|
|
and/or in turning the theory into practice.
|
|
|
|
B) The Physical Model instruments are a pain to get
|
|
to oscillate, and coming up with stable and
|
|
meaningful parameter values is required to
|
|
get the models to work at all.
|
|
|
|
This set of C++ unitgenerators and instruments
|
|
might help to diminish the scores of EMails I
|
|
get asking what to do with those block diagrams
|
|
I put in my papers.
|
|
|
|
4) I wanted to try some new stuff with modal synthesis,
|
|
and implement some classic FM patches as well.
|
|
|
|
5) I wanted to reimplement, and newly implement
|
|
more of the intelligent and physical performer
|
|
models I've talked about in some of my papers.
|
|
But I wanted to do it in a portable way, and in
|
|
such a way that I can hook up modules quickly.
|
|
I also wanted to make these instruments connectable
|
|
to such player objects, so folks like Brad Garton
|
|
who really think a lot about the players can connect
|
|
them to my instruments, a lot about which I think.
|
|
|
|
6) More rationalizations to follow . . .
|
|
|
|
***********************************************************
|
|
Legal and Ethical:
|
|
|
|
This software was designed and created to be
|
|
made publicly available for free, primarily for
|
|
academic purposes, so if you use it, pass it on
|
|
with this documentation, and for free.
|
|
|
|
If you make a million dollars with it, give me some.
|
|
If you make compositions with it, put me in the
|
|
program notes.
|
|
|
|
Some of the concepts are covered by various patents,
|
|
some known to me and likely others which are unknown.
|
|
Many of the ones known to me are administered by the
|
|
Stanford Office of Technology and Licensing.
|
|
|
|
The good news is that large hunks of the techniques
|
|
used here are public domain. To avoid subtle legal
|
|
issues, I'll not state what's freely useable here,
|
|
but I'll try to note within the various classes
|
|
where certain things are likely to be protected by
|
|
patents.
|
|
***********************************************************
|