├── autotalent.exp ├── resources ├── autotalent.icns ├── autotalent.ico ├── English.lproj │ └── InfoPlist.strings ├── autotalent.entitlements ├── autotalent-VST2-Info.plist ├── autotalent-VST3-Info.plist ├── autotalent-AU-Info.plist ├── autotalent-AAX-Info.plist ├── autotalent-RTAS-Info.plist ├── autotalent-OSXAPP-Info.plist └── autotalent-Pages.xml ├── autotalent-rtas.def ├── installer ├── changelog.txt ├── autotalent-installer-bg.png ├── intro.rtf ├── readmewin.rtf ├── readmeosx.rtf ├── license.rtf └── autotalent.iss ├── manual └── autotalent_manual.pdf ├── app_wrapper ├── main.mm ├── app_resource.h └── app_main.h ├── mayer_fft.h ├── .gitignore ├── autotalent-vst2.vcxproj.filters ├── COPYING-mayer_fft ├── autotalent.xcconfig ├── autotalent-vst3.vcxproj.user ├── validate_audiounit.command ├── resource.h ├── autotalent-vst2.vcxproj.user ├── fftsetup.h ├── makedist-win.bat ├── autotalent-app.vcxproj.filters ├── autotalent.props ├── autotalent.rc ├── update_version.py ├── autotalent.h ├── autotalent-aax.vcxproj.filters ├── autotalent-rtas.vcxproj.filters ├── makedist-mac.command ├── autotalent-vst3.vcxproj.filters ├── autotalent.cbp ├── autotalent.sln ├── autotalent-vst2.vcxproj ├── autotalent-app.vcxproj ├── mayer_fft.c ├── COPYING └── autotalent-rtas.vcxproj /autotalent.exp: -------------------------------------------------------------------------------- 1 | _autotalent_Entry 2 | _autotalent_ViewEntry 3 | -------------------------------------------------------------------------------- /resources/autotalent.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olilarkin/autotalent/HEAD/resources/autotalent.icns -------------------------------------------------------------------------------- /resources/autotalent.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olilarkin/autotalent/HEAD/resources/autotalent.ico -------------------------------------------------------------------------------- /autotalent-rtas.def: -------------------------------------------------------------------------------- 1 | LIBRARY autotalent 2 | EXPORTS 3 | NewPlugIn @1 4 | _PI_GetRoutineDescriptor @2 -------------------------------------------------------------------------------- /installer/changelog.txt: -------------------------------------------------------------------------------- 1 | autotalent changelog 2 | www.olilarkin.co.uk 3 | 4 | 00/00/00 - v1.00 initial release -------------------------------------------------------------------------------- /manual/autotalent_manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olilarkin/autotalent/HEAD/manual/autotalent_manual.pdf -------------------------------------------------------------------------------- /installer/autotalent-installer-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olilarkin/autotalent/HEAD/installer/autotalent-installer-bg.png -------------------------------------------------------------------------------- /resources/English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olilarkin/autotalent/HEAD/resources/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /app_wrapper/main.mm: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | return NSApplicationMain(argc, (const char **) argv); 6 | } 7 | -------------------------------------------------------------------------------- /mayer_fft.h: -------------------------------------------------------------------------------- 1 | #ifndef MAYER_H 2 | #define MAYER_H 3 | 4 | //#define REAL float 5 | 6 | void mayer_realfft(int n, REAL *real); 7 | void mayer_realifft(int n, REAL *real); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | *.sdf 3 | *.opensdf 4 | *.zip 5 | *.suo 6 | *.ncb 7 | *.vcproj.* 8 | *.pkg 9 | *.dmg 10 | *.depend 11 | *.layout 12 | *.mode1v3 13 | *.db 14 | *.LSOverride 15 | *.xcworkspace 16 | *.xcuserdata 17 | *.xcschememanagement.plist 18 | build-* 19 | ipch/* 20 | gui/* 21 | 22 | Icon? 23 | .DS_Stor* -------------------------------------------------------------------------------- /resources/autotalent.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.device.microphone 8 | 9 | com.apple.security.device.usb 10 | 11 | com.apple.security.device.firewire 12 | 13 | com.apple.security.files.user-selected.read-write 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /installer/intro.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 2 | {\fonttbl\f0\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww14440\viewh8920\viewkind0 5 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural 6 | 7 | \f0\fs26 \cf0 I hope you enjoy using autotalent as much as I did making it. Please let me know how you use it and if you make any interesting recordings, I'd love to hear them.\ 8 | \ 9 | Oli Larkin\ 10 | \ 11 | contact@olilarkin.co.uk\ 12 | \ 13 | http://www.olilarkin.co.uk\ 14 | \ 15 | http://soundcloud.com/olilarkin} -------------------------------------------------------------------------------- /installer/readmewin.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 LucidaGrande;}} 2 | {\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\lang2057\b\f0\fs26 Thanks for installing autotalent\b0\par 3 | \par 4 | I hope you enjoy using autotalent as much as I did making it. Please let me know how you use it and if you make any interesting recordings, I'd love to hear them.\par 5 | \par 6 | Oli Larkin\par 7 | \par 8 | contact@olilarkin.co.uk\par 9 | http://www.olilarkin.co.uk\par 10 | http://soundcloud.com/olilarkin\par 11 | \par 12 | If you experience any problems with autotalent, please contact me at the following address:\par 13 | \par 14 | \pard\b support@olilarkin.co.uk\b0\par 15 | } 16 | -------------------------------------------------------------------------------- /autotalent-vst2.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | vst2 7 | 8 | 9 | 10 | 11 | 12 | 13 | vst2 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | {ea16de74-9d15-4c60-ba09-d0924088d3e5} 22 | 23 | 24 | -------------------------------------------------------------------------------- /installer/readmeosx.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1138 2 | {\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset0 Monaco;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww14320\viewh8340\viewkind0 5 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural 6 | 7 | \f0\fs26 \cf0 The plugins will be installed in your system plugin folders which will make them available to all user accounts on your computer. 8 | \f1\fs20 9 | \f0\fs26 The standalone will be installed in the system Applications folder. \ 10 | \ 11 | If you don't want to install all components, click "Customize" on the "Installation Type" page.\ 12 | \ 13 | The plugins and app support both 32bit and 64bit operation.\ 14 | \ 15 | If you experience any problems with autotalent, please contact me at the following address:\ 16 | \ 17 | support@olilarkin.co.uk} -------------------------------------------------------------------------------- /resources/autotalent-VST2-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${BINARY_NAME} 9 | CFBundleGetInfoString 10 | 1.0.0, Copyright OliLarkin, 2012 11 | CFBundleIdentifier 12 | com.OliLarkin.vst.${BINARY_NAME} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${BINARY_NAME} 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | Acme 23 | CFBundleVersion 24 | 1.0.0 25 | LSMinimumSystemVersion 26 | 10.5.0 27 | 28 | 29 | -------------------------------------------------------------------------------- /resources/autotalent-VST3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${BINARY_NAME} 9 | CFBundleGetInfoString 10 | 1.0.0, Copyright OliLarkin, 2012 11 | CFBundleIdentifier 12 | com.OliLarkin.vst3.${BINARY_NAME} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${BINARY_NAME} 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | Acme 23 | CFBundleVersion 24 | 1.0.0 25 | LSMinimumSystemVersion 26 | 10.5.0 27 | 28 | 29 | -------------------------------------------------------------------------------- /resources/autotalent-AU-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${BINARY_NAME} 9 | CFBundleGetInfoString 10 | 1.0.0, Copyright OliLarkin, 2012 11 | CFBundleIdentifier 12 | com.OliLarkin.audiounit.${BINARY_NAME} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${BINARY_NAME} 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | Acme 23 | CFBundleVersion 24 | 1.0.0 25 | LSMinimumSystemVersion 26 | 10.5.0 27 | NSPrincipalClass 28 | autotalent_View 29 | 30 | 31 | -------------------------------------------------------------------------------- /resources/autotalent-AAX-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${BINARY_NAME} 9 | CFBundleGetInfoString 10 | 1.0.0, Copyright OliLarkin, 2012 11 | CFBundleIdentifier 12 | com.OliLarkin.aax.${BINARY_NAME} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${BINARY_NAME} 17 | CFBundlePackageType 18 | TDMw 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | PTul 23 | CFBundleVersion 24 | 1.0.0 25 | LSMultipleInstancesProhibited 26 | true 27 | LSPrefersCarbon 28 | 29 | NSAppleScriptEnabled 30 | No 31 | 32 | 33 | -------------------------------------------------------------------------------- /resources/autotalent-RTAS-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${BINARY_NAME} 9 | CFBundleGetInfoString 10 | 1.0.0, Copyright OliLarkin, 2012 11 | CFBundleIdentifier 12 | com.OliLarkin.rtas.${BINARY_NAME} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${BINARY_NAME} 17 | CFBundlePackageType 18 | TDMw 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | PTul 23 | CFBundleVersion 24 | 1.0.0 25 | LSMultipleInstancesProhibited 26 | true 27 | LSPrefersCarbon 28 | 29 | NSAppleScriptEnabled 30 | No 31 | 32 | 33 | -------------------------------------------------------------------------------- /resources/autotalent-OSXAPP-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${BINARY_NAME} 9 | CFBundleGetInfoString 10 | 1.0.0, Copyright OliLarkin, 2012 11 | CFBundleIconFile 12 | ${BINARY_NAME}.icns 13 | CFBundleIdentifier 14 | com.OliLarkin.standalone.${BINARY_NAME} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${BINARY_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0.0 23 | CFBundleSignature 24 | Acme 25 | CFBundleVersion 26 | 1.0.0 27 | LSApplicationCategoryType 28 | public.app-category.music 29 | LSMinimumSystemVersion 30 | 10.5.0 31 | NSMainNibFile 32 | MainMenu 33 | NSPrincipalClass 34 | SWELLApplication 35 | 36 | 37 | -------------------------------------------------------------------------------- /app_wrapper/app_resource.h: -------------------------------------------------------------------------------- 1 | // RESOURCE IDS FOR STANDALONE APP 2 | 3 | #ifndef IDC_STATIC 4 | #define IDC_STATIC (-1) 5 | #endif 6 | 7 | #define IDD_DIALOG_MAIN 40001 8 | #define IDD_DIALOG_PREF 40002 9 | #define IDI_ICON1 40003 10 | #define IDR_MENU1 40004 11 | 12 | #define ID_ABOUT 40005 13 | #define ID_PREFERENCES 40006 14 | #define ID_QUIT 40007 15 | 16 | #define IDC_COMBO_AUDIO_DRIVER 40008 17 | #define IDC_COMBO_AUDIO_IN_DEV 40009 18 | #define IDC_COMBO_AUDIO_OUT_DEV 40010 19 | #define IDC_COMBO_AUDIO_IOVS 40011 20 | #define IDC_COMBO_AUDIO_SIGVS 40012 21 | #define IDC_COMBO_AUDIO_SR 40013 22 | #define IDC_COMBO_AUDIO_IN_L 40014 23 | #define IDC_COMBO_AUDIO_IN_R 40015 24 | #define IDC_COMBO_AUDIO_OUT_R 40016 25 | #define IDC_COMBO_AUDIO_OUT_L 40017 26 | #define IDC_COMBO_MIDI_IN_DEV 40018 27 | #define IDC_COMBO_MIDI_OUT_DEV 40019 28 | #define IDC_COMBO_MIDI_IN_CHAN 40020 29 | #define IDC_COMBO_MIDI_OUT_CHAN 40021 30 | #define IDC_BUTTON_ASIO 40022 31 | #define IDC_CB_MONO_INPUT 40023 32 | 33 | #define IDAPPLY 40024 34 | 35 | // some options for the app 36 | 37 | #define ENABLE_SYSEX 0 38 | #define ENABLE_MIDICLOCK 0 39 | #define ENABLE_ACTIVE_SENSING 0 40 | #define NUM_CHANNELS 2 41 | #define N_VECTOR_WAIT 50 42 | #define APP_MULT 0.25 43 | -------------------------------------------------------------------------------- /COPYING-mayer_fft: -------------------------------------------------------------------------------- 1 | This software is copyrighted by Miller Puckette and others. The following 2 | terms (the "Standard Improved BSD License") apply to all files associated with 3 | the software unless explicitly disclaimed in individual files: 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are 7 | met: 8 | 9 | 1. Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above 12 | copyright notice, this list of conditions and the following 13 | disclaimer in the documentation and/or other materials provided 14 | with the distribution. 15 | 3. The name of the author may not be used to endorse or promote 16 | products derived from this software without specific prior 17 | written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY 20 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 22 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR 23 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 25 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 27 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 29 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30 | THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /autotalent.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../common.xcconfig" 2 | 3 | //------------------------------ 4 | // Global settings 5 | 6 | // the basename of the vst, vst3, app, component, dpm, aaxplugin 7 | BINARY_NAME = autotalent 8 | 9 | ADDITIONAL_INCLUDES = // $(SRCROOT)/../../../MyDSP/ 10 | //ADDITIONAL_LIBRARY_PATHS = // 11 | 12 | // for jack headers 13 | //ADDITIONAL_APP_INCLUDES = /usr/local/include 14 | 15 | // Flags to pass to compiler for all builds 16 | GCC_CFLAGS = -Wno-write-strings 17 | 18 | //------------------------------ 19 | // Preprocessor definitions 20 | 21 | // Preprocessor definitions for all VST builds 22 | VST_DEFS = VST_API VST_FORCE_DEPRECATED 23 | 24 | VST3_DEFS = VST3_API 25 | 26 | // Preprocessor definitions for all AU builds 27 | AU_DEFS = AU_API 28 | 29 | RTAS_DEFS = RTAS_API 30 | 31 | AAX_DEFS = AAX_API 32 | 33 | APP_DEFS = SA_API __MACOSX_CORE__ //__UNIX_JACK__ 34 | 35 | IOS_DEFS = SA_API 36 | // Preprocessor definitions for all Debug builds 37 | DEBUG_DEFS = _DEBUG 38 | 39 | // Preprocessor definitions for all Release builds 40 | RELEASE_DEFS = NDEBUG //DEMO_VERSION 41 | 42 | // Preprocessor definitions for all Tracer builds 43 | TRACER_DEFS = TRACER_BUILD NDEBUG 44 | 45 | // Preprocessor definitions for cocoa uniqueness (all builds) 46 | // If you want to use swell inside of iplug, you need to make SWELL_APP_PREFIX unique too 47 | COCOA_DEFS = COCOA_PREFIX=vautotalent SWELL_APP_PREFIX=Swell_vautotalent 48 | 49 | //------------------------------ 50 | // Release build options 51 | 52 | //Enable/Disable Profiling code 53 | PROFILE = NO //NO, YES - enable this if you want to use shark to profile a plugin 54 | 55 | // GCC optimization level - 56 | // None: [-O0] Fast: [-O, -O1] Faster:[-O2] Fastest: [-O3] Fastest, smallest: Optimize for size. [-Os] 57 | RELEASE_OPTIMIZE = 3 //0,1,2,3,s 58 | 59 | //------------------------------ 60 | // Debug build options 61 | DEBUG_OPTIMIZE = 0 //0,1,2,3,s 62 | 63 | -------------------------------------------------------------------------------- /installer/license.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 2 | {\fonttbl\f0\fswiss\fcharset0 ArialMT;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww17060\viewh12300\viewkind0 5 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural 6 | 7 | \f0\b\fs20 \cf0 Caveat: 8 | \b0 \ 9 | By installing this software you agree to use it at your own risk. The developer cannot be held responsible for any damages caused as a result of it's use.\ 10 | \ 11 | 12 | \b Distribution: 13 | \b0 \ 14 | You are not permitted to distribute the software without the developer's permission. This includes, but is not limited to the distribution on magazine covers or software review websites.\ 15 | \ 16 | 17 | \b Multiple Installations*: 18 | \b0 If you purchased this product as an individual, you are licensed to install and use the software on any computer you need to use it on, providing you remove it afterwards (if it is a shared machine). If you purchased it as an institution or company, you are licensed to use it on one machine only, and must purchase additional copies for each machine you wish to use it on.\ 19 | \ 20 | 21 | \b Upgrades*: 22 | \b0 If you purchased this product you are entitled to free updates until the next major version number. The developer makes no guarantee is made that this product will be maintained indefinitely.\ 23 | \ 24 | 25 | \b License transfers*: 26 | \b0 If you purchased this product you may transfer your license to another person. As the original owner you are required to contact the developer with the details of the license transfer, so that the new owner can receive the updates and support attached to the license. Upon transferring a license the original owner must remove any copies from their machines and are no longer permitted to use the software.\ 27 | \ 28 | 29 | \b autotalent is \'a9 Copyright Oliver Larkin 2004-2011\ 30 | 31 | \b0 \ 32 | http://www.olilarkin.co.uk\ 33 | \ 34 | VST and VST3 are trademarks of Steinberg Media Technologies GmbH. \ 35 | Audio Unit is a trademark of Apple, Inc. \ 36 | RTAS and AAX are trademarks of Avid, Inc.\ 37 | \ 38 | * Applies to full version only, not the demo version.} -------------------------------------------------------------------------------- /autotalent-vst3.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(VST3_32_HOST_PATH) 5 | WindowsLocalDebugger 6 | $(TargetPath) 7 | $(TargetDir) 8 | 9 | 10 | $(VST3_32_HOST_PATH) 11 | WindowsLocalDebugger 12 | $(TargetPath) 13 | $(TargetDir) 14 | 15 | 16 | $(VST3_32_HOST_PATH) 17 | WindowsLocalDebugger 18 | $(TargetPath) 19 | $(TargetDir) 20 | 21 | 22 | $(TargetPath) 23 | 24 | 25 | $(TargetDir) 26 | WindowsLocalDebugger 27 | $(VST3_64_HOST_PATH) 28 | 29 | 30 | $(TargetPath) 31 | 32 | 33 | $(TargetDir) 34 | WindowsLocalDebugger 35 | 36 | 37 | $(TargetPath) 38 | 39 | 40 | $(TargetDir) 41 | WindowsLocalDebugger 42 | 43 | -------------------------------------------------------------------------------- /validate_audiounit.command: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # shell script to validate your iplug audiounit using auval 3 | # run from terminal with the argument leaks to perform the leaks test (See auval docs) 4 | 5 | BASEDIR=$(dirname $0) 6 | 7 | cd $BASEDIR 8 | 9 | PUID=`echo | grep PLUG_UNIQUE_ID resource.h` 10 | PUID=${PUID//\#define PLUG_UNIQUE_ID } 11 | PUID=${PUID//\'} 12 | 13 | PMID=`echo | grep PLUG_MFR_ID resource.h` 14 | PMID=${PMID//\#define PLUG_MFR_ID } 15 | PMID=${PMID//\'} 16 | 17 | PII=`echo | grep PLUG_IS_INST resource.h` 18 | PII=${PII//\#define PLUG_IS_INST } 19 | 20 | PDM=`echo | grep PLUG_DOES_MIDI resource.h` 21 | PDM=${PDM//\#define PLUG_DOES_MIDI } 22 | 23 | echo $PII 24 | echo $PDM 25 | 26 | TYPE=aufx 27 | 28 | if [ $PII == 1 ] # instrument 29 | then 30 | TYPE=aumu 31 | else 32 | if [ $PDM == 1 ] # midi effect 33 | then 34 | TYPE=aumf 35 | fi 36 | fi 37 | 38 | if [ "$1" == "leaks" ] 39 | then 40 | echo "testing for leaks (i386 32 bit)" 41 | echo 'launch a new shell and type: ps axc|awk "{if (\$5==\"auvaltool\") print \$1}" to get the pid'; 42 | echo "then leaks PID" 43 | 44 | export MallocStackLogging=1 45 | set env MallocStackLoggingNoCompact=1 46 | 47 | auval -v $TYPE $PUID $PMID -w -q 48 | 49 | unset MallocStackLogging 50 | 51 | else 52 | 53 | echo "\nvalidating i386 32 bit... ------------------------" 54 | echo "--------------------------------------------------" 55 | echo "--------------------------------------------------" 56 | echo "--------------------------------------------------" 57 | echo "--------------------------------------------------" 58 | echo "--------------------------------------------------" 59 | 60 | auval -v $TYPE $PUID $PMID 61 | 62 | echo "\nvalidating i386 64 bit... ------------------------" 63 | echo "--------------------------------------------------" 64 | echo "--------------------------------------------------" 65 | echo "--------------------------------------------------" 66 | echo "--------------------------------------------------" 67 | echo "--------------------------------------------------" 68 | 69 | auval -64 -v $TYPE $PUID $PMID 70 | 71 | #[ -e "/var/db/receipts/com.apple.pkg.Rosetta.plist" ] && echo Rosetta installed || echo Rosetta NOT installed 72 | #ppc auval not available on 10.6 73 | 74 | #echo "\nvalidating ppc 32 bit... -------------------------" 75 | #echo "--------------------------------------------------" 76 | #echo "--------------------------------------------------" 77 | #echo "--------------------------------------------------" 78 | #echo "--------------------------------------------------" 79 | #echo "--------------------------------------------------" 80 | 81 | #auval -ppc -v $TYPE $PUID $PMID 82 | fi 83 | 84 | echo "done" 85 | 86 | -------------------------------------------------------------------------------- /resource.h: -------------------------------------------------------------------------------- 1 | #define PLUG_MFR "OliLarkin" 2 | #define PLUG_NAME "autotalent" 3 | 4 | #define PLUG_CLASS_NAME autotalent 5 | 6 | #define BUNDLE_MFR "OliLarkin" 7 | #define BUNDLE_NAME "autotalent" 8 | 9 | #define PLUG_ENTRY autotalent_Entry 10 | #define PLUG_VIEW_ENTRY autotalent_ViewEntry 11 | 12 | #define PLUG_ENTRY_STR "autotalent_Entry" 13 | #define PLUG_VIEW_ENTRY_STR "autotalent_ViewEntry" 14 | 15 | #define VIEW_CLASS autotalent_View 16 | #define VIEW_CLASS_STR "autotalent_View" 17 | 18 | // Format 0xMAJR.MN.BG - in HEX! so version 10.1.5 would be 0x000A0105 19 | #define PLUG_VER 0x00000200 20 | #define VST3_VER_STR "0.2.0" 21 | 22 | #define PLUG_UNIQUE_ID 'AutT' 23 | #define PLUG_MFR_ID 'oliL' // make sure this is not the same as BUNDLE_MFR 24 | 25 | #define PLUG_CHANNEL_IO "1-1 2-2" 26 | 27 | // ProTools stuff 28 | 29 | #if (defined(AAX_API) || defined(RTAS_API)) && !defined(_PIDS_) 30 | #define _PIDS_ 31 | const int PLUG_TYPE_IDS[2] = {'ATN1', 'ATN2'}; 32 | const int PLUG_TYPE_IDS_AS[2] = {'ATA1', 'ATA2'}; // AudioSuite 33 | #endif 34 | 35 | #define PLUG_MFR_PT "OliLarkin\nOliLarkin\nAcme" 36 | #define PLUG_NAME_PT "autotalent\nIPEF" 37 | #define PLUG_TYPE_PT "Effect" 38 | #define PLUG_DOES_AUDIOSUITE 1 39 | 40 | /* PLUG_TYPE_PT can be "None", "EQ", "Dynamics", "PitchShift", "Reverb", "Delay", "Modulation", 41 | "Harmonic" "NoiseReduction" "Dither" "SoundField" "Effect" 42 | instrument determined by PLUG _IS _INST 43 | */ 44 | 45 | #define PLUG_CHANNEL_IO "1-1 2-2" 46 | 47 | #define PLUG_LATENCY 0 48 | #define PLUG_IS_INST 0 49 | 50 | // if this is 0 RTAS can't get tempo info 51 | #define PLUG_DOES_MIDI 0 52 | 53 | #define PLUG_DOES_STATE_CHUNKS 0 54 | 55 | // Unique IDs for each image resource. 56 | #define KNOB_ID 101 57 | 58 | // Image resource locations for this plug. 59 | #define KNOB_FN "resources/img/knob.png" 60 | 61 | // GUI default dimensions 62 | #define GUI_WIDTH 300 63 | #define GUI_HEIGHT 300 64 | 65 | // on MSVC, you must define SA_API in the resource editor preprocessor macros as well as the c++ ones 66 | #if defined(SA_API) && !defined(OS_IOS) 67 | #include "app_wrapper/app_resource.h" 68 | #endif 69 | 70 | // vst3 stuff 71 | #define MFR_URL "www.olilarkin.co.uk" 72 | #define MFR_EMAIL "spam@me.com" 73 | #define EFFECT_TYPE_VST3 "Fx" 74 | 75 | /* "Fx|Analyzer"", "Fx|Delay", "Fx|Distortion", "Fx|Dynamics", "Fx|EQ", "Fx|Filter", 76 | "Fx", "Fx|Instrument", "Fx|InstrumentExternal", "Fx|Spatial", "Fx|Generator", 77 | "Fx|Mastering", "Fx|Modulation", "Fx|PitchShift", "Fx|Restoration", "Fx|Reverb", 78 | "Fx|Surround", "Fx|Tools", "Instrument", "Instrument|Drum", "Instrument|Sampler", 79 | "Instrument|Synth", "Instrument|Synth|Sampler", "Instrument|External", "Spatial", 80 | "Spatial|Fx", "OnlyRT", "OnlyOfflineProcess", "Mono", "Stereo", 81 | "Surround" 82 | */ 83 | -------------------------------------------------------------------------------- /autotalent-vst2.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(TargetPath) /noload /nosave 5 | 6 | 7 | $(TargetDir) 8 | WindowsLocalDebugger 9 | $(VST2_32_HOST_PATH) 10 | 11 | 12 | $(TargetPath) /noload /nosave 13 | WindowsLocalDebugger 14 | $(TargetDir) 15 | $(VST2_32_HOST_PATH) 16 | 17 | 18 | $(TargetPath) /noload /nosave 19 | WindowsLocalDebugger 20 | $(TargetDir) 21 | $(VST2_32_HOST_PATH) 22 | 23 | 24 | $(TargetDir) 25 | WindowsLocalDebugger 26 | $(TargetPath) /noload /nosave 27 | $(VST2_64_HOST_PATH) 28 | 29 | 30 | $(TargetDir) 31 | WindowsLocalDebugger 32 | $(TargetPath) /noload /nosave 33 | $(VST2_64_HOST_PATH) 34 | 35 | 36 | $(TargetDir) 37 | WindowsLocalDebugger 38 | $(TargetPath) /noload /nosave 39 | $(VST2_64_HOST_PATH) 40 | 41 | -------------------------------------------------------------------------------- /fftsetup.h: -------------------------------------------------------------------------------- 1 | 2 | #include "mayer_fft.h" 3 | 4 | 5 | // Variables for FFT routine 6 | typedef struct 7 | { 8 | int nfft; // size of FFT 9 | int numfreqs; // number of frequencies represented (nfft/2 + 1) 10 | float* fft_data; // array for writing/reading to/from FFT function 11 | } fft_vars; 12 | 13 | // Constructor for FFT routine 14 | fft_vars* fft_con(int nfft) 15 | { 16 | fft_vars* membvars = (fft_vars*) malloc(sizeof(fft_vars)); 17 | 18 | membvars->nfft = nfft; 19 | membvars->numfreqs = nfft/2 + 1; 20 | 21 | membvars->fft_data = (float*) calloc(nfft, sizeof(float)); 22 | 23 | return membvars; 24 | } 25 | 26 | // Destructor for FFT routine 27 | void fft_des(fft_vars* membvars) 28 | { 29 | free(membvars->fft_data); 30 | 31 | free(membvars); 32 | } 33 | 34 | // Perform forward FFT of real data 35 | // Accepts: 36 | // membvars - pointer to struct of FFT variables 37 | // input - pointer to an array of (real) input values, size nfft 38 | // output_re - pointer to an array of the real part of the output, 39 | // size nfft/2 + 1 40 | // output_im - pointer to an array of the imaginary part of the output, 41 | // size nfft/2 + 1 42 | void fft_forward(fft_vars* membvars, float* input, float* output_re, float* output_im) 43 | { 44 | int ti; 45 | int nfft; 46 | int hnfft; 47 | int numfreqs; 48 | 49 | nfft = membvars->nfft; 50 | hnfft = nfft/2; 51 | numfreqs = membvars->numfreqs; 52 | 53 | for (ti=0; tifft_data[ti] = input[ti]; 55 | } 56 | 57 | mayer_realfft(nfft, membvars->fft_data); 58 | 59 | output_im[0] = 0; 60 | for (ti=0; tifft_data[ti]; 62 | output_im[ti+1] = membvars->fft_data[nfft-1-ti]; 63 | } 64 | output_re[hnfft] = membvars->fft_data[hnfft]; 65 | output_im[hnfft] = 0; 66 | } 67 | 68 | // Perform inverse FFT, returning real data 69 | // Accepts: 70 | // membvars - pointer to struct of FFT variables 71 | // input_re - pointer to an array of the real part of the output, 72 | // size nfft/2 + 1 73 | // input_im - pointer to an array of the imaginary part of the output, 74 | // size nfft/2 + 1 75 | // output - pointer to an array of (real) input values, size nfft 76 | void fft_inverse(fft_vars* membvars, float* input_re, float* input_im, float* output) 77 | { 78 | int ti; 79 | int nfft; 80 | int hnfft; 81 | int numfreqs; 82 | 83 | nfft = membvars->nfft; 84 | hnfft = nfft/2; 85 | numfreqs = membvars->numfreqs; 86 | 87 | for (ti=0; tifft_data[ti] = input_re[ti]; 89 | membvars->fft_data[nfft-1-ti] = input_im[ti+1]; 90 | } 91 | membvars->fft_data[hnfft] = input_re[hnfft]; 92 | 93 | mayer_realifft(nfft, membvars->fft_data); 94 | 95 | for (ti=0; tifft_data[ti]; 97 | } 98 | } 99 | 100 | -------------------------------------------------------------------------------- /makedist-win.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | 3 | REM - batch file to build VS2010 project and zip the resulting binaries (or make installer) 4 | REM - updating version numbers requires python and python path added to %PATH% env variable 5 | REM - zipping requires 7zip in %ProgramFiles%\7-Zip\7z.exe 6 | REM - building installer requires innotsetup in "%ProgramFiles(x86)%\Inno Setup 5\iscc" 7 | REM - AAX codesigning requires ashelper tool added to %PATH% env variable and aax.key/.crt in .\..\..\..\Certificates\ 8 | 9 | echo Making autotalent win distribution ... 10 | 11 | echo ------------------------------------------------------------------ 12 | echo Updating version numbers ... 13 | 14 | call python update_version.py 15 | 16 | echo ------------------------------------------------------------------ 17 | echo Building ... 18 | 19 | if exist "%ProgramFiles(x86)%" (goto 64-Bit) else (goto 32-Bit) 20 | 21 | :32-Bit 22 | echo 32-Bit O/S detected 23 | call "%ProgramFiles%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" 24 | goto END 25 | 26 | :64-Bit 27 | echo 64-Bit Host O/S detected 28 | call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" 29 | goto END 30 | :END 31 | 32 | REM - set preprocessor macros like this, for instance to enable demo build: 33 | REM - SET CMDLINE_DEFINES="DEMO_VERSION" 34 | 35 | REM - Could build individual targets like this: 36 | REM - msbuild autotalent-app.vcxproj /p:configuration=release /p:platform=win32 37 | 38 | msbuild autotalent.sln /p:configuration=release /p:platform=win32 /nologo /noconsolelogger /fileLogger /v:quiet /flp:logfile=build-win.log;errorsonly 39 | msbuild autotalent.sln /p:configuration=release /p:platform=x64 /nologo /noconsolelogger /fileLogger /v:quiet /flp:logfile=build-win.log;errorsonly;append 40 | 41 | #echo ------------------------------------------------------------------ 42 | #echo Code sign aax binary... 43 | #REM - x86 44 | #REM - x64 45 | 46 | REM - Make Installer (InnoSetup) 47 | 48 | echo ------------------------------------------------------------------ 49 | echo Making Installer ... 50 | 51 | if exist "%ProgramFiles(x86)%" (goto 64-Bit-is) else (goto 32-Bit-is) 52 | 53 | :32-Bit-is 54 | "%ProgramFiles%\Inno Setup 5\iscc" /cc ".\installer\autotalent.iss" 55 | goto END-is 56 | 57 | :64-Bit-is 58 | "%ProgramFiles(x86)%\Inno Setup 5\iscc" /cc ".\installer\autotalent.iss" 59 | goto END-is 60 | 61 | :END-is 62 | 63 | REM - ZIP 64 | REM - "%ProgramFiles%\7-Zip\7z.exe" a .\installer\autotalent-win-32bit.zip .\build-win\app\win32\bin\autotalent.exe .\build-win\vst3\win32\bin\autotalent.vst3 .\build-win\vst2\win32\bin\autotalent.dll .\build-win\rtas\bin\autotalent.dpm .\build-win\rtas\bin\autotalent.dpm.rsr .\build-win\aax\bin\autotalent.aaxplugin* .\installer\license.rtf .\installer\readmewin.rtf 65 | REM - "%ProgramFiles%\7-Zip\7z.exe" a .\installer\autotalent-win-64bit.zip .\build-win\app\x64\bin\autotalent.exe .\build-win\vst3\x64\bin\autotalent.vst3 .\build-win\vst2\x64\bin\autotalent.dll .\installer\license.rtf .\installer\readmewin.rtf 66 | 67 | echo ------------------------------------------------------------------ 68 | echo Printing log file to console... 69 | 70 | type build-win.log 71 | 72 | pause -------------------------------------------------------------------------------- /autotalent-app.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {6a6c24bd-7110-4436-97af-07990da17abf} 6 | 7 | 8 | {ef87c677-1479-44bc-aef8-7ba960ef233d} 9 | 10 | 11 | {b91b9db4-5584-4959-a395-7394ba3cf5a3} 12 | 13 | 14 | 15 | 16 | app\RtAudioMidi 17 | 18 | 19 | app\RtAudioMidi 20 | 21 | 22 | app\RtAudioMidi 23 | 24 | 25 | app\ASIO_SDK 26 | 27 | 28 | app\ASIO_SDK 29 | 30 | 31 | app\ASIO_SDK 32 | 33 | 34 | app\ASIO_SDK 35 | 36 | 37 | app\ASIO_SDK 38 | 39 | 40 | app\ASIO_SDK 41 | 42 | 43 | app 44 | 45 | 46 | 47 | 48 | app 49 | 50 | 51 | 52 | 53 | 54 | app\RtAudioMidi 55 | 56 | 57 | app\RtAudioMidi 58 | 59 | 60 | app\ASIO_SDK 61 | 62 | 63 | app\ASIO_SDK 64 | 65 | 66 | app\ASIO_SDK 67 | 68 | 69 | app 70 | 71 | 72 | app 73 | 74 | 75 | 76 | app 77 | 78 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /autotalent.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | autotalent 8 | SA_API;__WINDOWS_DS__;__WINDOWS_MM__;__WINDOWS_ASIO__; 9 | VST_API;VST_FORCE_DEPRECATED; 10 | VST3_API 11 | _DEBUG; 12 | NDEBUG; 13 | TRACER_BUILD;NDEBUG; 14 | $(ProjectDir)\..\..\..\MyDSP\; 15 | ..\..\ASIO_SDK;..\..\WDL\rtaudiomidi; 16 | dsound.lib;winmm.lib; 17 | ..\..\VST3_SDK; 18 | .\..\..\AAX_SDK\Interfaces;.\..\..\AAX_SDK\Interfaces\ACF;.\..\..\WDL\IPlug\AAX 19 | AAX_API;_WINDOWS;WIN32;_WIN32;WINDOWS_VERSION;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE 20 | lice.lib;wininet.lib;odbc32.lib;odbccp32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comctl32.lib; 21 | .\..\..\WDL\IPlug\RTAS;.\ 22 | RTAS_API;_HAS_ITERATOR_DEBUGGING=0;_SECURE_SCL=0;_WINDOWS;WIN32;_WIN32;WINDOWS_VERSION;_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE 23 | comdlg32.lib;uuid.lib;msimg32.lib;odbc32.lib;odbccp32.lib;user32.lib;gdi32.lib;advapi32.lib;shell32.lib 24 | 25 | 26 | $(BINARY_NAME) 27 | <_ProjectFileVersion>10.0.30319.1 28 | 29 | 30 | 31 | $(ADDITIONAL_INCLUDES);..\..\WDL;..\..\WDL\lice;..\..\WDL\IPlug 32 | 33 | 34 | IPlug.lib;lice.lib;%(AdditionalDependencies) 35 | 36 | 37 | 38 | 39 | $(BINARY_NAME) 40 | 41 | 42 | $(APP_DEFS) 43 | 44 | 45 | $(VST_DEFS) 46 | 47 | 48 | $(VST3_DEFS) 49 | 50 | 51 | $(DEBUG_DEFS) 52 | 53 | 54 | $(RELEASE_DEFS) 55 | 56 | 57 | $(TRACER_DEFS) 58 | 59 | 60 | $(ADDITIONAL_INCLUDES) 61 | 62 | 63 | $(APP_INCLUDES) 64 | 65 | 66 | $(APP_LIBS) 67 | 68 | 69 | $(VST3_INCLUDES) 70 | 71 | 72 | $(AAX_INCLUDES) 73 | 74 | 75 | $(AAX_DEFS) 76 | 77 | 78 | $(AAX_LIBS) 79 | 80 | 81 | $(RTAS_INCLUDES) 82 | 83 | 84 | $(RTAS_DEFS) 85 | 86 | 87 | $(RTAS_LIBS) 88 | 89 | 90 | -------------------------------------------------------------------------------- /autotalent.rc: -------------------------------------------------------------------------------- 1 | #include "resource.h" 2 | 3 | //KNOB_ID PNG KNOB_FN 4 | 5 | #ifdef SA_API 6 | //Standalone stuff 7 | #include 8 | 9 | IDI_ICON1 ICON DISCARDABLE "resources\autotalent.ico" 10 | 11 | IDD_DIALOG_MAIN DIALOG DISCARDABLE 0, 0, GUI_WIDTH, GUI_HEIGHT 12 | STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX 13 | CAPTION "autotalent" 14 | MENU IDR_MENU1 15 | FONT 8, "MS Sans Serif" 16 | BEGIN 17 | // EDITTEXT IDC_EDIT1,59,50,145,14,ES_AUTOHSCROLL 18 | // LTEXT "Enter some text here:",IDC_STATIC,59,39,73,8 19 | END 20 | 21 | LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 22 | IDD_DIALOG_PREF DIALOG DISCARDABLE 0, 0, 223, 309 23 | STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU 24 | CAPTION "Preferences" 25 | FONT 8, "MS Sans Serif" 26 | { 27 | DEFPUSHBUTTON "OK", IDOK, 110, 285, 50, 14 28 | PUSHBUTTON "Apply", IDAPPLY, 54, 285, 50, 14 29 | PUSHBUTTON "Cancel", IDCANCEL, 166, 285, 50, 14 30 | COMBOBOX IDC_COMBO_AUDIO_DRIVER, 20, 35, 100, 100, CBS_DROPDOWNLIST | CBS_HASSTRINGS 31 | LTEXT "Driver Type", IDC_STATIC, 22, 25, 38, 8, SS_LEFT 32 | COMBOBOX IDC_COMBO_AUDIO_IN_DEV, 20, 65, 100, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 33 | LTEXT "Input Device", IDC_STATIC, 20, 55, 42, 8, SS_LEFT 34 | COMBOBOX IDC_COMBO_AUDIO_OUT_DEV, 20, 95, 100, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 35 | LTEXT "Output Device", IDC_STATIC, 20, 85, 47, 8, SS_LEFT 36 | COMBOBOX IDC_COMBO_AUDIO_IOVS, 135, 35, 65, 100, CBS_DROPDOWNLIST | CBS_HASSTRINGS 37 | LTEXT "IO Vector Size", IDC_STATIC, 137, 25, 46, 8, SS_LEFT 38 | COMBOBOX IDC_COMBO_AUDIO_SIGVS, 135, 65, 65, 100, CBS_DROPDOWNLIST | CBS_HASSTRINGS 39 | LTEXT "Signal Vector Size", IDC_STATIC, 135, 55, 58, 8, SS_LEFT 40 | COMBOBOX IDC_COMBO_AUDIO_SR, 135, 95, 65, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 41 | LTEXT "Sampling Rate", IDC_STATIC, 135, 85, 47, 8, SS_LEFT 42 | GROUPBOX "Audio Device Settings", IDC_STATIC, 5, 10, 210, 170 43 | PUSHBUTTON "ASIO Config...", IDC_BUTTON_ASIO, 135, 155, 65, 14 44 | COMBOBOX IDC_COMBO_AUDIO_IN_L, 20, 125, 40, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 45 | LTEXT "Input 1 (L)", IDC_STATIC, 20, 115, 33, 8, SS_LEFT 46 | COMBOBOX IDC_COMBO_AUDIO_IN_R, 65, 126, 40, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 47 | LTEXT "Input 2 (R)", IDC_STATIC, 65, 115, 34, 8, SS_LEFT 48 | COMBOBOX IDC_COMBO_AUDIO_OUT_L, 20, 155, 40, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 49 | LTEXT "Output 1 (L)", IDC_STATIC, 20, 145, 38, 8, SS_LEFT 50 | COMBOBOX IDC_COMBO_AUDIO_OUT_R, 65, 155, 40, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 51 | LTEXT "Output 2 (R)", IDC_STATIC, 65, 145, 40, 8, SS_LEFT 52 | GROUPBOX "MIDI Device Settings", IDC_STATIC, 5, 190, 210, 85 53 | COMBOBOX IDC_COMBO_MIDI_OUT_DEV, 15, 250, 100, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 54 | LTEXT "Output Device", IDC_STATIC, 15, 240, 47, 8, SS_LEFT 55 | COMBOBOX IDC_COMBO_MIDI_IN_DEV, 15, 220, 100, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 56 | LTEXT "Input Device", IDC_STATIC, 15, 210, 42, 8, SS_LEFT 57 | LTEXT "Input Channel", IDC_STATIC, 125, 210, 45, 8, SS_LEFT 58 | COMBOBOX IDC_COMBO_MIDI_IN_CHAN, 125, 220, 50, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 59 | LTEXT "Output Channel", IDC_STATIC, 125, 240, 50, 8, SS_LEFT 60 | COMBOBOX IDC_COMBO_MIDI_OUT_CHAN, 125, 250, 50, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS 61 | AUTOCHECKBOX "Mono Input", IDC_CB_MONO_INPUT, 135, 127, 56, 8 62 | } 63 | 64 | IDR_MENU1 MENU DISCARDABLE 65 | BEGIN 66 | POPUP "&File" 67 | BEGIN 68 | // MENUITEM SEPARATOR 69 | MENUITEM "Preferences...", ID_PREFERENCES 70 | MENUITEM "&Quit", ID_QUIT 71 | END 72 | POPUP "&Help" 73 | BEGIN 74 | MENUITEM "&About", ID_ABOUT 75 | END 76 | END 77 | 78 | #endif // SA_API 79 | -------------------------------------------------------------------------------- /update_version.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | # this script will update the versions in plist and installer files to match that in resource.h 4 | 5 | import plistlib, os, datetime, fileinput, glob, sys, string 6 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 7 | 8 | def replacestrs(filename, s, r): 9 | files = glob.glob(filename) 10 | 11 | for line in fileinput.input(files,inplace=1): 12 | string.find(line, s) 13 | line = line.replace(s, r) 14 | sys.stdout.write(line) 15 | 16 | def main(): 17 | 18 | MajorStr = "" 19 | MinorStr = "" 20 | BugfixStr = "" 21 | 22 | for line in fileinput.input(scriptpath + "/resource.h",inplace=0): 23 | if "#define PLUG_VER " in line: 24 | FullVersion = int(string.lstrip(line, "#define PLUG_VER "), 16) 25 | major = FullVersion & 0xFFFF0000 26 | MajorStr = str(major >> 16) 27 | minor = FullVersion & 0x0000FF00 28 | MinorStr = str(minor >> 8) 29 | BugfixStr = str(FullVersion & 0x000000FF) 30 | 31 | 32 | FullVersionStr = MajorStr + "." + MinorStr + "." + BugfixStr 33 | 34 | today = datetime.date.today() 35 | CFBundleGetInfoString = FullVersionStr + ", Copyright OliLarkin, " + str(today.year) 36 | CFBundleVersion = FullVersionStr 37 | 38 | print "update_version.py - setting version to " + FullVersionStr 39 | print "Updating plist version info..." 40 | 41 | plistpath = scriptpath + "/resources/autotalent-VST2-Info.plist" 42 | vst2 = plistlib.readPlist(plistpath) 43 | vst2['CFBundleGetInfoString'] = CFBundleGetInfoString 44 | vst2['CFBundleVersion'] = CFBundleVersion 45 | vst2['CFBundleShortVersionString'] = CFBundleVersion 46 | plistlib.writePlist(vst2, plistpath) 47 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 48 | 49 | plistpath = scriptpath + "/resources/autotalent-AU-Info.plist" 50 | au = plistlib.readPlist(plistpath) 51 | au['CFBundleGetInfoString'] = CFBundleGetInfoString 52 | au['CFBundleVersion'] = CFBundleVersion 53 | au['CFBundleShortVersionString'] = CFBundleVersion 54 | plistlib.writePlist(au, plistpath) 55 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 56 | 57 | plistpath = scriptpath + "/resources/autotalent-VST3-Info.plist" 58 | vst3 = plistlib.readPlist(plistpath) 59 | vst3['CFBundleGetInfoString'] = CFBundleGetInfoString 60 | vst3['CFBundleVersion'] = CFBundleVersion 61 | vst3['CFBundleShortVersionString'] = CFBundleVersion 62 | plistlib.writePlist(vst3, plistpath) 63 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 64 | 65 | plistpath = scriptpath + "/resources/autotalent-OSXAPP-Info.plist" 66 | app = plistlib.readPlist(plistpath) 67 | app['CFBundleGetInfoString'] = CFBundleGetInfoString 68 | app['CFBundleVersion'] = CFBundleVersion 69 | app['CFBundleShortVersionString'] = CFBundleVersion 70 | plistlib.writePlist(app, plistpath) 71 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 72 | 73 | plistpath = scriptpath + "/resources/autotalent-RTAS-Info.plist" 74 | rtas = plistlib.readPlist(plistpath) 75 | rtas['CFBundleGetInfoString'] = CFBundleGetInfoString 76 | rtas['CFBundleVersion'] = CFBundleVersion 77 | rtas['CFBundleShortVersionString'] = CFBundleVersion 78 | plistlib.writePlist(rtas, plistpath) 79 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 80 | 81 | plistpath = scriptpath + "/resources/autotalent-AAX-Info.plist" 82 | aax = plistlib.readPlist(plistpath) 83 | aax['CFBundleGetInfoString'] = CFBundleGetInfoString 84 | aax['CFBundleVersion'] = CFBundleVersion 85 | aax['CFBundleShortVersionString'] = CFBundleVersion 86 | plistlib.writePlist(aax, plistpath) 87 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 88 | 89 | # plistpath = scriptpath + "/resources/autotalent-IOSAPP-Info.plist" 90 | # iosapp = plistlib.readPlist(plistpath) 91 | # iosapp['CFBundleGetInfoString'] = CFBundleGetInfoString 92 | # iosapp['CFBundleVersion'] = CFBundleVersion 93 | # iosapp['CFBundleShortVersionString'] = CFBundleVersion 94 | # plistlib.writePlist(iosapp, plistpath) 95 | # replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 96 | 97 | print "Updating Mac Installer version info..." 98 | 99 | plistpath = scriptpath + "/installer/autotalent.pkgproj" 100 | installer = plistlib.readPlist(plistpath) 101 | 102 | for x in range(0,6): 103 | installer['PACKAGES'][x]['PACKAGE_SETTINGS']['VERSION'] = FullVersionStr 104 | 105 | plistlib.writePlist(installer, plistpath) 106 | replacestrs(plistpath, "//Apple//", "//Apple Computer//"); 107 | 108 | print "Updating Windows Installer version info..." 109 | 110 | for line in fileinput.input(scriptpath + "/installer/autotalent.iss",inplace=1): 111 | if "AppVersion" in line: 112 | line="AppVersion=" + FullVersionStr + "\n" 113 | sys.stdout.write(line) 114 | 115 | if __name__ == '__main__': 116 | main() -------------------------------------------------------------------------------- /app_wrapper/app_main.h: -------------------------------------------------------------------------------- 1 | #ifndef _IPLUGAPP_APP_MAIN_H_ 2 | #define _IPLUGAPP_APP_MAIN_H_ 3 | 4 | #include "IPlugOSDetect.h" 5 | 6 | /* 7 | 8 | Standalone osx/win app wrapper for iPlug, using SWELL 9 | Oli Larkin 2012 10 | 11 | Notes: 12 | 13 | App settings are stored in a .ini file. The location is as follows: 14 | 15 | Windows7: C:\Users\USERNAME\AppData\Local\autotalent\settings.ini 16 | Windows XP/Vista: C:\Documents and Settings\USERNAME\Local Settings\Application Data\autotalent\settings.ini 17 | OSX: /Users/USERNAME/Library/Application\ Support/autotalent/settings.ini 18 | 19 | */ 20 | 21 | #ifdef OS_WIN 22 | #include 23 | #include 24 | 25 | #define DEFAULT_INPUT_DEV "Default Device" 26 | #define DEFAULT_OUTPUT_DEV "Default Device" 27 | 28 | #define DAC_DS 0 29 | #define DAC_ASIO 1 30 | #else if defined OS_OSX 31 | #include "swell.h" 32 | #define SLEEP( milliseconds ) usleep( (unsigned long) (milliseconds * 1000.0) ) 33 | 34 | #define DEFAULT_INPUT_DEV "Built-in Input" 35 | #define DEFAULT_OUTPUT_DEV "Built-in Output" 36 | 37 | #define DAC_COREAUDIO 0 38 | // #define DAC_JACK 1 39 | #endif 40 | 41 | #include "wdltypes.h" 42 | #include "RtAudio.h" 43 | #include "RtMidi.h" 44 | #include 45 | #include 46 | 47 | #include "../autotalent.h" // change this to match your iplug plugin .h file 48 | 49 | typedef unsigned short UInt16; 50 | 51 | struct AppState 52 | { 53 | // on osx core audio 0 or jack 1 54 | // on windows DS 0 or ASIO 1 55 | UInt16 mAudioDriverType; 56 | 57 | // strings 58 | char mAudioInDev[100]; 59 | char mAudioOutDev[100]; 60 | char mAudioSR[100]; 61 | char mAudioIOVS[100]; 62 | char mAudioSigVS[100]; 63 | 64 | UInt16 mAudioInChanL; 65 | UInt16 mAudioInChanR; 66 | UInt16 mAudioOutChanL; 67 | UInt16 mAudioOutChanR; 68 | UInt16 mAudioInIsMono; 69 | 70 | // strings containing the names of the midi devices 71 | char mMidiInDev[100]; 72 | char mMidiOutDev[100]; 73 | 74 | UInt16 mMidiInChan; 75 | UInt16 mMidiOutChan; 76 | 77 | AppState(): 78 | mAudioDriverType(0), // DS / CoreAudio by default 79 | mAudioInChanL(1), 80 | mAudioInChanR(2), 81 | mAudioOutChanL(1), 82 | mAudioOutChanR(2), 83 | mMidiInChan(0), 84 | mMidiOutChan(0) 85 | { 86 | strcpy(mAudioInDev, DEFAULT_INPUT_DEV); 87 | strcpy(mAudioOutDev, DEFAULT_OUTPUT_DEV); 88 | strcpy(mAudioSR, "44100"); 89 | strcpy(mAudioIOVS, "512"); 90 | strcpy(mAudioSigVS, "32"); 91 | 92 | strcpy(mMidiInDev, "off"); 93 | strcpy(mMidiOutDev, "off"); 94 | } 95 | }; 96 | 97 | extern WDL_DLGRET MainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); 98 | extern WDL_DLGRET PreferencesDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); 99 | extern HINSTANCE gHINST; 100 | extern HWND gHWND; 101 | extern UINT gScrollMessage; 102 | extern IPlug* gPluginInstance; // The iplug plugin instance 103 | 104 | extern std::string GetAudioDeviceName(int idx); 105 | extern int GetAudioDeviceID(char* deviceNameToTest); 106 | 107 | extern void ProbeAudioIO(); 108 | extern bool InitialiseAudio(unsigned int inId, 109 | unsigned int outId, 110 | unsigned int sr, 111 | unsigned int iovs, 112 | unsigned int chnls, 113 | unsigned int inChanL, 114 | unsigned int outChanL 115 | ); 116 | 117 | extern bool AudioSettingsInStateAreEqual(AppState* os, AppState* ns); 118 | extern bool MIDISettingsInStateAreEqual(AppState* os, AppState* ns); 119 | 120 | extern bool TryToChangeAudioDriverType(); 121 | extern bool TryToChangeAudio(); 122 | extern bool ChooseMidiInput(const char* pPortName); 123 | extern bool ChooseMidiOutput(const char* pPortName); 124 | 125 | extern bool AttachGUI(); 126 | 127 | extern RtAudio* gDAC; 128 | extern RtMidiIn *gMidiIn; 129 | extern RtMidiOut *gMidiOut; 130 | 131 | extern AppState *gState; 132 | extern AppState *gTempState; // The state is copied here when the pref dialog is opened, and restored if cancel is pressed 133 | extern AppState *gActiveState; // When the audio driver is started the current state is copied here so that if OK is pressed after APPLY nothing is changed 134 | 135 | extern unsigned int gSigVS; 136 | extern unsigned int gBufIndex; // index for signal vector, loops from 0 to gSigVS 137 | 138 | extern char *gINIPath; // path of ini file 139 | extern void UpdateINI(); 140 | 141 | extern std::vector gAudioInputDevs; 142 | extern std::vector gAudioOutputDevs; 143 | extern std::vector gMIDIInputDevNames; 144 | extern std::vector gMIDIOutputDevNames; 145 | 146 | #endif //_IPLUGAPP_APP_MAIN_H_ 147 | 148 | -------------------------------------------------------------------------------- /resources/autotalent-Pages.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | autotalent by OliLarkin. 6 | PageTable 1 7 | 8 | 9 | 10 | 11 | 1 12 | 13 | 14 | 15 | 16 | 17 | MasterBypass 18 | 19 | 20 | 21 | 22 | 1 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | MasterBypass 31 | 32 | 33 | 34 | 35 | MasterBypass 36 | 1 37 | 38 | 1 39 | 1 40 | 1 41 | 1 42 | 1 43 | 1 44 | 1 45 | 1 46 | 1 47 | 1 48 | 1 49 | 1 50 | 1 51 | 52 | 53 | 54 | 55 | 1 56 | MasterBypass 57 | 58 | 1 59 | 1 60 | 1 61 | 1 62 | 1 63 | 1 64 | 1 65 | 1 66 | 1 67 | 1 68 | 1 69 | 1 70 | 1 71 | 72 | 73 | 74 | 75 | 1 76 | MasterBypass 77 | 78 | 1 79 | 1 80 | 1 81 | 1 82 | 1 83 | 1 84 | 1 85 | 1 86 | 1 87 | 1 88 | 1 89 | 1 90 | 1 91 | 92 | 93 | 94 | MasterBypass 95 | 1 96 | 97 | 1 98 | 1 99 | 1 100 | 1 101 | 1 102 | 1 103 | 1 104 | 1 105 | 1 106 | 1 107 | 1 108 | 1 109 | 1 110 | 111 | 112 | 113 | MasterBypass 114 | 115 | 116 | 1 117 | 118 | 119 | 120 | 121 | 122 | 123 | Ma 124 | Byp 125 | MByp 126 | Mstr Byp 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | RTAS: autotalent 136 | 137 | 138 | 139 | 140 | MasterBypass 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /autotalent.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | autotalent.h 4 | 5 | autotalent 6 | 7 | An auto-tuning plugin, based on 8 | 9 | Autotalent An auto-tuning LADSPA plugin. 10 | 11 | Free software by Thomas A. Baran. 12 | http://web.mit.edu/tbaran/www/autotalent.html 13 | VERSION 0.2 14 | March 20, 2010 15 | 16 | port to IPlug by oli larkin 17 | 18 | http://www.olilarkin.co.uk 19 | 20 | version 0.2 21 | 22 | This program is free software; you can redistribute it and/or modify 23 | it under the terms of the GNU General Public License as published by 24 | the Free Software Foundation; either version 2 of the License, or 25 | (at your option) any later version. 26 | 27 | This program is distributed in the hope that it will be useful, 28 | but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | GNU General Public License for more details. 31 | 32 | You should have received a copy of the GNU General Public License 33 | along with this program; if not, write to the Free Software 34 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 35 | 36 | 37 | */ 38 | 39 | #ifndef __AUTOTALENT__ 40 | #define __AUTOTALENT__ 41 | 42 | #include "IPlug_include_in_plug_hdr.h" 43 | #define L2SC (float)3.32192809488736218171 44 | 45 | #include "mayer_fft.c" 46 | #include "fftsetup.h" 47 | 48 | class autotalent : public IPlug 49 | { 50 | public: 51 | 52 | autotalent(IPlugInstanceInfo instanceInfo); 53 | ~autotalent(); 54 | 55 | // Implement these if your audio or GUI logic requires doing something, when params change or when audio processing stops/starts. 56 | void Reset(); 57 | void OnParamChange(int paramIdx); 58 | 59 | void ProcessDoubleReplacing(double** inputs, double** outputs, int SampleCount); 60 | void init(unsigned long SampleRate); 61 | fft_vars* mfmembvars; // member variables for fft routine 62 | 63 | private: 64 | 65 | 66 | unsigned long mfs; // Sample rate 67 | 68 | unsigned long mcbsize; // size of circular buffer 69 | unsigned long mcorrsize; // cbsize/2 + 1 70 | unsigned long mcbiwr; 71 | unsigned long mcbord; 72 | float* mcbi; // circular input buffer 73 | float* mcbf; // circular formant correction buffer 74 | float* mcbo; // circular output buffer 75 | 76 | float* mcbwindow; // hann of length N/2, zeros for the rest 77 | float* macwinv; // inverse of autocorrelation of window 78 | float* mhannwindow; // length-N hann 79 | int mnoverlap; 80 | 81 | float* mffttime; 82 | float* mfftfreqre; 83 | float* mfftfreqim; 84 | 85 | // VARIABLES FOR LOW-RATE SECTION 86 | float maref; // A tuning reference (Hz) 87 | float minpitch; // Input pitch (semitones) 88 | float mconf; // Confidence of pitch period estimate (between 0 and 1) 89 | float moutpitch; // Output pitch (semitones) 90 | float mvthresh; // Voiced speech threshold 91 | 92 | float mpmax; // Maximum allowable pitch period (seconds) 93 | float mpmin; // Minimum allowable pitch period (seconds) 94 | unsigned long mnmax; // Maximum period index for pitch prd est 95 | unsigned long mnmin; // Minimum period index for pitch prd est 96 | 97 | float mlrshift; // Shift prescribed by low-rate section 98 | int mptarget; // Pitch target, between 0 and 11 99 | float msptarget; // Smoothed pitch target 100 | 101 | float mlfophase; 102 | 103 | // VARIABLES FOR PITCH SHIFTER 104 | float mphprdd; // default (unvoiced) phase period 105 | double minphinc; // input phase increment 106 | double moutphinc; // input phase increment 107 | double mphincfact; // factor determining output phase increment 108 | double mphasein; 109 | double mphaseout; 110 | float* mfrag; // windowed fragment of speech 111 | unsigned long mfragsize; // size of fragment in samples 112 | 113 | // VARIABLES FOR FORMANT CORRECTOR 114 | int mford; 115 | float mfalph; 116 | float mflamb; 117 | float* mfk; 118 | float* mfb; 119 | float* mfc; 120 | float* mfrb; 121 | float* mfrc; 122 | float* mfsig; 123 | float* mfsmooth; 124 | float mfhp; 125 | float mflp; 126 | float mflpa; 127 | float** mfbuff; 128 | float* mftvec; 129 | float mfmute; 130 | float mfmutealph; 131 | 132 | 133 | float m_pfTune; 134 | float m_pfFixed; 135 | float m_pfPull; 136 | int m_pfA; 137 | int m_pfBb; 138 | int m_pfB; 139 | int m_pfC; 140 | int m_pfDb; 141 | int m_pfD; 142 | int m_pfEb; 143 | int m_pfE; 144 | int m_pfF; 145 | int m_pfGb; 146 | int m_pfG; 147 | int m_pfAb; 148 | float m_pfAmount; 149 | float m_pfSmooth; 150 | float m_pfShift; 151 | int m_pfScwarp; 152 | float m_pfLfoamp; 153 | float m_pfLforate; 154 | float m_pfLfoshape; 155 | float m_pfLfosymm; 156 | int m_pfLfoquant; 157 | int m_pfFcorr; 158 | float m_pfFwarp; 159 | float m_pfMix; 160 | float m_pfPitch; 161 | float m_pfConf; 162 | float m_pfInputBuffer1; 163 | float m_pfOutputBuffer1; 164 | float m_pfLatency; 165 | }; 166 | 167 | //////////////////////////////////////// 168 | 169 | #endif 170 | -------------------------------------------------------------------------------- /autotalent-aax.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {ed0eb9dd-b586-4a3f-98af-ebd9c084fff2} 6 | 7 | 8 | {a484aa50-ad02-4746-957e-117c8bb5c192} 9 | 10 | 11 | {57d1624e-a679-47da-bd3e-9609f02fdd7b} 12 | 13 | 14 | 15 | 16 | IPlug 17 | 18 | 19 | IPlug 20 | 21 | 22 | IPlug 23 | 24 | 25 | IPlug 26 | 27 | 28 | IPlug 29 | 30 | 31 | IPlug 32 | 33 | 34 | IPlug 35 | 36 | 37 | IPlug 38 | 39 | 40 | IPlug 41 | 42 | 43 | IPlug 44 | 45 | 46 | IPlug\AAX 47 | 48 | 49 | IPlug\AAX 50 | 51 | 52 | IPlug\AAX 53 | 54 | 55 | 56 | Libs 57 | 58 | 59 | 60 | 61 | IPlug 62 | 63 | 64 | IPlug 65 | 66 | 67 | IPlug 68 | 69 | 70 | IPlug 71 | 72 | 73 | IPlug 74 | 75 | 76 | IPlug 77 | 78 | 79 | IPlug 80 | 81 | 82 | IPlug 83 | 84 | 85 | IPlug 86 | 87 | 88 | IPlug 89 | 90 | 91 | IPlug 92 | 93 | 94 | IPlug 95 | 96 | 97 | IPlug 98 | 99 | 100 | IPlug 101 | 102 | 103 | IPlug 104 | 105 | 106 | IPlug 107 | 108 | 109 | IPlug\AAX 110 | 111 | 112 | IPlug\AAX 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | Libs 123 | 124 | 125 | Libs 126 | 127 | 128 | Libs 129 | 130 | 131 | Libs 132 | 133 | 134 | -------------------------------------------------------------------------------- /installer/autotalent.iss: -------------------------------------------------------------------------------- 1 | [Setup] 2 | AppName=autotalent 3 | AppVersion=1.0.0 4 | DefaultDirName={pf}\autotalent 5 | DefaultGroupName=autotalent 6 | Compression=lzma2 7 | SolidCompression=yes 8 | OutputDir=.\ 9 | ArchitecturesInstallIn64BitMode=x64 10 | OutputBaseFilename=autotalent Installer 11 | LicenseFile=license.rtf 12 | SetupLogging=yes 13 | 14 | [Types] 15 | Name: "full"; Description: "Full installation" 16 | Name: "custom"; Description: "Custom installation"; Flags: iscustom 17 | 18 | [Components] 19 | Name: "app"; Description: "Standalone application (.exe)"; Types: full custom; 20 | Name: "vst2_32"; Description: "32-bit VST2 Plugin (.dll)"; Types: full custom; 21 | Name: "vst2_64"; Description: "64-bit VST2 Plugin (.dll)"; Types: full custom; Check: Is64BitInstallMode; 22 | Name: "vst3_32"; Description: "32-bit VST3 Plugin (.vst3)"; Types: full custom; 23 | Name: "vst3_64"; Description: "64-bit VST3 Plugin (.vst3)"; Types: full custom; Check: Is64BitInstallMode; 24 | Name: "rtas_32"; Description: "32-bit RTAS Plugin (.dpm)"; Types: full custom; 25 | Name: "aax_32"; Description: "32-bit AAX Plugin (.aaxplugin)"; Types: full custom; 26 | Name: "aax_64"; Description: "64-bit AAX Plugin (.aaxplugin)"; Types: full custom; Check: Is64BitInstallMode; 27 | Name: "manual"; Description: "User guide"; Types: full custom; Flags: fixed 28 | 29 | [Files] 30 | Source: "..\build-win\app\Win32\bin\autotalent.exe"; DestDir: "{app}"; Check: not Is64BitInstallMode; Components:app; Flags: ignoreversion; 31 | Source: "..\build-win\app\x64\bin\autotalent.exe"; DestDir: "{app}"; Check: Is64BitInstallMode; Components:app; Flags: ignoreversion; 32 | 33 | Source: "..\build-win\vst2\Win32\bin\autotalent.dll"; DestDir: {code:GetVST2Dir_32}; Check: not Is64BitInstallMode; Components:vst2_32; Flags: ignoreversion; 34 | Source: "..\build-win\vst2\Win32\bin\autotalent.dll"; DestDir: {code:GetVST2Dir_32}; Check: Is64BitInstallMode; Components:vst2_32; Flags: ignoreversion; 35 | Source: "..\build-win\vst2\x64\bin\autotalent.dll"; DestDir: {code:GetVST2Dir_64}; Check: Is64BitInstallMode; Components:vst2_64; Flags: ignoreversion; 36 | 37 | Source: "..\build-win\vst3\Win32\bin\autotalent.vst3"; DestDir: "{cf}\VST3\"; Check: not Is64BitInstallMode; Components:vst3_32; Flags: ignoreversion; 38 | Source: "..\build-win\vst3\Win32\bin\autotalent.vst3"; DestDir: "{cf32}\VST3\"; Check: Is64BitInstallMode; Components:vst3_32; Flags: ignoreversion; 39 | Source: "..\build-win\vst3\x64\bin\autotalent.vst3"; DestDir: "{cf64}\VST3\"; Check: Is64BitInstallMode; Components:vst3_64; Flags: ignoreversion; 40 | 41 | Source: "..\build-win\rtas\bin\autotalent.dpm"; DestDir: "{cf32}\Digidesign\DAE\Plug-Ins\"; Components:rtas_32; Flags: ignoreversion; 42 | Source: "..\build-win\rtas\bin\autotalent.dpm.rsr"; DestDir: "{cf32}\Digidesign\DAE\Plug-Ins\"; Components:rtas_32; Flags: ignoreversion; 43 | 44 | Source: "..\build-win\aax\bin\autotalent.aaxplugin\*.*"; DestDir: "{cf32}\Avid\Audio\Plug-Ins\autotalent.aaxplugin\"; Components:aax_32; Flags: ignoreversion recursesubdirs; 45 | Source: "..\build-win\aax\bin\autotalent.aaxplugin\*.*"; DestDir: "{cf}\Avid\Audio\Plug-Ins\autotalent.aaxplugin\"; Components:aax_64; Flags: ignoreversion recursesubdirs; 46 | 47 | Source: "..\manual\autotalent_manual.pdf"; DestDir: "{app}" 48 | Source: "changelog.txt"; DestDir: "{app}" 49 | Source: "readmewin.rtf"; DestDir: "{app}"; DestName: "readme.rtf"; Flags: isreadme 50 | 51 | [Icons] 52 | Name: "{group}\autotalent"; Filename: "{app}\autotalent.exe" 53 | Name: "{group}\User guide"; Filename: "{app}\autotalent_manual.pdf" 54 | Name: "{group}\Changelog"; Filename: "{app}\changelog.txt" 55 | ;Name: "{group}\readme"; Filename: "{app}\readme.rtf" 56 | Name: "{group}\Uninstall autotalent"; Filename: "{app}\unins000.exe" 57 | 58 | ;[Dirs] 59 | ;Name: {cf}\Digidesign\DAE\Plugins\ 60 | 61 | [Code] 62 | var 63 | OkToCopyLog : Boolean; 64 | VST2DirPage_32: TInputDirWizardPage; 65 | VST2DirPage_64: TInputDirWizardPage; 66 | 67 | procedure InitializeWizard; 68 | begin 69 | if IsWin64 then begin 70 | VST2DirPage_64 := CreateInputDirPage(wpSelectDir, 71 | 'Confirm 64-Bit VST2 Plugin Directory', '', 72 | 'Select the folder in which setup should install the 64-bit VST2 Plugin, then click Next.', 73 | False, ''); 74 | VST2DirPage_64.Add(''); 75 | VST2DirPage_64.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\VST,VSTPluginsPath|{pf}\Steinberg\VSTPlugins}\'); 76 | 77 | VST2DirPage_32 := CreateInputDirPage(wpSelectDir, 78 | 'Confirm 32-Bit VST2 Plugin Directory', '', 79 | 'Select the folder in which setup should install the 32-bit VST2 Plugin, then click Next.', 80 | False, ''); 81 | VST2DirPage_32.Add(''); 82 | VST2DirPage_32.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\WOW6432NODE\VST,VSTPluginsPath|{pf32}\Steinberg\VSTPlugins}\'); 83 | end else begin 84 | VST2DirPage_32 := CreateInputDirPage(wpSelectDir, 85 | 'Confirm 32-Bit VST2 Plugin Directory', '', 86 | 'Select the folder in which setup should install the 32-bit VST2 Plugin, then click Next.', 87 | False, ''); 88 | VST2DirPage_32.Add(''); 89 | VST2DirPage_32.Values[0] := ExpandConstant('{reg:HKLM\SOFTWARE\VST,VSTPluginsPath|{pf}\Steinberg\VSTPlugins}\'); 90 | end; 91 | end; 92 | 93 | function GetVST2Dir_32(Param: String): String; 94 | begin 95 | Result := VST2DirPage_32.Values[0] 96 | end; 97 | 98 | function GetVST2Dir_64(Param: String): String; 99 | begin 100 | Result := VST2DirPage_64.Values[0] 101 | end; 102 | 103 | procedure CurStepChanged(CurStep: TSetupStep); 104 | begin 105 | if CurStep = ssDone then 106 | OkToCopyLog := True; 107 | end; 108 | 109 | procedure DeinitializeSetup(); 110 | begin 111 | if OkToCopyLog then 112 | FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\InstallationLogFile.log'), FALSE); 113 | RestartReplace (ExpandConstant ('{log}'), ''); 114 | end; 115 | 116 | [UninstallDelete] 117 | Type: files; Name: "{app}\InstallationLogFile.log" -------------------------------------------------------------------------------- /autotalent-rtas.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {73d47a52-ce2f-4264-9bb9-f0b3c16f889d} 6 | 7 | 8 | {f61218de-bb49-4fd2-b3b8-d4d3a4f905de} 9 | 10 | 11 | {f55aca3b-4b35-490a-99d6-51d6724f0396} 12 | 13 | 14 | {13073ee3-c4e8-497c-b935-b091b14197c2} 15 | 16 | 17 | 18 | 19 | Libs 20 | 21 | 22 | Libs 23 | 24 | 25 | Libs 26 | 27 | 28 | Libs 29 | 30 | 31 | Libs 32 | 33 | 34 | Libs 35 | 36 | 37 | Libs 38 | 39 | 40 | 41 | 42 | IPlug 43 | 44 | 45 | IPlug 46 | 47 | 48 | IPlug 49 | 50 | 51 | IPlug 52 | 53 | 54 | IPlug 55 | 56 | 57 | IPlug 58 | 59 | 60 | IPlug 61 | 62 | 63 | IPlug 64 | 65 | 66 | IPlug 67 | 68 | 69 | IPlug 70 | 71 | 72 | IPlug 73 | 74 | 75 | IPlug 76 | 77 | 78 | IPlug 79 | 80 | 81 | IPlug 82 | 83 | 84 | IPlug 85 | 86 | 87 | IPlug 88 | 89 | 90 | IPlug 91 | 92 | 93 | IPlug\RTAS 94 | 95 | 96 | IPlug\RTAS 97 | 98 | 99 | IPlug\RTAS 100 | 101 | 102 | IPlug\RTAS 103 | 104 | 105 | IPlug\RTAS 106 | 107 | 108 | IPlug\RTAS 109 | 110 | 111 | IPlug\RTAS 112 | 113 | 114 | IPlug\RTAS\include 115 | 116 | 117 | 118 | 119 | IPlug\RTAS 120 | 121 | 122 | 123 | 124 | IPlug 125 | 126 | 127 | IPlug 128 | 129 | 130 | IPlug 131 | 132 | 133 | IPlug 134 | 135 | 136 | IPlug 137 | 138 | 139 | IPlug 140 | 141 | 142 | IPlug 143 | 144 | 145 | IPlug 146 | 147 | 148 | IPlug 149 | 150 | 151 | IPlug 152 | 153 | 154 | IPlug 155 | 156 | 157 | IPlug\RTAS 158 | 159 | 160 | IPlug\RTAS 161 | 162 | 163 | IPlug\RTAS 164 | 165 | 166 | IPlug\RTAS 167 | 168 | 169 | IPlug\RTAS\include 170 | 171 | 172 | IPlug\RTAS\include 173 | 174 | 175 | IPlug\RTAS\include 176 | 177 | 178 | 179 | IPlug\RTAS 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | -------------------------------------------------------------------------------- /makedist-mac.command: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | #shell script to automate IPlug Project build, code-signing and packaging on OSX 4 | 5 | BASEDIR=$(dirname $0) 6 | cd $BASEDIR 7 | 8 | #--------------------------------------------------------------------------------------------------------- 9 | 10 | #variables 11 | 12 | VERSION=`echo | grep PLUG_VER resource.h` 13 | VERSION=${VERSION//\#define PLUG_VER } 14 | VERSION=${VERSION//\'} 15 | MAJOR_VERSION=$(($VERSION & 0xFFFF0000)) 16 | MAJOR_VERSION=$(($MAJOR_VERSION >> 16)) 17 | MINOR_VERSION=$(($VERSION & 0x0000FF00)) 18 | MINOR_VERSION=$(($MINOR_VERSION >> 8)) 19 | BUG_FIX=$(($VERSION & 0x000000FF)) 20 | 21 | FULL_VERSION=$MAJOR_VERSION"."$MINOR_VERSION"."$BUG_FIX 22 | 23 | PLUGIN_NAME=`echo | grep BUNDLE_NAME resource.h` 24 | PLUGIN_NAME=${PLUGIN_NAME//\#define BUNDLE_NAME } 25 | PLUGIN_NAME=${PLUGIN_NAME//\"} 26 | 27 | # work out the paths to the binaries 28 | 29 | VST2=`echo | grep VST_FOLDER ../../common.xcconfig` 30 | VST2=${VST2//\VST_FOLDER = }/$PLUGIN_NAME.vst 31 | 32 | VST3=`echo | grep VST3_FOLDER ../../common.xcconfig` 33 | VST3=${VST3//\VST3_FOLDER = }/$PLUGIN_NAME.vst3 34 | 35 | AU=`echo | grep AU_FOLDER ../../common.xcconfig` 36 | AU=${AU//\AU_FOLDER = }/$PLUGIN_NAME.component 37 | 38 | APP=`echo | grep APP_FOLDER ../../common.xcconfig` 39 | APP=${APP//\APP_FOLDER = }/$PLUGIN_NAME.app 40 | 41 | # Dev build folder 42 | RTAS=`echo | grep RTAS_FOLDER ../../common.xcconfig` 43 | RTAS=${RTAS//\RTAS_FOLDER = }/$PLUGIN_NAME.dpm 44 | RTAS_FINAL="/Library/Application Support/Digidesign/Plug-Ins/$PLUGIN_NAME.dpm" 45 | 46 | # Dev build folder 47 | AAX=`echo | grep AAX_FOLDER ../../common.xcconfig` 48 | AAX=${AAX//\AAX_FOLDER = }/$PLUGIN_NAME.aaxplugin 49 | AAX_FINAL="/Library/Application Support/Avid/Audio/Plug-Ins/$PLUGIN_NAME.aaxplugin" 50 | 51 | PKG="installer/build-mac/$PLUGIN_NAME Installer.pkg" 52 | PKG_US="installer/build-mac/$PLUGIN_NAME Installer.unsigned.pkg" 53 | 54 | CERT_ID=`echo | grep CERTIFICATE_ID ../../common.xcconfig` 55 | CERT_ID=${CERT_ID//\CERTIFICATE_ID = } 56 | 57 | echo "making $PLUGIN_NAME version $FULL_VERSION mac distribution..." 58 | echo "" 59 | 60 | #--------------------------------------------------------------------------------------------------------- 61 | 62 | #call python script to update version numbers 63 | ./update_version.py 64 | 65 | #here you can use the touch command to force xcode to rebuild 66 | #touch MyPlugin.h 67 | 68 | #--------------------------------------------------------------------------------------------------------- 69 | 70 | #if you are zipping the binaries, remove existing dist folder 71 | #if [ -d installer/dist ] 72 | #then 73 | # rm -R installer/dist 74 | #fi 75 | 76 | #mkdir installer/dist 77 | 78 | #remove existing binaries 79 | if [ -d $APP ] 80 | then 81 | sudo rm -f -R -f $APP 82 | fi 83 | 84 | if [ -d $AU ] 85 | then 86 | sudo rm -f -R $AU 87 | fi 88 | 89 | if [ -d $VST2 ] 90 | then 91 | sudo rm -f -R $VST2 92 | fi 93 | 94 | if [ -d $VST3 ] 95 | then 96 | sudo rm -f -R $VST3 97 | fi 98 | 99 | if [ -d "${RTAS}" ] 100 | then 101 | sudo rm -f -R "${RTAS}" 102 | fi 103 | 104 | if [ -d "${RTAS_FINAL}" ] 105 | then 106 | sudo rm -f -R "${RTAS_FINAL}" 107 | fi 108 | 109 | if [ -d "${AAX}" ] 110 | then 111 | sudo rm -f -R "${AAX}" 112 | fi 113 | 114 | if [ -d "${AAX_FINAL}" ] 115 | then 116 | sudo rm -f -R "${AAX_FINAL}" 117 | fi 118 | 119 | #--------------------------------------------------------------------------------------------------------- 120 | 121 | # build xcode project. Change target to build individual formats 122 | xcodebuild -project $PLUGIN_NAME.xcodeproj -xcconfig $PLUGIN_NAME.xcconfig -target "All" -configuration Release 2> ./build-mac.log 123 | 124 | if [ -s build-mac.log ] 125 | then 126 | echo "build failed due to following errors:" 127 | echo "" 128 | cat build-mac.log 129 | exit 1 130 | else 131 | rm build-mac.log 132 | fi 133 | 134 | #--------------------------------------------------------------------------------------------------------- 135 | 136 | #icon stuff - http://maxao.free.fr/telechargements/setfileicon.gz 137 | echo "setting icons" 138 | echo "" 139 | setfileicon resources/$PLUGIN_NAME.icns $AU 140 | setfileicon resources/$PLUGIN_NAME.icns $VST2 141 | setfileicon resources/$PLUGIN_NAME.icns $VST3 142 | setfileicon resources/$PLUGIN_NAME.icns "${RTAS}" 143 | setfileicon resources/$PLUGIN_NAME.icns "${AAX}" 144 | 145 | #--------------------------------------------------------------------------------------------------------- 146 | 147 | #strip debug symbols from binaries 148 | 149 | echo "striping binaries" 150 | strip -x $AU/Contents/MacOS/$PLUGIN_NAME 151 | strip -x $VST2/Contents/MacOS/$PLUGIN_NAME 152 | strip -x $VST3/Contents/MacOS/$PLUGIN_NAME 153 | strip -x $APP/Contents/MacOS/$PLUGIN_NAME 154 | strip -x "${AAX}/Contents/MacOS/$PLUGIN_NAME" 155 | strip -x "${RTAS}/Contents/MacOS/$PLUGIN_NAME" 156 | 157 | #--------------------------------------------------------------------------------------------------------- 158 | 159 | #ProTools stuff 160 | 161 | echo "copying RTAS PLUGIN_NAME from 3PDev to main RTAS folder" 162 | sudo cp -p -R "${RTAS}" "${RTAS_FINAL}" 163 | 164 | echo "copying AAX PLUGIN_NAME from 3PDev to main AAX folder" 165 | sudo cp -p -R "${AAX}" "${AAX_FINAL}" 166 | 167 | echo "code sign AAX binary" 168 | #... consult PACE documentation 169 | 170 | #--------------------------------------------------------------------------------------------------------- 171 | 172 | #Mac AppStore stuff 173 | 174 | #xcodebuild -project $PLUGIN_NAME.xcodeproj -xcconfig $PLUGIN_NAME.xcconfig -target "APP" -configuration Release 2> ./build-mac.log 175 | 176 | #echo "code signing app for appstore" 177 | #echo "" 178 | #codesign -f -s "3rd Party Mac Developer Application: ""${CERT_ID}" $APP --entitlements resources/$PLUGIN_NAME.entitlements 179 | 180 | #echo "building pkg for app store" 181 | #echo "" 182 | #productbuild \ 183 | # --component $APP /Applications \ 184 | # --sign "3rd Party Mac Developer Installer: ""${CERT_ID}" \ 185 | # --product "/Applications/$PLUGIN_NAME.app/Contents/Info.plist" installer/$PLUGIN_NAME.pkg 186 | 187 | #--------------------------------------------------------------------------------------------------------- 188 | 189 | #10.8 Gatekeeper/Developer ID stuff 190 | 191 | echo "code app binary for Gatekeeper on 10.8" 192 | echo "" 193 | codesign -f -s "Developer ID Application: ""${CERT_ID}" $APP 194 | 195 | #TODO: code-sign plug-in binaries too? 196 | 197 | #--------------------------------------------------------------------------------------------------------- 198 | 199 | # installer, uses Packages http://s.sudre.free.fr/Software/Packages/about.html 200 | sudo sudo rm -R -f installer/$PLUGIN_NAME-mac.dmg 201 | 202 | echo "building installer" 203 | echo "" 204 | packagesbuild installer/$PLUGIN_NAME.pkgproj 205 | 206 | echo "code-sign installer for Gatekeeper on 10.8" 207 | echo "" 208 | mv "${PKG}" "${PKG_US}" 209 | productsign --sign "Developer ID Installer: ""${CERT_ID}" "${PKG_US}" "${PKG}" 210 | 211 | rm -R -f "${PKG_US}" 212 | 213 | #set installer icon 214 | setfileicon resources/$PLUGIN_NAME.icns "${PKG}" 215 | 216 | #--------------------------------------------------------------------------------------------------------- 217 | 218 | # dmg, can use dmgcanvas http://www.araelium.com/dmgcanvas/ to make a nice dmg 219 | 220 | echo "building dmg" 221 | echo "" 222 | 223 | if [ -d installer/$PLUGIN_NAME.dmgCanvas ] 224 | then 225 | dmgcanvas installer/$PLUGIN_NAME.dmgCanvas installer/$PLUGIN_NAME-mac.dmg 226 | else 227 | hdiutil create installer/$PLUGIN_NAME.dmg -srcfolder installer/build-mac/ -ov -anyowners -volname $PLUGIN_NAME 228 | 229 | if [ -f installer/$PLUGIN_NAME-mac.dmg ] 230 | then 231 | rm -f installer/$PLUGIN_NAME-mac.dmg 232 | fi 233 | 234 | hdiutil convert installer/$PLUGIN_NAME.dmg -format UDZO -o installer/$PLUGIN_NAME-mac.dmg 235 | sudo rm -R -f installer/$PLUGIN_NAME.dmg 236 | fi 237 | 238 | sudo rm -R -f installer/build-mac/ 239 | 240 | #--------------------------------------------------------------------------------------------------------- 241 | # zip 242 | 243 | # echo "copying binaries..." 244 | # echo "" 245 | # cp -R $AU installer/dist/$PLUGIN_NAME.component 246 | # cp -R $VST2 installer/dist/$PLUGIN_NAME.vst 247 | # cp -R $VST3 installer/dist/$PLUGIN_NAME.vst3 248 | # cp -R $RTAS installer/dist/$PLUGIN_NAME.dpm 249 | # cp -R $AAX installer/dist/$PLUGIN_NAME.aaxplugin 250 | # cp -R $APP installer/dist/$PLUGIN_NAME.app 251 | # 252 | # echo "zipping binaries..." 253 | # echo "" 254 | # ditto -c -k installer/dist installer/$PLUGIN_NAME-mac.zip 255 | # rm -R installer/dist 256 | 257 | #--------------------------------------------------------------------------------------------------------- 258 | 259 | echo "done" -------------------------------------------------------------------------------- /autotalent-vst3.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | vst3\VST3SDK\pluginterfaces\base 7 | 8 | 9 | vst3\VST3SDK\pluginterfaces\base 10 | 11 | 12 | vst3\VST3SDK\public.sdk\common 13 | 14 | 15 | vst3\VST3SDK\public.sdk\vst 16 | 17 | 18 | vst3\VST3SDK\public.sdk\vst 19 | 20 | 21 | vst3\VST3SDK\public.sdk\vst 22 | 23 | 24 | vst3\VST3SDK\public.sdk\vst 25 | 26 | 27 | vst3\VST3SDK\public.sdk\vst 28 | 29 | 30 | vst3\VST3SDK\public.sdk\vst 31 | 32 | 33 | vst3\VST3SDK\public.sdk\main 34 | 35 | 36 | vst3\VST3SDK\public.sdk\main 37 | 38 | 39 | vst3\VST3SDK\public.sdk\vst 40 | 41 | 42 | vst3 43 | 44 | 45 | 46 | 47 | 48 | 49 | vst3\VST3SDK\pluginterfaces\base 50 | 51 | 52 | vst3\VST3SDK\pluginterfaces\base 53 | 54 | 55 | vst3\VST3SDK\pluginterfaces\base 56 | 57 | 58 | vst3\VST3SDK\pluginterfaces\base 59 | 60 | 61 | vst3\VST3SDK\pluginterfaces\base 62 | 63 | 64 | vst3\VST3SDK\pluginterfaces\base 65 | 66 | 67 | vst3\VST3SDK\pluginterfaces\base 68 | 69 | 70 | vst3\VST3SDK\pluginterfaces\base 71 | 72 | 73 | vst3\VST3SDK\pluginterfaces\vst 74 | 75 | 76 | vst3\VST3SDK\pluginterfaces\vst 77 | 78 | 79 | vst3\VST3SDK\pluginterfaces\vst 80 | 81 | 82 | vst3\VST3SDK\pluginterfaces\vst 83 | 84 | 85 | vst3\VST3SDK\pluginterfaces\vst 86 | 87 | 88 | vst3\VST3SDK\pluginterfaces\vst 89 | 90 | 91 | vst3\VST3SDK\pluginterfaces\vst 92 | 93 | 94 | vst3\VST3SDK\pluginterfaces\vst 95 | 96 | 97 | vst3\VST3SDK\pluginterfaces\vst 98 | 99 | 100 | vst3\VST3SDK\pluginterfaces\vst 101 | 102 | 103 | vst3\VST3SDK\pluginterfaces\vst 104 | 105 | 106 | vst3\VST3SDK\pluginterfaces\vst 107 | 108 | 109 | vst3\VST3SDK\pluginterfaces\vst 110 | 111 | 112 | vst3\VST3SDK\pluginterfaces\gui 113 | 114 | 115 | vst3\VST3SDK\public.sdk\common 116 | 117 | 118 | vst3\VST3SDK\public.sdk\vst 119 | 120 | 121 | vst3\VST3SDK\public.sdk\vst 122 | 123 | 124 | vst3\VST3SDK\public.sdk\vst 125 | 126 | 127 | vst3\VST3SDK\public.sdk\vst 128 | 129 | 130 | vst3\VST3SDK\public.sdk\vst 131 | 132 | 133 | vst3\VST3SDK\public.sdk\vst 134 | 135 | 136 | vst3\VST3SDK\public.sdk\main 137 | 138 | 139 | vst3\VST3SDK\public.sdk\vst 140 | 141 | 142 | vst3 143 | 144 | 145 | 146 | 147 | {0028f8fa-40ce-4098-b1d7-1930d1a7774b} 148 | 149 | 150 | {d33dc1fa-0b31-40b9-a240-b065db740979} 151 | 152 | 153 | {1da1c979-a505-4558-b877-1a2da0e4e758} 154 | 155 | 156 | {cf0c95d2-7b5a-4afa-8a3e-546800d9b337} 157 | 158 | 159 | {babb4a18-d1d6-467e-af1c-fb852400f591} 160 | 161 | 162 | {a0598a21-18c6-4da8-98a8-bebbf0f37b34} 163 | 164 | 165 | {bc78847c-a41c-4ad7-8a8e-2ea825bc2f8e} 166 | 167 | 168 | {23863805-5085-4669-8675-167aba1f0fc9} 169 | 170 | 171 | {00ff2592-e5ef-4ab1-8b06-c42242d80c52} 172 | 173 | 174 | {ec7b025c-4ef1-4403-956b-b3673b4715b8} 175 | 176 | 177 | 178 | 179 | 180 | -------------------------------------------------------------------------------- /autotalent.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 250 | 251 | -------------------------------------------------------------------------------- /autotalent.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autotalent-app", "autotalent-app.vcxproj", "{41785AE4-5B70-4A75-880B-4B418B4E13C6}" 5 | ProjectSection(ProjectDependencies) = postProject 6 | {3059A12C-2A45-439B-81EC-201D8ED347A3} = {3059A12C-2A45-439B-81EC-201D8ED347A3} 7 | {33958832-2FFD-49D8-9C13-5F0B26739E81} = {33958832-2FFD-49D8-9C13-5F0B26739E81} 8 | EndProjectSection 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IPlug", "..\..\WDL\IPlug\IPlug.vcxproj", "{33958832-2FFD-49D8-9C13-5F0B26739E81}" 11 | ProjectSection(ProjectDependencies) = postProject 12 | {3059A12C-2A45-439B-81EC-201D8ED347A3} = {3059A12C-2A45-439B-81EC-201D8ED347A3} 13 | EndProjectSection 14 | EndProject 15 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lice", "..\..\WDL\lice\lice.vcxproj", "{3059A12C-2A45-439B-81EC-201D8ED347A3}" 16 | EndProject 17 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autotalent-vst2", "autotalent-vst2.vcxproj", "{2EB4846A-93E0-43A0-821E-12237105168F}" 18 | ProjectSection(ProjectDependencies) = postProject 19 | {3059A12C-2A45-439B-81EC-201D8ED347A3} = {3059A12C-2A45-439B-81EC-201D8ED347A3} 20 | {33958832-2FFD-49D8-9C13-5F0B26739E81} = {33958832-2FFD-49D8-9C13-5F0B26739E81} 21 | EndProjectSection 22 | EndProject 23 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autotalent-vst3", "autotalent-vst3.vcxproj", "{079FC65A-F0E5-4E97-B318-A16D1D0B89DF}" 24 | ProjectSection(ProjectDependencies) = postProject 25 | {3059A12C-2A45-439B-81EC-201D8ED347A3} = {3059A12C-2A45-439B-81EC-201D8ED347A3} 26 | {33958832-2FFD-49D8-9C13-5F0B26739E81} = {33958832-2FFD-49D8-9C13-5F0B26739E81} 27 | {5755CC40-C699-491B-BD7C-5D841C26C28D} = {5755CC40-C699-491B-BD7C-5D841C26C28D} 28 | EndProjectSection 29 | EndProject 30 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\..\VST3_SDK\base\win\base_vc10.vcxproj", "{5755CC40-C699-491B-BD7C-5D841C26C28D}" 31 | EndProject 32 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autotalent-aax", "autotalent-aax.vcxproj", "{DC4B5920-933D-4C82-B842-F34431D55A93}" 33 | ProjectSection(ProjectDependencies) = postProject 34 | {3059A12C-2A45-439B-81EC-201D8ED347A3} = {3059A12C-2A45-439B-81EC-201D8ED347A3} 35 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53} = {5E3D286E-BF0D-446A-AFEF-E800F283CE53} 36 | EndProjectSection 37 | EndProject 38 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AAXLibrary", "..\..\AAX_SDK\Libs\AAXLibrary\WinBuild\AAXLibrary.vcxproj", "{5E3D286E-BF0D-446A-AFEF-E800F283CE53}" 39 | EndProject 40 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autotalent-rtas", "autotalent-rtas.vcxproj", "{8F427C1E-B580-4793-BEAC-F2CFEFA003F5}" 41 | ProjectSection(ProjectDependencies) = postProject 42 | {3059A12C-2A45-439B-81EC-201D8ED347A3} = {3059A12C-2A45-439B-81EC-201D8ED347A3} 43 | {D2CE28FF-63B8-48BC-936D-33F365B4053F} = {D2CE28FF-63B8-48BC-936D-33F365B4053F} 44 | EndProjectSection 45 | EndProject 46 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PlugInLib", "..\..\PT9_SDK\AlturaPorts\TDMPlugIns\PlugInLibrary\WinBuild\PlugInLib.vcxproj", "{D2CE28FF-63B8-48BC-936D-33F365B4053F}" 47 | EndProject 48 | Global 49 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 50 | Debug|Win32 = Debug|Win32 51 | Debug|x64 = Debug|x64 52 | Release|Win32 = Release|Win32 53 | Release|x64 = Release|x64 54 | Tracer|Win32 = Tracer|Win32 55 | Tracer|x64 = Tracer|x64 56 | EndGlobalSection 57 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 58 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|Win32.ActiveCfg = Debug|Win32 59 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|Win32.Build.0 = Debug|Win32 60 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|x64.ActiveCfg = Debug|x64 61 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|x64.Build.0 = Debug|x64 62 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|Win32.ActiveCfg = Release|Win32 63 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|Win32.Build.0 = Release|Win32 64 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|x64.ActiveCfg = Release|x64 65 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|x64.Build.0 = Release|x64 66 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|Win32.ActiveCfg = Tracer|Win32 67 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|Win32.Build.0 = Tracer|Win32 68 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|x64.ActiveCfg = Tracer|x64 69 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|x64.Build.0 = Tracer|x64 70 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Debug|Win32.ActiveCfg = Debug|Win32 71 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Debug|Win32.Build.0 = Debug|Win32 72 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Debug|x64.ActiveCfg = Debug|x64 73 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Debug|x64.Build.0 = Debug|x64 74 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Release|Win32.ActiveCfg = Release|Win32 75 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Release|Win32.Build.0 = Release|Win32 76 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Release|x64.ActiveCfg = Release|x64 77 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Release|x64.Build.0 = Release|x64 78 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Tracer|Win32.ActiveCfg = Tracer|Win32 79 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Tracer|Win32.Build.0 = Tracer|Win32 80 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Tracer|x64.ActiveCfg = Tracer|x64 81 | {33958832-2FFD-49D8-9C13-5F0B26739E81}.Tracer|x64.Build.0 = Tracer|x64 82 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Debug|Win32.ActiveCfg = Debug|Win32 83 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Debug|Win32.Build.0 = Debug|Win32 84 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Debug|x64.ActiveCfg = Debug|x64 85 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Debug|x64.Build.0 = Debug|x64 86 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Release|Win32.ActiveCfg = Release|Win32 87 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Release|Win32.Build.0 = Release|Win32 88 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Release|x64.ActiveCfg = Release|x64 89 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Release|x64.Build.0 = Release|x64 90 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Tracer|Win32.ActiveCfg = Release|Win32 91 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Tracer|Win32.Build.0 = Release|Win32 92 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Tracer|x64.ActiveCfg = Release|x64 93 | {3059A12C-2A45-439B-81EC-201D8ED347A3}.Tracer|x64.Build.0 = Release|x64 94 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|Win32.ActiveCfg = Debug|Win32 95 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|Win32.Build.0 = Debug|Win32 96 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|x64.ActiveCfg = Debug|x64 97 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|x64.Build.0 = Debug|x64 98 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|Win32.ActiveCfg = Release|Win32 99 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|Win32.Build.0 = Release|Win32 100 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|x64.ActiveCfg = Release|x64 101 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|x64.Build.0 = Release|x64 102 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|Win32.ActiveCfg = Tracer|Win32 103 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|Win32.Build.0 = Tracer|Win32 104 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|x64.ActiveCfg = Tracer|x64 105 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|x64.Build.0 = Tracer|x64 106 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|Win32.ActiveCfg = Debug|Win32 107 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|Win32.Build.0 = Debug|Win32 108 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|x64.ActiveCfg = Debug|x64 109 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|x64.Build.0 = Debug|x64 110 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|Win32.ActiveCfg = Release|Win32 111 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|Win32.Build.0 = Release|Win32 112 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|x64.ActiveCfg = Release|x64 113 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|x64.Build.0 = Release|x64 114 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|Win32.ActiveCfg = Tracer|Win32 115 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|Win32.Build.0 = Tracer|Win32 116 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|x64.ActiveCfg = Tracer|x64 117 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|x64.Build.0 = Tracer|x64 118 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Debug|Win32.ActiveCfg = Debug|Win32 119 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Debug|Win32.Build.0 = Debug|Win32 120 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Debug|x64.ActiveCfg = Debug|x64 121 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Debug|x64.Build.0 = Debug|x64 122 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Release|Win32.ActiveCfg = Release|Win32 123 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Release|Win32.Build.0 = Release|Win32 124 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Release|x64.ActiveCfg = Release|x64 125 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Release|x64.Build.0 = Release|x64 126 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Tracer|Win32.ActiveCfg = Release|Win32 127 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Tracer|Win32.Build.0 = Release|Win32 128 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Tracer|x64.ActiveCfg = Release|x64 129 | {5755CC40-C699-491B-BD7C-5D841C26C28D}.Tracer|x64.Build.0 = Release|x64 130 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|Win32.ActiveCfg = Debug|Win32 131 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|Win32.Build.0 = Debug|Win32 132 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|x64.ActiveCfg = Debug|x64 133 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|x64.Build.0 = Debug|x64 134 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|Win32.ActiveCfg = Release|Win32 135 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|Win32.Build.0 = Release|Win32 136 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|x64.ActiveCfg = Release|x64 137 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|x64.Build.0 = Release|x64 138 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|Win32.ActiveCfg = Tracer|Win32 139 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|Win32.Build.0 = Tracer|Win32 140 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|x64.ActiveCfg = Tracer|x64 141 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|x64.Build.0 = Tracer|x64 142 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Debug|Win32.ActiveCfg = Debug|Win32 143 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Debug|Win32.Build.0 = Debug|Win32 144 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Debug|x64.ActiveCfg = Debug|x64 145 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Debug|x64.Build.0 = Debug|x64 146 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Release|Win32.ActiveCfg = Release|Win32 147 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Release|Win32.Build.0 = Release|Win32 148 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Release|x64.ActiveCfg = Release|x64 149 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Release|x64.Build.0 = Release|x64 150 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Tracer|Win32.ActiveCfg = Release|Win32 151 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Tracer|Win32.Build.0 = Release|Win32 152 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Tracer|x64.ActiveCfg = Release|x64 153 | {5E3D286E-BF0D-446A-AFEF-E800F283CE53}.Tracer|x64.Build.0 = Release|x64 154 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Debug|Win32.ActiveCfg = Debug|Win32 155 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Debug|Win32.Build.0 = Debug|Win32 156 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Debug|x64.ActiveCfg = Debug|Win32 157 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Release|Win32.ActiveCfg = Release|Win32 158 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Release|Win32.Build.0 = Release|Win32 159 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Release|x64.ActiveCfg = Release|Win32 160 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Tracer|Win32.ActiveCfg = Tracer|Win32 161 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Tracer|Win32.Build.0 = Tracer|Win32 162 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5}.Tracer|x64.ActiveCfg = Tracer|Win32 163 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Debug|Win32.ActiveCfg = Release|Win32 164 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Debug|Win32.Build.0 = Release|Win32 165 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Debug|x64.ActiveCfg = Debug|Win32 166 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Release|Win32.ActiveCfg = Release|Win32 167 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Release|Win32.Build.0 = Release|Win32 168 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Release|x64.ActiveCfg = Release|Win32 169 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Tracer|Win32.ActiveCfg = Release|Win32 170 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Tracer|Win32.Build.0 = Release|Win32 171 | {D2CE28FF-63B8-48BC-936D-33F365B4053F}.Tracer|x64.ActiveCfg = Release|Win32 172 | EndGlobalSection 173 | GlobalSection(SolutionProperties) = preSolution 174 | HideSolutionNode = FALSE 175 | EndGlobalSection 176 | EndGlobal 177 | -------------------------------------------------------------------------------- /autotalent-vst2.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | Release 14 | Win32 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | Tracer 22 | Win32 23 | 24 | 25 | Tracer 26 | x64 27 | 28 | 29 | 30 | {2EB4846A-93E0-43A0-821E-12237105168F} 31 | autotalent 32 | autotalent-vst2 33 | 34 | 35 | 36 | DynamicLibrary 37 | true 38 | MultiByte 39 | 40 | 41 | DynamicLibrary 42 | true 43 | MultiByte 44 | 45 | 46 | DynamicLibrary 47 | false 48 | true 49 | MultiByte 50 | 51 | 52 | DynamicLibrary 53 | false 54 | true 55 | MultiByte 56 | 57 | 58 | DynamicLibrary 59 | false 60 | true 61 | MultiByte 62 | 63 | 64 | DynamicLibrary 65 | false 66 | true 67 | MultiByte 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | build-win\vst2\$(Platform)\bin\ 99 | 100 | 101 | build-win\vst2\$(Platform)\bin\ 102 | 103 | 104 | build-win\vst2\$(Platform)\$(Configuration)\ 105 | 106 | 107 | 108 | 109 | build-win\vst2\$(Platform)\$(Configuration)\ 110 | 111 | 112 | 113 | build-win\vst2\$(Platform)\bin\ 114 | 115 | 116 | build-win\vst2\$(Platform)\bin\ 117 | 118 | 119 | build-win\vst2\$(Platform)\$(Configuration)\ 120 | 121 | 122 | build-win\vst2\$(Platform)\$(Configuration)\ 123 | 124 | 125 | build-win\vst2\$(Platform)\bin\ 126 | 127 | 128 | build-win\vst2\$(Platform)\bin\ 129 | 130 | 131 | build-win\vst2\$(Platform)\$(Configuration)\ 132 | 133 | 134 | build-win\vst2\$(Platform)\$(Configuration)\ 135 | 136 | 137 | 138 | Level3 139 | Disabled 140 | $(VST_DEFS);$(DEBUG_DEFS);%(PreprocessorDefinitions) 141 | MultiThreadedDebug 142 | 143 | 144 | true 145 | Windows 146 | 147 | 148 | 149 | 150 | Level3 151 | Disabled 152 | $(VST_DEFS);$(DEBUG_DEFS);%(PreprocessorDefinitions) 153 | MultiThreadedDebug 154 | 155 | 156 | true 157 | Windows 158 | $(x64_LIB_PATHS);%(AdditionalLibraryDirectories) 159 | 160 | 161 | 162 | 163 | Level3 164 | MaxSpeed 165 | true 166 | true 167 | $(VST_DEFS);$(RELEASE_DEFS);%(PreprocessorDefinitions) 168 | true 169 | Speed 170 | 171 | 172 | true 173 | true 174 | true 175 | Windows 176 | 177 | 178 | 179 | 180 | Level3 181 | MaxSpeed 182 | true 183 | true 184 | $(VST_DEFS);$(RELEASE_DEFS);%(PreprocessorDefinitions) 185 | true 186 | Speed 187 | 188 | 189 | true 190 | true 191 | true 192 | Windows 193 | $(x64_LIB_PATHS);%(AdditionalLibraryDirectories) 194 | 195 | 196 | 197 | 198 | Level3 199 | MaxSpeed 200 | true 201 | true 202 | $(VST_DEFS);$(TRACER_DEFS);%(PreprocessorDefinitions) 203 | true 204 | 205 | 206 | true 207 | true 208 | true 209 | Windows 210 | $(WDL_PATH)\lice\build-win\$(Platform)\Release\;%(AdditionalLibraryDirectories) 211 | 212 | 213 | 214 | 215 | Level3 216 | MaxSpeed 217 | true 218 | true 219 | $(VST_DEFS);$(TRACER_DEFS);%(PreprocessorDefinitions) 220 | true 221 | 222 | 223 | true 224 | true 225 | true 226 | Windows 227 | $(x64_LIB_PATHS);$(WDL_PATH)\lice\build-win\$(Platform)\Release\;%(AdditionalLibraryDirectories) 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | -------------------------------------------------------------------------------- /autotalent-app.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | Release 14 | Win32 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | Tracer 22 | Win32 23 | 24 | 25 | Tracer 26 | x64 27 | 28 | 29 | 30 | {41785AE4-5B70-4A75-880B-4B418B4E13C6} 31 | autotalent 32 | autotalent-app 33 | 34 | 35 | 36 | Application 37 | true 38 | MultiByte 39 | 40 | 41 | Application 42 | true 43 | MultiByte 44 | 45 | 46 | Application 47 | false 48 | true 49 | MultiByte 50 | 51 | 52 | Application 53 | false 54 | true 55 | MultiByte 56 | 57 | 58 | Application 59 | false 60 | true 61 | MultiByte 62 | 63 | 64 | Application 65 | false 66 | true 67 | MultiByte 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | build-win\app\$(Platform)\bin\ 99 | 100 | 101 | build-win\app\$(Platform)\bin\ 102 | 103 | 104 | build-win\app\$(Platform)\$(Configuration)\ 105 | 106 | 107 | 108 | 109 | build-win\app\$(Platform)\$(Configuration)\ 110 | 111 | 112 | 113 | build-win\app\$(Platform)\bin\ 114 | 115 | 116 | build-win\app\$(Platform)\bin\ 117 | 118 | 119 | build-win\app\$(Platform)\$(Configuration)\ 120 | 121 | 122 | build-win\app\$(Platform)\$(Configuration)\ 123 | 124 | 125 | build-win\app\$(Platform)\bin\ 126 | 127 | 128 | build-win\app\$(Platform)\bin\ 129 | 130 | 131 | build-win\app\$(Platform)\$(Configuration)\ 132 | 133 | 134 | build-win\app\$(Platform)\$(Configuration)\ 135 | 136 | 137 | 138 | Level3 139 | Disabled 140 | $(APP_DEFS);$(DEBUG_DEFS);%(PreprocessorDefinitions) 141 | $(APP_INCLUDES);%(AdditionalIncludeDirectories) 142 | MultiThreadedDebug 143 | 144 | 145 | true 146 | $(APP_LIBS);%(AdditionalDependencies) 147 | Windows 148 | 149 | 150 | SA_API 151 | 152 | 153 | 154 | 155 | Level3 156 | Disabled 157 | $(APP_DEFS);$(DEBUG_DEFS);%(PreprocessorDefinitions) 158 | $(APP_INCLUDES);%(AdditionalIncludeDirectories) 159 | MultiThreadedDebug 160 | 161 | 162 | true 163 | $(APP_LIBS);%(AdditionalDependencies) 164 | Windows 165 | $(x64_LIB_PATHS);%(AdditionalLibraryDirectories) 166 | 167 | 168 | SA_API 169 | 170 | 171 | 172 | 173 | Level3 174 | MaxSpeed 175 | true 176 | true 177 | $(APP_DEFS);$(RELEASE_DEFS);%(PreprocessorDefinitions) 178 | $(APP_INCLUDES);%(AdditionalIncludeDirectories) 179 | true 180 | Speed 181 | 182 | 183 | true 184 | true 185 | true 186 | $(APP_LIBS);%(AdditionalDependencies) 187 | Windows 188 | 189 | 190 | SA_API 191 | 192 | 193 | 194 | 195 | Level3 196 | MaxSpeed 197 | true 198 | true 199 | $(APP_DEFS);$(RELEASE_DEFS);%(PreprocessorDefinitions) 200 | $(APP_INCLUDES);%(AdditionalIncludeDirectories) 201 | true 202 | Speed 203 | 204 | 205 | true 206 | true 207 | true 208 | $(APP_LIBS);%(AdditionalDependencies) 209 | Windows 210 | $(x64_LIB_PATHS);%(AdditionalLibraryDirectories) 211 | 212 | 213 | SA_API 214 | 215 | 216 | 217 | 218 | Level3 219 | MaxSpeed 220 | true 221 | true 222 | $(APP_DEFS);$(TRACER_DEFS);%(PreprocessorDefinitions) 223 | $(APP_INCLUDES);%(AdditionalIncludeDirectories) 224 | true 225 | 226 | 227 | true 228 | true 229 | true 230 | $(APP_LIBS);%(AdditionalDependencies) 231 | Windows 232 | $(WDL_PATH)\lice\build-win\$(Platform)\Release\;%(AdditionalLibraryDirectories) 233 | 234 | 235 | SA_API 236 | 237 | 238 | 239 | 240 | Level3 241 | MaxSpeed 242 | true 243 | true 244 | $(APP_DEFS);$(TRACER_DEFS);%(PreprocessorDefinitions) 245 | $(APP_INCLUDES);%(AdditionalIncludeDirectories) 246 | true 247 | 248 | 249 | true 250 | true 251 | true 252 | $(APP_LIBS);%(AdditionalDependencies) 253 | Windows 254 | $(x64_LIB_PATHS);$(WDL_PATH)\lice\build-win\$(Platform)\Release\;%(AdditionalLibraryDirectories) 255 | 256 | 257 | SA_API 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | -------------------------------------------------------------------------------- /mayer_fft.c: -------------------------------------------------------------------------------- 1 | /* This is the FFT routine taken from PureData, a great piece of 2 | software by Miller S. Puckette. 3 | http://crca.ucsd.edu/~msp/software.html */ 4 | 5 | /* 6 | ** FFT and FHT routines 7 | ** Copyright 1988, 1993; Ron Mayer 8 | ** 9 | ** mayer_fht(fz,n); 10 | ** Does a hartley transform of "n" points in the array "fz". 11 | ** mayer_fft(n,real,imag) 12 | ** Does a fourier transform of "n" points of the "real" and 13 | ** "imag" arrays. 14 | ** mayer_ifft(n,real,imag) 15 | ** Does an inverse fourier transform of "n" points of the "real" 16 | ** and "imag" arrays. 17 | ** mayer_realfft(n,real) 18 | ** Does a real-valued fourier transform of "n" points of the 19 | ** "real" array. The real part of the transform ends 20 | ** up in the first half of the array and the imaginary part of the 21 | ** transform ends up in the second half of the array. 22 | ** mayer_realifft(n,real) 23 | ** The inverse of the realfft() routine above. 24 | ** 25 | ** 26 | ** NOTE: This routine uses at least 2 patented algorithms, and may be 27 | ** under the restrictions of a bunch of different organizations. 28 | ** Although I wrote it completely myself, it is kind of a derivative 29 | ** of a routine I once authored and released under the GPL, so it 30 | ** may fall under the free software foundation's restrictions; 31 | ** it was worked on as a Stanford Univ project, so they claim 32 | ** some rights to it; it was further optimized at work here, so 33 | ** I think this company claims parts of it. The patents are 34 | ** held by R. Bracewell (the FHT algorithm) and O. Buneman (the 35 | ** trig generator), both at Stanford Univ. 36 | ** If it were up to me, I'd say go do whatever you want with it; 37 | ** but it would be polite to give credit to the following people 38 | ** if you use this anywhere: 39 | ** Euler - probable inventor of the fourier transform. 40 | ** Gauss - probable inventor of the FFT. 41 | ** Hartley - probable inventor of the hartley transform. 42 | ** Buneman - for a really cool trig generator 43 | ** Mayer(me) - for authoring this particular version and 44 | ** including all the optimizations in one package. 45 | ** Thanks, 46 | ** Ron Mayer; mayer@acuson.com 47 | ** 48 | */ 49 | 50 | /* This is a slightly modified version of Mayer's contribution; write 51 | * msp@ucsd.edu for the original code. Kudos to Mayer for a fine piece 52 | * of work. -msp 53 | */ 54 | 55 | #define REAL float 56 | #define GOOD_TRIG 57 | 58 | #ifdef GOOD_TRIG 59 | #else 60 | #define FAST_TRIG 61 | #endif 62 | 63 | #if defined(GOOD_TRIG) 64 | #define FHT_SWAP(a,b,t) {(t)=(a);(a)=(b);(b)=(t);} 65 | #define TRIG_VARS \ 66 | int t_lam=0; 67 | #define TRIG_INIT(k,c,s) \ 68 | { \ 69 | int i; \ 70 | for (i=2 ; i<=k ; i++) \ 71 | {coswrk[i]=costab[i];sinwrk[i]=sintab[i];} \ 72 | t_lam = 0; \ 73 | c = 1; \ 74 | s = 0; \ 75 | } 76 | #define TRIG_NEXT(k,c,s) \ 77 | { \ 78 | int i,j; \ 79 | (t_lam)++; \ 80 | for (i=0 ; !((1<1) \ 85 | { \ 86 | for (j=k-i+2 ; (1<>1; (!((k2^=k)&k)); k>>=1); 227 | if (k1>k2) 228 | { 229 | aa=fz[k1];fz[k1]=fz[k2];fz[k2]=aa; 230 | } 231 | } 232 | for ( k=0 ; (1<> 1; 293 | fi = fz; 294 | gi = fi + kx; 295 | fn = fz + n; 296 | do 297 | { 298 | REAL g0,f0,f1,g1,f2,g2,f3,g3; 299 | f1 = fi[0 ] - fi[k1]; 300 | f0 = fi[0 ] + fi[k1]; 301 | f3 = fi[k2] - fi[k3]; 302 | f2 = fi[k2] + fi[k3]; 303 | fi[k2] = f0 - f2; 304 | fi[0 ] = f0 + f2; 305 | fi[k3] = f1 - f3; 306 | fi[k1] = f1 + f3; 307 | g1 = gi[0 ] - gi[k1]; 308 | g0 = gi[0 ] + gi[k1]; 309 | g3 = SQRT2 * gi[k3]; 310 | g2 = SQRT2 * gi[k2]; 311 | gi[k2] = g0 - g2; 312 | gi[0 ] = g0 + g2; 313 | gi[k3] = g1 - g3; 314 | gi[k1] = g1 + g3; 315 | gi += k4; 316 | fi += k4; 317 | } while (fi 304 | Copyright (C) 305 | 306 | This program is free software; you can redistribute it and/or modify 307 | it under the terms of the GNU General Public License as published by 308 | the Free Software Foundation; either version 2 of the License, or 309 | (at your option) any later version. 310 | 311 | This program is distributed in the hope that it will be useful, 312 | but WITHOUT ANY WARRANTY; without even the implied warranty of 313 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 314 | GNU General Public License for more details. 315 | 316 | You should have received a copy of the GNU General Public License 317 | along with this program; if not, write to the Free Software 318 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 319 | 320 | 321 | Also add information on how to contact you by electronic and paper mail. 322 | 323 | If the program is interactive, make it output a short notice like this 324 | when it starts in an interactive mode: 325 | 326 | Gnomovision version 69, Copyright (C) year name of author 327 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 328 | This is free software, and you are welcome to redistribute it 329 | under certain conditions; type `show c' for details. 330 | 331 | The hypothetical commands `show w' and `show c' should show the appropriate 332 | parts of the General Public License. Of course, the commands you use may 333 | be called something other than `show w' and `show c'; they could even be 334 | mouse-clicks or menu items--whatever suits your program. 335 | 336 | You should also get your employer (if you work as a programmer) or your 337 | school, if any, to sign a "copyright disclaimer" for the program, if 338 | necessary. Here is a sample; alter the names: 339 | 340 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 341 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 342 | 343 | , 1 April 1989 344 | Ty Coon, President of Vice 345 | 346 | This General Public License does not permit incorporating your program into 347 | proprietary programs. If your program is a subroutine library, you may 348 | consider it more useful to permit linking proprietary applications with the 349 | library. If this is what you want to do, use the GNU Library General 350 | Public License instead of this License. 351 | -------------------------------------------------------------------------------- /autotalent-rtas.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Tracer 14 | Win32 15 | 16 | 17 | 18 | {8F427C1E-B580-4793-BEAC-F2CFEFA003F5} 19 | autotalent-rtas 20 | 21 | 22 | 23 | DynamicLibrary 24 | false 25 | 26 | 27 | DynamicLibrary 28 | false 29 | 30 | 31 | DynamicLibrary 32 | false 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | <_ProjectFileVersion>10.0.30319.1 52 | $(SolutionDir)build-win\rtas\bin\ 53 | $(SolutionDir)build-win\rtas\$(Configuration)\ 54 | false 55 | $(SolutionDir)build-win\rtas\bin\ 56 | $(SolutionDir)build-win\rtas\$(Configuration)\ 57 | false 58 | $(SolutionDir)build-win\rtas\bin\ 59 | $(SolutionDir)build-win\rtas\$(Configuration)\ 60 | false 61 | .dpm 62 | .dpm 63 | .dpm 64 | 65 | 66 | 67 | NDEBUG;%(PreprocessorDefinitions) 68 | true 69 | true 70 | Win32 71 | $(IntDir)$(TargetName).tlb 72 | 73 | 74 | %40..\..\WDL\IPlug\RTAS\Paths_90_SDK.txt %(AdditionalOptions) 75 | Disabled 76 | OnlyExplicitInline 77 | Speed 78 | $(RTAS_INCLUDES);%(AdditionalIncludeDirectories) 79 | $(RTAS_DEFS);NDEBUG;%(PreprocessorDefinitions) 80 | Async 81 | Default 82 | MultiThreaded 83 | StreamingSIMDExtensions2 84 | true 85 | 86 | 87 | 88 | 89 | $(IntDir) 90 | $(IntDir) 91 | $(IntDir) 92 | 93 | 94 | Level3 95 | true 96 | ProgramDatabase 97 | Cdecl 98 | Default 99 | digicode.h;%(ForcedIncludeFiles) 100 | 101 | 102 | NDEBUG;%(PreprocessorDefinitions) 103 | 0x0409 104 | 105 | 106 | /MACHINE:I386 /FORCE:MULTIPLE /IGNORE:4006 /IGNORE:4070 %(AdditionalOptions) 107 | wininet.lib;%(AdditionalDependencies) 108 | NotSet 109 | $(OutDir)$(BINARY_NAME).dpm 110 | true 111 | %(AdditionalLibraryDirectories) 112 | libcmt.lib;msvprt.lib 113 | autotalent-rtas.def 114 | true 115 | $(RTAS_PLUGINS_PATH)\$(TargetName).pdb 116 | true 117 | $(IntDir)$(TargetName).map 118 | Windows 119 | $(IntDir)$(TargetName).lib 120 | 121 | 122 | Copying dpm and rsr to $(RTAS_PLUGINS_PATH) 123 | copy /Y "$(TargetPath)" "$(RTAS_PLUGINS_PATH)\$(BINARY_NAME).dpm" 124 | copy /Y "$(TargetPath)".rsr "$(RTAS_PLUGINS_PATH)\$(BINARY_NAME).dpm.rsr" 125 | 126 | 127 | 128 | copy /Y ..\..\WDL\IPlug\RTAS\ResourceFile "$(TargetPath)".rsr 129 | $(TargetPath).rsr 130 | Copying dummy rsr 131 | 132 | 133 | 134 | 135 | NDEBUG;%(PreprocessorDefinitions) 136 | true 137 | true 138 | Win32 139 | $(IntDir)$(TargetName).tlb 140 | 141 | 142 | %40..\..\WDL\IPlug\RTAS\Paths_90_SDK.txt %(AdditionalOptions) 143 | Full 144 | OnlyExplicitInline 145 | Speed 146 | $(RTAS_INCLUDES);%(AdditionalIncludeDirectories) 147 | $(RTAS_DEFS);$(RELEASE_DEFS);%(PreprocessorDefinitions) 148 | Async 149 | Default 150 | MultiThreaded 151 | StreamingSIMDExtensions2 152 | true 153 | 154 | 155 | 156 | 157 | $(IntDir) 158 | $(IntDir) 159 | $(IntDir) 160 | 161 | 162 | Level3 163 | true 164 | ProgramDatabase 165 | Cdecl 166 | Default 167 | digicode.h;%(ForcedIncludeFiles) 168 | 169 | 170 | NDEBUG;%(PreprocessorDefinitions) 171 | 0x0409 172 | 173 | 174 | /MACHINE:I386 /FORCE:MULTIPLE /IGNORE:4006 /IGNORE:4070 %(AdditionalOptions) 175 | wininet.lib;%(AdditionalDependencies) 176 | NotSet 177 | $(OutDir)$(BINARY_NAME).dpm 178 | true 179 | %(AdditionalLibraryDirectories) 180 | libcmt.lib;msvprt.lib 181 | autotalent-rtas.def 182 | false 183 | Windows 184 | $(IntDir)$(TargetName).lib 185 | 186 | 187 | Copying dpm and rsr to $(RTAS_PLUGINS_PATH) 188 | copy /Y "$(TargetPath)" "$(RTAS_PLUGINS_PATH)\$(BINARY_NAME).dpm" 189 | copy /Y "$(TargetPath)".rsr "$(RTAS_PLUGINS_PATH)\$(BINARY_NAME).dpm.rsr" 190 | 191 | 192 | 193 | copy /Y ..\..\WDL\IPlug\RTAS\ResourceFile "$(TargetPath)".rsr 194 | $(TargetPath).rsr 195 | Copying dummy rsr 196 | 197 | 198 | 199 | 200 | NDEBUG;%(PreprocessorDefinitions) 201 | true 202 | true 203 | Win32 204 | $(IntDir)$(TargetName).tlb 205 | 206 | 207 | %40..\..\WDL\IPlug\RTAS\Paths_90_SDK.txt %(AdditionalOptions) 208 | Full 209 | OnlyExplicitInline 210 | Speed 211 | $(RTAS_INCLUDES);%(AdditionalIncludeDirectories) 212 | $(RTAS_DEFS);$(TRACER_DEFS);%(PreprocessorDefinitions) 213 | Async 214 | Default 215 | MultiThreaded 216 | StreamingSIMDExtensions2 217 | true 218 | 219 | 220 | 221 | 222 | $(IntDir) 223 | $(IntDir) 224 | $(IntDir) 225 | 226 | 227 | Level3 228 | true 229 | ProgramDatabase 230 | Cdecl 231 | Default 232 | digicode.h;%(ForcedIncludeFiles) 233 | 234 | 235 | NDEBUG;%(PreprocessorDefinitions) 236 | 0x0409 237 | 238 | 239 | /MACHINE:I386 /FORCE:MULTIPLE /IGNORE:4006 /IGNORE:4070 %(AdditionalOptions) 240 | wininet.lib;%(AdditionalDependencies) 241 | NotSet 242 | $(OutDir)$(BINARY_NAME).dpm 243 | true 244 | %(AdditionalLibraryDirectories) 245 | libcmt.lib;msvprt.lib 246 | autotalent-rtas.def 247 | true 248 | $(RTAS_PLUGINS_PATH)\$(TargetName).pdb 249 | true 250 | $(IntDir)$(TargetName).map 251 | Windows 252 | $(IntDir)$(TargetName).lib 253 | 254 | 255 | Copying dpm and rsr to $(RTAS_PLUGINS_PATH) 256 | copy /Y "$(TargetPath)" "$(RTAS_PLUGINS_PATH)\$(BINARY_NAME).dpm" 257 | copy /Y "$(TargetPath)".rsr "$(RTAS_PLUGINS_PATH)\$(BINARY_NAME).dpm.rsr" 258 | 259 | 260 | 261 | copy /Y ..\..\WDL\IPlug\RTAS\ResourceFile "$(TargetPath)".rsr 262 | $(TargetPath).rsr 263 | Copying dummy rsr 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | {d2ce28ff-63b8-48bc-936d-33f365b4053f} 336 | false 337 | 338 | 339 | 340 | 341 | 342 | --------------------------------------------------------------------------------