mirror of
https://github.com/thestk/stk
synced 2026-01-11 20:11:52 +00:00
Compare commits
185 Commits
4.4.4
...
arielelkin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
889328c3c1 | ||
|
|
62416d7e3f | ||
|
|
9627701d04 | ||
|
|
9966f06757 | ||
|
|
56bcdc32ed | ||
|
|
2ddc79e3bd | ||
|
|
96b1a72186 | ||
|
|
2a6ada02a7 | ||
|
|
488301223a | ||
|
|
08f71c8fa9 | ||
|
|
e03aa486dd | ||
|
|
5dd605ecfd | ||
|
|
77a5cfa4aa | ||
|
|
77bdb45575 | ||
|
|
ff52b9f0b0 | ||
|
|
fe0f5d7f96 | ||
|
|
e1aa259517 | ||
|
|
95fcd14213 | ||
|
|
a5bef56e76 | ||
|
|
fb50d69e08 | ||
|
|
126ff9d9e1 | ||
|
|
83b75ed339 | ||
|
|
f0f6668f25 | ||
|
|
a506acc708 | ||
|
|
3e42e3db3f | ||
|
|
852bdec0c9 | ||
|
|
9d8673a24e | ||
|
|
57344a11a9 | ||
|
|
00da5562cd | ||
|
|
b02298a9f4 | ||
|
|
d1b4dd485b | ||
|
|
6d5a779879 | ||
|
|
7ea8b10c6a | ||
|
|
0e69055579 | ||
|
|
c2833d356a | ||
|
|
0f16f683c9 | ||
|
|
f3b1f35a8c | ||
|
|
262fe5a2d1 | ||
|
|
5e79513e5a | ||
|
|
f13866e696 | ||
|
|
9533f2bc66 | ||
|
|
8c0ad97a25 | ||
|
|
87461b1471 | ||
|
|
58fc744ea4 | ||
|
|
35f66c806e | ||
|
|
0a7c541cdc | ||
|
|
0e55d2d2b1 | ||
|
|
c1c314e7d6 | ||
|
|
84d947c750 | ||
|
|
05560b102d | ||
|
|
759fc187bc | ||
|
|
46be0d56c3 | ||
|
|
032e76da70 | ||
|
|
aae7f609cf | ||
|
|
d959a1167d | ||
|
|
c9f8c017bc | ||
|
|
6094f40399 | ||
|
|
a2fb59f476 | ||
|
|
f905623d10 | ||
|
|
b196c58c75 | ||
|
|
20b9411a5a | ||
|
|
bc3cfa8fb5 | ||
|
|
d1acfb07ed | ||
|
|
b5f046871b | ||
|
|
1de1f1e63d | ||
|
|
4ce317a5a7 | ||
|
|
2e8a0cdd50 | ||
|
|
5f9f7f6f08 | ||
|
|
a2be4bc721 | ||
|
|
2437623d67 | ||
|
|
0063a57dcb | ||
|
|
cc568a58c1 | ||
|
|
1799064d6f | ||
|
|
540d45dbbd | ||
|
|
222f81c1c1 | ||
|
|
cbb2fea120 | ||
|
|
4e4e8053a5 | ||
|
|
dc2bfe01d0 | ||
|
|
ea52f1f1a8 | ||
|
|
1c5d42e64c | ||
|
|
f1c929a6c4 | ||
|
|
d6dba8859f | ||
|
|
069cc1c339 | ||
|
|
32574e97d6 | ||
|
|
a0638ad024 | ||
|
|
3ad1a59585 | ||
|
|
90c33cae06 | ||
|
|
1ce9b33ca3 | ||
|
|
3caee97842 | ||
|
|
887baf05f8 | ||
|
|
aec65bcb76 | ||
|
|
db6fc1f0df | ||
|
|
1a2509ead9 | ||
|
|
7388163b7c | ||
|
|
3d9bb4051b | ||
|
|
92ca28918f | ||
|
|
32a3b551d8 | ||
|
|
a9a654862f | ||
|
|
a239b58651 | ||
|
|
caf7d2f2eb | ||
|
|
3ee62e42d0 | ||
|
|
afa3069dea | ||
|
|
2c136e82ef | ||
|
|
17b45a1dad | ||
|
|
dbecf1f7f0 | ||
|
|
4c8e0dec43 | ||
|
|
914a76cae0 | ||
|
|
979c6877c9 | ||
|
|
fff3e0b887 | ||
|
|
a027a515af | ||
|
|
1f0cad64dd | ||
|
|
3d3ab8b86a | ||
|
|
e4146d6dae | ||
|
|
79cdf449b5 | ||
|
|
ce076784a4 | ||
|
|
0f6f1c4194 | ||
|
|
b2cefb3b53 | ||
|
|
1468ad7e12 | ||
|
|
eade52ff5c | ||
|
|
4e90d3ffd2 | ||
|
|
b2c4aa87bb | ||
|
|
85ca274a33 | ||
|
|
eccc38a093 | ||
|
|
3ebdbe6977 | ||
|
|
742cf6a202 | ||
|
|
b7cbce0ced | ||
|
|
b5e24dec52 | ||
|
|
8658acabee | ||
|
|
0e7077c0f3 | ||
|
|
e2f4193e1a | ||
|
|
f38bcceed7 | ||
|
|
9e2cad425a | ||
|
|
3e43d5e297 | ||
|
|
8055f1d040 | ||
|
|
5e145ff682 | ||
|
|
042dea6ff7 | ||
|
|
04ba9c694e | ||
|
|
40fe7dae1d | ||
|
|
cafad844ad | ||
|
|
5749dc1c55 | ||
|
|
8284487d4b | ||
|
|
193a8ebb2e | ||
|
|
84cf7c5344 | ||
|
|
11ff75339d | ||
|
|
96543e1b84 | ||
|
|
416c02c83c | ||
|
|
08af1a08b4 | ||
|
|
4c6e8aee76 | ||
|
|
b2fbc4f302 | ||
|
|
7aefe7caff | ||
|
|
00f822e00c | ||
|
|
c2ae82f200 | ||
|
|
72786d0b72 | ||
|
|
32f23f9538 | ||
|
|
b0e8953a6f | ||
|
|
586eeac02e | ||
|
|
1874c0efa9 | ||
|
|
9e6a25d046 | ||
|
|
8912a5c0af | ||
|
|
b017472cdf | ||
|
|
ed754183e3 | ||
|
|
add961c2f4 | ||
|
|
e619de2a65 | ||
|
|
5e68ce4eeb | ||
|
|
ae9e437ae8 | ||
|
|
4699f8ef59 | ||
|
|
80db57e79b | ||
|
|
4078d9309d | ||
|
|
18e210ea94 | ||
|
|
3369940892 | ||
|
|
c57c52c17e | ||
|
|
1bbd2c003a | ||
|
|
80561731fe | ||
|
|
4f0c39e7eb | ||
|
|
b089236578 | ||
|
|
deaabdd041 | ||
|
|
caeaa5778c | ||
|
|
c298839886 | ||
|
|
57e3fe7dae | ||
|
|
4c8691eb08 | ||
|
|
3d0db65b1c | ||
|
|
c8b7b67680 | ||
|
|
72095c0a3d | ||
|
|
e449ac3583 | ||
|
|
a117cd0bb1 |
188
.gitignore
vendored
Normal file
188
.gitignore
vendored
Normal file
@@ -0,0 +1,188 @@
|
||||
#####
|
||||
# OS X temporary files that should never be committed
|
||||
#
|
||||
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
|
||||
|
||||
.DS_Store
|
||||
|
||||
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
|
||||
|
||||
.Trashes
|
||||
|
||||
# c.f. http://www.westwind.com/reference/os-x/invisibles.html
|
||||
|
||||
*.swp
|
||||
|
||||
# *.lock - this is used and abused by many editors for many different things.
|
||||
# For the main ones I use (e.g. Eclipse), it should be excluded
|
||||
# from source-control, but YMMV
|
||||
|
||||
*.lock
|
||||
|
||||
#
|
||||
# profile - REMOVED temporarily (on double-checking, this seems incorrect; I can't find it in OS X docs?)
|
||||
#profile
|
||||
|
||||
|
||||
####
|
||||
# Xcode temporary files that should never be committed
|
||||
#
|
||||
# NB: NIB/XIB files still exist even on Storyboard projects, so we want this...
|
||||
|
||||
*~.nib
|
||||
|
||||
|
||||
####
|
||||
# Xcode build files -
|
||||
#
|
||||
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"
|
||||
|
||||
DerivedData/
|
||||
|
||||
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"
|
||||
|
||||
build/
|
||||
|
||||
|
||||
#####
|
||||
# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
|
||||
#
|
||||
# This is complicated:
|
||||
#
|
||||
# SOMETIMES you need to put this file in version control.
|
||||
# Apple designed it poorly - if you use "custom executables", they are
|
||||
# saved in this file.
|
||||
# 99% of projects do NOT use those, so they do NOT want to version control this file.
|
||||
# ..but if you're in the 1%, comment out the line "*.pbxuser"
|
||||
|
||||
# .pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html
|
||||
|
||||
*.pbxuser
|
||||
|
||||
# .mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
|
||||
|
||||
*.mode1v3
|
||||
|
||||
# .mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
|
||||
|
||||
*.mode2v3
|
||||
|
||||
# .perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file
|
||||
|
||||
*.perspectivev3
|
||||
|
||||
# NB: also, whitelist the default ones, some projects need to use these
|
||||
!default.pbxuser
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.perspectivev3
|
||||
|
||||
|
||||
####
|
||||
# Xcode 4 - semi-personal settings
|
||||
#
|
||||
#
|
||||
# OPTION 1: ---------------------------------
|
||||
# throw away ALL personal settings (including custom schemes!
|
||||
# - unless they are "shared")
|
||||
#
|
||||
# NB: this is exclusive with OPTION 2 below
|
||||
xcuserdata
|
||||
|
||||
# OPTION 2: ---------------------------------
|
||||
# get rid of ALL personal settings, but KEEP SOME OF THEM
|
||||
# - NB: you must manually uncomment the bits you want to keep
|
||||
#
|
||||
# NB: this *requires* git v1.8.2 or above; you may need to upgrade to latest OS X,
|
||||
# or manually install git over the top of the OS X version
|
||||
# NB: this is exclusive with OPTION 1 above
|
||||
#
|
||||
#xcuserdata/**/*
|
||||
|
||||
# (requires option 2 above): Personal Schemes
|
||||
#
|
||||
#!xcuserdata/**/xcschemes/*
|
||||
|
||||
####
|
||||
# XCode 4 workspaces - more detailed
|
||||
#
|
||||
# Workspaces are important! They are a core feature of Xcode - don't exclude them :)
|
||||
#
|
||||
# Workspace layout is quite spammy. For reference:
|
||||
#
|
||||
# /(root)/
|
||||
# /(project-name).xcodeproj/
|
||||
# project.pbxproj
|
||||
# /project.xcworkspace/
|
||||
# contents.xcworkspacedata
|
||||
# /xcuserdata/
|
||||
# /(your name)/xcuserdatad/
|
||||
# UserInterfaceState.xcuserstate
|
||||
# /xcsshareddata/
|
||||
# /xcschemes/
|
||||
# (shared scheme name).xcscheme
|
||||
# /xcuserdata/
|
||||
# /(your name)/xcuserdatad/
|
||||
# (private scheme).xcscheme
|
||||
# xcschememanagement.plist
|
||||
#
|
||||
#
|
||||
|
||||
####
|
||||
# Xcode 4 - Deprecated classes
|
||||
#
|
||||
# Allegedly, if you manually "deprecate" your classes, they get moved here.
|
||||
#
|
||||
# We're using source-control, so this is a "feature" that we do not want!
|
||||
|
||||
*.moved-aside
|
||||
|
||||
####
|
||||
# Files generated by automake
|
||||
|
||||
Makefile
|
||||
autom4te.cache
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
projects/demo/Makefile
|
||||
projects/demo/stk-demo
|
||||
projects/demo/Release
|
||||
projects/demo/Debug
|
||||
projects/effects/Makefile
|
||||
projects/effects/effects
|
||||
projects/effects/Release
|
||||
projects/effects/Debug
|
||||
projects/eguitar/Makefile
|
||||
projects/eguitar/eguitar
|
||||
projects/eguitar/Release
|
||||
projects/eguitar/Debug
|
||||
projects/examples/Makefile
|
||||
projects/examples/audioprobe
|
||||
projects/examples/bethree
|
||||
projects/examples/controlbee
|
||||
projects/examples/crtsine
|
||||
projects/examples/duplex
|
||||
projects/examples/foursine
|
||||
projects/examples/grains
|
||||
projects/examples/inetIn
|
||||
projects/examples/inetOut
|
||||
projects/examples/libMakefile
|
||||
projects/examples/midiprobe
|
||||
projects/examples/play
|
||||
projects/examples/playsmf
|
||||
projects/examples/record
|
||||
projects/examples/rtsine
|
||||
projects/examples/sine
|
||||
projects/examples/sineosc
|
||||
projects/examples/threebees
|
||||
projects/examples/Release
|
||||
projects/examples/Debug
|
||||
projects/ragamatic/Makefile
|
||||
projects/ragamatic/ragamat
|
||||
projects/ragamatic/Release
|
||||
projects/ragamatic/Debug
|
||||
src/libstk.a
|
||||
src/Release
|
||||
src/Debug
|
||||
src/Makefile
|
||||
42
INSTALL
42
INSTALL
@@ -1,42 +0,0 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
|
||||
The Synthesis ToolKit in C++ can be used in a variety of ways, depending on your particular needs. Some people simmply choose the classes they need for a particular project and copy those to their project directory. Others like to compile and link to a library of object files. STK was not designed with one particular style of use in mind.
|
||||
|
||||
To configure and compile (on Unix systems and MinGW):
|
||||
|
||||
1. Unpack the STK distribution (tar -xzf stk-4.x.x.tar.gz).
|
||||
2. From within the directory containing this file, run configure:
|
||||
|
||||
./configure
|
||||
|
||||
3. From within each project directory, type "make".
|
||||
4. To compile a library of objects, type "make" from within the src directory.
|
||||
|
||||
Several options can be passed to configure, including:
|
||||
|
||||
--disable-realtime = only compile generic non-realtime classes
|
||||
--enable-debug = enable various debug output
|
||||
--with-alsa = choose native ALSA API support (default, linux only)
|
||||
--with-oss = choose native OSS API support (linux only)
|
||||
--with-jack = choose native JACK server API support (linux and macintosh OS-X)
|
||||
--with-core = choose OS-X Core Audio API (macintosh OS-X only)
|
||||
--with-asio = choose ASIO API support (windows only)
|
||||
--with-ds = choose DirectSound API support (windows only)
|
||||
|
||||
It is now possible to specify more than one audio and MIDI API where supported. Note, however, that the ALSA library is required in order to compile the RtMidi class in Linux if the "--with-oss" option is provided (only the OSS audio API will be used, not the OSS MIDI API). Typing "./configure --help" will display all the available options. In addition, it is possible to specify the RAWWAVES and INCLUDE paths to configure as (ex. to set to /home/me/rawwaves and /home/me/include):
|
||||
|
||||
./configure RAWWAVE_PATH='$(HOME)/rawwaves/'
|
||||
./configure INCLUDE_PATH='$(HOME)/include/'
|
||||
|
||||
The ending "/" is required for the RAWWAVES path. The default behavior will set a relative path that works for the project files included with the distribution (assuming they are not moved). You can also change the RAWWAVE_PATH dynamically via the static Stk::setRawwavePath() function.
|
||||
|
||||
If you wish to use a different compiler than that selected by configure, specify that compiler in the command line (ex. to use CC):
|
||||
|
||||
./configure CXX=CC
|
||||
|
||||
|
||||
For Windows Users:
|
||||
|
||||
MinGW support is provided in the configure script. In addition, Visual C++ 6.0 project files are included for each of the example STK projects, though these may not work with more recent versions of Visual Studio.
|
||||
58
INSTALL.md
Normal file
58
INSTALL.md
Normal file
@@ -0,0 +1,58 @@
|
||||
% The Synthesis ToolKit in C++ (STK)
|
||||
% Perry R. Cook and Gary P. Scavone
|
||||
% 1995--2016
|
||||
|
||||
# The Synthesis ToolKit in C++ (STK)
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
The Synthesis ToolKit in C++ can be used in a variety of ways, depending on your particular needs. Some people simply choose the classes they need for a particular project and copy those to their project directory. Others like to compile and link to a library of object files. STK was not designed with one particular style of use in mind.
|
||||
|
||||
## Unix systems and MinGW
|
||||
|
||||
1. If you downloaded the software from the git repository, first run autoconf,
|
||||
|
||||
autoconf
|
||||
|
||||
otherwise, if you downloaded the software from the STK source distribution, unpack the tar file,
|
||||
|
||||
tar -xzf stk-4.x.x.tar.gz
|
||||
|
||||
2. From within the directory containing this file, run configure:
|
||||
|
||||
./configure
|
||||
|
||||
3. From within each project directory, type `make`.
|
||||
|
||||
4. To compile a library of objects, type `make` from within the `src` directory.
|
||||
|
||||
Several options can be passed to configure, including:
|
||||
|
||||
--disable-realtime = only compile generic non-realtime classes
|
||||
--enable-debug = enable various debug output
|
||||
--with-alsa = choose native ALSA API support (default, linux only)
|
||||
--with-oss = choose native OSS API support (linux only)
|
||||
--with-jack = choose native JACK server API support (linux and macintosh OS-X)
|
||||
--with-core = choose OS-X Core Audio API (macintosh OS-X only)
|
||||
--with-asio = choose ASIO API support (windows only)
|
||||
--with-ds = choose DirectSound API support (windows only)
|
||||
--with-wasapi = choose Windows Audio Session API support (windows only)
|
||||
|
||||
It is now possible to specify more than one audio and MIDI API where supported. Note, however, that the ALSA library is required in order to compile the RtMidi class in Linux if the `--with-oss` option is provided (only the OSS audio API will be used, not the OSS MIDI API). Typing `./configure --help` will display all the available options. In addition, it is possible to specify the RAWWAVES and INCLUDE paths to configure as (ex. to set to /home/me/rawwaves and /home/me/include):
|
||||
|
||||
./configure RAWWAVE_PATH='$(HOME)/rawwaves/'
|
||||
./configure INCLUDE_PATH='$(HOME)/include/'
|
||||
|
||||
The ending "/" is required for the RAWWAVES path. The default behavior will set a relative path that works for the project files included with the distribution (assuming they are not moved). You can also change the RAWWAVE_PATH dynamically via the static Stk::setRawwavePath() function.
|
||||
|
||||
If you wish to use a different compiler than that selected by configure, specify that compiler in the command line (ex. to use CC):
|
||||
|
||||
./configure CXX=CC
|
||||
|
||||
|
||||
## Windows
|
||||
|
||||
MinGW support is provided in the configure script. In addition, Visual C++ 6.0 project files are included for each of the example STK projects, though these may not work with more recent versions of Visual Studio.
|
||||
|
||||
##iOS
|
||||
|
||||
You can integrate the STK in iOS projects either by using its iOS static library or Cocoapods. See the [iOS README file](iOS/README-iOS.md) for instructions.
|
||||
27
LICENSE
Normal file
27
LICENSE
Normal file
@@ -0,0 +1,27 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
Copyright (c) 1995--2016 Perry R. Cook and Gary P. Scavone
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Any person wishing to distribute modifications to the Software is
|
||||
asked to send the modifications to the original developer so that they
|
||||
can be incorporated into the canonical version. This is, however, not
|
||||
a binding provision of this license.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
11
Makefile.in
11
Makefile.in
@@ -2,29 +2,40 @@
|
||||
|
||||
RM = /bin/rm
|
||||
|
||||
REALTIME = @realtime@
|
||||
|
||||
all :
|
||||
cd src && $(MAKE)
|
||||
cd projects/demo && $(MAKE) libdemo
|
||||
ifeq ($(REALTIME),yes)
|
||||
cd projects/effects && $(MAKE) libeffects
|
||||
cd projects/ragamatic && $(MAKE) libragamat
|
||||
cd projects/eguitar && $(MAKE) libeguitar
|
||||
endif
|
||||
cd projects/examples && $(MAKE) -f libMakefile
|
||||
|
||||
clean :
|
||||
$(RM) -f *~
|
||||
cd src && $(MAKE) clean
|
||||
cd projects/demo && $(MAKE) clean
|
||||
ifeq ($(REALTIME),yes)
|
||||
cd projects/effects && $(MAKE) clean
|
||||
cd projects/ragamatic && $(MAKE) clean
|
||||
cd projects/eguitar && $(MAKE) clean
|
||||
endif
|
||||
cd projects/examples && $(MAKE) clean
|
||||
|
||||
distclean: clean
|
||||
$(RM) -rf config.log config.status autom4te.cache Makefile
|
||||
cd src && $(MAKE) distclean
|
||||
cd projects/demo && $(MAKE) distclean
|
||||
ifeq ($(REALTIME),yes)
|
||||
cd projects/effects && $(MAKE) distclean
|
||||
cd projects/ragamatic && $(MAKE) distclean
|
||||
cd projects/eguitar && $(MAKE) distclean
|
||||
endif
|
||||
cd projects/examples && $(MAKE) distclean
|
||||
|
||||
install:
|
||||
$(MAKE) -C src install
|
||||
|
||||
|
||||
@@ -1,21 +1,29 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
# The Synthesis ToolKit in C++ (STK)
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
This distribution of the Synthesis ToolKit in C++ (STK) contains the following:
|
||||
|
||||
include: STK class header files
|
||||
src: STK class source files
|
||||
rawwaves: STK audio files (1-channel, 16-bit, big-endian)
|
||||
doc: STK documentation
|
||||
projects: example STK projects and programs
|
||||
* [`include`](include/): STK class header files
|
||||
* [`src`](src/): STK class source files
|
||||
* [`rawwaves`](rawwaves): STK audio files (1-channel, 16-bit, big-endian)
|
||||
* [`doc`](doc): STK documentation
|
||||
* [`projects`](projects): example STK projects and programs
|
||||
|
||||
Please read the Legal and Ethical notes near the bottom of this document.
|
||||
Please read the [Legal and Ethical notes](#legal-and-ethical) near the bottom of this document and the [License](LICENSE).
|
||||
|
||||
For compiling and installing STK, see the INSTALL file in this directory.
|
||||
For compiling and installing STK, see the [INSTALL.md](INSTALL.md) file in this directory.
|
||||
|
||||
##Contents
|
||||
|
||||
OVERVIEW:
|
||||
* [Overview](#overview)
|
||||
* [System Requirements](#system-requirements)
|
||||
* [What's New (and not so new)](#whats-new-and-not-so-new)
|
||||
* [Disclaimer](#disclaimer)
|
||||
* [Legal and Ethical](#legal-and-ethical)
|
||||
* [Further Reading](#further-reading)
|
||||
* [Perry's Notes From the Original Distribution](#perrys-notes-from-the-original-distribution)
|
||||
|
||||
# OVERVIEW
|
||||
|
||||
The Synthesis ToolKit in C++ (STK) is a set of open source audio
|
||||
signal processing and algorithmic synthesis classes written in the C++
|
||||
@@ -63,7 +71,7 @@ and SKINI (Synthesis ToolKit Instrument Network Interface, a MIDI-like
|
||||
text message synthesis control format).
|
||||
|
||||
|
||||
SYSTEM REQUIREMENTS:
|
||||
# SYSTEM REQUIREMENTS
|
||||
|
||||
See the individual README's (eg. README-linux) in the /doc directory
|
||||
for platform specific information and system requirements. In
|
||||
@@ -73,7 +81,7 @@ example programs. To use the Tcl/Tk GUIs, you will need Tcl/Tk
|
||||
version 8.0 or higher.
|
||||
|
||||
|
||||
WHAT'S NEW (AND NOT SO NEW):
|
||||
# WHAT'S NEW (AND NOT SO NEW)
|
||||
|
||||
Despite being available in one form or another since 1996, we still
|
||||
consider STK to be alpha software. We attempt to maintain backward
|
||||
@@ -113,7 +121,7 @@ configure script generates a Makefile in the src directory that will
|
||||
accomplish that.
|
||||
|
||||
|
||||
DISCLAIMER:
|
||||
# DISCLAIMER
|
||||
|
||||
You probably already guessed this, but just to be sure, we don't
|
||||
guarantee anything works. :-) It's free ... what do you expect? If
|
||||
@@ -122,7 +130,7 @@ can also make suggestions, but again, no guarantees. Send email to
|
||||
the mail list.
|
||||
|
||||
|
||||
LEGAL AND ETHICAL:
|
||||
# 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
|
||||
@@ -140,39 +148,8 @@ public domain. To avoid subtle legal issues, we'll not state what's
|
||||
freely useable here, but we'll try to note within the various classes
|
||||
where certain things are likely to be protected by patents.
|
||||
|
||||
LICENSE:
|
||||
|
||||
STK WWW site: http://ccrma.stanford.edu/software/stk/
|
||||
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
Copyright (c) 1995-2012 Perry R. Cook and Gary P. Scavone
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Any person wishing to distribute modifications to the Software is
|
||||
asked to send the modifications to the original developer so that they
|
||||
can be incorporated into the canonical version. This is, however, not
|
||||
a binding provision of this license.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
FURTHER READING:
|
||||
# FURTHER READING
|
||||
|
||||
For complete documentation on this ToolKit, the classes, etc., see the
|
||||
doc directory of the distribution or surf to
|
||||
@@ -180,7 +157,7 @@ http://ccrma.stanford.edu/software/stk/. Also check the platform
|
||||
specific README's for specific system requirements.
|
||||
|
||||
|
||||
PERRY'S NOTES FROM THE ORIGINAL DISTRIBUTION:
|
||||
# PERRY'S NOTES FROM THE ORIGINAL DISTRIBUTION
|
||||
|
||||
This whole world was created with no particular hardware in mind.
|
||||
These examples are intended to be tutorial in nature, as a platform
|
||||
@@ -203,11 +180,11 @@ The answers lie below.
|
||||
|
||||
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.
|
||||
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.
|
||||
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++ unit generators 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.
|
||||
This set of C++ unit generators 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.
|
||||
|
||||
1592
config/config.guess
vendored
1592
config/config.guess
vendored
File diff suppressed because it is too large
Load Diff
769
config/config.sub
vendored
769
config/config.sub
vendored
File diff suppressed because it is too large
Load Diff
48
configure.ac
48
configure.ac
@@ -1,5 +1,5 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(STK, 4.4, gary@music.mcgill.ca, stk)
|
||||
AC_INIT(STK, 4.5.1, gary@music.mcgill.ca, stk)
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
AC_CONFIG_SRCDIR(src/Stk.cpp)
|
||||
AC_CONFIG_FILES(Makefile src/Makefile projects/demo/Makefile projects/effects/Makefile projects/ragamatic/Makefile projects/examples/Makefile projects/examples/libMakefile projects/eguitar/Makefile)
|
||||
@@ -50,6 +50,26 @@ else
|
||||
fi
|
||||
AC_MSG_RESULT($realtime)
|
||||
|
||||
AC_MSG_CHECKING(whether to build the static library)
|
||||
AC_ARG_ENABLE(static,
|
||||
[ --disable-static = do not compile static library ],
|
||||
build_static=$enableval,
|
||||
build_static=yes)
|
||||
AC_SUBST(build_static)
|
||||
AC_MSG_RESULT($build_static)
|
||||
|
||||
AC_MSG_CHECKING(whether to build the shared library)
|
||||
AC_ARG_ENABLE(shared,
|
||||
[ --enable-shared = compile the shared library ],
|
||||
build_shared=$enableval,
|
||||
build_shared=no)
|
||||
AC_SUBST(build_shared)
|
||||
AC_MSG_RESULT($build_shared)
|
||||
|
||||
if test x$build_static = xno -a x$build_shared = xno ; then
|
||||
AC_MSG_ERROR([ both static and shared libraries are disabled], 1)
|
||||
fi
|
||||
|
||||
# Check for math library
|
||||
AC_CHECK_LIB(m, cos, , AC_MSG_ERROR(math library is needed!))
|
||||
|
||||
@@ -80,7 +100,6 @@ fi
|
||||
CPPFLAGS="$CPPFLAGS $cppflag"
|
||||
|
||||
# For debugging and optimization ... overwrite default because it has both -g and -O2
|
||||
echo "$CXXFLAGS"
|
||||
CXXFLAGS="$cxxflag"
|
||||
|
||||
# Check compiler and use -Wall if gnu.
|
||||
@@ -92,14 +111,16 @@ CXXFLAGS="$CXXFLAGS $cxxflag"
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
basesharedname="libstk-\$(RELEASE)"
|
||||
|
||||
AC_SUBST( sharedlib, ["libstk.so"] )
|
||||
AC_SUBST( sharedname, ["libstk.so.\$(RELEASE)"] )
|
||||
AC_SUBST( libflags, ["-shared -Wl,-soname,\$(SHAREDLIB).\$(MAJOR) -o \$(SHAREDLIB).\$(RELEASE)"] )
|
||||
AC_SUBST( sharedname, [${basesharedname}.so] )
|
||||
AC_SUBST( libflags, ["-shared -Wl,-soname,${basesharedname}.so -o $sharedname"] )
|
||||
case $host in
|
||||
*-apple*)
|
||||
AC_SUBST( sharedlib, ["libstk.dylib"] )
|
||||
AC_SUBST( sharedname, ["libstk.\$(RELEASE).dylib"] )
|
||||
AC_SUBST( libflags, ["-dynamiclib -o libstk.\$(RELEASE).dylib"] )
|
||||
AC_SUBST( sharedname, ["${basesharedname}.dylib"] )
|
||||
AC_SUBST( libflags, ["-dynamiclib -o ${basesharedname}.dylib"] )
|
||||
esac
|
||||
|
||||
if test $realtime = yes; then
|
||||
@@ -132,6 +153,7 @@ if test $realtime = yes; then
|
||||
AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(ALSA support requires the asound library!))
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))
|
||||
;;
|
||||
|
||||
*-apple*)
|
||||
@@ -145,7 +167,7 @@ if test $realtime = yes; then
|
||||
api="$api -D__MACOSX_CORE__"
|
||||
AC_MSG_RESULT(using CoreAudio)
|
||||
AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [], [AC_MSG_ERROR(CoreAudio header files not found!)] )
|
||||
LIBS="$LIBS -framework CoreAudio -framework CoreFoundation -framework CoreMidi" ], )
|
||||
LIBS="$LIBS -framework CoreAudio -framework CoreFoundation -framework CoreMIDI" ], )
|
||||
|
||||
# If no audio api flags specified, use CoreAudio
|
||||
if [test "$api" == ""; ] then
|
||||
@@ -154,7 +176,7 @@ if test $realtime = yes; then
|
||||
AC_CHECK_HEADER(CoreAudio/CoreAudio.h,
|
||||
[],
|
||||
[AC_MSG_ERROR(CoreAudio header files not found!)] )
|
||||
AC_SUBST( LIBS, ["-framework CoreAudio -framework CoreFoundation -framework CoreMidi"] )
|
||||
AC_SUBST( LIBS, ["-framework CoreAudio -framework CoreFoundation -framework CoreMIDI"] )
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))
|
||||
@@ -170,7 +192,13 @@ if test $realtime = yes; then
|
||||
AC_ARG_WITH(ds, [ --with-ds = choose DirectSound API support (windoze only)], [
|
||||
api="$api -D__WINDOWS_DS__"
|
||||
AC_MSG_RESULT(using DirectSound)
|
||||
LIBS="-ldsound -lwinmm $LIBS" ], )
|
||||
LIBS="-ldsound $LIBS" ], )
|
||||
|
||||
# Look for WASAPI flag
|
||||
AC_ARG_WITH(wasapi, [ --with-wasapi = choose Windows Audio Session API support (windoze only)], [
|
||||
api="$api -D__WINDOWS_WASAPI__"
|
||||
AC_MSG_RESULT(using WASAPI)
|
||||
LIBS="-luuid -lksuser $LIBS" ], )
|
||||
|
||||
# If no audio api flags specified, use DirectSound
|
||||
if [test "$api" == "";] then
|
||||
@@ -180,7 +208,7 @@ if test $realtime = yes; then
|
||||
fi
|
||||
|
||||
api="$api -D__WINDOWS_MM__"
|
||||
LIBS="-lole32 -lwinmm -lWsock32 $LIBS"
|
||||
LIBS="-lole32 -lwinmm -lwsock32 $LIBS"
|
||||
;;
|
||||
|
||||
*)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
Please read the file README and INSTALL for more general STK information.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
Please read the file README and INSTALL for more general STK information.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
Please read the file README and INSTALL for more general STK information.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
Please read the file README for more general STK information.
|
||||
|
||||
@@ -10,7 +10,7 @@ With Windows XP/7, piping works as under unix. Simply fire up the script files
|
||||
|
||||
IMPORTANT VC++ NOTE: When compiling "release" versions of STK programs, link to the release multithreaded library. When compiling "debug" versions, link to the debug multithreaded library. Compiler errors will result otherwise.
|
||||
|
||||
Both the DirectSound and Steinberg ASIO audio APIs are supported for realtime audio input/output. The Visual C++ project files included with this distribution are configured to use the DirectSound API. In order to use the ASIO API, it is necessary to change the preprocessor definition from __WINDOWS_DS__ to __WINDOWS_ASIO__, as well as include all the files in the /src/include/ directory (i.e. asio.h, asio.cpp, ...). If you have a good quality soundcard and a native ASIO driver (not emulated), you are likely to get much better input/output response using that.
|
||||
The DirectSound, WASAPI and Steinberg ASIO audio APIs are supported for realtime audio input/output. The Visual C++ project files included with this distribution are configured to use all supported APIs. In order to use the ASIO API, it is necessary to use the preprocessor definition __WINDOWS_ASIO__, as well as include most of the files in the /src/include/ directory (i.e. asio.h, asio.cpp, ...). If you have a good quality soundcard and a native ASIO driver (not emulated), you are likely to get much better input/output response using that.
|
||||
|
||||
When using the DirectSound API for audio input, latency can be high. If you experience realtime audio "stuttering", you should experiment with different "buffer size" and "number of buffers" values.
|
||||
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
v4.5.1 (22 February 2016)
|
||||
- fix for FileWvIn / FileLoop classes to avoid keeping files open if not necessary
|
||||
- miscellaneous bug fixes, documented on GitHub site (github.com/thestk/stk)
|
||||
- update to play.cpp example to play mono files as stereo
|
||||
- bug fix in DelayL::setDelay() function
|
||||
- miscellanous build bug fixes
|
||||
|
||||
v4.5.0: (26 April 2014)
|
||||
- updated versions of RtAudio and RtMidi, with associated renaming of RtError class to either RtAudioError or RtMidiError and addition of WASAPI support in Windows
|
||||
- added support in FileRead for little-endian AIFC file format
|
||||
- new iOS project files (thanks to Ariel Elkin)
|
||||
- bug fix in FreeVerb that could cause crackling for stereo input
|
||||
- various bug fixes and updates to minimize compiler warnings
|
||||
- ADSR fix for decay/release time calculations
|
||||
- various updates to build system
|
||||
|
||||
v4.4.4: (24 August 2012)
|
||||
- new FreeVerb class (thanks to Greg Burlet)
|
||||
|
||||
@@ -85,7 +85,7 @@ upon/from which to build and depart.
|
||||
the channel number is scanned as a long int. Channels could be socket
|
||||
numbers, machine IDs, serial numbers, or even unique tags for each
|
||||
event in a synthesis. Other fields might be used, as specified in the
|
||||
SKINI.tbl file. This is described in more detail later.
|
||||
SKINItbl.h file. This is described in more detail later.
|
||||
|
||||
Fields in a SKINI line are delimited by spaces, commas, or
|
||||
tabs. The SKINI parser only operates on a line at a time,
|
||||
@@ -109,9 +109,9 @@ upon/from which to build and depart.
|
||||
|
||||
All fields other than type, time, and channel are optional, and the
|
||||
types and useage of the additional fields is defined in the file
|
||||
SKINI.tbl.
|
||||
SKINItbl.h.
|
||||
|
||||
The other important file used by SKINI is SKINI.msg, which is a
|
||||
The other important file used by SKINI is SKINImsg.h, which is a
|
||||
set of #defines to make C code more readable, and to allow reasonably
|
||||
quick re-mapping of control numbers, etc.. All of these defined
|
||||
symbols are assigned integer values. For JAVA, the #defines could
|
||||
@@ -127,13 +127,13 @@ upon/from which to build and depart.
|
||||
receiving SKINI messages a line at a time, usually in real time,
|
||||
but not restricted to real time.
|
||||
|
||||
SKINI.msg should be included by anything wanting to use the
|
||||
SKINImsg.h should be included by anything wanting to use the
|
||||
Skini.cpp object. This is not mandatory, but use of the __SK_blah_
|
||||
symbols which are defined in the .msg file will help to ensure
|
||||
clarity and consistency when messages are added and changed.
|
||||
|
||||
SKINI.tbl is used only by the SKINI parser object (Skini.cpp).
|
||||
In the file SKINI.tbl, an array of structures is declared and
|
||||
SKINItbl.h is used only by the SKINI parser object (Skini.cpp).
|
||||
In the file SKINItbl.h, an array of structures is declared and
|
||||
assigned values which instruct the parser as to what the message
|
||||
types are, and what the fields mean for those message types.
|
||||
This table is compiled and linked into applications using SKINI, but
|
||||
@@ -195,7 +195,7 @@ upon/from which to build and depart.
|
||||
A -1 channel can be used as don't care, omni, or other functions
|
||||
depending on your needs and taste.
|
||||
|
||||
g) All remaining fields are specified in the SKINI.tbl file.
|
||||
g) All remaining fields are specified in the SKINItbl.h file.
|
||||
In general, there are maximum two more fields, which are either
|
||||
SK_INT (long), SK_DBL (double float), or SK_STR (string). The
|
||||
latter is the mechanism by which more arguments can be specified
|
||||
@@ -237,9 +237,9 @@ upon/from which to build and depart.
|
||||
NoteOff 0.000000 2 71 82
|
||||
NoteOff 0.000000 2 79 82
|
||||
|
||||
7) The SKINI.tbl File, How Messages are Parsed:
|
||||
7) The SKINItbl.h File, How Messages are Parsed:
|
||||
|
||||
The SKINI.tbl file contains an array of structures which
|
||||
The SKINItbl.h file contains an array of structures which
|
||||
are accessed by the parser object Skini.cpp. The struct is:
|
||||
|
||||
struct SKINISpec { char messageString[32];
|
||||
@@ -276,7 +276,7 @@ upon/from which to build and depart.
|
||||
something else stored in the SK_STR field, or
|
||||
as a new type of multi-line message.
|
||||
|
||||
Here's a couple of lines from the SKINI.tbl file
|
||||
Here's a couple of lines from the SKINItbl.h file
|
||||
|
||||
{"NoteOff" , __SK_NoteOff_, SK_DBL, SK_DBL},
|
||||
{"NoteOn" , __SK_NoteOn_, SK_DBL, SK_DBL},
|
||||
@@ -290,7 +290,7 @@ upon/from which to build and depart.
|
||||
The first three are basic MIDI messages. The first two would cause the
|
||||
parser, after recognizing a match of the string "NoteOff" or "NoteOn",
|
||||
to set the message type to 128 or 144 (__SK_NoteOff_ and __SK_NoteOn_
|
||||
are #defined in the file SKINI.msg to be the MIDI byte value, without
|
||||
are #defined in the file SKINImsg.h to be the MIDI byte value, without
|
||||
channel, of the actual MIDI messages for NoteOn and NoteOff). The parser
|
||||
would then set the time or delta time (this is always done and is
|
||||
therefore not described in the SKINI Message Struct). The next two
|
||||
|
||||
@@ -31,7 +31,7 @@ PROJECT_NAME = STK
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 4.4.4
|
||||
PROJECT_NUMBER = 4.5.1
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
|
||||
@@ -56,7 +56,7 @@ STK compiles with realtime support on the following flavors of the Unix operatin
|
||||
<TD>Macintosh OS X</TD>
|
||||
<TD>CoreAudio</TD>
|
||||
<TD>__MACOSX_CORE__</TD>
|
||||
<TD><TT>pthread, CoreAudio, CoreMidi, CoreFoundation</TT></TD>
|
||||
<TD><TT>pthread, CoreAudio, CoreMIDI, CoreFoundation</TT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
|
||||
@@ -1,311 +1,266 @@
|
||||
/*! \page download Download, Release Notes, and Bug Fixes
|
||||
|
||||
\section down Download Version 4.4.4 (24 August 2012):
|
||||
|
||||
<UL>
|
||||
<LI><A HREF="http://ccrma.stanford.edu/software/stk/release/stk-4.4.4.tar.gz">Source distribution</A></LI>
|
||||
</UL>
|
||||
\section down Download Version 4.5.1 (22 February 2016):
|
||||
|
||||
- <A HREF="http://ccrma.stanford.edu/software/stk/release/stk-4.5.1.tar.gz">Source distribution</A>
|
||||
|
||||
\section notes Release Notes:
|
||||
\subsection v4dot5dot1 Version 4.5.1
|
||||
- fix for FileWvIn / FileLoop classes to avoid keeping files open if not necessary
|
||||
- miscellaneous bug fixes, documented on GitHub site (github.com/thestk/stk)
|
||||
- update to play.cpp example to play mono files as stereo
|
||||
- bug fix in DelayL::setDelay() function
|
||||
- miscellanous build bug fixes
|
||||
|
||||
\subsection v4dot5dot0 Version 4.5.0
|
||||
- Updated versions of RtAudio and RtMidi, with associated renaming of RtError class to either RtAudioError or RtMidiError
|
||||
- New iOS project files (thanks to Ariel Elkin)
|
||||
- Bug fix in FreeVerb that could cause crackling for stereo input
|
||||
- Various bug fixes and updates to minimize compiler warnings
|
||||
- ADSR fix for decay/release time calculations
|
||||
- Various updates to build system
|
||||
|
||||
\subsection v4dot4dot4 Version 4.4.4
|
||||
|
||||
<ul>
|
||||
<li>New FreeVerb class (thanks to Greg Burlet)</li>
|
||||
<li>New Guitar class</li>
|
||||
<li>New electric guitar project</li>
|
||||
<li>Updated versions of RtAudio and RtMidi</li>
|
||||
<li>Cleaned / revised Shakers class</li>
|
||||
<li>Bug fix in LentPitShift</li>
|
||||
<li>Bug fix in Echo constructor</li>
|
||||
<li>Bug fix in FileWvIn (file size when chunking)</li>
|
||||
<li>Bug fix in StkFrames copy constructor</li>
|
||||
</ul>
|
||||
- New FreeVerb class (thanks to Greg Burlet)
|
||||
- New Guitar class
|
||||
- New electric guitar project
|
||||
- Updated versions of RtAudio and RtMidi
|
||||
- Cleaned / revised Shakers class
|
||||
- Bug fix in LentPitShift
|
||||
- Bug fix in Echo constructor
|
||||
- Bug fix in FileWvIn (file size when chunking)
|
||||
- Bug fix in StkFrames copy constructor
|
||||
|
||||
\subsection v4dot4dot3 Version 4.4.3
|
||||
|
||||
<ul>
|
||||
<li>Changed SINT24 to be lower 3 bytes of 32-bit word.</li>
|
||||
<li>Bug fixes to vectorized tick functions in Effects classes.</li>
|
||||
<li>Updated versions of RtAudio and RtMidi.</li>
|
||||
<li>Bug fixes in ADSR and Envelope classes.</li>
|
||||
<li>Updates to the internal argument checking and reporting scheme.</li>
|
||||
<li>Updates to Bowed class (thanks to Esteban Maestre!).</li>
|
||||
<li>Fixes for 24-bit support in FileRead and FileWrite.</li>
|
||||
<li>Added WAVE_FORMAT_EXTENSIBLE support in FileWrite.</li>
|
||||
<li>Added sample rate variable reading and writing for MAT-files in FileRead and FileWrite.</li>
|
||||
</ul>
|
||||
- Changed SINT24 to be lower 3 bytes of 32-bit word.
|
||||
- Bug fixes to vectorized tick functions in Effects classes.
|
||||
- Updated versions of RtAudio and RtMidi.
|
||||
- Bug fixes in ADSR and Envelope classes.
|
||||
- Updates to the internal argument checking and reporting scheme.
|
||||
- Updates to Bowed class (thanks to Esteban Maestre!).
|
||||
- Fixes for 24-bit support in FileRead and FileWrite.
|
||||
- Added WAVE_FORMAT_EXTENSIBLE support in FileWrite.
|
||||
- Added sample rate variable reading and writing for MAT-files in FileRead and FileWrite.
|
||||
|
||||
\subsection v4dot4dot2 Version 4.4.2
|
||||
|
||||
<ul>
|
||||
<li>Added various header file includes for newer compilers.</li>
|
||||
<li>Updates to RtAudio and RtMidi.</li>
|
||||
<li>New LentPitShift class (thanks to Francois Germain).</li>
|
||||
<li>Bug fixes in Voicer class (thanks Richard Dobson!).</li>
|
||||
<li>Added Makefile.in to compile library and all projects, as well as clean and distclean.</li>
|
||||
</ul>
|
||||
- Added various header file includes for newer compilers.
|
||||
- Updates to RtAudio and RtMidi.
|
||||
- New LentPitShift class (thanks to Francois Germain).
|
||||
- Bug fixes in Voicer class (thanks Richard Dobson!).
|
||||
- Added Makefile.in to compile library and all projects, as well as clean and distclean.
|
||||
|
||||
\subsection v4dot4dot1 Version 4.4.1
|
||||
|
||||
<ul>
|
||||
<li>Added multi-channel/frame tick() virtual function to WvIn and WvOut abstract base classes (required update to RtWvOut class).</li>
|
||||
<li>Updated configure script to select g++ compiler by default.</li>
|
||||
<li>In demo.cpp: removed voicer grouping for messages, fixing polyphony when messages are on the same MIDI/SKINI channel.</li>
|
||||
<li>Updates to RtAudio and RtMidi.</li>
|
||||
</ul>
|
||||
- Added multi-channel/frame tick() virtual function to WvIn and WvOut abstract base classes (required update to RtWvOut class).
|
||||
- Updated configure script to select g++ compiler by default.
|
||||
- In demo.cpp: removed voicer grouping for messages, fixing polyphony when messages are on the same MIDI/SKINI channel.
|
||||
- Updates to RtAudio and RtMidi.
|
||||
|
||||
\subsection v4dot4dot0 Version 4.4.0
|
||||
|
||||
<ul>
|
||||
<li>All classes embedded in the "stk" namespace (except RtAudio, RtMidi, and RtError).</li>
|
||||
<li>Class WaveLoop renamed FileLoop.</li>
|
||||
<li>Significant efficiency improvements via code restructuring and inlining.</li>
|
||||
<li>Some class source (.cpp) files deleted as part of inlining (Generator, Filter, Function, WvIn, WvOut, Effect, Instrmnt, BowTable, ReedTable, JetTable, Vector3D).</li>
|
||||
<li>Updates to RtAudio and RtMidi.</li>
|
||||
<li>Previous "tickFrame()" functions renamed "tick" for more consistent API.</li>
|
||||
<li>More consistent and scalable approach to multichannel data and computations.</li>
|
||||
<li>Multichannel support added to Granulate class.</li>
|
||||
<li>Filter class made abstract. New Iir and Fir classes made for non-order-specific filtering.</li>
|
||||
<li>New TapDelay class.</li>
|
||||
<li>SubNoise class deleted (same as sub-sampled "ticking" of Noise class).</li>
|
||||
</ul>
|
||||
- All classes embedded in the "stk" namespace (except RtAudio, RtMidi, and RtError).
|
||||
- Class WaveLoop renamed FileLoop.
|
||||
- Significant efficiency improvements via code restructuring and inlining.
|
||||
- Some class source (.cpp) files deleted as part of inlining (Generator, Filter, Function, WvIn, WvOut, Effect, Instrmnt, BowTable, ReedTable, JetTable, Vector3D).
|
||||
- Updates to RtAudio and RtMidi.
|
||||
- Previous "tickFrame()" functions renamed "tick" for more consistent API.
|
||||
- More consistent and scalable approach to multichannel data and computations.
|
||||
- Multichannel support added to Granulate class.
|
||||
- Filter class made abstract. New Iir and Fir classes made for non-order-specific filtering.
|
||||
- New TapDelay class.
|
||||
- SubNoise class deleted (same as sub-sampled "ticking" of Noise class).
|
||||
|
||||
\subsection v4dot3dot1 Version 4.3.1
|
||||
|
||||
<ul>
|
||||
<li>Further headerless file support in FileRead.</li>
|
||||
<li>Bug fix in RtWvOut.cpp.</li>
|
||||
<li>Added configure support for MinGW.</li>
|
||||
<li>Updates to RtAudio and RtMidi for MinGW.</li>
|
||||
<li>Changes to channel assignment in demo.cpp.</li>
|
||||
</ul>
|
||||
- Further headerless file support in FileRead.
|
||||
- Bug fix in RtWvOut.cpp.
|
||||
- Added configure support for MinGW.
|
||||
- Updates to RtAudio and RtMidi for MinGW.
|
||||
- Changes to channel assignment in demo.cpp.
|
||||
|
||||
\subsection v4dot3dot0 Version 4.3.0
|
||||
|
||||
<ul>
|
||||
<li>An official MIT-like license.</li>
|
||||
<li>New functionality to automatically update class data when the STK sample rate changes (partly implemented).</li>
|
||||
<li>Updates for new RtAudio version 4.0.</li>
|
||||
<li>Removed RtDuplex class, users should use RtAudio directly with a callback function.</li>
|
||||
<li>Bug fix in interpolate() function in Stk.h for non-interleaved data.</li>
|
||||
<li>Fixes / improvements to the Granulate class.</li>
|
||||
<li>Fix in Whistle when doing animation.</li>
|
||||
<li>Fixes in BlitSquare for frequency, harmonics, and dc offset.</li>
|
||||
<li>Updates to Makefiles for non-realtime compile.</li>
|
||||
<li>Fix in demo.cpp for voice channel assignment.</li>
|
||||
<li>Updated versions of RtMidi and RtAudio.</li>
|
||||
<li>Updated ASIO files for MinGW compiler.</li>
|
||||
<li>New FAQ in documentation.</li>
|
||||
<li>MAT-file bug fix in FileRead class.</li>
|
||||
</ul>
|
||||
- An official MIT-like license.
|
||||
- New functionality to automatically update class data when the STK sample rate changes (partly implemented).
|
||||
- Updates for new RtAudio version 4.0.
|
||||
- Removed RtDuplex class, users should use RtAudio directly with a callback function.
|
||||
- Bug fix in interpolate() function in Stk.h for non-interleaved data.
|
||||
- Fixes / improvements to the Granulate class.
|
||||
- Fix in Whistle when doing animation.
|
||||
- Fixes in BlitSquare for frequency, harmonics, and dc offset.
|
||||
- Updates to Makefiles for non-realtime compile.
|
||||
- Fix in demo.cpp for voice channel assignment.
|
||||
- Updated versions of RtMidi and RtAudio.
|
||||
- Updated ASIO files for MinGW compiler.
|
||||
- New FAQ in documentation.
|
||||
- MAT-file bug fix in FileRead class.
|
||||
|
||||
\subsection v4dot2dot1 Version 4.2.1
|
||||
|
||||
<ul>
|
||||
<li>Greatly expanded StkFrames functionality (including interpolation and indexing by channel/frame).</li>
|
||||
<li>New Blit, BlitSaw, and BlitSquare bandlimited waveform classes (thanks to Robin Davies!).</li>
|
||||
<li>New Granulate granular synthesis class.</li>
|
||||
<li>Removed Table class ... all functionality (including interpolation) now in StkFrames and FileRead classes.</li>
|
||||
<li>Revised Socket class (now abstract) and added TcpServer, TcpClient, and UdpSocket subclasses.</li>
|
||||
<li>Added Stk::showWarnings() and Stk::printErrors() functions to dis/enable warning and error printouts.</li>
|
||||
<li>Extracted file I/O functionality to FileRead and FileWrite classes.</li>
|
||||
<li>Revised WvIn / WvOut class structure (WvIn / WvOut now abstract and file I/O functionality in new FileWvIn / FileWvOut subclasses).</li>
|
||||
<li>New SineWave class which calculates its own static table of variable length (no rawwave dependency).</li>
|
||||
<li>New sinewave.raw file of length 1024 samples (used to be 256).</li>
|
||||
<li>TcpWvIn and TcpWvOut renamed InetWvIn and InetWvOut, with added support for UDP sockets.</li>
|
||||
<li>Fixed bug in WvOut tickFrame( const StkFrames &frames ) function.</li>
|
||||
<li>Fixed bug in demo.cpp when writing output soundfiles without realtime output.</li>
|
||||
<li>Added "binary" open flag to MidiFileIn class for Windows.</li>
|
||||
<li>Fixed oversized MAT-file header in WvOut.cpp</li>
|
||||
<li>Fixed case statement bug in MidiFileIn.cpp for sysex.</li>
|
||||
<li>Added missing getDelay() function to DelayA.cpp.</li>
|
||||
<li>Fixed modDepth omission in Chorus.cpp.</li>
|
||||
<li>Fixed DC blocker initialization bug in Flute.cpp.</li>
|
||||
<li>Changed Filter class behavior so no default clearing of state when changing coefficients.</li>
|
||||
<li>Fixes to RtAudio, especially for Windows DirectSound and ASIO (thanks to Robin Davies).</li>
|
||||
</ul>
|
||||
- Greatly expanded StkFrames functionality (including interpolation and indexing by channel/frame).
|
||||
- New Blit, BlitSaw, and BlitSquare bandlimited waveform classes (thanks to Robin Davies!).
|
||||
- New Granulate granular synthesis class.
|
||||
- Removed Table class ... all functionality (including interpolation) now in StkFrames and FileRead classes.
|
||||
- Revised Socket class (now abstract) and added TcpServer, TcpClient, and UdpSocket subclasses.
|
||||
- Added Stk::showWarnings() and Stk::printErrors() functions to dis/enable warning and error printouts.
|
||||
- Extracted file I/O functionality to FileRead and FileWrite classes.
|
||||
- Revised WvIn / WvOut class structure (WvIn / WvOut now abstract and file I/O functionality in new FileWvIn / FileWvOut subclasses).
|
||||
- New SineWave class which calculates its own static table of variable length (no rawwave dependency).
|
||||
- New sinewave.raw file of length 1024 samples (used to be 256).
|
||||
- TcpWvIn and TcpWvOut renamed InetWvIn and InetWvOut, with added support for UDP sockets.
|
||||
- Fixed bug in WvOut tickFrame( const StkFrames &frames ) function.
|
||||
- Fixed bug in demo.cpp when writing output soundfiles without realtime output.
|
||||
- Added "binary" open flag to MidiFileIn class for Windows.
|
||||
- Fixed oversized MAT-file header in WvOut.cpp
|
||||
- Fixed case statement bug in MidiFileIn.cpp for sysex.
|
||||
- Added missing getDelay() function to DelayA.cpp.
|
||||
- Fixed modDepth omission in Chorus.cpp.
|
||||
- Fixed DC blocker initialization bug in Flute.cpp.
|
||||
- Changed Filter class behavior so no default clearing of state when changing coefficients.
|
||||
- Fixes to RtAudio, especially for Windows DirectSound and ASIO (thanks to Robin Davies).
|
||||
|
||||
\subsection v4dot2dot0 Version 4.2.0
|
||||
|
||||
<ul>
|
||||
<li>Simultaneous multiple audio APIs supported at compile time.</li>
|
||||
<li>Various changes to better conform to standard C++ programming practices.</li>
|
||||
<li>Fixed hidden overloaded virtual functions.</li>
|
||||
<li>New Asymp exponential envelope class.</li>
|
||||
<li><tt>MY_FLOAT</tt> type converted to <tt>StkFloat</tt> and changed throughout (use \c treesed utility to search/replace in old files).</li>
|
||||
<li>Most example programs rewritten to use an audio callback paradigm (which works better in OS-X).</li>
|
||||
<li>New StkFrames class for vectorized multichannel data and associated new tick() functions making use of StkFrames.</li>
|
||||
<li>New RtMidi class with MIDI output capabilities (API changes).</li>
|
||||
<li>New MidiFileIn class for reading MIDI files.</li>
|
||||
<li>Revised Filter classes to use std::vectors for coefficients (API changes).</li>
|
||||
<li>Revised Messager class (API changes).</li>
|
||||
<li>New abstract parent Effect class for various effects.</li>
|
||||
<li>New abstract parent Generator class for various signal sources.</li>
|
||||
<li>New abstract parent Function class for tables and various non-linear functions.</li>
|
||||
<li>Skini class completely rewritten (simplified) using the C++ STL (API changes).</li>
|
||||
<li>WvOut classes now clip to -1.0 to +1.0 and report out of range.</li>
|
||||
<li>New Mutex class.</li>
|
||||
<li>Turned Nagle algorithm off by default in Socket class.</li>
|
||||
<li>Error reporting standardized in all classes.</li>
|
||||
</ul>
|
||||
- Simultaneous multiple audio APIs supported at compile time.
|
||||
- Various changes to better conform to standard C++ programming practices.
|
||||
- Fixed hidden overloaded virtual functions.
|
||||
- New Asymp exponential envelope class.
|
||||
- <tt>MY_FLOAT</tt> type converted to <tt>StkFloat</tt> and changed throughout (use \c treesed utility to search/replace in old files).
|
||||
- Most example programs rewritten to use an audio callback paradigm (which works better in OS-X).
|
||||
- New StkFrames class for vectorized multichannel data and associated new tick() functions making use of StkFrames.
|
||||
- New RtMidi class with MIDI output capabilities (API changes).
|
||||
- New MidiFileIn class for reading MIDI files.
|
||||
- Revised Filter classes to use std::vectors for coefficients (API changes).
|
||||
- Revised Messager class (API changes).
|
||||
- New abstract parent Effect class for various effects.
|
||||
- New abstract parent Generator class for various signal sources.
|
||||
- New abstract parent Function class for tables and various non-linear functions.
|
||||
- Skini class completely rewritten (simplified) using the C++ STL (API changes).
|
||||
- WvOut classes now clip to -1.0 to +1.0 and report out of range.
|
||||
- New Mutex class.
|
||||
- Turned Nagle algorithm off by default in Socket class.
|
||||
- Error reporting standardized in all classes.
|
||||
|
||||
\subsection v4dot1dot3 Version 4.1.3
|
||||
|
||||
<ul>
|
||||
<li>Bug fix in RtAudio for Windows DirectSound output only support</li>
|
||||
</ul>
|
||||
- Bug fix in RtAudio for Windows DirectSound output only support
|
||||
|
||||
\subsection v4dot1dot2 Version 4.1.2
|
||||
|
||||
<UL>
|
||||
<li>Added Linux JACK support to RtAudio.</li>
|
||||
<li>Added optional doNormalize argument to WvIn to allow specification of data normalization or not.</li>
|
||||
<li>Added volume control to demo program and various tcl scripts.</li>
|
||||
<li>Added support for dynamic rawwavePath() setting.</li>
|
||||
<li>WaveLoop bug fix.</li>
|
||||
<li>Fixed bug in ADSR::setReleaseTime() method.</li>
|
||||
<li>Fixed missing initialization of apInput in non-default constructor of DelayA class.</li>
|
||||
<li>Added time seeding of random number generator to Noise constructor.</li>
|
||||
<li>Update to the contentsAt() method of Delay class.</li>
|
||||
<li>WAV file fixes (8-bit) in WvIn and WvOut classes.</li>
|
||||
<li>Configure script changes.</li>
|
||||
<li>Updated \<iostream\> include statements and appended "std::" as necessary throughout for compatibility with gcc 3.</li>
|
||||
</UL>
|
||||
- Added Linux JACK support to RtAudio.
|
||||
- Added optional doNormalize argument to WvIn to allow specification of data normalization or not.
|
||||
- Added volume control to demo program and various tcl scripts.
|
||||
- Added support for dynamic rawwavePath() setting.
|
||||
- WaveLoop bug fix.
|
||||
- Fixed bug in ADSR::setReleaseTime() method.
|
||||
- Fixed missing initialization of apInput in non-default constructor of DelayA class.
|
||||
- Added time seeding of random number generator to Noise constructor.
|
||||
- Update to the contentsAt() method of Delay class.
|
||||
- WAV file fixes (8-bit) in WvIn and WvOut classes.
|
||||
- Configure script changes.
|
||||
- Updated \<iostream\> include statements and appended "std::" as necessary throughout for compatibility with gcc 3.
|
||||
|
||||
\subsection v4dot1dot1 Version 4.1.1
|
||||
<ul>
|
||||
<li>Bug fix in RtAudio for Macintosh OS X and Windows ASIO duplex operation.</li>
|
||||
<li>Windows ASIO fix in Stk.h.</li>
|
||||
<li>Documentation updates.</li>
|
||||
<li>Expanded tutorial.</li>
|
||||
<li>Fixed RtDuplex omission in src Makefile.</li>
|
||||
</ul>
|
||||
- Bug fix in RtAudio for Macintosh OS X and Windows ASIO duplex operation.
|
||||
- Windows ASIO fix in Stk.h.
|
||||
- Documentation updates.
|
||||
- Expanded tutorial.
|
||||
- Fixed RtDuplex omission in src Makefile.
|
||||
|
||||
\subsection v4dot1 Version 4.1
|
||||
|
||||
<UL>
|
||||
<LI>Macintosh OS X support added.</LI>
|
||||
<LI>New Whistle class.</LI>
|
||||
<LI>Added Voicer, SingWave, and VoicForm classes.</LI>
|
||||
<LI>Improvements/fixes to the banded waveguide instruments.</LI>
|
||||
<LI>Demo program now uses Voicer, allowing polyphony.</LI>
|
||||
<LI>Demo tcl/tk scripts changed to use SKINI PitchChange instead of PitchBend.</LI>
|
||||
<LI>Demo program response to PitchBend modified to octave up/down.</LI>
|
||||
<LI>Several RtAudio fixes and improvements (OS X and Windows ASIO support added).</LI>
|
||||
<LI>Added nextOut() method to Delay classes.</LI>
|
||||
<LI>Documentation fixes for Reverb classes.</LI>
|
||||
<LI>RAWWAVE_PATH changed to include the "rawwave" directory.</LI>
|
||||
<LI>"configure" support added for unix systems.</LI>
|
||||
<LI>Multivoice flag (-n NUMBER) added as command line option to demo program.</LI>
|
||||
<LI>Sample rate flag added as command line option to example programs.</LI>
|
||||
<LI>Socket port number added as command line option to example programs.</LI>
|
||||
</UL>
|
||||
- Macintosh OS X support added.
|
||||
- New Whistle class.
|
||||
- Added Voicer, SingWave, and VoicForm classes.
|
||||
- Improvements/fixes to the banded waveguide instruments.
|
||||
- Demo program now uses Voicer, allowing polyphony.
|
||||
- Demo tcl/tk scripts changed to use SKINI PitchChange instead of PitchBend.
|
||||
- Demo program response to PitchBend modified to octave up/down.
|
||||
- Several RtAudio fixes and improvements (OS X and Windows ASIO support added).
|
||||
- Added nextOut() method to Delay classes.
|
||||
- Documentation fixes for Reverb classes.
|
||||
- RAWWAVE_PATH changed to include the "rawwave" directory.
|
||||
- "configure" support added for unix systems.
|
||||
- Multivoice flag (-n NUMBER) added as command line option to demo program.
|
||||
- Sample rate flag added as command line option to example programs.
|
||||
- Socket port number added as command line option to example programs.
|
||||
|
||||
\subsection v4 Version 4.0
|
||||
|
||||
<UL>
|
||||
<LI>New documentation and tutorial.</LI>
|
||||
<LI>Several new instruments, including Saxofony, BlowBotl, and StifKarp.</LI>
|
||||
<LI>New Stk base class, replacing Object class.</LI>
|
||||
<LI>New Filter class structure and methods.</LI>
|
||||
<LI>Extensive modifications to WvIn and WvOut class structures and methods.</LI>
|
||||
<LI>Looping functionality moved to WaveLoop (subclass of WvIn).</LI>
|
||||
<LI>Automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses.</LI>
|
||||
<LI>New file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses.</LI>
|
||||
<LI>Some simplifications of Messager class (was Controller).</LI>
|
||||
<LI>New independent RtAudio class.</LI>
|
||||
<LI>Extensive revisions in code and a significant number of API changes.</LI>
|
||||
</UL>
|
||||
- New documentation and tutorial.
|
||||
- Several new instruments, including Saxofony, BlowBotl, and StifKarp.
|
||||
- New Stk base class, replacing Object class.
|
||||
- New Filter class structure and methods.
|
||||
- Extensive modifications to WvIn and WvOut class structures and methods.
|
||||
- Looping functionality moved to WaveLoop (subclass of WvIn).
|
||||
- Automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses.
|
||||
- New file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses.
|
||||
- Some simplifications of Messager class (was Controller).
|
||||
- New independent RtAudio class.
|
||||
- Extensive revisions in code and a significant number of API changes.
|
||||
|
||||
\subsection v3dot2 Version 3.2
|
||||
|
||||
<UL>
|
||||
<LI>New input control handling class (Controller)</LI>
|
||||
<LI>Added AIFF file input/output support.</LI>
|
||||
<LI>New C++ error handling capabilities.</LI>
|
||||
<LI>New input/output internet streaming support (StrmWvIn/StrmWvOut).</LI>
|
||||
<LI>Added native ALSA support for linux.</LI>
|
||||
<LI>Added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid.</LI>
|
||||
<LI>WvIn classes rewritten to support very big files (incremental load from disk).</LI>
|
||||
<LI>Changed WvIn/WvOut classes to work with sample frame buffers.</LI>
|
||||
<LI>Fixed looping and negative rate calculations in WvIn classes.</LI>
|
||||
<LI>Fixed interpolation bug in RtWvIn.</LI>
|
||||
<LI>Windoze RtAudio code rewritten (thank Dave!).</LI>
|
||||
<LI>Simplified byte-swapping functions (in-place swapping).</LI>
|
||||
<LI>"Stereo-ized" RagaMatic.</LI>
|
||||
<LI>Miscellaneous renamings.</LI>
|
||||
<LI>Probably a bunch more fixes that I've long since forgotten about.</LI>
|
||||
</UL>
|
||||
- New input control handling class (Controller)
|
||||
- Added AIFF file input/output support.
|
||||
- New C++ error handling capabilities.
|
||||
- New input/output internet streaming support (StrmWvIn/StrmWvOut).
|
||||
- Added native ALSA support for linux.
|
||||
- Added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid.
|
||||
- WvIn classes rewritten to support very big files (incremental load from disk).
|
||||
- Changed WvIn/WvOut classes to work with sample frame buffers.
|
||||
- Fixed looping and negative rate calculations in WvIn classes.
|
||||
- Fixed interpolation bug in RtWvIn.
|
||||
- Windoze RtAudio code rewritten (thank Dave!).
|
||||
- Simplified byte-swapping functions (in-place swapping).
|
||||
- "Stereo-ized" RagaMatic.
|
||||
- Miscellaneous renamings.
|
||||
- Probably a bunch more fixes that I've long since forgotten about.
|
||||
|
||||
\subsection v3dot1 Version 3.1
|
||||
|
||||
<UL>
|
||||
<LI>New RagaMatic project ... very cool!!!</LI>
|
||||
<LI>Less clipping in the Shakers class.</LI>
|
||||
<LI>Added "microphone position" to Mandolin in STKdemo.</LI>
|
||||
<LI>Fixed MIDI system message exclusion under Irix.</LI>
|
||||
<LI>Added a few bitmaps for the Shaker instruments.</LI>
|
||||
<LI>Made destructors virtual for Reverb.h, WvIn.h and Simple.h.</LI>
|
||||
<LI>Fixed bug setting delay length in DLineA when value too big.</LI>
|
||||
<LI>Fixed bug in WinMM realtime code (RTSoundIO).</LI>
|
||||
<LI>Added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup).</LI>
|
||||
<LI>Switched to pthread API on SGI platforms.</LI>
|
||||
<LI>Added some defines to Object.h for random number generation, FPU overflow checking, etc....</LI>
|
||||
<LI>A few minor changes, some bug fixes ... can't remember all of them.</LI>
|
||||
</UL>
|
||||
- New RagaMatic project ... very cool!!!
|
||||
- Less clipping in the Shakers class.
|
||||
- Added "microphone position" to Mandolin in STKdemo.
|
||||
- Fixed MIDI system message exclusion under Irix.
|
||||
- Added a few bitmaps for the Shaker instruments.
|
||||
- Made destructors virtual for Reverb.h, WvIn.h and Simple.h.
|
||||
- Fixed bug setting delay length in DLineA when value too big.
|
||||
- Fixed bug in WinMM realtime code (RTSoundIO).
|
||||
- Added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup).
|
||||
- Switched to pthread API on SGI platforms.
|
||||
- Added some defines to Object.h for random number generation, FPU overflow checking, etc....
|
||||
- A few minor changes, some bug fixes ... can't remember all of them.
|
||||
|
||||
\subsection v3 Version 3.0
|
||||
|
||||
<UL>
|
||||
<LI>New #define flags for OS and realtime dependencies (this will probably cause problems for old personal STK code, but it was necessary to make future ports easier).</LI>
|
||||
<LI>Expanded and cleaned the Shakers class.</LI>
|
||||
<LI>New BowedBar algorithm/class.</LI>
|
||||
<LI>Fixed Linux MIDI input bug.</LI>
|
||||
<LI>Fixed MIDI status masking problem in Windows.</LI>
|
||||
<LI>OS type defines now in Makefile.</LI>
|
||||
<LI>New RAWWAVE_PATH define in Object.h.</LI>
|
||||
<LI>Syntmono project pulled out to separate directory and cleaned up.</LI>
|
||||
<LI>Socketing capabilities under Unix, as well as Windoze.</LI>
|
||||
<LI>Multiple simultaneous socket client connections to STK servers now possible.</LI>
|
||||
<LI>MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control).</LI>
|
||||
<LI>Defined INT16 and INT32 types and fixed various WvIn and WvOut classes.</LI>
|
||||
<LI>Updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab.</LI>
|
||||
<LI>New demo Tcl/Tk GUI (TclDemo.tcl).</LI>
|
||||
<LI>Minor fixes to FM behavior.</LI>
|
||||
<LI>Added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze).</LI>
|
||||
<LI>Fixed bugs in WavWvOut and MatWvOut header specifications.</LI>
|
||||
<LI>Added RawWvOut class.</LI>
|
||||
<LI>New WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses.</LI>
|
||||
<LI>Removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn).</LI>
|
||||
<LI>Multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to StkFloat) and the methods mtick() and mlastOutput().</LI>
|
||||
<LI>Now writing to primary buffer under Windoze when allowed by hardware.</LI>
|
||||
<LI>Cleaned up Object.h a bit.</LI>
|
||||
<LI>Pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code).</LI>
|
||||
</UL>
|
||||
- New #define flags for OS and realtime dependencies (this will probably cause problems for old personal STK code, but it was necessary to make future ports easier).
|
||||
- Expanded and cleaned the Shakers class.
|
||||
- New BowedBar algorithm/class.
|
||||
- Fixed Linux MIDI input bug.
|
||||
- Fixed MIDI status masking problem in Windows.
|
||||
- OS type defines now in Makefile.
|
||||
- New RAWWAVE_PATH define in Object.h.
|
||||
- Syntmono project pulled out to separate directory and cleaned up.
|
||||
- Socketing capabilities under Unix, as well as Windoze.
|
||||
- Multiple simultaneous socket client connections to STK servers now possible.
|
||||
- MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control).
|
||||
- Defined INT16 and INT32 types and fixed various WvIn and WvOut classes.
|
||||
- Updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab.
|
||||
- New demo Tcl/Tk GUI (TclDemo.tcl).
|
||||
- Minor fixes to FM behavior.
|
||||
- Added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze).
|
||||
- Fixed bugs in WavWvOut and MatWvOut header specifications.
|
||||
- Added RawWvOut class.
|
||||
- New WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses.
|
||||
- Removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn).
|
||||
- Multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to StkFloat) and the methods mtick() and mlastOutput().
|
||||
- Now writing to primary buffer under Windoze when allowed by hardware.
|
||||
- Cleaned up Object.h a bit.
|
||||
- Pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code).
|
||||
|
||||
\subsection v2dot02 Version 2.02
|
||||
|
||||
<UL>
|
||||
<LI>Created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave).</LI>
|
||||
<LI>Modified DrumSynt to correctly handle sample rates different than 22050 Hz.</LI>
|
||||
<LI>Modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer.</LI>
|
||||
<LI>Fixed DirectSound playback bug in WinXX distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE.</LI>
|
||||
<LI>Fixed bug in MD2SKINI which prevented some NoteOff statements from being output.</LI>
|
||||
<LI>This distribution includes an example STK project, mus151, which demonstrates a means for keeping a user's personal projects separate from the main distribution. This is highly recommended, in order to simplify upgrades to future STK releases.</LI>
|
||||
</UL>
|
||||
- Created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave).
|
||||
- Modified DrumSynt to correctly handle sample rates different than 22050 Hz.
|
||||
- Modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer.
|
||||
- Fixed DirectSound playback bug in WinXX distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE.
|
||||
- Fixed bug in MD2SKINI which prevented some NoteOff statements from being output.
|
||||
- This distribution includes an example STK project, mus151, which demonstrates a means for keeping a user's personal projects separate from the main distribution. This is highly recommended, in order to simplify upgrades to future STK releases.
|
||||
|
||||
\subsection v2 Version 2
|
||||
|
||||
<UL>
|
||||
<LI>Unification of the capabilities of STK across the various platforms. All of the previous SGI functionality has been ported to Linux and Windows, including realtime sound output and MIDI input.</LI>
|
||||
<LI>MIDI input (with optional time-stamping) supported on SGI, Linux (OSS device drivers only), and Windows operating systems. Time stamping under IRIX and Windows is quantized to milliseconds and under Linux to hundredths of a second.</LI>
|
||||
<LI>Various Sound Output Options - .wav, .snd, and .mat (Matlab MAT-file) soundfile outputs are supported on all operating systems. I hacked out the MAT-file structure, so you don't have to include any platform-specific libraries. Realtime sound output is provided as well, except under NeXTStep.</LI>
|
||||
<LI>Multiple Reverberator Implementations - Reverb subclasses of JCRev and NRev (popular reverberator implementations from CCRMA) have been written. Perry's original reverb implementation still exists as PRCRev. All reverberators now take a T60 initializer argument.</LI>
|
||||
<LI>MD2SKINI - A program which parses a MIDI input stream and spits out SKINI code. The output of MD2SKINI is typically piped into an STK instrument executable (eg. <tt>MD2SKINI | syntmono Clarinet -r -i</tt>). In addition, you can supply a filename argument to MD2SKINI and have it simultaneously record a SKINI score file for future reuse.</LI>
|
||||
<LI>Modifications to <I>Object.h</I> for OS_TYPE compilation dependencies. <I>Makefile</I> automatically determines OS_TYPE when invoked (if you have the GNU makefile utilities installed on your system).</LI>
|
||||
<LI>A single distribution for all platforms. The Unix and Windows versions have been merged into a single set of classes. Makefiles and Visual C++ workspace/project files are provided for compiling.</LI>
|
||||
</UL>
|
||||
- Unification of the capabilities of STK across the various platforms. All of the previous SGI functionality has been ported to Linux and Windows, including realtime sound output and MIDI input.
|
||||
- MIDI input (with optional time-stamping) supported on SGI, Linux (OSS device drivers only), and Windows operating systems. Time stamping under IRIX and Windows is quantized to milliseconds and under Linux to hundredths of a second.
|
||||
- Various Sound Output Options - .wav, .snd, and .mat (Matlab MAT-file) soundfile outputs are supported on all operating systems. I hacked out the MAT-file structure, so you don't have to include any platform-specific libraries. Realtime sound output is provided as well, except under NeXTStep.
|
||||
- Multiple Reverberator Implementations - Reverb subclasses of JCRev and NRev (popular reverberator implementations from CCRMA) have been written. Perry's original reverb implementation still exists as PRCRev. All reverberators now take a T60 initializer argument.
|
||||
- MD2SKINI - A program which parses a MIDI input stream and spits out SKINI code. The output of MD2SKINI is typically piped into an STK instrument executable (eg. <tt>MD2SKINI | syntmono Clarinet -r -i</tt>). In addition, you can supply a filename argument to MD2SKINI and have it simultaneously record a SKINI score file for future reuse.
|
||||
- Modifications to <I>Object.h</I> for OS_TYPE compilation dependencies. <I>Makefile</I> automatically determines OS_TYPE when invoked (if you have the GNU makefile utilities installed on your system).
|
||||
- A single distribution for all platforms. The Unix and Windows versions have been merged into a single set of classes. Makefiles and Visual C++ workspace/project files are provided for compiling.
|
||||
|
||||
*/
|
||||
|
||||
@@ -24,7 +24,7 @@ work with any standard C++ compiler.
|
||||
STK WWW site: http://ccrma.stanford.edu/software/stk/
|
||||
|
||||
The Synthesis ToolKit in C++ (STK)
|
||||
Copyright (c) 1995-2012 Perry R. Cook and Gary P. Scavone
|
||||
Copyright (c) 1995--2016 Perry R. Cook and Gary P. Scavone
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<table>
|
||||
<tr><td><A HREF="http://ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
|
||||
<tr><td>©1995-2012 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
|
||||
<tr><td>©1995--2016 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
|
||||
</table>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*! \page fundamentals STK Fundamentals
|
||||
|
||||
The Synthesis ToolKit is implemented in the C++ programming language. STK does not attempt to provide a new programming environment or paradigm but rather provides a set of objects that can be used within a normal C++ programming framework. Therefore, it is expected that users of STK will have some familiarity with C/C++ programming concepts. That said, the STK classes do have some particular idiosyncrasies that we will mention here. Starting with STK version 4.4, all STK classes except RtAudio, RtMidi, and RtError are defined within the stk namespace.
|
||||
The Synthesis ToolKit is implemented in the C++ programming language. STK does not attempt to provide a new programming environment or paradigm but rather provides a set of objects that can be used within a normal C++ programming framework. Therefore, it is expected that users of STK will have some familiarity with C/C++ programming concepts. That said, the STK classes do have some particular idiosyncrasies that we will mention here. Starting with STK version 4.4, all STK classes except RtAudio and RtMidi are defined within the stk namespace.
|
||||
|
||||
\section Signal Computations:
|
||||
|
||||
|
||||
BIN
doc/doxygen/images/mcgill.gif
Normal file
BIN
doc/doxygen/images/mcgill.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
@@ -15,7 +15,7 @@ portable (it's mostly platform-independent C and C++ code), and it's
|
||||
completely user-extensible (all source included, no unusual libraries,
|
||||
and no hidden drivers). We like to think that this increases the
|
||||
chances that our programs will still work in another 5-10 years. In
|
||||
fact, the ToolKit has been working continuously for nearly 15 years
|
||||
fact, the ToolKit has been working continuously for nearly 20 years
|
||||
now. STK currently runs with realtime support (audio and MIDI) on
|
||||
Linux, Macintosh OS X, and Windows computer platforms. Generic,
|
||||
non-realtime support has been tested under NeXTStep, Sun, and other
|
||||
|
||||
@@ -18,7 +18,7 @@ Here's a link to a book that includes an chapter on STK.
|
||||
|
||||
<H4>What is the <I>Synthesis ToolKit</I>?</H4>
|
||||
|
||||
The Synthesis ToolKit in C++ (STK) is a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language. STK was designed to facilitate rapid development of music synthesis and audio processing software, with an emphasis on cross-platform functionality, realtime control, ease of use, and educational example code. The Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (all source included, no unusual libraries, and no hidden drivers). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 15 years now. STK currently runs with realtime support (audio and MIDI) on Linux, Macintosh OS X, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler.
|
||||
The Synthesis ToolKit in C++ (STK) is a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language. STK was designed to facilitate rapid development of music synthesis and audio processing software, with an emphasis on cross-platform functionality, realtime control, ease of use, and educational example code. The Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (all source included, no unusual libraries, and no hidden drivers). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 20 years now. STK currently runs with realtime support (audio and MIDI) on Linux, Macintosh OS X, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler.
|
||||
|
||||
The Synthesis ToolKit is free. The only parts of the Synthesis ToolKit that are platform-dependent concern real-time audio and MIDI input and output, and that is taken care of with a few special classes. The interface for MIDI input and the simple <A HREF="http://dev.scriptics.com">Tcl/Tk</A> graphical user interfaces (GUIs) provided is the same, so it's easy to experiment in real time using either the GUIs or MIDI. The Synthesis ToolKit can generate simultaneous SND (AU), WAV, AIFF, and MAT-file output soundfile formats (as well as realtime sound output), so you can view your results using one of a large variety of sound/signal analysis tools already available (e.g. <A HREF="http://www-ccrma.stanford.edu/software/snd/">Snd</A>, Cool Edit, Matlab).
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
/*! \page tutorial Tutorial
|
||||
|
||||
The Synthesis ToolKit is a set of C++ classes. In order to go beyond the simple example programs we provide, it is necessary to know some basics about programming in C and C++. STK's "target audience" includes people who:
|
||||
<UL>
|
||||
<LI>want to create audio DSP and/or synthesis programs</LI>
|
||||
<LI>want to use our unit generators and input/output routines rather than code their own</LI>
|
||||
<LI>want to learn about synthesis and processing algorithms</LI>
|
||||
<LI>wish to teach real-time synthesis and processing and wish to use some of our classes and examples</LI>
|
||||
</UL>
|
||||
- want to create audio DSP and/or synthesis programs
|
||||
- want to use our unit generators and input/output routines rather than code their own
|
||||
- want to learn about synthesis and processing algorithms
|
||||
- wish to teach real-time synthesis and processing and wish to use some of our classes and examples
|
||||
|
||||
Most ToolKit programmers will likely end up writing a class or two for their own particular needs, but this task is typically simplified by making use of pre-existing STK classes (filters, oscillators, etc.).
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ The top level distribution contains the following directories:
|
||||
This release of STK comes with four separate "project" directories:
|
||||
|
||||
<OL>
|
||||
<LI> The <I><B>demo</B></I> project is used to demonstrate nearly all of the STK instruments. The <I><B>demo</B></I> program has been written to allow a variety of control input and sound data output options. Simple graphical user interfaces (GUIs) are also provided.<P></LI>
|
||||
<LI> The <I><B>demo</B></I> project is used to demonstrate nearly all of the STK instruments. The <I><B>stk-demo</B></I> program has been written to allow a variety of control input and sound data output options. Simple graphical user interfaces (GUIs) are also provided.<P></LI>
|
||||
|
||||
<LI> The <I><B>effects</B></I> project demonstrates realtime duplex mode (simultaneous audio input and output) operation, when available, as well as various delay-line based effects algorithms.<P></LI>
|
||||
|
||||
@@ -46,7 +46,7 @@ This release of STK comes with four separate "project" directories:
|
||||
\section compiling Compiling:
|
||||
|
||||
<UL>
|
||||
<LI><B>Windows95/98/2000/XP/7:</B> Realtime support is available using either DirectSound or ASIO audio drivers. For DirectSound support, use the <TT>__WINDOWS_DS__</TT> preprocessor definition and link with the <TT>dsound.lib</TT>, <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. For ASIO support, use the <TT>__WINDOWS_ASIO__</TT> preprocessor definition, include all the files in the <TT>src/asio/</TT> directory (i.e. <TT>asio.h,cpp</TT>, <TT>asiodrivers.h,cpp</TT>, ...), and link with the <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. In addition, the <TT>__LITTLE_ENDIAN__</TT> and <TT>__WINDOWS_MM__</TT> preprocessor definitions are necessary for all Windows systems (RtMidi uses the Windows MultiMedia MIDI API). Fairly old Visual C++ project files are provided in each project directory, though they may not work on newer versions of MSVS. As well, the MinGW compiler is supported (see below). It is important to link with the non-debug libraries when compiling "release" program versions and debug libraries when compiling "debug" program versions.</LI>
|
||||
<LI><B>Windows95/98/2000/XP/7:</B> Realtime support is available using either DirectSound, ASIO or WASAPI audio drivers. For DirectSound support, use the <TT>__WINDOWS_DS__</TT> preprocessor definition and link with the <TT>dsound.lib</TT>, <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. For ASIO support, use the <TT>__WINDOWS_ASIO__</TT> preprocessor definition, include all the files in the <TT>src/asio/</TT> directory (i.e. <TT>asio.h,cpp</TT>, <TT>asiodrivers.h,cpp</TT>, ...), and link with the <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. For WASAPI support, use the <TT>__WINDOWS_WASAPI__</TT> preprocessor definition. In addition, the <TT>__LITTLE_ENDIAN__</TT> and <TT>__WINDOWS_MM__</TT> preprocessor definitions are necessary for all Windows systems (RtMidi uses the Windows MultiMedia MIDI API). Fairly old Visual C++ project files are provided in each project directory, though they may not work on newer versions of MSVS. As well, the MinGW compiler is supported (see below). It is important to link with the non-debug libraries when compiling "release" program versions and debug libraries when compiling "debug" program versions.</LI>
|
||||
|
||||
<LI><B>Unix (and MinGW) Systems:</B> A GNU <TT>configure</TT> shell script is included in the distribution for unix-based systems. From the top-level distribution directory, type <TT>'./configure'</TT> and the script will create <TT>Makefiles</TT> in each project directory specific to the characteristics of the host computer. Then from within any given project directory (example <TT>demo</TT>), type <TT>'make'</TT> to compile the project. In addition, an STK library can be compiled from within the <TT>src</TT> directory.
|
||||
|
||||
@@ -58,6 +58,8 @@ Several options can be supplied to the <TT>configure</TT> script to customize th
|
||||
<LI><TT>--with-oss</TT> to choose native OSS audio API support (linux only, no native OSS MIDI support)</LI>
|
||||
<LI><TT>--with-jack</TT> to choose native JACK API support (linux and Macintosh OS-X)</LI>
|
||||
<LI><TT>--with-core</TT> to choose Core Audio API support (Macintosh OS-X)</LI>
|
||||
<LI><TT>--with-asio</TT> to choose ASIO Audio API support (Windows)</LI>
|
||||
<LI><TT>--with-ds</TT> to choose Windows Direct Sound Audio API support (Windows)</LI>
|
||||
</UL>
|
||||
<P>
|
||||
Note that it is possible to specify as many of the "--with-" options as desired to compile multi-API support. In addition, it is possible to specify the location of the STK rawwaves and the STK include path as follows:
|
||||
@@ -132,23 +134,23 @@ The <I><B>demo</B></I> project demonstrates the behavior of all the distributed
|
||||
|
||||
See the information above with respect to compiling STK for non-realtime use.
|
||||
|
||||
In non-realtime mode, it is assumed that input control messages are provided from a SKINI scorefile and that audio output is written to a soundfile (.snd, .wav, .aif, .mat, .raw). A number of SKINI scorefiles are provided in the <I>scores</I> directory of the <I><B>demo</B></I> project. Assuming a successful compilation of the <I><B>demo</B></I> program, typing:
|
||||
In non-realtime mode, it is assumed that input control messages are provided from a SKINI scorefile and that audio output is written to a soundfile (.snd, .wav, .aif, .mat, .raw). A number of SKINI scorefiles are provided in the <I>scores</I> directory of the <I><B>demo</B></I> project. Assuming a successful compilation of the <I><B>stk-demo</B></I> program, typing:
|
||||
|
||||
\code
|
||||
demo BeeThree -ow myfile.wav -if scores/bookert.ski
|
||||
stk-demo BeeThree -ow myfile.wav -if scores/bookert.ski
|
||||
\endcode
|
||||
|
||||
from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and write the resulting audio data to a WAV formatted soundfile called "myfile.wav" (note that you may need to append <TT>./</TT> to the program name if your default shell setup is not set to look in the current directory). Typing <TT>demo</TT> without any arguments will provide a full program usage description.
|
||||
from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and write the resulting audio data to a WAV formatted soundfile called "myfile.wav" (note that you may need to append <TT>./</TT> to the program name if your default shell setup is not set to look in the current directory). Typing <TT>stk-demo</TT> without any arguments will provide a full program usage description.
|
||||
|
||||
|
||||
\section rt Demo: Realtime Use
|
||||
|
||||
STK realtime audio and MIDI input/output and realtime SKINI control input via socketing support is provided for Linux, Mac OS-X, and Windows95/98/2000/XP operating systems. STK realtime SKINI control input via piping is possible under Linux, Mac OS X, and Windows2000/XP only.
|
||||
<P>
|
||||
Control input and audio output options are typically specified as command-line arguments to STK programs. For example, the <I><B>demo</B></I> program is invoked as:
|
||||
Control input and audio output options are typically specified as command-line arguments to STK programs. For example, the <I><B>stk-demo</B></I> program is invoked as:
|
||||
|
||||
\code
|
||||
demo instrument flags
|
||||
stk-demo instrument flags
|
||||
\endcode
|
||||
|
||||
where instruments include those described above and flags can be any or all of:
|
||||
@@ -165,13 +167,13 @@ where instruments include those described above and flags can be any or all of:
|
||||
</UL>
|
||||
The <i>-ip</i> flag must be used when piping realtime SKINI control data to an STK program. The <i>-im</i> flag must be used to read MIDI control input from your MIDI port. Note that you can use both input types simultaneously.
|
||||
|
||||
Assuming a successful compilation of the <I><B>demo</B></I> program, typing:
|
||||
Assuming a successful compilation of the <I><B>stk-demo</B></I> program, typing:
|
||||
|
||||
\code
|
||||
demo BeeThree -or -if scores/bookert.ski
|
||||
stk-demo BeeThree -or -if scores/bookert.ski
|
||||
\endcode
|
||||
|
||||
from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and stream the resulting audio data in realtime to the audio output channel of your computer. Typing <TT>demo</TT> without any arguments will provide a full program usage description.
|
||||
from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and stream the resulting audio data in realtime to the audio output channel of your computer. Typing <TT>stk-demo</TT> without any arguments will provide a full program usage description.
|
||||
|
||||
|
||||
\section tcl Realtime Control Input using Tcl/Tk Graphical User Interfaces:
|
||||
@@ -179,7 +181,7 @@ from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I>
|
||||
There are a number of <A HREF="http://dev.scriptics.com">Tcl/Tk</A> GUIs supplied with the STK projects. These scripts require Tcl/Tk version 8.0 or later, which can be downloaded for free over the WWW. On Unix and Windows2000/XP platforms, you can run the various executable scripts (e.g. StkDemo.bat) provided with each project to start everything up (you may need to symbolically link the wishXX executable to the name <I>wish</I>). The Physical.bat script just implements the following command-line sequence:
|
||||
|
||||
\code
|
||||
wish < tcl/Physical.tcl | demo Clarinet -or -ip
|
||||
wish < tcl/Physical.tcl | stk-demo Clarinet -or -ip
|
||||
\endcode
|
||||
|
||||
\section midi Realtime MIDI Control Input:
|
||||
@@ -187,17 +189,17 @@ wish < tcl/Physical.tcl | demo Clarinet -or -ip
|
||||
On all supported realtime platforms, you can direct realtime MIDI input to the STK Clarinet by typing:
|
||||
|
||||
\code
|
||||
demo Clarinet -or -im
|
||||
stk-demo Clarinet -or -im
|
||||
\endcode
|
||||
|
||||
This will attempt to use the default MIDI port for input. An optional MIDI port number can be specified after the <TT>-im</TT> flag. Valid MIDI ports are numbered from 0 (default) and higher. On Linux and Macintosh OS-X systems, it is possible to open a virtual MIDI input port (that other software applications can connect to) by specifying a port identifier of -1.
|
||||
|
||||
\section polyphony Polyphony:
|
||||
|
||||
The <I><B>demo</B></I> program supports an arbitrary number of voices via the <TT>-n NUMBER</TT> command-line flag and argument. For example, you can play eight BeeThree instruments with realtime output and control them from a MIDI device by typing:
|
||||
The <I><B>stk-demo</B></I> program supports an arbitrary number of voices via the <TT>-n NUMBER</TT> command-line flag and argument. For example, you can play eight BeeThree instruments with realtime output and control them from a MIDI device by typing:
|
||||
|
||||
\code
|
||||
demo BeeThree -n 8 -or -im
|
||||
stk-demo BeeThree -n 8 -or -im
|
||||
\endcode
|
||||
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
STK: A ToolKit of Audio Synthesis Classes and Instruments in C++
|
||||
|
||||
By Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
By Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
|
||||
STK Classes - See the HTML documentation in the html directory for complete information.
|
||||
|
||||
@@ -173,7 +173,7 @@ effects.cpp Effects demonstration program
|
||||
ragamatic.cpp Nirvana just waiting to happen
|
||||
|
||||
Skini.cpp SKINI file/message parser object
|
||||
SKINI.msg #defines for often used and universal MIDI/SKINI symbols
|
||||
SKINI.tbl Table of SKINI messages
|
||||
SKINImsg.h #defines for often used and universal MIDI/SKINI symbols
|
||||
SKINItbl.h Table of SKINI messages
|
||||
|
||||
|
||||
|
||||
94
iOS/README-iOS.md
Normal file
94
iOS/README-iOS.md
Normal file
@@ -0,0 +1,94 @@
|
||||
This file contains instructions for integrating the STK in Xcode projects and solutions to common integration issues.
|
||||
|
||||
## Setup
|
||||
|
||||
### If you have [Cocoapods](http://cocoapods.org/)
|
||||
|
||||
1. Add `pod 'STK', '~> 4.5'` to your Podfile.
|
||||
|
||||
1. Run `pod install`
|
||||
|
||||
### If you don't have Cocoapods
|
||||
|
||||
1. Clone or [download][download_link] the STK into your project's directory.
|
||||
|
||||
1. Open the **STK for iOS** folder, and drag and drop **STK.xcodeproj** into your Xcode project.
|
||||
|
||||
1. Open your project's settings, open the *Build Phases* tab. In the *Link Binary with Libraries* section, add **libSTK.a**.
|
||||
![][linking_libSTK_screenshot]
|
||||
|
||||
1. In your project's settings, open the *Build Settings* tab. In the *Search Paths* section, double click on the field to the right of *Header Search Paths*, and add the path to the STK's **include** directory relative to your Xcode project's directory.
|
||||
![][header_search_paths_screenshot]
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
1. Import the STK classes in the source files you require.
|
||||
* E.g. `#import "SineWave.h"`
|
||||
|
||||
1. Change the extension of Objective-C files that import STK files to **.mm**.
|
||||
* E.g. **ViewController.m** —> **ViewController.mm**
|
||||
|
||||
You can also look at the [iOS Demo project](..projects/demo/iOS%20Demo) for a sample usage.
|
||||
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### 'FileName.h' file not found
|
||||
|
||||
If you get this error when `#import`ing an STK header, you have added the wrong header search path for the STK in your project's settings (see Step 4 in Setup)
|
||||
|
||||
The STK's header search path you need to add is the path to the STK's **include** directory relative to your project's directory (as if you were `cd`ing into it). For example, it is `stk/include/` if the stk directory is inside your project's directory, but it is `../stk/include/` if both share the same directory.
|
||||
|
||||
If this problem doesn't go away:
|
||||
|
||||
1. Delete **STK.xcodeproj** from your Xcode project
|
||||
1. Move the STK directory within your project's directory.
|
||||
1. Follow step 1 from **Setup**, add `stk/include` to the *Header Search Paths*.
|
||||
|
||||
If that doesn't solve it:
|
||||
Install Cocoapods and use it to install the STK. It takes one minute and will make your life easier. Visit the [Cocoapods website](http://cocoapods.org/) for installation instructions.
|
||||
|
||||
### FileRead::open: could not open or find file (../../rawwaves/filename.raw)!
|
||||
|
||||
If you use a class that makes use of raw waves (such as `Mandolin`, `Wurley`, or `Rhodey`) you need to make sure that the STK's raw wave files are copied into your bundle and that the STK knows where they are. You'll know you need to if you get this runtime error:
|
||||
`FileRead::open: could not open or find file (../../rawwaves/filename.raw)!`
|
||||
|
||||
#### If you're using Cocoapods
|
||||
|
||||
Add this code before using a class that needs the raw waves:
|
||||
```objective-c
|
||||
stk::Stk::setRawwavePath([[[NSBundle mainBundle] pathForResource:@"rawwaves" ofType:@"bundle"] UTF8String]);
|
||||
```
|
||||
|
||||
#### If you're not using Cocoapods
|
||||
|
||||
1. Open your project's settings, open the *Build Phases* tab.
|
||||
1. In the *Copy Bundle Resources*, drag and drop **rawwaves.bundle** (it's located in **STK.xcodeproj**'s **Helpers** folder).
|
||||
1. Then add this code before using a class that needs the raw waves:
|
||||
|
||||
```objective-c
|
||||
NSBundle *rawwaveBundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"rawwaves" withExtension:@"bundle"]];
|
||||
stk::Stk::setRawwavePath([[rawwaveBundle resourcePath] UTF8String]);
|
||||
```
|
||||
|
||||
|
||||
### rawwaves.bundle: No such file or directory
|
||||
|
||||
This means that **rawwaves.bundle** hasn't been copied to the build folder, so you'll need to do it manually:
|
||||
|
||||
Select the rawwaves scheme:
|
||||
|
||||
![][rawwaves_scheme_screenshot]
|
||||
|
||||
Build it (⌘+B) then build your project's main scheme.
|
||||
|
||||
### Apple Mach-O Linker Error
|
||||
|
||||
This means that **STKLib.a** isn't being linked to your binary. Follow step 2 above in [Setup](#setup).
|
||||
|
||||
|
||||
[download_link]: https://github.com/thestk/stk/archive/master.zip
|
||||
[linking_libSTK_screenshot]: http://i.imgur.com/cLbGrtq.png
|
||||
[header_search_paths_screenshot]: http://i.imgur.com/iBTC06h.png
|
||||
[rawwaves_scheme_screenshot]: http://i.imgur.com/PKd7epf.png
|
||||
1112
iOS/STK.xcodeproj/project.pbxproj
Normal file
1112
iOS/STK.xcodeproj/project.pbxproj
Normal file
File diff suppressed because it is too large
Load Diff
7
iOS/STK.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
iOS/STK.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:STK for iOS.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
10
iOS/demo/README.MD
Normal file
10
iOS/demo/README.MD
Normal file
@@ -0,0 +1,10 @@
|
||||
##iOS Demo Xcode project
|
||||
|
||||
This project briefly shows how to manually integrate the STK static library into an Xcode project. See the **README** file in the STK's `iOS` directory for precise instructions.
|
||||
|
||||
Currently, this project does not output sound, it only shows how to generate audio samples from the STK classes within an iOS project, and how to control STK objects via UI controls.
|
||||
|
||||
Note the following:
|
||||
|
||||
* ViewController needs to be renamed with the **.mm** extension as it's importing STK files, which are C++.
|
||||
* The header search paths in the *Build Settings* of **iOS Demo.xcodeproj** point to `../../include/` because the STK's `include` directory is two directories up relative to it.
|
||||
524
iOS/demo/iOS Demo.xcodeproj/project.pbxproj
Normal file
524
iOS/demo/iOS Demo.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,524 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
B02FD53618C520D60009ECA9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B02FD53518C520D60009ECA9 /* Foundation.framework */; };
|
||||
B02FD53818C520D60009ECA9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B02FD53718C520D60009ECA9 /* CoreGraphics.framework */; };
|
||||
B02FD53A18C520D60009ECA9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B02FD53918C520D60009ECA9 /* UIKit.framework */; };
|
||||
B02FD54018C520D60009ECA9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B02FD53E18C520D60009ECA9 /* InfoPlist.strings */; };
|
||||
B02FD54218C520D60009ECA9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B02FD54118C520D60009ECA9 /* main.m */; };
|
||||
B02FD54618C520D60009ECA9 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B02FD54518C520D60009ECA9 /* AppDelegate.m */; };
|
||||
B02FD54818C520D60009ECA9 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B02FD54718C520D60009ECA9 /* Images.xcassets */; };
|
||||
B02FD54F18C520D70009ECA9 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B02FD54E18C520D70009ECA9 /* XCTest.framework */; };
|
||||
B02FD55018C520D70009ECA9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B02FD53518C520D60009ECA9 /* Foundation.framework */; };
|
||||
B02FD55118C520D70009ECA9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B02FD53918C520D60009ECA9 /* UIKit.framework */; };
|
||||
B02FD55918C520D70009ECA9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B02FD55718C520D70009ECA9 /* InfoPlist.strings */; };
|
||||
B02FD55B18C520D70009ECA9 /* iOS_DemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B02FD55A18C520D70009ECA9 /* iOS_DemoTests.m */; };
|
||||
B02FD57018C521560009ECA9 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B02FD56F18C521560009ECA9 /* ViewController.mm */; };
|
||||
B0779A8718D376F5004DA9B7 /* libSTK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B0779A8418D376A6004DA9B7 /* libSTK.a */; };
|
||||
B0779A8B18D37C13004DA9B7 /* rawwaves.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B0779A8618D376A6004DA9B7 /* rawwaves.bundle */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
B02FD55218C520D70009ECA9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B02FD52A18C520D60009ECA9 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = B02FD53118C520D60009ECA9;
|
||||
remoteInfo = "iOS Demo";
|
||||
};
|
||||
B0779A8318D376A6004DA9B7 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B0779A7E18D376A5004DA9B7 /* STK.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = B0AC5BEE18CB31DE00D860C0;
|
||||
remoteInfo = STK;
|
||||
};
|
||||
B0779A8518D376A6004DA9B7 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B0779A7E18D376A5004DA9B7 /* STK.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = B0EC33B718CB73A70005787B;
|
||||
remoteInfo = rawwaves;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
B02FD53218C520D60009ECA9 /* iOS Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "iOS Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B02FD53518C520D60009ECA9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
B02FD53718C520D60009ECA9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
B02FD53918C520D60009ECA9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
B02FD53D18C520D60009ECA9 /* iOS Demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS Demo-Info.plist"; sourceTree = "<group>"; };
|
||||
B02FD53F18C520D60009ECA9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
B02FD54118C520D60009ECA9 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
B02FD54318C520D60009ECA9 /* iOS Demo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iOS Demo-Prefix.pch"; sourceTree = "<group>"; };
|
||||
B02FD54418C520D60009ECA9 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
B02FD54518C520D60009ECA9 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
B02FD54718C520D60009ECA9 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
B02FD54D18C520D70009ECA9 /* iOS DemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "iOS DemoTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B02FD54E18C520D70009ECA9 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
B02FD55618C520D70009ECA9 /* iOS DemoTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS DemoTests-Info.plist"; sourceTree = "<group>"; };
|
||||
B02FD55818C520D70009ECA9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
B02FD55A18C520D70009ECA9 /* iOS_DemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iOS_DemoTests.m; sourceTree = "<group>"; };
|
||||
B02FD56E18C521560009ECA9 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
B02FD56F18C521560009ECA9 /* ViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = "<group>"; };
|
||||
B0779A7E18D376A5004DA9B7 /* STK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = STK.xcodeproj; path = ../STK.xcodeproj; sourceTree = "<group>"; };
|
||||
B0779A8918D37977004DA9B7 /* README.MD */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.MD; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
B02FD52F18C520D60009ECA9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B0779A8718D376F5004DA9B7 /* libSTK.a in Frameworks */,
|
||||
B02FD53818C520D60009ECA9 /* CoreGraphics.framework in Frameworks */,
|
||||
B02FD53A18C520D60009ECA9 /* UIKit.framework in Frameworks */,
|
||||
B02FD53618C520D60009ECA9 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B02FD54A18C520D70009ECA9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B02FD54F18C520D70009ECA9 /* XCTest.framework in Frameworks */,
|
||||
B02FD55118C520D70009ECA9 /* UIKit.framework in Frameworks */,
|
||||
B02FD55018C520D70009ECA9 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
B02FD52918C520D60009ECA9 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B0779A8918D37977004DA9B7 /* README.MD */,
|
||||
B0779A7E18D376A5004DA9B7 /* STK.xcodeproj */,
|
||||
B02FD53B18C520D60009ECA9 /* iOS Demo */,
|
||||
B02FD55418C520D70009ECA9 /* iOS DemoTests */,
|
||||
B02FD53418C520D60009ECA9 /* Frameworks */,
|
||||
B02FD53318C520D60009ECA9 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD53318C520D60009ECA9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B02FD53218C520D60009ECA9 /* iOS Demo.app */,
|
||||
B02FD54D18C520D70009ECA9 /* iOS DemoTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD53418C520D60009ECA9 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B02FD53518C520D60009ECA9 /* Foundation.framework */,
|
||||
B02FD53718C520D60009ECA9 /* CoreGraphics.framework */,
|
||||
B02FD53918C520D60009ECA9 /* UIKit.framework */,
|
||||
B02FD54E18C520D70009ECA9 /* XCTest.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD53B18C520D60009ECA9 /* iOS Demo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B02FD54418C520D60009ECA9 /* AppDelegate.h */,
|
||||
B02FD54518C520D60009ECA9 /* AppDelegate.m */,
|
||||
B02FD56E18C521560009ECA9 /* ViewController.h */,
|
||||
B02FD56F18C521560009ECA9 /* ViewController.mm */,
|
||||
B02FD54718C520D60009ECA9 /* Images.xcassets */,
|
||||
B02FD53C18C520D60009ECA9 /* Supporting Files */,
|
||||
);
|
||||
path = "iOS Demo";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD53C18C520D60009ECA9 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B02FD53D18C520D60009ECA9 /* iOS Demo-Info.plist */,
|
||||
B02FD53E18C520D60009ECA9 /* InfoPlist.strings */,
|
||||
B02FD54118C520D60009ECA9 /* main.m */,
|
||||
B02FD54318C520D60009ECA9 /* iOS Demo-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD55418C520D70009ECA9 /* iOS DemoTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B02FD55A18C520D70009ECA9 /* iOS_DemoTests.m */,
|
||||
B02FD55518C520D70009ECA9 /* Supporting Files */,
|
||||
);
|
||||
path = "iOS DemoTests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD55518C520D70009ECA9 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B02FD55618C520D70009ECA9 /* iOS DemoTests-Info.plist */,
|
||||
B02FD55718C520D70009ECA9 /* InfoPlist.strings */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B0779A7F18D376A5004DA9B7 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B0779A8418D376A6004DA9B7 /* libSTK.a */,
|
||||
B0779A8618D376A6004DA9B7 /* rawwaves.bundle */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
B02FD53118C520D60009ECA9 /* iOS Demo */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = B02FD55E18C520D70009ECA9 /* Build configuration list for PBXNativeTarget "iOS Demo" */;
|
||||
buildPhases = (
|
||||
B02FD52E18C520D60009ECA9 /* Sources */,
|
||||
B02FD52F18C520D60009ECA9 /* Frameworks */,
|
||||
B02FD53018C520D60009ECA9 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "iOS Demo";
|
||||
productName = "iOS Demo";
|
||||
productReference = B02FD53218C520D60009ECA9 /* iOS Demo.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
B02FD54C18C520D70009ECA9 /* iOS DemoTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = B02FD56118C520D70009ECA9 /* Build configuration list for PBXNativeTarget "iOS DemoTests" */;
|
||||
buildPhases = (
|
||||
B02FD54918C520D70009ECA9 /* Sources */,
|
||||
B02FD54A18C520D70009ECA9 /* Frameworks */,
|
||||
B02FD54B18C520D70009ECA9 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
B02FD55318C520D70009ECA9 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "iOS DemoTests";
|
||||
productName = "iOS DemoTests";
|
||||
productReference = B02FD54D18C520D70009ECA9 /* iOS DemoTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
B02FD52A18C520D60009ECA9 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = "Ariel Elkin";
|
||||
TargetAttributes = {
|
||||
B02FD54C18C520D70009ECA9 = {
|
||||
TestTargetID = B02FD53118C520D60009ECA9;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = B02FD52D18C520D60009ECA9 /* Build configuration list for PBXProject "iOS Demo" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = B02FD52918C520D60009ECA9;
|
||||
productRefGroup = B02FD53318C520D60009ECA9 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = B0779A7F18D376A5004DA9B7 /* Products */;
|
||||
ProjectRef = B0779A7E18D376A5004DA9B7 /* STK.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
B02FD53118C520D60009ECA9 /* iOS Demo */,
|
||||
B02FD54C18C520D70009ECA9 /* iOS DemoTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
B0779A8418D376A6004DA9B7 /* libSTK.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libSTK.a;
|
||||
remoteRef = B0779A8318D376A6004DA9B7 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
B0779A8618D376A6004DA9B7 /* rawwaves.bundle */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
path = rawwaves.bundle;
|
||||
remoteRef = B0779A8518D376A6004DA9B7 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
B02FD53018C520D60009ECA9 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B0779A8B18D37C13004DA9B7 /* rawwaves.bundle in Resources */,
|
||||
B02FD54018C520D60009ECA9 /* InfoPlist.strings in Resources */,
|
||||
B02FD54818C520D60009ECA9 /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B02FD54B18C520D70009ECA9 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B02FD55918C520D70009ECA9 /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
B02FD52E18C520D60009ECA9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B02FD57018C521560009ECA9 /* ViewController.mm in Sources */,
|
||||
B02FD54618C520D60009ECA9 /* AppDelegate.m in Sources */,
|
||||
B02FD54218C520D60009ECA9 /* main.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B02FD54918C520D70009ECA9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B02FD55B18C520D70009ECA9 /* iOS_DemoTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
B02FD55318C520D70009ECA9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = B02FD53118C520D60009ECA9 /* iOS Demo */;
|
||||
targetProxy = B02FD55218C520D70009ECA9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
B02FD53E18C520D60009ECA9 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B02FD53F18C520D60009ECA9 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B02FD55718C520D70009ECA9 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B02FD55818C520D70009ECA9 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
B02FD55C18C520D70009ECA9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B02FD55D18C520D70009ECA9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B02FD55F18C520D70009ECA9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS Demo/iOS Demo-Prefix.pch";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../include/,
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
);
|
||||
INFOPLIST_FILE = "iOS Demo/iOS Demo-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B02FD56018C520D70009ECA9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS Demo/iOS Demo-Prefix.pch";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../include/,
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
);
|
||||
INFOPLIST_FILE = "iOS Demo/iOS Demo-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B02FD56218C520D70009ECA9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/iOS Demo.app/iOS Demo";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
"$(DEVELOPER_FRAMEWORKS_DIR)",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS Demo/iOS Demo-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "iOS DemoTests/iOS DemoTests-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B02FD56318C520D70009ECA9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/iOS Demo.app/iOS Demo";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
"$(DEVELOPER_FRAMEWORKS_DIR)",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS Demo/iOS Demo-Prefix.pch";
|
||||
INFOPLIST_FILE = "iOS DemoTests/iOS DemoTests-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
B02FD52D18C520D60009ECA9 /* Build configuration list for PBXProject "iOS Demo" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
B02FD55C18C520D70009ECA9 /* Debug */,
|
||||
B02FD55D18C520D70009ECA9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
B02FD55E18C520D70009ECA9 /* Build configuration list for PBXNativeTarget "iOS Demo" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
B02FD55F18C520D70009ECA9 /* Debug */,
|
||||
B02FD56018C520D70009ECA9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
B02FD56118C520D70009ECA9 /* Build configuration list for PBXNativeTarget "iOS DemoTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
B02FD56218C520D70009ECA9 /* Debug */,
|
||||
B02FD56318C520D70009ECA9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = B02FD52A18C520D60009ECA9 /* Project object */;
|
||||
}
|
||||
7
iOS/demo/iOS Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
iOS/demo/iOS Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:iOS Demo.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
|
||||
<false/>
|
||||
<key>IDESourceControlProjectIdentifier</key>
|
||||
<string>4E1BA790-84C0-4F40-AECE-98269B537CE6</string>
|
||||
<key>IDESourceControlProjectName</key>
|
||||
<string>iOS Demo</string>
|
||||
<key>IDESourceControlProjectOriginsDictionary</key>
|
||||
<dict>
|
||||
<key>CB047168-D1C4-40BC-85A3-6EB0A20AD217</key>
|
||||
<string>ssh://github.com/arielelkin/stk.git</string>
|
||||
</dict>
|
||||
<key>IDESourceControlProjectPath</key>
|
||||
<string>iOS/Demo/iOS Demo.xcodeproj/project.xcworkspace</string>
|
||||
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
|
||||
<dict>
|
||||
<key>CB047168-D1C4-40BC-85A3-6EB0A20AD217</key>
|
||||
<string>../../../..</string>
|
||||
</dict>
|
||||
<key>IDESourceControlProjectURL</key>
|
||||
<string>ssh://github.com/arielelkin/stk.git</string>
|
||||
<key>IDESourceControlProjectVersion</key>
|
||||
<integer>110</integer>
|
||||
<key>IDESourceControlProjectWCCIdentifier</key>
|
||||
<string>CB047168-D1C4-40BC-85A3-6EB0A20AD217</string>
|
||||
<key>IDESourceControlProjectWCConfigurations</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
|
||||
<string>public.vcs.git</string>
|
||||
<key>IDESourceControlWCCIdentifierKey</key>
|
||||
<string>CB047168-D1C4-40BC-85A3-6EB0A20AD217</string>
|
||||
<key>IDESourceControlWCCName</key>
|
||||
<string>stk</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
14
iOS/demo/iOS Demo/AppDelegate.h
Normal file
14
iOS/demo/iOS Demo/AppDelegate.h
Normal file
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// iOS Demo
|
||||
//
|
||||
// Created by Ariel Elkin on 03/03/2014.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property (strong, nonatomic) UIWindow *window;
|
||||
|
||||
@end
|
||||
25
iOS/demo/iOS Demo/AppDelegate.m
Normal file
25
iOS/demo/iOS Demo/AppDelegate.m
Normal file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// iOS Demo
|
||||
//
|
||||
// Created by Ariel Elkin on 03/03/2014.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "ViewController.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||
|
||||
ViewController *vc = [[ViewController alloc] initWithNibName:nil bundle:nil];
|
||||
[self.window setRootViewController:vc];
|
||||
|
||||
[self.window makeKeyAndVisible];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
12
iOS/demo/iOS Demo/ViewController.h
Normal file
12
iOS/demo/iOS Demo/ViewController.h
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// ViewController.h
|
||||
// iOS Demo
|
||||
//
|
||||
// Created by Ariel Elkin on 03/03/2014.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface ViewController : UIViewController
|
||||
|
||||
@end
|
||||
108
iOS/demo/iOS Demo/ViewController.mm
Normal file
108
iOS/demo/iOS Demo/ViewController.mm
Normal file
@@ -0,0 +1,108 @@
|
||||
//
|
||||
// ViewController.m
|
||||
// iOS Demo
|
||||
//
|
||||
// Created by Ariel Elkin on 03/03/2014.
|
||||
//
|
||||
|
||||
#import "ViewController.h"
|
||||
|
||||
#import "SineWave.h"
|
||||
#import "Brass.h"
|
||||
#import "Mandolin.h"
|
||||
|
||||
@implementation ViewController {
|
||||
stk::SineWave *sineWave;
|
||||
stk::Brass *brass;
|
||||
}
|
||||
|
||||
- (void)loadView {
|
||||
self.view = [UIView new];
|
||||
[self.view setBackgroundColor:[UIColor whiteColor]];
|
||||
[self setupUI];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
|
||||
NSUInteger samplesToGenerate = 1000;
|
||||
|
||||
//Test SineWave:
|
||||
sineWave = new stk::SineWave();
|
||||
|
||||
for (NSUInteger i = 0; i < samplesToGenerate; i ++) {
|
||||
float sample = sineWave->tick();
|
||||
NSLog(@"SineWave sample: %f", sample);
|
||||
}
|
||||
|
||||
//Test Brass:
|
||||
brass = new stk::Brass();
|
||||
|
||||
brass->noteOn(400, 1);
|
||||
|
||||
for (NSUInteger i = 0; i < samplesToGenerate; i ++) {
|
||||
float sample = brass->tick();
|
||||
NSLog(@"Brass sample: %f", sample);
|
||||
}
|
||||
|
||||
//We're going to be making use of a class that needs
|
||||
//raw wave files, we need to tell the STK where
|
||||
//the files are:
|
||||
stk::Stk::setRawwavePath([[[NSBundle mainBundle] pathForResource:@"rawwaves" ofType:@"bundle"] UTF8String]);
|
||||
|
||||
|
||||
//Test Mandolin:
|
||||
stk::Mandolin *mandolin = new stk::Mandolin(400);
|
||||
|
||||
mandolin->pluck(1);
|
||||
|
||||
for (NSUInteger i = 0; i < samplesToGenerate; i ++) {
|
||||
float sample = mandolin->tick();
|
||||
NSLog(@"Mandolin sample: %f", sample);
|
||||
}
|
||||
|
||||
|
||||
#pragma mark TODO - Audio playback
|
||||
}
|
||||
|
||||
|
||||
- (void)sineSliderMoved:(UISlider *)slider {
|
||||
sineWave->setFrequency(slider.value);
|
||||
NSLog(@"Setting SineWave frequency to %.2f", slider.value);
|
||||
}
|
||||
|
||||
- (void)brassSliderMoved:(UISlider *)slider {
|
||||
brass->setFrequency(slider.value);
|
||||
NSLog(@"Setting Brass frequency to %.2f", slider.value);
|
||||
}
|
||||
|
||||
- (void)setupUI {
|
||||
|
||||
//Add slider to control sine wave frequency:
|
||||
UISlider *sineSlider = [[UISlider alloc] init];
|
||||
[sineSlider addTarget:self action:@selector(sineSliderMoved:) forControlEvents:UIControlEventValueChanged];
|
||||
[sineSlider setMinimumValue:0];
|
||||
[sineSlider setMaximumValue:800];
|
||||
[sineSlider setTranslatesAutoresizingMaskIntoConstraints:NO];
|
||||
[self.view addSubview:sineSlider];
|
||||
|
||||
NSDictionary *metrics = @{@"sliderWidth": @200};
|
||||
|
||||
NSArray *sliderConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-40-[sineSlider(sliderWidth)]" options:0 metrics:metrics views:@{@"sineSlider": sineSlider}];
|
||||
[self.view addConstraints:sliderConstraints];
|
||||
|
||||
//Add slider to control brass's frequency:
|
||||
UISlider *brassSlider = [[UISlider alloc] init];
|
||||
[brassSlider addTarget:self action:@selector(brassSliderMoved:) forControlEvents:UIControlEventValueChanged];
|
||||
[brassSlider setMinimumValue:0];
|
||||
[brassSlider setMaximumValue:800];
|
||||
[brassSlider setTranslatesAutoresizingMaskIntoConstraints:NO];
|
||||
[self.view addSubview:brassSlider];
|
||||
|
||||
sliderConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-40-[brassSlider(sliderWidth)]" options:0 metrics:metrics views:@{@"brassSlider": brassSlider}];
|
||||
[self.view addConstraints:sliderConstraints];
|
||||
sliderConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[sineSlider]-[brassSlider]" options:0 metrics:nil views:@{@"sineSlider": sineSlider, @"brassSlider": brassSlider}];
|
||||
[self.view addConstraints:sliderConstraints];
|
||||
}
|
||||
|
||||
@end
|
||||
2
iOS/demo/iOS Demo/en.lproj/InfoPlist.strings
Normal file
2
iOS/demo/iOS Demo/en.lproj/InfoPlist.strings
Normal file
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
38
iOS/demo/iOS Demo/iOS Demo-Info.plist
Normal file
38
iOS/demo/iOS Demo/iOS Demo-Info.plist
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>stk.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
16
iOS/demo/iOS Demo/iOS Demo-Prefix.pch
Normal file
16
iOS/demo/iOS Demo/iOS Demo-Prefix.pch
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// Prefix header
|
||||
//
|
||||
// The contents of this file are implicitly included at the beginning of every source file.
|
||||
//
|
||||
|
||||
#import <Availability.h>
|
||||
|
||||
#ifndef __IPHONE_3_0
|
||||
#warning "This project uses features only available in iOS SDK 3.0 and later."
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
18
iOS/demo/iOS Demo/main.m
Normal file
18
iOS/demo/iOS Demo/main.m
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// main.m
|
||||
// iOS Demo
|
||||
//
|
||||
// Created by Ariel Elkin on 03/03/2014.
|
||||
// Copyright (c) 2014 Ariel Elkin. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
2
iOS/demo/iOS DemoTests/en.lproj/InfoPlist.strings
Normal file
2
iOS/demo/iOS DemoTests/en.lproj/InfoPlist.strings
Normal file
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
22
iOS/demo/iOS DemoTests/iOS DemoTests-Info.plist
Normal file
22
iOS/demo/iOS DemoTests/iOS DemoTests-Info.plist
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>stk.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
34
iOS/demo/iOS DemoTests/iOS_DemoTests.m
Normal file
34
iOS/demo/iOS DemoTests/iOS_DemoTests.m
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// iOS_DemoTests.m
|
||||
// iOS DemoTests
|
||||
//
|
||||
// Created by Ariel Elkin on 03/03/2014.
|
||||
// Copyright (c) 2014 Ariel Elkin. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
@interface iOS_DemoTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation iOS_DemoTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testExample
|
||||
{
|
||||
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -17,7 +17,7 @@ namespace stk {
|
||||
be non-negative. All time settings are in seconds and must be
|
||||
positive.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace stk {
|
||||
to \e keyOn and \e keyOff messages by ramping to
|
||||
1.0 on keyOn and to 0.0 on keyOff.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace stk {
|
||||
type who should worry about this (making
|
||||
money) worry away.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -73,7 +73,7 @@ class BeeThree : public FM
|
||||
|
||||
inline StkFloat BeeThree :: tick( unsigned int )
|
||||
{
|
||||
register StkFloat temp;
|
||||
StkFloat temp;
|
||||
|
||||
if ( modDepth_ > 0.0 ) {
|
||||
temp = 1.0 + ( modDepth_ * vibrato_.tick() * 0.1 );
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace stk {
|
||||
Methods are provided for creating a resonance or notch in the
|
||||
frequency response while maintaining a constant filter gain.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace stk {
|
||||
- Vibrato Gain = 1
|
||||
- Volume = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace stk {
|
||||
- Register State = 1
|
||||
- Breath Pressure = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace stk {
|
||||
(1986). The output is an instantaneous
|
||||
reflection coefficient value.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace stk {
|
||||
- Frequency = 101
|
||||
- Volume = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
Contributions by Esteban Maestre, 2011.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace stk {
|
||||
- Vibrato Gain = 1
|
||||
- Volume = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace stk {
|
||||
This class implements a chorus effect. It takes a monophonic
|
||||
input signal and produces a stereo output signal.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace stk {
|
||||
- Vibrato Gain = 1
|
||||
- Breath Pressure = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace stk {
|
||||
A non-interpolating delay line is typically used in fixed
|
||||
delay-length applications, such as for reverberation.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace stk {
|
||||
minimum delay possible in this implementation is limited to a
|
||||
value of 0.5.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace stk {
|
||||
delay setting. The use of higher order Lagrange interpolators can
|
||||
typically improve (minimize) this attenuation characteristic.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -133,6 +133,33 @@ inline StkFloat DelayL :: nextOut( void )
|
||||
return nextOutput_;
|
||||
}
|
||||
|
||||
inline void DelayL :: setDelay( StkFloat delay )
|
||||
{
|
||||
if ( delay + 1 > inputs_.size() ) { // The value is too big.
|
||||
oStream_ << "DelayL::setDelay: argument (" << delay << ") greater than maximum!";
|
||||
handleError( StkError::WARNING ); return;
|
||||
}
|
||||
|
||||
if (delay < 0 ) {
|
||||
oStream_ << "DelayL::setDelay: argument (" << delay << ") less than zero!";
|
||||
handleError( StkError::WARNING ); return;
|
||||
}
|
||||
|
||||
StkFloat outPointer = inPoint_ - delay; // read chases write
|
||||
delay_ = delay;
|
||||
|
||||
while ( outPointer < 0 )
|
||||
outPointer += inputs_.size(); // modulo maximum length
|
||||
|
||||
outPoint_ = (long) outPointer; // integer part
|
||||
|
||||
alpha_ = outPointer - outPoint_; // fractional part
|
||||
omAlpha_ = (StkFloat) 1.0 - alpha_;
|
||||
|
||||
if ( outPoint_ == inputs_.size() ) outPoint_ = 0;
|
||||
doNextOut_ = true;
|
||||
}
|
||||
|
||||
inline StkFloat DelayL :: tick( StkFloat input )
|
||||
{
|
||||
inputs_[inPoint_++] = input * gain_;
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace stk {
|
||||
of simultaneous voices) via a #define in the
|
||||
Drummer.h.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace stk {
|
||||
|
||||
This class implements an echo effect.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace stk {
|
||||
subclasses. It is general enough to support both monophonic and
|
||||
polyphonic input/output classes.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace stk {
|
||||
specified \e rate. It also responds to simple \e keyOn and \e
|
||||
keyOff messages, ramping to 1.0 on keyOn and to 0.0 on keyOff.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace stk {
|
||||
type who should worry about this (making
|
||||
money) worry away.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -46,9 +46,6 @@ class FM : public Instrmnt
|
||||
//! Class destructor.
|
||||
virtual ~FM( void );
|
||||
|
||||
//! Reset and clear all wave and envelope states.
|
||||
void clear( void );
|
||||
|
||||
//! Load the rawwave filenames in waves.
|
||||
void loadWaves( const char **filenames );
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace stk {
|
||||
type who should worry about this (making
|
||||
money) worry away.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -80,7 +80,7 @@ class FMVoices : public FM
|
||||
|
||||
inline StkFloat FMVoices :: tick( unsigned int )
|
||||
{
|
||||
register StkFloat temp, temp2;
|
||||
StkFloat temp, temp2;
|
||||
|
||||
temp = gains_[3] * adsr_[3]->tick() * waves_[3]->tick();
|
||||
temp2 = vibrato_.tick() * modDepth_ * 0.1;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace stk {
|
||||
the overloaded one that takes an StkFrames object for
|
||||
multi-channel and/or multi-frame data.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -31,7 +31,8 @@ class FileLoop : protected FileWvIn
|
||||
|
||||
//! Class constructor that opens a specified file.
|
||||
FileLoop( std::string fileName, bool raw = false, bool doNormalize = true,
|
||||
unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
|
||||
unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024,
|
||||
bool doInt2FloatScaling = true );
|
||||
|
||||
//! Class destructor.
|
||||
~FileLoop( void );
|
||||
@@ -40,13 +41,14 @@ class FileLoop : protected FileWvIn
|
||||
/*!
|
||||
Data from a previously opened file will be overwritten by this
|
||||
function. An StkError will be thrown if the file is not found,
|
||||
its format is unknown, or a read error occurs. If the file data
|
||||
is to be loaded incrementally from disk and normalization is
|
||||
specified, a scaling will be applied with respect to fixed-point
|
||||
limits. If the data format is floating-point, no scaling is
|
||||
performed.
|
||||
its format is unknown, or a read error occurs. If the file length
|
||||
is less than the chunkThreshold limit and \e doNormalize is true,
|
||||
the file data will be normalized with respect to the maximum absolute
|
||||
value of the data. If the \e doInt2FloatScaling flag is true and the
|
||||
input data is fixed-point, a scaling will be applied with respect to
|
||||
the fixed-point limits.
|
||||
*/
|
||||
void openFile( std::string fileName, bool raw = false, bool doNormalize = true );
|
||||
void openFile( std::string fileName, bool raw = false, bool doNormalize = true, bool doInt2FloatScaling = true );
|
||||
|
||||
//! Close a file if one is open.
|
||||
void closeFile( void ) { FileWvIn::closeFile(); };
|
||||
@@ -95,7 +97,7 @@ class FileLoop : protected FileWvIn
|
||||
corresponds to file cycles per second. The frequency can be
|
||||
negative, in which case the loop is read in reverse order.
|
||||
*/
|
||||
void setFrequency( StkFloat frequency ) { this->setRate( file_.fileSize() * frequency / Stk::sampleRate() ); };
|
||||
void setFrequency( StkFloat frequency ) { this->setRate( fileSize_ * frequency / Stk::sampleRate() ); };
|
||||
|
||||
//! Increment the read pointer by \e time samples, modulo file size.
|
||||
void addTime( StkFloat time );
|
||||
@@ -140,17 +142,15 @@ class FileLoop : protected FileWvIn
|
||||
*/
|
||||
StkFloat tick( unsigned int channel = 0 );
|
||||
|
||||
//! Fill the StkFrames argument with computed frames and return the same reference.
|
||||
//! Fill the StkFrames object with computed sample frames, starting at the specified channel and return the same reference.
|
||||
/*!
|
||||
The number of channels in the StkFrames argument should equal
|
||||
the number of channels in the file data. However, this is only
|
||||
checked if _STK_DEBUG_ is defined during compilation, in which
|
||||
case an incompatibility will trigger an StkError exception. If no
|
||||
file data is loaded, the function does nothing (a warning will be
|
||||
issued if _STK_DEBUG_ is defined during compilation and
|
||||
Stk::showWarnings() has been set to \e true).
|
||||
The \c channel argument plus the number of output channels must
|
||||
be less than the number of channels in the StkFrames argument (the
|
||||
first channel is specified by 0). However, range checking is only
|
||||
performed if _STK_DEBUG_ is defined during compilation, in which
|
||||
case an out-of-range value will trigger an StkError exception.
|
||||
*/
|
||||
StkFrames& tick( StkFrames& frames );
|
||||
virtual StkFrames& tick( StkFrames& frames,unsigned int channel = 0 );
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace stk {
|
||||
such variable is found, the sample rate is
|
||||
assumed to be 44100 Hz.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace stk {
|
||||
type, the data type will automatically be modified. Compressed
|
||||
data types are not supported.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -29,13 +29,23 @@ namespace stk {
|
||||
chunkThreshold (in sample frames) will be read incrementally in
|
||||
chunks of \e chunkSize each (also in sample frames).
|
||||
|
||||
For file data read completely into local memory, the \e doNormalize
|
||||
flag can be used to normalize all values with respect to the maximum
|
||||
absolute value of the data.
|
||||
|
||||
If the file data format is fixed point, the flag \e doInt2FloatScaling
|
||||
can be used to control whether the values are scaled with respect to
|
||||
the corresponding fixed-point maximum. For example, if reading 16-bit
|
||||
signed integers, the input values will be scaled by 1 / 32768.0. This
|
||||
scaling will not happen for floating-point file data formats.
|
||||
|
||||
When the file end is reached, subsequent calls to the tick()
|
||||
functions return zeros and isFinished() returns \e true.
|
||||
|
||||
See the FileRead class for a description of the supported audio
|
||||
file formats.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -51,7 +61,8 @@ public:
|
||||
unknown, or a read error occurs.
|
||||
*/
|
||||
FileWvIn( std::string fileName, bool raw = false, bool doNormalize = true,
|
||||
unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
|
||||
unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024,
|
||||
bool doInt2FloatScaling = true );
|
||||
|
||||
//! Class destructor.
|
||||
~FileWvIn( void );
|
||||
@@ -60,13 +71,14 @@ public:
|
||||
/*!
|
||||
Data from a previously opened file will be overwritten by this
|
||||
function. An StkError will be thrown if the file is not found,
|
||||
its format is unknown, or a read error occurs. If the file data
|
||||
is to be loaded incrementally from disk and normalization is
|
||||
specified, a scaling will be applied with respect to fixed-point
|
||||
limits. If the data format is floating-point, no scaling is
|
||||
performed.
|
||||
its format is unknown, or a read error occurs. If the file length
|
||||
is less than the chunkThreshold limit and \e doNormalize is true,
|
||||
the file data will be normalized with respect to the maximum absolute
|
||||
value of the data. If the \e doInt2FloatScaling flag is true and the
|
||||
input data is fixed-point, a scaling will be applied with respect to
|
||||
the fixed-point limits.
|
||||
*/
|
||||
virtual void openFile( std::string fileName, bool raw = false, bool doNormalize = true );
|
||||
virtual void openFile( std::string fileName, bool raw = false, bool doNormalize = true, bool doInt2FloatScaling = true );
|
||||
|
||||
//! Close a file if one is open.
|
||||
virtual void closeFile( void );
|
||||
@@ -89,7 +101,7 @@ public:
|
||||
virtual void normalize( StkFloat peak );
|
||||
|
||||
//! Return the file size in sample frames.
|
||||
virtual unsigned long getSize( void ) const { return file_.fileSize(); };
|
||||
virtual unsigned long getSize( void ) const { return fileSize_; };
|
||||
|
||||
//! Return the input file sample rate in Hz (not the data read rate).
|
||||
/*!
|
||||
@@ -150,16 +162,15 @@ public:
|
||||
*/
|
||||
virtual StkFloat tick( unsigned int channel = 0 );
|
||||
|
||||
//! Fill the StkFrames argument with computed frames and return the same reference.
|
||||
//! Fill the StkFrames object with computed sample frames, starting at the specified channel and return the same reference.
|
||||
/*!
|
||||
The number of channels in the StkFrames argument must equal
|
||||
the number of channels in the file data. However, this is only
|
||||
checked if _STK_DEBUG_ is defined during compilation, in which
|
||||
case an incompatibility will trigger an StkError exception. If no
|
||||
file data is loaded, the function does nothing (a warning will be
|
||||
issued if _STK_DEBUG_ is defined during compilation).
|
||||
The \c channel argument plus the number of input channels must
|
||||
be less than the number of channels in the StkFrames argument (the
|
||||
first channel is specified by 0). However, range checking is only
|
||||
performed if _STK_DEBUG_ is defined during compilation, in which
|
||||
case an out-of-range value will trigger an StkError exception.
|
||||
*/
|
||||
virtual StkFrames& tick( StkFrames& frames );
|
||||
virtual StkFrames& tick( StkFrames& frames, unsigned int channel = 0 );
|
||||
|
||||
protected:
|
||||
|
||||
@@ -168,10 +179,11 @@ protected:
|
||||
FileRead file_;
|
||||
bool finished_;
|
||||
bool interpolate_;
|
||||
bool normalizing_;
|
||||
bool int2floatscaling_;
|
||||
bool chunking_;
|
||||
StkFloat time_;
|
||||
StkFloat rate_;
|
||||
unsigned long fileSize_;
|
||||
unsigned long chunkThreshold_;
|
||||
unsigned long chunkSize_;
|
||||
long chunkPointer_;
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace stk {
|
||||
Currently, FileWvOut is non-interpolating and the output rate is
|
||||
always Stk::sampleRate().
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace stk {
|
||||
filter subclasses. It is general enough to support both
|
||||
monophonic and polyphonic input/output classes.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace stk {
|
||||
This structure results in one extra multiply per computed sample,
|
||||
but allows easy control of the overall filter gain.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -88,7 +88,7 @@ inline StkFloat Fir :: tick( StkFloat input )
|
||||
lastFrame_[0] = 0.0;
|
||||
inputs_[0] = gain_ * input;
|
||||
|
||||
for ( unsigned int i=b_.size()-1; i>0; i-- ) {
|
||||
for ( unsigned int i=(unsigned int)(b_.size())-1; i>0; i-- ) {
|
||||
lastFrame_[0] += b_[i] * inputs_[i];
|
||||
inputs_[i] = inputs_[i-1];
|
||||
}
|
||||
@@ -112,7 +112,7 @@ inline StkFrames& Fir :: tick( StkFrames& frames, unsigned int channel )
|
||||
inputs_[0] = gain_ * *samples;
|
||||
*samples = 0.0;
|
||||
|
||||
for ( i=b_.size()-1; i>0; i-- ) {
|
||||
for ( i=(unsigned int)b_.size()-1; i>0; i-- ) {
|
||||
*samples += b_[i] * inputs_[i];
|
||||
inputs_[i] = inputs_[i-1];
|
||||
}
|
||||
@@ -139,7 +139,7 @@ inline StkFrames& Fir :: tick( StkFrames& iFrames, StkFrames& oFrames, unsigned
|
||||
inputs_[0] = gain_ * *iSamples;
|
||||
*oSamples = 0.0;
|
||||
|
||||
for ( i=b_.size()-1; i>0; i-- ) {
|
||||
for ( i=(unsigned int)b_.size()-1; i>0; i-- ) {
|
||||
*oSamples += b_[i] * inputs_[i];
|
||||
inputs_[i] = inputs_[i-1];
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace stk {
|
||||
- Vibrato Gain = 1
|
||||
- Breath Pressure = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace stk {
|
||||
over time from one frequency setting to another. It provides
|
||||
methods for controlling the sweep rate and target frequency.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -183,10 +183,6 @@ inline StkFloat FreeVerb::tick( StkFloat inputL, StkFloat inputR, unsigned int c
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( !inputR ) {
|
||||
inputR = inputL;
|
||||
}
|
||||
|
||||
StkFloat fInput = (inputL + inputR) * gain_;
|
||||
StkFloat outL = 0.0;
|
||||
StkFloat outR = 0.0;
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace stk {
|
||||
implement tables or other types of input to output function
|
||||
mappings.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace stk {
|
||||
generator sample-source subclasses. It is general enough to
|
||||
support both monophonic and polyphonic output classes.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace stk {
|
||||
type who should worry about this (making
|
||||
money) worry away.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -69,7 +69,7 @@ class HevyMetl : public FM
|
||||
|
||||
inline StkFloat HevyMetl :: tick( unsigned int )
|
||||
{
|
||||
register StkFloat temp;
|
||||
StkFloat temp;
|
||||
|
||||
temp = vibrato_.tick() * modDepth_ * 0.2;
|
||||
waves_[0]->setFrequency(baseFrequency_ * (1.0 + temp) * ratios_[0]);
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace stk {
|
||||
This structure results in one extra multiply per computed sample,
|
||||
but allows easy control of the overall filter gain.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -113,7 +113,7 @@ protected:
|
||||
|
||||
inline StkFloat Iir :: tick( StkFloat input )
|
||||
{
|
||||
unsigned int i;
|
||||
size_t i;
|
||||
|
||||
outputs_[0] = 0.0;
|
||||
inputs_[0] = gain_ * input;
|
||||
@@ -142,7 +142,8 @@ inline StkFrames& Iir :: tick( StkFrames& frames, unsigned int channel )
|
||||
#endif
|
||||
|
||||
StkFloat *samples = &frames[channel];
|
||||
unsigned int i, hop = frames.channels();
|
||||
size_t i;
|
||||
unsigned int hop = frames.channels();
|
||||
for ( unsigned int j=0; j<frames.frames(); j++, samples += hop ) {
|
||||
outputs_[0] = 0.0;
|
||||
inputs_[0] = gain_ * *samples;
|
||||
@@ -175,7 +176,8 @@ inline StkFrames& Iir :: tick( StkFrames& iFrames, StkFrames& oFrames, unsigned
|
||||
|
||||
StkFloat *iSamples = &iFrames[iChannel];
|
||||
StkFloat *oSamples = &oFrames[oChannel];
|
||||
unsigned int i, iHop = iFrames.channels(), oHop = oFrames.channels();
|
||||
size_t i;
|
||||
unsigned int iHop = iFrames.channels(), oHop = oFrames.channels();
|
||||
for ( unsigned int j=0; j<iFrames.frames(); j++, iSamples += iHop, oSamples += oHop ) {
|
||||
outputs_[0] = 0.0;
|
||||
inputs_[0] = gain_ * *iSamples;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace stk {
|
||||
data type for the incoming stream is signed 16-bit integers,
|
||||
though any of the defined StkFormats are permissible.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -96,17 +96,18 @@ public:
|
||||
*/
|
||||
StkFloat tick( unsigned int channel = 0 );
|
||||
|
||||
//! Fill the StkFrames argument with computed frames and return the same reference.
|
||||
//! Fill the StkFrames object with computed sample frames, starting at the specified channel and return the same reference.
|
||||
/*!
|
||||
The number of channels in the StkFrames argument must equal the
|
||||
number of channels specified in the listen() function. However,
|
||||
this is only checked if _STK_DEBUG_ is defined during compilation,
|
||||
in which case an incompatibility will trigger an StkError
|
||||
exception. If no connection exists, the function does
|
||||
The \c channel argument plus the number of channels specified
|
||||
in the listen() function must be less than the number of channels
|
||||
in the StkFrames argument (the first channel is specified by 0).
|
||||
However, this is only checked if _STK_DEBUG_ is defined during
|
||||
compilation, in which case an incompatibility will trigger an
|
||||
StkError exception. If no connection exists, the function does
|
||||
nothing (a warning will be issued if _STK_DEBUG_ is defined during
|
||||
compilation).
|
||||
*/
|
||||
StkFrames& tick( StkFrames& frames );
|
||||
StkFrames& tick( StkFrames& frames, unsigned int channel = 0 );
|
||||
|
||||
// Called by the thread routine to receive data via the socket connection
|
||||
// and fill the socket buffer. This is not intended for general use but
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace stk {
|
||||
data type is signed 16-bit integers but any of the defined
|
||||
StkFormats are permissible.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace stk {
|
||||
This class provides a common interface for
|
||||
all STK instruments.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -22,6 +22,12 @@ class Instrmnt : public Stk
|
||||
//! Class constructor.
|
||||
Instrmnt( void ) { lastFrame_.resize( 1, 1, 0.0 ); };
|
||||
|
||||
//! Reset and clear all internal state (for subclasses).
|
||||
/*!
|
||||
Not all subclasses implement a clear() function.
|
||||
*/
|
||||
virtual void clear( void ) {};
|
||||
|
||||
//! Start a note with the given frequency and amplitude.
|
||||
virtual void noteOn( StkFloat frequency, StkFloat amplitude ) = 0;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace stk {
|
||||
one-pole lowpass filters have been added inside
|
||||
the feedback comb filters.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace stk {
|
||||
Consult Fletcher and Rossing, Karjalainen,
|
||||
Cook, and others for more information.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ inline void LentPitShift::process()
|
||||
StkFloat x_t_T; // previous input coefficient at T samples
|
||||
StkFloat coeff; // new coefficient for the difference function
|
||||
|
||||
int alternativePitch = tMax_; // Global minimum storage
|
||||
unsigned long alternativePitch = tMax_; // Global minimum storage
|
||||
lastPeriod_ = tMax_+1; // Storage of the lowest local minimum under the threshold
|
||||
|
||||
// Loop variables
|
||||
@@ -175,8 +175,8 @@ inline void LentPitShift::process()
|
||||
for ( int n=-(int)lastPeriod_; n<(int)lastPeriod_; n++ )
|
||||
window[n+lastPeriod_] = (1 + cos(PI*n/lastPeriod_)) / 2 ;
|
||||
|
||||
int M; // Index of reading in the input delay line
|
||||
int N; // Index of writing in the output delay line
|
||||
long M; // Index of reading in the input delay line
|
||||
long N; // Index of writing in the output delay line
|
||||
double sample; // Temporary storage for the new coefficient
|
||||
|
||||
// We loop for all the frames of length lastPeriod_ presents between inputPtr and tMax_
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace stk {
|
||||
- String Detuning = 1
|
||||
- Microphone Position = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace stk {
|
||||
This class is primarily for use in STK example programs but it is
|
||||
generic enough to work in many other contexts.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace stk {
|
||||
(non-sweeping BiQuad filters), where N is set
|
||||
during instantiation.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace stk {
|
||||
- Two Fixed = 7
|
||||
- Clump = 8
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace stk {
|
||||
modulations to give a nice, natural human
|
||||
modulation function.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace stk {
|
||||
- Vibrato Gain = 1
|
||||
- Gain = 128
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace stk {
|
||||
systems, the pthread library is used. Under
|
||||
Windows, critical sections are used.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace stk {
|
||||
another allpass in series, followed by two allpass filters in
|
||||
parallel with corresponding right and left outputs.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace stk {
|
||||
C rand() function. The quality of the rand()
|
||||
function varies from one OS to another.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace stk {
|
||||
provided for setting the pole position along the real axis of the
|
||||
z-plane while maintaining a constant peak filter gain.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace stk {
|
||||
provided for setting the zero position along the real axis of the
|
||||
z-plane while maintaining a constant filter gain.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace stk {
|
||||
allpass and comb delay filters. This class implements two series
|
||||
allpass units and two parallel comb filters.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace stk {
|
||||
type who should worry about this (making
|
||||
money) worry away.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995--2016.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -70,7 +70,7 @@ class PercFlut : public FM
|
||||
|
||||
inline StkFloat PercFlut :: tick( unsigned int )
|
||||
{
|
||||
register StkFloat temp;
|
||||
StkFloat temp;
|
||||
|
||||
temp = vibrato_.tick() * modDepth_ * 0.2;
|
||||
waves_[0]->setFrequency(baseFrequency_ * (1.0 + temp) * ratios_[0]);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user