79 Commits
4.6.1 ... 5.0.1

Author SHA1 Message Date
garyscavone
1cb2c81d04 Updated configure.ac 2023-08-10 16:49:35 -04:00
garyscavone
b671638f99 Version updates for 5.0.1 release. 2023-08-10 16:46:47 -04:00
garyscavone
169b005a2d Merge pull request #135 from donarturo11/fix-msvc-flags
Fix msvc flags
2023-08-08 09:00:51 -04:00
garyscavone
73008d02a1 Merge pull request #133 from donarturo11/fix-math
Add using math definitions
2023-08-08 09:00:24 -04:00
garyscavone
e364d81c8f Merge pull request #129 from Segfault1602/alexstonge-fixdemovcxproj
Fix demo project on Windows
2023-08-08 08:59:58 -04:00
garyscavone
3675846c66 Documentation updates in preparation for 5.0.0 release. 2023-08-04 11:21:16 -04:00
garyscavone
fd5e37863d Updates to eguitar, ragamatic and examples project files for new RtAudio API. 2023-08-04 10:37:22 -04:00
garyscavone
7f97ab5f71 Updated PitShift to use a single delay line and updated effects.cpp for new RtAudio API. 2023-08-04 10:14:26 -04:00
garyscavone
8b29e0ea6d Added new versions of RtAudio and RtMidi, updated RtWvIn and RtWvOut for new API, updated demo project for new API. 2023-08-04 09:44:26 -04:00
garyscavone
2af2f1c816 Removed use of register variables. 2023-08-03 13:49:20 -04:00
donarturo11
f39c1fb06d Add MSVC flags 2023-01-28 21:06:31 +01:00
donarturo11
35ca4abcb9 Add math definitions 2023-01-26 10:30:20 +01:00
garyscavone
cc2dd22e97 Merge pull request #132 from donarturo11/cmake-install
Implement install STK
2023-01-08 10:19:10 -08:00
Artur Wrona
e0279e305b Implement install STK 2023-01-07 17:21:48 +01:00
Segfault1602
ce765cc391 Fix demo project on Windows
The demo project definition on windows was outdated, causing it to not build properly.

The fix was to add the two missing cpp file to the project definition (Iir.cpp and Recorder.cpp) as well as define `_USE_MATH_DEFINES` to allow the compiler to use `M_SQRT1_2`.
2022-11-20 10:09:26 -08:00
garyscavone
9bf39f53c6 Merge pull request #126 from MaplePost/master
simple fix to force c++11 standard
2022-06-21 14:42:18 -04:00
Peter J Slack
4397e05158 simple fix to force c++11 standard 2022-06-21 10:20:58 -04:00
garyscavone
70835eccb4 Merge pull request #121 from navin-neu/biquad-filter-types
add support for different filter types in biquad
2022-05-15 10:02:17 -04:00
Navin K
79334d2c8d implemented changes proposed in #121 2022-05-15 01:40:16 -04:00
Gary Scavone
16918b0914 Merge branch 'master' of github.com:thestk/stk 2022-04-22 16:28:32 -04:00
Gary Scavone
3acb9502ae Added missing Twang::setLoopFilter() and ModalBar::setModulationDepth() functions. 2022-04-22 16:28:12 -04:00
Navin K
92d81d67c2 add support for different filter types in biquad 2022-03-21 18:32:51 -04:00
garyscavone
893ff3d954 Merge pull request #119 from tmatth/autotools/fix-pulse
configure: fix build for --with-pulse
2022-02-11 13:08:44 -05:00
Tristan Matthews
b343913233 configure: fix build for --with-pulse 2022-02-09 17:20:26 -05:00
Gary Scavone
f3ce5f4d04 Version fix in doxygen download file. 2021-11-17 21:08:39 -05:00
garyscavone
d4750edc66 Merge pull request #118 from swang251/CMake-Support
CMake support
2021-11-17 21:02:51 -05:00
Gary Scavone
6a6a9cdfbe Updated asio SDK files. 2021-11-17 21:00:06 -05:00
Stephen Sinclair
dec667bab5 Add C++11 requirement autoconf check. 2021-11-17 20:21:52 +01:00
Gary Scavone
1fd900263b New versions of RtAudio and RtMidi in preparation for new release. 2021-11-16 21:28:04 -05:00
Gary Scavone
67d573b169 Version and date updates in preparation for new release. 2021-11-16 21:26:00 -05:00
garyscavone
500d2972f9 Merge pull request #99 from ryandesign/install_name
Set the install_name for the macOS dylib
2021-11-16 12:48:43 -05:00
CAML-Song
ee7a1a31f8 fix the ALSA compile flag 2021-10-23 13:14:01 -04:00
CAML-Song
feb123c9b8 support jack on Linux 2021-10-23 13:13:37 -04:00
swang251-MB
509c6cf9e9 shared library support 2021-10-22 23:25:09 -04:00
swang251-MB
e5454b85c7 preliminary Jack support 2021-10-22 23:24:12 -04:00
swang251
f0a22c463d support DS and WASAPI 2021-09-18 23:53:46 -04:00
swang251-MB
ba6ea9f5db a bit format changes 2021-09-18 14:30:13 -04:00
swang251-MB
f00e38611c include add_subdirectory for STK projects 2021-09-18 13:52:26 -04:00
swang251-MB
367893bf50 [FindCoreAudio.cmake] Updated 2021-09-17 21:52:08 -04:00
swang251-MB
a6266131cb preliminary CMakeLists.txt 2021-08-24 23:27:14 -04:00
garyscavone
1fec6e0157 Merge pull request #115 from vuki/lps
Fix out-of-bounds read in LentPitShift
2021-04-23 15:19:45 -04:00
Grzegorz Szwoch (sound)
d308c8aeb7 Fix out-of-bounds read in LenPitShift 2021-04-22 11:47:58 +02:00
garyscavone
deddcbaa3e Merge pull request #114 from bydariogamer/patch-1
Update INSTALL.md
2021-03-29 10:18:04 -04:00
bydariogamer
76127ffc6c Update INSTALL.md 2021-03-25 16:14:23 +01:00
garyscavone
d77b093a9d Merge pull request #113 from vuki/modframes
Allow deriving classes from StkFrames
2021-03-24 09:39:35 -04:00
Grzegorz Szwoch (sound)
c7d37545d3 Allow deriving classes from StkFrames 2021-03-23 15:20:16 +01:00
Gary Scavone
15a1359671 Removal of external data ptr functionality in StkFrames, as revert merge did not work. 2021-03-19 13:40:45 -04:00
garyscavone
51f9676229 Merge pull request #112 from thestk/revert-110-master
Revert "Fix for #108"
2021-03-19 13:31:08 -04:00
garyscavone
7840967816 Revert "Fix for #108" 2021-03-19 13:30:25 -04:00
Gary Scavone
8132c90515 Added throw() to ~StkError declaration to support all C++ versions. 2021-03-18 15:09:01 -04:00
garyscavone
73004ac9c4 Merge pull request #110 from vuki/master
Fix for #108
2021-03-18 14:44:50 -04:00
garyscavone
a49f6e71e7 Merge pull request #109 from vuki/makefix
Add missing TapDelay to src/Makefile
2021-03-18 14:42:37 -04:00
Grzegorz Szwoch (sound)
926a9faca7 Fix for #108 2021-03-18 19:42:26 +01:00
Grzegorz Szwoch (sound)
34192d9a63 Fix for #108 2021-03-18 19:39:41 +01:00
Grzegorz Szwoch (sound)
fb2b0aa305 Add missing TapDelay to src/Makefile 2021-03-18 19:11:33 +01:00
garyscavone
ba967ff851 Merge pull request #108 from vuki/wrappointer
Add StkFrames constructor that wraps pointer to existing buffer
2021-03-18 11:47:11 -04:00
Grzegorz Szwoch (sound)
109f0bd9a8 Add StkFrames constructor that wraps pointer to existing buffer 2021-03-08 09:26:15 +01:00
Gary Scavone
7b94384705 Doxygen fix for underscores 2021-03-05 14:47:44 -05:00
garyscavone
b379160f2b Merge pull request #107 from vuki/operators
StkFrames: add * and *= operators for multiplication by StkFloat; ret…
2021-02-25 20:39:46 -05:00
Grzegorz Szwoch (sound)
4b5b142531 StkFrames: add * and *= operators for multiplication by StkFloat; return reference from += and *- operators 2021-02-25 13:17:58 +01:00
garyscavone
f1a75a8691 Merge pull request #106 from vuki/stkerror
Make StkError inherit from std::exception
2021-02-24 09:18:15 -05:00
Grzegorz Szwoch (sound)
e5cab23433 Make StkError inherit from std::exception 2021-02-24 11:13:47 +01:00
garyscavone
5a8b2234c7 Merge pull request #105 from vuki/master
Fix infinite loop in RtWvOut destructor
2021-02-23 17:22:56 -05:00
Grzegorz Szwoch (sound)
314835cc70 Fix infinite loop in RtWvOut destructor 2021-02-23 21:19:36 +01:00
Ryan Schmidt
700ff2c459 Set the install_name for the macOS dylib
Just like on Linux where one sets a shared library's soname, one should
set a macOS dylib's install_name, but unlike on Linux, on macOS the
install_name should be the absolute path where the library will be
installed.

Fixes #40
2020-05-08 23:10:14 -05:00
garyscavone
fb15f76d45 Merge pull request #97 from ryandesign/autoconf-vars
Support exec_prefix, bindir, includedir, libdir
2020-05-08 12:37:06 -04:00
garyscavone
921493d4fe Merge pull request #96 from ryandesign/LDFLAGS
Use any LDFLAGS set when running ./configure
2020-05-08 12:35:47 -04:00
Ryan Schmidt
4cbdd0d3dc Support exec_prefix, bindir, includedir, libdir
Autoconf configure scripts allow the user to specify alternate
directories for exec_prefix, bindir, includedir, and libdir (see
./configure --help). Now, they are honored by the Makefile.
2020-05-06 13:33:45 -05:00
Ryan Schmidt
c97f5b4b3a Use any LDFLAGS set when running ./configure 2020-05-06 12:47:50 -05:00
garyscavone
809cb26e12 Merge pull request #95 from thestk/cocoapods-update
Update iOS demo project
2020-04-12 11:12:00 -04:00
Ariel Elkin
dbe725c40d update readme 2020-04-12 15:33:04 +01:00
Ariel Elkin
f47fde31b0 update iOS Demos 2020-04-12 15:21:48 +01:00
Ariel Elkin
5ec15d2043 updated podspec for release 4.6.1 2020-04-12 11:32:38 +01:00
Stephen Sinclair
33baf69d3e Envelope.cpp: include cmath for fabs 2020-03-31 13:44:38 +02:00
Stephen Sinclair
975c9a365f Add configure cases to select OSS for netbsd and freebsd. 2020-03-31 13:40:43 +02:00
aarón montoya-moraga
00ddf89798 fix subtitle format in README.md 2020-03-31 13:38:45 +02:00
Gary Scavone
a8b6affd8c New default argument to keyOn and keyOff in Envelope, fix in setTime function, updates to Guitar string coupling, EGuitar tcl interface, reordering of operations in Flute algorithm. 2020-03-15 16:45:30 -04:00
garyscavone
444dab21fd Merge pull request #93 from alxarsenault/master
Fix setRandomFactor range error in Granulate.
2020-03-09 10:50:59 -04:00
Alexandre Arsenault
7fc638ce32 Fix setRandomFactor range error in Granulate. 2020-03-09 10:28:44 -04:00
245 changed files with 9803 additions and 4757 deletions

167
CMakeLists.txt Normal file
View File

@@ -0,0 +1,167 @@
cmake_minimum_required(VERSION 3.1) ##TODO: which version is better
project(STK VERSION 4.6.1)
set (CMAKE_CXX_STANDARD 11)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)
endif()
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Release" "Debug" "RelWithDebInfo" "MinSizeRel")
message("Build type: " ${CMAKE_BUILD_TYPE})
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /clr")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7 /Ob0 /Od /RTC1 /D_ITERATOR_DEBUG_LEVEL=2 /D_STK_DEBUG_ /D__RTAUDIO_DEBUG__ /D__RTMIDI_DEBUG__")
else()
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_STK_DEBUG_ -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__")
endif()
if(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
message("GCC.")
set(CMAKE_CXX_FLAGS "-Wall")
endif()
option(BUILD_SHARED "Whether to build the shared library" ON)
option(BUILD_STATIC "Whether to build the static library" ON)
option(REALTIME "Realtime support" ON)
option(ENABLE_JACK "Enable JACK" ON)
option(ENABLE_ALSA "Enable ALSA API support (linux only)" ON)
# option(ENABLE_OSS "Enable OSS API Support (unixes only)" ON)
option(ENABLE_ASIO "Enable ASIO API support (windows only)" OFF)
option(ENABLE_DS "Enable DirectSound API support (windows only)" ON)
option(ENABLE_WASAPI "Enable Windows Audio Session API support (windows only)" OFF)
# option(ENABLE_CORE "Enable CoreAudio API support (mac only)" ON)
option(COMPILE_PROJECTS "Compile all the example projects" ON)
option(INSTALL_HEADERS "Install headers" ON)
include_directories("./include")
file(GLOB STK_SRC "./src/*.cpp") # GLOB instead of GLOB_RECURSE as the asio depends on system
#========================================#
#========== Realtime Support ============#
#========================================#
if(REALTIME)
if(ENABLE_JACK)
find_library(JACK_LIBRARY jack) # find_package(JACK) # TODO: NEED FindJACK.cmake
if(JACK_LIBRARY)
message("Jack API found: ${JACK_LIBRARY}")
link_libraries(${JACK_LIBRARY})
add_definitions(-D__UNIX_JACK__)
else()
message(WARNING "JACK support requires the jack library!")
endif()
endif()
message("${CMAKE_SYSTEM_NAME}")
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
link_libraries(Threads::Threads)
if(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
# TODO: Finish Linux configuration, include different audio API supports
#============== LINUX ================#
message("Linux DETECTED!")
if(ENABLE_ALSA)
find_package(ALSA REQUIRED)
if(ALSA_FOUND)
include_directories(${ALSA_INCLUDE_DIRS})
link_libraries(${ALSA_LIBRARIES})
add_definitions(-D__LINUX_ALSA__)
endif()
endif()
elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
#============== MAC OS ================#
message("Machintosh DETECTED!")
find_package(CoreAudio REQUIRED)
include_directories(${COREAUDIO_INCLUDE_DIRS})
add_definitions(-D__MACOSX_CORE__)
link_libraries(${COREAUDIO_LIBRARY} ${COREAUDIO_FOUNDATION} ${COREAUDIO_MIDI})
elseif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
# TODO: MORE SUPPORT (e.g., MSYS)?
# Tested under MSYS2 with Mingw64 toolchain
#============== WINDOWS ================#
message("Windows DETECTED!")
link_libraries(winmm ole32 wsock32)
add_definitions(-D__WINDOWS_MM__)
# TODO: ASIO NOT WORKING YET
if(ENABLE_ASIO)
message("ENALBING ASIO")
include_directories("./src/include")
# target_sources(stk PUBLIC "${CMAKE_SOURCE_DIR}/src/include/asio.cpp" "${CMAKE_SOURCE_DIR}/src/include/asiodrivers.cpp"
# "${CMAKE_SOURCE_DIR}/src/include/asiolist.cpp" "${CMAKE_SOURCE_DIR}/src/include/iasiothiscallresolver.cpp")
add_definitions(-D__WINDOWS_ASIO__)
endif()
if(ENABLE_WASAPI)
message("ENALBING WASAPI")
link_libraries(mfuuid mfplat wmcodecdspuuid ksuser)
add_definitions(-D__WINDOWS_WASAPI__)
endif()
if(ENABLE_DS)
message("ENALBING Directsound")
link_libraries(dsound)
add_definitions(-D__WINDOWS_DS__)
endif()
else()
message("CMAKE_SYSTEM_NAME:" ${CMAKE_SYSTEM_NAME})
message(FATAL_ERROR "Unknown system type for realtime support.")
endif()
endif()
include(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if(NOT IS_BIG_ENDIAN)
add_definitions(-D__LITTLE_ENDIAN__)
endif()
add_definitions(-D_USE_MATH_DEFINES)
if(INSTALL_HEADERS)
file(GLOB STK_HEADERS "include/*.h")
install(FILES ${STK_HEADERS} DESTINATION include/stk)
endif()
#========================================#
#========== Build the Library ===========#
#========================================#
if(BUILD_STATIC)
add_library(stk STATIC ${STK_SRC} )
target_include_directories(stk PRIVATE include PUBLIC $<INSTALL_INTERFACE:include>)
set_target_properties(stk PROPERTIES PUBLIC_HEADER "${LIBSTK_HEADERS}")
list(APPEND STK_TARGETS stk)
endif()
if(BUILD_SHARED)
add_library(stk_SHARED SHARED ${STK_SRC})
set_target_properties(stk_SHARED PROPERTIES OUTPUT_NAME stk) # rename the shared library name
target_include_directories(stk_SHARED PRIVATE include PUBLIC $<INSTALL_INTERFACE:include>)
set_target_properties(stk_SHARED PROPERTIES PUBLIC_HEADER "${LIBSTK_HEADERS}")
list(APPEND STK_TARGETS stk_SHARED)
endif()
#========================================#
#========= Build the examples ===========#
#========================================#
if(COMPILE_PROJECTS)
message("COMPILE PROJECTS!")
add_subdirectory(projects/examples)
add_subdirectory(projects/eguitar)
add_subdirectory(projects/demo)
add_subdirectory(projects/effects)
add_subdirectory(projects/ragamatic)
endif()
#========================================#
#========= Install ======================#
#========================================#
install(TARGETS ${STK_TARGETS} EXPORT stk-config
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
PUBLIC_HEADER DESTINATION include/stk)
install(EXPORT stk-config DESTINATION lib/cmake/stk)

View File

@@ -1,5 +1,5 @@
# The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2019.
By Perry R. Cook and Gary P. Scavone, 1995-2023.
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.
@@ -49,6 +49,6 @@ If you wish to use a different compiler than that selected by configure, specify
MinGW support is provided in the configure script. In addition, Visual Studio 2017 project files are included for each of the example STK projects.
##iOS
## 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.

View File

@@ -1,6 +1,6 @@
The Synthesis ToolKit in C++ (STK)
Copyright (c) 1995-2019 Perry R. Cook and Gary P. Scavone
Copyright (c) 1995-2023 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

View File

@@ -1,5 +1,5 @@
# The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
This distribution of the Synthesis ToolKit in C++ (STK) contains the following:
@@ -13,7 +13,7 @@ Please read the [Legal and Ethical notes](#legal-and-ethical) near the bottom of
For compiling and installing STK, see the [INSTALL.md](INSTALL.md) file in this directory.
##Contents
## Contents
* [Overview](#overview)
* [System Requirements](#system-requirements)

55
STK.podspec Normal file
View File

@@ -0,0 +1,55 @@
# To lint the spec:
# pod spec lint --skip-import-validation --allow-warnings
# To publish:
# pod trunk push STK.podspec --skip-import-validation --allow-warnings
Pod::Spec.new do |spec|
spec.name = 'STK'
spec.version = '4.6.2'
spec.summary = 'The Synthesis ToolKit in C++ is a set of open source audio signal processing and algorithmic synthesis classes.'
spec.homepage = 'https://ccrma.stanford.edu/software/stk/'
spec.source = { :git => 'https://github.com/thestk/stk.git', :tag => spec.version }
spec.license = { :type => 'MIT' }
spec.author = { "Ariel Elkin" => "ariel@arivibes.com" }
spec.platform = :ios
spec.ios.deployment_target = "10.0"
spec.source_files = [
"src/*.cpp",
"include/*.h"
]
spec.public_header_files = [
"include/*.h",
"include/SKINImsg.h",
"include/SKINItbl.h"
]
spec.exclude_files = [
"include/Thread.h",
"src/Thread.cpp",
"include/Mutex.h",
"src/Mutex.cpp",
"include/UdpSocket.h",
"src/UdpSocket.cpp",
"include/Socket.h",
"src/Socket.cpp",
"include/TcpClient.h",
"src/TcpClient.cpp",
"include/TcpServer.h",
"src/TcpServer.cpp",
"include/InetWvIn.h",
"src/InetWvIn.cpp",
"include/InetWvOut.h",
"src/InetWvOut.cpp",
"include/RtAudio.h",
"src/RtAudio.cpp",
"include/RtMidi.h",
"src/RtMidi.cpp",
"include/RtWvIn.h",
"src/RtWvIn.cpp",
"include/RtWvOut.h",
"src/RtWvOut.cpp",
"include/RtError.h"
]
spec.preserve_paths = "README.MD"
spec.resource_bundles = { "rawwaves": "rawwaves/*.raw" }
spec.libraries = 'c++'
end

21
cmake/FindCoreAudio.cmake Normal file
View File

@@ -0,0 +1,21 @@
find_library(COREAUDIO_LIBRARY CoreAudio)
find_library(COREAUDIO_FOUNDATION CoreFoundation)
find_library(COREAUDIO_MIDI CoreMIDI)
find_path(COREAUDIO_INCLUDE_DIRS CoreAudio/CoreAudio.h)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
CoreAudio
DEFAULT_MSG
COREAUDIO_LIBRARY
COREAUDIO_FOUNDATION
COREAUDIO_MIDI
COREAUDIO_INCLUDE_DIRS)
mark_as_advanced(
COREAUDIO_LIBRARY
COREAUDIO_FOUNDATION
COREAUDIO_MIDI
COREAUDIO_INCLUDE_DIRS)

View File

@@ -1,5 +1,5 @@
# Process this file with autoconf to produce a configure script.
AC_INIT(STK, 4.6.1, gary@music.mcgill.ca, stk)
AC_INIT([STK],[5.0.0],[gary.scavone@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)
@@ -7,6 +7,10 @@ AC_CONFIG_FILES(Makefile src/Makefile projects/demo/Makefile projects/effects/Ma
# Fill GXX with something before test.
AC_SUBST( GXX, ["no"] )
# standards version
m4_include([m4/ax_cxx_compile_stdcxx.m4])
AX_CXX_COMPILE_STDCXX(11, noext, mandatory)
# Checks for programs.
AC_PROG_CXX(g++ CC c++ cxx)
AC_PROG_RANLIB
@@ -16,13 +20,34 @@ if [[ $AR = "no" ]] ; then
fi
# Checks for header files.
AC_HEADER_STDC
m4_warn([obsolete],
[The preprocessor macro `STDC_HEADERS' is obsolete.
Except in unusual embedded environments, you can safely include all
ISO C90 headers unconditionally.])dnl
# Autoupdate added the next two lines to ensure that your configure
# script's behavior did not change. They are probably safe to remove.
AC_CHECK_INCLUDES_DEFAULT
AC_PROG_EGREP
AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h termio.h unistd.h)
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
m4_warn([obsolete],
[Update your code to rely only on HAVE_SYS_TIME_H,
then remove this warning and the obsolete code below it.
All current systems provide time.h; it need not be checked for.
Not all systems provide sys/time.h, but those that do, all allow
you to include it and time.h simultaneously.])dnl
AC_CHECK_HEADERS_ONCE([sys/time.h])
# Obsolete code to be removed.
if test $ac_cv_header_sys_time_h = yes; then
AC_DEFINE([TIME_WITH_SYS_TIME],[1],[Define to 1 if you can safely include both <sys/time.h>
and <time.h>. This macro is obsolete.])
fi
# End of obsolete code.
AC_C_BIGENDIAN
AC_EGREP_CPP(yes,
[#ifndef WORDS_BIGENDIAN
@@ -120,7 +145,7 @@ case $host in
*-apple*)
AC_SUBST( sharedlib, ["libstk.dylib"] )
AC_SUBST( sharedname, ["${basesharedname}.dylib"] )
AC_SUBST( libflags, ["-dynamiclib -o ${basesharedname}.dylib"] )
AC_SUBST( libflags, ["-dynamiclib -install_name \$(libdir)/${basesharedname}.dylib -o ${basesharedname}.dylib"] )
esac
if test $realtime = yes; then
@@ -134,6 +159,22 @@ api="$api -D__UNIX_JACK__"
AC_CHECK_LIB(jack, jack_client_open, , AC_MSG_ERROR(JACK support requires the jack library!))])
case $host in
*-*-netbsd*)
AS_IF([test "$api" == ""], [
AC_MSG_RESULT(using OSS)
api="$api -D__LINUX_OSS__"
LIBS="$LIBS -lossaudio"
AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))])
;;
*-*-freebsd*)
AS_IF([test "$api" == ""], [
AC_MSG_RESULT(using OSS)
api="$api -D__LINUX_OSS__"
LIBS="$LIBS -lossaudio"
AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))])
;;
*-*-linux*)
# Look for ALSA flag
AC_ARG_WITH(alsa, [ --with-alsa = choose native ALSA API support (linux only)])
@@ -142,6 +183,14 @@ api="$api -D__UNIX_JACK__"
AC_MSG_RESULT(using ALSA)
AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(ALSA support requires the asound library!))])
# Look for PulseAudio flag
AC_ARG_WITH(pulse, [ --with-pulse = choose PulseAudio support (linux only)])
AS_IF([test "x$with_pulse" == "xyes"], [
api="$api -D__LINUX_PULSE__"
AC_MSG_RESULT(using PulseAudio)
AC_CHECK_LIB(pulse, pa_proplist_gets, , AC_MSG_ERROR(PulseAudio support requires the libpulse library!))
AC_CHECK_LIB(pulse-simple, pa_simple_new, , AC_MSG_ERROR(PulseAudio support requires the libpulse-simple library!))])
# Look for OSS flag
AC_ARG_WITH(oss, [ --with-oss = choose OSS API support (unixes only)])
AS_IF([test "x$with_oss" == "xyes"], [

View File

@@ -1,6 +1,6 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
Please read the file README and INSTALL for more general STK information.

View File

@@ -1,6 +1,6 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
Please read the file README and INSTALL for more general STK information.
@@ -10,7 +10,7 @@ It is necessary to install the OS X developer kit (or the command line tools) in
Tcl/Tk on OS X:
I think that Tcl/Tk interpreter is now included in the Xcode package, since I haven't had to download it for several years now.
The Tcl/Tk interpreter included in the Xcode package seems outdated. Try getting tcl-tk through HomeBrew for an updated version.
It appears that socket support in Tcl/Tk on OS X uses the Nagle algorithm, which produces poor response between changes made in the Tcl/Tk script and the resulting audio updates. Note that this is only a problem when using a socket connection from a Tcl/Tk script.

View File

@@ -1,6 +1,6 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
Please read the file README and INSTALL for more general STK information.

View File

@@ -1,6 +1,6 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
Please read the file README.md for more general STK information.

View File

@@ -1,6 +1,23 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
v.5.0.1 (10 August 2023)
- see github site for complete details (github.com/thestk/stk)
- cmake updates
- fix for demo msvc project in Windows
v.5.0.0 (4 August 2023)
- see github site for complete details (github.com/thestk/stk)
- new filter design functionality in BiQuad (thanks to Navin Kumar!)
- update to PitShift to use a single delay line
- various updates for new RtAudio API
v.4.6.2 (17 November 2021)
- see github site for complete details (github.com/thestk/stk)
- bug fixes in LentPitShift and Granulate classes
- Makefile fixes
- miscellaneous bug fixes
v.4.6.1 (18 April 2019)
- see github site for complete details (github.com/thestk/stk)

File diff suppressed because it is too large Load Diff

View File

@@ -38,19 +38,19 @@ STK compiles with realtime support on the following flavors of the Unix operatin
<TR>
<TD>Linux</TD>
<TD>ALSA</TD>
<TD>__LINUX_ALSA__, __LITTLE_ENDIAN__</TD>
<TD>__LINUX_ALSA__, \__LITTLE_ENDIAN__</TD>
<TD><TT>asound, pthread</TT></TD>
</TR>
<TR>
<TD>Linux</TD>
<TD>OSS (version 4.0 only, use ALSA for MIDI support)</TD>
<TD>__LINUX_OSS__, __LINUX_ALSA__, __LITTLE_ENDIAN__</TD>
<TD>__LINUX_OSS__, \__LINUX_ALSA__, \__LITTLE_ENDIAN__</TD>
<TD><TT>asound, pthread</TT></TD>
</TR>
<TR>
<TD>Linux and Macintosh OS-X</TD>
<TD>Jack</TD>
<TD>__UNIX_JACK__, __LITTLE_ENDIAN__</TD>
<TD>__UNIX_JACK__, \__LITTLE_ENDIAN__</TD>
<TD><TT>asound, pthread, jack</TT></TD>
</TR>
<TR>

View File

@@ -1,10 +1,27 @@
/*! \page download Download and Release Notes
\section down Download Version 4.6.1 (18 April 2019):
\section down Download Version 5.0.1 (10 August 2023):
- <A HREF="http://ccrma.stanford.edu/software/stk/release/stk-4.6.1.tar.gz">Source distribution</A>
- <A HREF="http://ccrma.stanford.edu/software/stk/release/stk-5.0.1.tar.gz">Source distribution</A>
\section notes Release Notes:
\subsection v5dot0dot1 Version 5.0.1
- see github site for complete details (github.com/thestk/stk)
- cmake updates
- fix for demo msvc project in Windows
\subsection v5dot0dot0 Version 5.0.0
- see github site for complete details (github.com/thestk/stk)
- new filter design functionality in BiQuad (thanks to Navin Kumar!)
- update to PitShift to use a single delay line
- various updates for new RtAudio API
\subsection v4dot6dot2 Version 4.6.2
- see github site for complete details (github.com/thestk/stk)
- bug fixes in LentPitShift and Granulate classes
- Makefile fixes
- miscellaneous bug fixes
\subsection v4dot6dot1 Version 4.6.1
- see github site for complete details (github.com/thestk/stk)
- various documentation updates

View File

@@ -25,7 +25,7 @@ STK GitHub site: https://github.com/thestk/stk
STK WWW site: http://ccrma.stanford.edu/software/stk/
The Synthesis ToolKit in C++ (STK)
Copyright (c) 1995--2019 Perry R. Cook and Gary P. Scavone
Copyright (c) 1995--2023 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

View File

@@ -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>&copy;1995--2019 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
<tr><td>&copy;1995--2023 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>

View File

@@ -30,6 +30,7 @@ platforms and should work with any standard C++ compiler.
- \ref links
- \ref faq
- \ref tutorial
- <A href="http://github.com/thestk/stk">Stk on GitHub</A>
*/

View File

@@ -1,6 +1,6 @@
STK: A ToolKit of Audio Synthesis Classes and Instruments in C++
By Perry R. Cook and Gary P. Scavone, 1995--2019.
By Perry R. Cook and Gary P. Scavone, 1995--2023.
STK Classes - See the HTML documentation in the html directory for complete information.

View File

@@ -1,35 +1,43 @@
This file contains instructions for integrating the STK in Xcode projects and solutions to common integration issues.
# Readme
* [Setup](#setup)
* [Usage](#usage)
* [Troubleshooting](#troubleshooting)
## Setup
### If you have [CocoaPods](https://cocoapods.org)
### [CocoaPods](https://cocoapods.org) (Recommended)
1. Add `pod 'STK', '~> 4.5'` to your Podfile.
1. Add `pod 'STK', '~> 4.6'` to your Podfile.
1. Run `pod install`
### If you don't have CocoaPods
### Manual
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**.
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 the *Dependencies* section, add "rawwaves"
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.
1. Import the STK classes you require in your Objective-C source files (Swift does not yet support importing C++ code)
* E.g. `#import "SineWave.h"`
1. Change the extension of Objective-C files that import STK files to **.mm**.
1. Change the extension of any 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.
1. If you use a class that makes use of raw wave files (such as `Mandolin`), make sure you call `Stk::setRawwavePath` beforehand in your code.
See the [iOS Demo project](..projects/demo/iOS%20Demo) for a sample usage.
## Troubleshooting
@@ -38,16 +46,16 @@ You can also look at the [iOS Demo project](..projects/demo/iOS%20Demo) for a sa
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.
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. 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](https://cocoapods.org) for installation instructions.
Install CocoaPods and use it to install the STK. It takes one minute and will make your life easier. Visit the [CocoaPods website](https://cocoapods.org) for installation instructions.
### FileRead::open: could not open or find file (../../rawwaves/filename.raw)!
@@ -56,36 +64,25 @@ If you use a class that makes use of raw waves (such as `Mandolin`, `Wurley`, or
#### If you're using CocoaPods
Add this code before using a class that needs the raw waves:
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:
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).
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

View File

@@ -726,14 +726,15 @@
B08F608818BA9B0600C14A90 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0720;
LastUpgradeCheck = 1140;
};
buildConfigurationList = B08F608B18BA9B0600C14A90 /* Build configuration list for PBXProject "STK" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = B08F608718BA9B0600C14A90;
productRefGroup = B05F5A5A18BC1018008EE790 /* Helpers */;
@@ -895,7 +896,33 @@
B08F608C18BA9B0600C14A90 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
};
name = Debug;
@@ -903,6 +930,32 @@
B08F608D18BA9B0600C14A90 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
};
name = Release;
};
@@ -945,7 +998,7 @@
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MACOSX_DEPLOYMENT_TARGET = "";
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -988,7 +1041,7 @@
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MACOSX_DEPLOYMENT_TARGET = "";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;

View File

@@ -2,9 +2,9 @@
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.
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. These samples need to be fed into an audio engine for them to be heard.
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.
* 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.

View File

@@ -25,6 +25,13 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
834A47CB24435D350028575A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = B0779A7E18D376A5004DA9B7 /* STK.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = B0EC337B18CB73480005787B;
remoteInfo = rawwaves;
};
B02FD55218C520D70009ECA9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = B02FD52A18C520D60009ECA9 /* Project object */;
@@ -193,6 +200,7 @@
buildRules = (
);
dependencies = (
834A47CC24435D350028575A /* PBXTargetDependency */,
);
name = "iOS Demo";
productName = "iOS Demo";
@@ -223,7 +231,7 @@
B02FD52A18C520D60009ECA9 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
LastUpgradeCheck = 1140;
ORGANIZATIONNAME = "Ariel Elkin";
TargetAttributes = {
B02FD54C18C520D70009ECA9 = {
@@ -233,10 +241,11 @@
};
buildConfigurationList = B02FD52D18C520D60009ECA9 /* Build configuration list for PBXProject "iOS Demo" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = B02FD52918C520D60009ECA9;
productRefGroup = B02FD53318C520D60009ECA9 /* Products */;
@@ -315,6 +324,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
834A47CC24435D350028575A /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = rawwaves;
targetProxy = 834A47CB24435D350028575A /* PBXContainerItemProxy */;
};
B02FD55318C520D70009ECA9 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = B02FD53118C520D60009ECA9 /* iOS Demo */;
@@ -346,22 +360,37 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
@@ -374,7 +403,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
@@ -384,29 +413,43 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
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;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
@@ -425,6 +468,7 @@
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
INFOPLIST_FILE = "iOS Demo/iOS Demo-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "stk.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
@@ -443,6 +487,7 @@
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
INFOPLIST_FILE = "iOS Demo/iOS Demo-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "stk.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
@@ -464,6 +509,7 @@
"$(inherited)",
);
INFOPLIST_FILE = "iOS DemoTests/iOS DemoTests-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "stk.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
@@ -482,6 +528,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "iOS Demo/iOS Demo-Prefix.pch";
INFOPLIST_FILE = "iOS DemoTests/iOS DemoTests-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "stk.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;

View File

@@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>stk.${PRODUCT_NAME:rfc1034identifier}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>

View File

@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>stk.${PRODUCT_NAME:rfc1034identifier}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -13,10 +13,15 @@ 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--2019.
Formulae used calculate coefficients for lowpass, highpass,
bandpass, bandreject and allpass are found on pg. 55 of
Udo Zölzer's "DAFX - Digital Audio Effects" (2011 2nd ed).
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
const StkFloat RECIP_SQRT_2 = static_cast<StkFloat>( M_SQRT1_2 );
class BiQuad : public Filter
{
public:
@@ -74,12 +79,72 @@ public:
*/
void setNotch( StkFloat frequency, StkFloat radius );
//! Set the filter coefficients for a low-pass with cutoff frequency \e fc (in Hz) and Q-factor \e Q.
/*!
This method determines the filter coefficients corresponding to a
low-pass filter with cutoff placed at \e fc, where sloping behaviour
and resonance are determined by \e Q. The default value for \e Q is
1/sqrt(2), resulting in a gradual attenuation of frequencies higher than
\e fc without added resonance. Values greater than this will more
aggressively attenuate frequencies above \e fc while also adding a
resonance at \e fc. Values less than this will result in a more gradual
attenuation of frequencies above \e fc, but will also attenuate
frequencies below \e fc as well. Both \e fc and \e Q must be positive.
*/
void setLowPass( StkFloat fc, StkFloat Q=RECIP_SQRT_2 );
//! Set the filter coefficients for a high-pass with cutoff frequency \e fc (in Hz) and Q-factor \e Q.
/*!
This method determines the filter coefficients corresponding to a high-pass
filter with cutoff placed at \e fc, where sloping behaviour and resonance
are determined by \e Q. The default value for \e Q is 1/sqrt(2), resulting
in a gradual attenuation of frequencies lower than \e fc without added
resonance. Values greater than this will more aggressively attenuate
frequencies below \e fc while also adding a resonance at \e fc. Values less
than this will result in a more gradual attenuation of frequencies below
\e fc, but will also attenuate frequencies above \e fc as well.
Both \e fc and \e Q must be positive.
*/
void setHighPass( StkFloat fc, StkFloat Q=RECIP_SQRT_2 );
//! Set the filter coefficients for a band-pass centered at \e fc (in Hz) with Q-factor \e Q.
/*!
This method determines the filter coefficients corresponding to a band-pass
filter with pass-band centered at \e fc, where band width and slope a
determined by \e Q. Values for \e Q that are less than 1.0 will attenuate
frequencies above and below \e fc more gradually, resulting in a convex
slope and a wider band. Values for \e Q greater than 1.0 will attenuate
frequencies above and below \e fc more aggressively, resulting in a
concave slope and a narrower band. Both \e fc and \e Q must be positive.
*/
void setBandPass( StkFloat fc, StkFloat Q );
//! Set the filter coefficients for a band-reject centered at \e fc (in Hz) with Q-factor \e Q.
/*!
This method determines the filter coefficients corresponding to a
band-reject filter with stop-band centered at \e fc, where band width
and slope are determined by \e Q. Values for \e Q that are less than 1.0
will yield a wider band with greater attenuation of \e fc. Values for \e Q
greater than 1.0 will yield a narrower band with less attenuation of \e fc.
Both \e fc and \e Q must be positive.
*/
void setBandReject( StkFloat fc, StkFloat Q );
//! Set the filter coefficients for an all-pass centered at \e fc (in Hz) with Q-factor \e Q.
/*!
This method determines the filter coefficients corresponding to
an all-pass filter whose phase response crosses -pi radians at \e fc.
High values for \e Q will result in a more instantaenous shift in phase
response at \e fc. Lower values will result in a more gradual shift in
phase response around \e fc. Both \e fc and \e Q must be positive.
*/
void setAllPass( StkFloat fc, StkFloat Q );
//! Sets the filter zeroes for equal resonance gain.
/*!
When using the filter as a resonator, zeroes places at z = 1, z
= -1 will result in a constant gain at resonance of 1 / (1 - R),
where R is the pole radius setting.
*/
void setEqualGainZeroes( void );
@@ -114,6 +179,14 @@ public:
protected:
virtual void sampleRateChanged( StkFloat newRate, StkFloat oldRate );
// Helper function to update the three intermediate values for the predefined filter types
// along with the feedback filter coefficients. Performs the debug check for fc and Q-factor arguments.
void setCommonFilterValues( StkFloat fc, StkFloat Q );
StkFloat K_;
StkFloat kSqr_;
StkFloat denom_;
};
inline StkFloat BiQuad :: tick( StkFloat input )

View File

@@ -25,7 +25,7 @@ namespace stk {
- Vibrato Gain = 1
- Volume = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -43,7 +43,7 @@ namespace stk {
- Register State = 1
- Breath Pressure = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -15,7 +15,7 @@ namespace stk {
(1986). The output is an instantaneous
reflection coefficient value.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -32,7 +32,7 @@ namespace stk {
- Frequency = 101
- Volume = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
Contributions by Esteban Maestre, 2011.
*/
/***************************************************/

View File

@@ -28,7 +28,7 @@ namespace stk {
- Vibrato Gain = 1
- Volume = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -31,7 +31,7 @@ namespace stk {
- Vibrato Gain = 1
- Breath Pressure = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -12,7 +12,7 @@ namespace stk {
This class implements an echo effect.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -12,9 +12,10 @@ namespace stk {
This class implements a simple linear line envelope generator
which is capable of ramping to an arbitrary target value by a
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.
keyOff messages, ramping to a specified target (default = 1.0) on
keyOn and to a specified target (default = 0.0) on keyOff.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
@@ -31,11 +32,11 @@ class Envelope : public Generator
//! Assignment operator.
Envelope& operator= ( const Envelope& e );
//! Set target = 1.
void keyOn( void ) { this->setTarget( 1.0 ); };
//! Start ramping to specified target (default = 1).
void keyOn( StkFloat target = 1.0 ) { this->setTarget( target ); };
//! Set target = 0.
void keyOff( void ) { this->setTarget( 0.0 ); };
//! Start ramping to specified target (default = 0).
void keyOff( StkFloat target = 0.0 ) { this->setTarget( target ); };
//! Set the \e rate.
/*!
@@ -46,7 +47,7 @@ class Envelope : public Generator
//! Set the \e rate based on a positive time duration (seconds).
/*!
The \e rate is calculated such that the envelope will ramp from
a value of 0.0 to 1.0 in the specified time duration.
the current value to the current target in the specified time duration.
*/
void setTime( StkFloat time );

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -45,7 +45,7 @@ namespace stk {
See the FileRead class for a description of the supported audio
file formats.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -32,7 +32,7 @@ namespace stk {
- Vibrato Gain = 1
- Breath Pressure = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
@@ -123,11 +123,12 @@ inline StkFloat Flute :: tick( unsigned int )
breathPressure += breathPressure * ( noiseGain_ * noise_.tick() + vibratoGain_ * vibrato_.tick() );
StkFloat temp = -filter_.tick( boreDelay_.lastOut() );
temp = dcBlock_.tick( temp ); // Block DC on reflection.
//temp = dcBlock_.tick( temp ); // Block DC on reflection.
pressureDiff = breathPressure - (jetReflection_ * temp);
pressureDiff = jetDelay_.tick( pressureDiff );
pressureDiff = jetTable_.tick( pressureDiff ) + (endReflection_ * temp);
//pressureDiff = jetTable_.tick( pressureDiff ) + (endReflection_ * temp);
pressureDiff = dcBlock_.tick(jetTable_.tick( pressureDiff )) + (endReflection_ * temp); // moved the DC blocker to after the jet non-linearity (GPS, 29 Jan. 2020)
lastFrame_[0] = (StkFloat) 0.3 * boreDelay_.tick( pressureDiff );
lastFrame_[0] *= outputGain_;

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -21,7 +21,7 @@ namespace stk {
Chris Rolfe and Damian Keller, though there are likely to be a
number of differences in the actual implementation.
by Gary Scavone, 2005--2019.
by Gary Scavone, 2005--2023.
*/
/***************************************************/

View File

@@ -132,17 +132,20 @@ class Guitar : public Stk
StkFrames lastFrame_;
};
// NOTE: It is not possible to implement the Smith coupled string model here because the Twang class does
// not currently offer the chance to have access to a traveling-wave component. Thus, the coupling
// implemented here is approximate.
inline StkFloat Guitar :: tick( StkFloat input )
{
StkFloat temp, output = 0.0;
lastFrame_[0] /= strings_.size(); // evenly spread coupling across strings
lastFrame_[0] = couplingGain_ * couplingFilter_.tick( lastFrame_[0] ) / strings_.size();
for ( unsigned int i=0; i<strings_.size(); i++ ) {
if ( stringState_[i] ) {
temp = input;
// If pluckGain < 0.2, let string ring but don't pluck it.
if ( filePointer_[i] < excitation_.frames() && pluckGains_[i] > 0.2 )
temp += pluckGains_[i] * excitation_[filePointer_[i]++];
temp += couplingGain_ * couplingFilter_.tick( lastFrame_[0] ); // bridge coupling
temp += lastFrame_[0]; // bridge coupling
output += strings_[i].tick( temp );
// Check if string energy has decayed sufficiently to turn it off.
if ( stringState_[i] == 1 ) {

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -142,7 +142,7 @@ inline void LentPitShift::process()
dpt[delay_] = dt[delay_] * delay_ / cumDt[delay_];
// Look for a minimum
if ( dpt[delay_-1]-dpt[delay_-2] < 0 && dpt[delay_]-dpt[delay_-1] > 0 ) {
if ( delay_ > 1 && dpt[delay_-1]-dpt[delay_-2] < 0 && dpt[delay_]-dpt[delay_-1] > 0 ) {
// Check if the minimum is under the threshold
if ( dpt[delay_-1] < threshold_ ){
lastPeriod_ = delay_-1;

View File

@@ -31,7 +31,7 @@ namespace stk {
- String Detuning = 1
- Microphone Position = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -22,7 +22,7 @@ namespace stk {
Tempo changes are internally tracked by the class and reflected in
the values returned by the function getTickSeconds().
by Gary P. Scavone, 2003--2019.
by Gary P. Scavone, 2003--2023.
*/
/**********************************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -31,7 +31,7 @@ namespace stk {
- Two Fixed = 7
- Clump = 8
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
@@ -53,7 +53,7 @@ public:
//! Select a bar preset (currently modulo 9).
void setPreset( int preset );
//! Set the modulation (vibrato) depth.
//! Set the modulation (vibrato) depth (0.0 - 1.0).
void setModulationDepth( StkFloat mDepth );
//! Perform the control change specified by \e number and \e value (0.0 - 128.0).

View File

@@ -16,7 +16,7 @@ namespace stk {
modulations to give a nice, natural human
modulation function.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -22,7 +22,7 @@ namespace stk {
- Vibrato Gain = 1
- Gain = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -13,7 +13,7 @@ namespace stk {
set of 32 static phoneme formant parameters
and provide access to those values.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -11,9 +11,9 @@ namespace stk {
\brief STK simple pitch shifter effect class.
This class implements a simple pitch shifter
using delay lines.
using a delay line.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
@@ -61,7 +61,7 @@ class PitShift : public Effect
protected:
DelayL delayLine_[2];
DelayL delayLine_;
StkFloat delay_[2];
StkFloat env_[2];
StkFloat rate_;
@@ -83,16 +83,15 @@ inline StkFloat PitShift :: tick( StkFloat input )
while ( delay_[1] < 12 ) delay_[1] += delayLength_;
// Set the new delay line lengths.
delayLine_[0].setDelay( delay_[0] );
delayLine_[1].setDelay( delay_[1] );
delayLine_.setDelay( delay_[0] );
// Calculate a triangular envelope.
env_[1] = fabs( ( delay_[0] - halfLength_ + 12 ) * ( 1.0 / (halfLength_ + 12 ) ) );
env_[0] = 1.0 - env_[1];
// Delay input and apply envelope.
lastFrame_[0] = env_[0] * delayLine_[0].tick( input );
lastFrame_[0] += env_[1] * delayLine_[1].tick( input );
lastFrame_[0] = env_[1] * delayLine_.tapOut( delay_[1] );
lastFrame_[0] = +env_[0] * delayLine_.tick( input );
// Compute effect mix and output.
lastFrame_[0] *= effectMix_;

View File

@@ -27,7 +27,7 @@ namespace stk {
Stanford, bearing the names of Karplus and/or
Strong.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -14,7 +14,7 @@ namespace stk {
coefficient. Another method is provided to create a DC blocking
filter.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -29,7 +29,7 @@ namespace stk {
- Breath Pressure = 128
by Mathias Bredholt, McGill University.
Formatted for STK by Gary Scavone, 2019.
Formatted for STK by Gary Scavone, 2023.
*/
/***************************************************/

View File

@@ -20,7 +20,7 @@ namespace stk {
Smith (1986), Hirschman, Cook, Scavone, and
others for more information.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -23,7 +23,7 @@ namespace stk {
- Zero Radii = 1
- Envelope Gain = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -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--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@
RtMidi WWW site: http://www.music.mcgill.ca/~gary/rtmidi/
RtMidi: realtime MIDI i/o C++ classes
Copyright (c) 2003-2019 Gary P. Scavone
Copyright (c) 2003-2023 Gary P. Scavone
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
@@ -58,13 +58,31 @@
#endif
#endif
#define RTMIDI_VERSION "4.0.0"
#define RTMIDI_VERSION_MAJOR 6
#define RTMIDI_VERSION_MINOR 0
#define RTMIDI_VERSION_PATCH 0
#define RTMIDI_VERSION_BETA 0
#define RTMIDI_TOSTRING2(n) #n
#define RTMIDI_TOSTRING(n) RTMIDI_TOSTRING2(n)
#if RTMIDI_VERSION_BETA > 0
#define RTMIDI_VERSION RTMIDI_TOSTRING(RTMIDI_VERSION_MAJOR) \
"." RTMIDI_TOSTRING(RTMIDI_VERSION_MINOR) \
"." RTMIDI_TOSTRING(RTMIDI_VERSION_PATCH) \
"beta" RTMIDI_TOSTRING(RTMIDI_VERSION_BETA)
#else
#define RTMIDI_VERSION RTMIDI_TOSTRING(RTMIDI_VERSION_MAJOR) \
"." RTMIDI_TOSTRING(RTMIDI_VERSION_MINOR) \
"." RTMIDI_TOSTRING(RTMIDI_VERSION_PATCH)
#endif
#include <exception>
#include <iostream>
#include <string>
#include <vector>
/************************************************************************/
/*! \class RtMidiError
\brief Exception handling class for RtMidi.
@@ -85,12 +103,12 @@ class RTMIDI_DLL_PUBLIC RtMidiError : public std::exception
UNSPECIFIED, /*!< The default, unspecified error type. */
NO_DEVICES_FOUND, /*!< No devices found on system. */
INVALID_DEVICE, /*!< An invalid device ID was specified. */
MEMORY_ERROR, /*!< An error occured during memory allocation. */
MEMORY_ERROR, /*!< An error occurred during memory allocation. */
INVALID_PARAMETER, /*!< An invalid parameter was specified to a function. */
INVALID_USE, /*!< The function was called incorrectly. */
DRIVER_ERROR, /*!< A system driver error occured. */
SYSTEM_ERROR, /*!< A system error occured. */
THREAD_ERROR /*!< A thread error occured. */
DRIVER_ERROR, /*!< A system driver error occurred. */
SYSTEM_ERROR, /*!< A system error occurred. */
THREAD_ERROR /*!< A thread error occurred. */
};
//! The constructor.
@@ -132,6 +150,8 @@ class MidiApi;
class RTMIDI_DLL_PUBLIC RtMidi
{
public:
RtMidi(RtMidi&& other) noexcept;
//! MIDI API specifier arguments.
enum Api {
UNSPECIFIED, /*!< Search for a working compiled API. */
@@ -140,6 +160,9 @@ class RTMIDI_DLL_PUBLIC RtMidi
UNIX_JACK, /*!< The JACK Low-Latency MIDI Server API. */
WINDOWS_MM, /*!< The Microsoft Multimedia MIDI API. */
RTMIDI_DUMMY, /*!< A compilable but non-functional API. */
WEB_MIDI_API, /*!< W3C Web MIDI API. */
WINDOWS_UWP, /*!< The Microsoft Universal Windows Platform MIDI API. */
ANDROID_AMIDI, /*!< Native Android MIDI API. */
NUM_APIS /*!< Number of values in this enum. */
};
@@ -202,9 +225,9 @@ class RTMIDI_DLL_PUBLIC RtMidi
*/
virtual bool isPortOpen( void ) const = 0;
//! Set an error callback function to be invoked when an error has occured.
//! Set an error callback function to be invoked when an error has occurred.
/*!
The callback function will be called whenever an error has occured. It is best
The callback function will be called whenever an error has occurred. It is best
to set the error callback function before opening a port.
*/
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 ) = 0;
@@ -213,6 +236,10 @@ class RTMIDI_DLL_PUBLIC RtMidi
RtMidi();
virtual ~RtMidi();
MidiApi *rtapi_;
/* Make the class non-copyable */
RtMidi(RtMidi& other) = delete;
RtMidi& operator=(RtMidi& other) = delete;
};
/**********************************************************************/
@@ -248,7 +275,6 @@ class RTMIDI_DLL_PUBLIC RtMidi
class RTMIDI_DLL_PUBLIC RtMidiIn : public RtMidi
{
public:
//! User callback function type definition.
typedef void (*RtMidiCallback)( double timeStamp, std::vector<unsigned char> *message, void *userData );
@@ -274,6 +300,8 @@ class RTMIDI_DLL_PUBLIC RtMidiIn : public RtMidi
const std::string& clientName = "RtMidi Input Client",
unsigned int queueSizeLimit = 100 );
RtMidiIn(RtMidiIn&& other) noexcept : RtMidi(std::move(other)) { }
//! If a MIDI connection is still open, it will be closed by the destructor.
~RtMidiIn ( void ) throw();
@@ -364,13 +392,26 @@ class RTMIDI_DLL_PUBLIC RtMidiIn : public RtMidi
*/
double getMessage( std::vector<unsigned char> *message );
//! Set an error callback function to be invoked when an error has occured.
//! Set an error callback function to be invoked when an error has occurred.
/*!
The callback function will be called whenever an error has occured. It is best
The callback function will be called whenever an error has occurred. It is best
to set the error callback function before opening a port.
*/
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 );
//! Set maximum expected incoming message size.
/*!
For APIs that require manual buffer management, it can be useful to set the buffer
size and buffer count when expecting to receive large SysEx messages. Note that
currently this function has no effect when called after openPort(). The default
buffer size is 1024 with a count of 4 buffers, which should be sufficient for most
cases; as mentioned, this does not affect all API backends, since most either support
dynamically scalable buffers or take care of buffer handling themselves. It is
principally intended for users of the Windows MM backend who must support receiving
especially large messages.
*/
virtual void setBufferSize( unsigned int size, unsigned int count );
protected:
void openMidiApi( RtMidi::Api api, const std::string &clientName, unsigned int queueSizeLimit );
};
@@ -403,6 +444,8 @@ class RTMIDI_DLL_PUBLIC RtMidiOut : public RtMidi
RtMidiOut( RtMidi::Api api=UNSPECIFIED,
const std::string& clientName = "RtMidi Output Client" );
RtMidiOut(RtMidiOut&& other) noexcept : RtMidi(std::move(other)) { }
//! The destructor closes any open MIDI connections.
~RtMidiOut( void ) throw();
@@ -467,9 +510,9 @@ class RTMIDI_DLL_PUBLIC RtMidiOut : public RtMidi
*/
void sendMessage( const unsigned char *message, size_t size );
//! Set an error callback function to be invoked when an error has occured.
//! Set an error callback function to be invoked when an error has occurred.
/*!
The callback function will be called whenever an error has occured. It is best
The callback function will be called whenever an error has occurred. It is best
to set the error callback function before opening a port.
*/
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 );
@@ -523,6 +566,7 @@ protected:
RtMidiErrorCallback errorCallback_;
bool firstErrorOccurred_;
void *errorCallbackUserData_;
};
class RTMIDI_DLL_PUBLIC MidiInApi : public MidiApi
@@ -534,7 +578,8 @@ class RTMIDI_DLL_PUBLIC MidiInApi : public MidiApi
void setCallback( RtMidiIn::RtMidiCallback callback, void *userData );
void cancelCallback( void );
virtual void ignoreTypes( bool midiSysex, bool midiTime, bool midiSense );
double getMessage( std::vector<unsigned char> *message );
virtual double getMessage( std::vector<unsigned char> *message );
virtual void setBufferSize( unsigned int size, unsigned int count );
// A MIDI structure used internally by the class to store incoming
// messages. Each message represents one and only one MIDI message.
@@ -576,11 +621,13 @@ class RTMIDI_DLL_PUBLIC MidiInApi : public MidiApi
RtMidiIn::RtMidiCallback userCallback;
void *userData;
bool continueSysex;
unsigned int bufferSize;
unsigned int bufferCount;
// Default constructor.
RtMidiInData()
: ignoreFlags(7), doInput(false), firstMessage(true), apiData(0), usingCallback(false),
userCallback(0), userData(0), continueSysex(false) {}
userCallback(0), userData(0), continueSysex(false), bufferSize(1024), bufferCount(4) {}
};
protected:
@@ -614,6 +661,7 @@ inline std::string RtMidiIn :: getPortName( unsigned int portNumber ) { return r
inline void RtMidiIn :: ignoreTypes( bool midiSysex, bool midiTime, bool midiSense ) { static_cast<MidiInApi *>(rtapi_)->ignoreTypes( midiSysex, midiTime, midiSense ); }
inline double RtMidiIn :: getMessage( std::vector<unsigned char> *message ) { return static_cast<MidiInApi *>(rtapi_)->getMessage( message ); }
inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); }
inline void RtMidiIn :: setBufferSize( unsigned int size, unsigned int count ) { static_cast<MidiInApi *>(rtapi_)->setBufferSize(size, count); }
inline RtMidi::Api RtMidiOut :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); }
inline void RtMidiOut :: openPort( unsigned int portNumber, const std::string &portName ) { rtapi_->openPort( portNumber, portName ); }

View File

@@ -24,7 +24,7 @@ namespace stk {
that takes an StkFrames object for multi-channel and/or
multi-frame data.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
@@ -33,14 +33,14 @@ class RtWvIn : public WvIn
public:
//! Default constructor.
/*!
The default \e device argument value (zero) will select the
The default \e deviceIndex argument value (zero) will select the
default input device on your system. The first device enumerated
by the underlying audio API is specified with a value of one. The
default buffer size of RT_BUFFER_SIZE is defined in Stk.h. An
StkError will be thrown if an error occurs duing instantiation.
*/
RtWvIn( unsigned int nChannels = 1, StkFloat sampleRate = Stk::sampleRate(),
int device = 0, int bufferFrames = RT_BUFFER_SIZE, int nBuffers = 20 );
int deviceIndex = 0, int bufferFrames = RT_BUFFER_SIZE, int nBuffers = 20 );
//! Class destructor.
~RtWvIn();

View File

@@ -23,7 +23,7 @@ namespace stk {
that takes a reference to an StkFrames object for multi-channel
and/or multi-frame data.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
@@ -33,14 +33,14 @@ class RtWvOut : public WvOut
//! Default constructor.
/*!
The default \e device argument value (zero) will select the
The default \e deviceIndex argument value (zero) will select the
default output device on your system. The first device enumerated
by the underlying audio API is specified with a value of one. The
default buffer size of RT_BUFFER_SIZE is defined in Stk.h. An
StkError will be thrown if an error occurs duing instantiation.
*/
RtWvOut( unsigned int nChannels = 1, StkFloat sampleRate = Stk::sampleRate(),
int device = 0, int bufferFrames = RT_BUFFER_SIZE, int nBuffers = 20 );
int deviceIndex = 0, int bufferFrames = RT_BUFFER_SIZE, int nBuffers = 20 );
//! Class destructor.
~RtWvOut();

View File

@@ -9,7 +9,7 @@
where <name> is the string used in the SKINI stream.
by Perry R. Cook, 1995--2019.
by Perry R. Cook, 1995--2023.
*/
/*********************************************************/

View File

@@ -15,7 +15,7 @@ namespace stk {
This instrument provides an ADSR envelope, a one-pole filter, and
structures for an arbitrary number of attack and looped files.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -44,7 +44,7 @@ namespace stk {
- Vibrato Gain = 1
- Breath Pressure = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -53,7 +53,7 @@ namespace stk {
- Water Drops = 21
- Tuned Bamboo Chimes = 22
by Perry R. Cook with updates by Gary Scavone, 1995--2019.
by Perry R. Cook with updates by Gary Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -25,7 +25,7 @@ namespace stk {
- Envelope Rate = 11
- Gain = 128
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -18,7 +18,7 @@ namespace stk {
The "table" length, set in SineWave.h, is 2048 samples by default.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -18,7 +18,7 @@ namespace stk {
Within STK, it is used as an excitation source for other
instruments.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

View File

@@ -25,7 +25,7 @@ namespace stk {
Stanford, bearing the names of Karplus and/or
Strong.
by Perry R. Cook and Gary P. Scavone, 1995--2019.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/

Some files were not shown because too many files have changed in this diff Show More