28860 lines · 892.2 KB · C++
RawDownload
/*----------------------------------------------------------------------------  ChucK Concurrent, On-the-fly Audio Programming Language    Compiler and Virtual Machine   Copyright (c) 2004 Ge Wang and Perry R. Cook.  All rights reserved.    http://chuck.stanford.edu/    http://chuck.cs.princeton.edu/   This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by  the Free Software Foundation; either version 2 of the License, or  (at your option) any later version.   This program is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License for more details.   You should have received a copy of the GNU General Public License  along with this program; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  U.S.A.-----------------------------------------------------------------------------*/ //-----------------------------------------------------------------------------// file: ugen_stk.cpp// desc: ChucK import for Synthesis ToolKit (STK)//                        by Perry Cook and Gary Scavone//// author: Ge Wang (ge@ccrma.stanford.edu | gewang@cs.princeton.edu)//         Perry R. Cook (prc@cs.princeton.edu)//         Ananya Misra (amisra@cs.princeton.edu)//         Ari Lazier (alazier@cs.princeton.edu)//         Philip L. Davidson (philipd@cs.princeton.edu)//         Mark Daly (mdaly@cs.princeton.edu)// date: Spring 2004//-----------------------------------------------------------------------------#include "ugen_stk.h"#include "chuck_type.h"#include "chuck_vm.h"#include "chuck_instr.h"#include "chuck_compile.h"#include "chuck_lang.h"#include "chuck_carrier.h"#include "chuck_errmsg.h"#include "chuck_io.h"#include "chuck_oo.h"#include "util_math.h"#include <stdlib.h>#include <string.h>#include <time.h>#include <float.h>#include <limits.h>    //------------------------------------------------------------------------------// name: union what// desc: the litmus//------------------------------------------------------------------------------union what { long x; char y[sizeof(long)]; };t_CKBOOL little_endian = FALSE; // static t_CKUINT g_srate = 0;// filter member data offset static t_CKUINT Instrmnt_offset_data = 0;//static t_CKUINT BandedWG_offset_data = 0;//static t_CKUINT BlowBotl_offset_data = 0;//static t_CKUINT BlowHole_offset_data = 0;//static t_CKUINT Bowed_offset_data = 0;//static t_CKUINT Brass_offset_data = 0;//static t_CKUINT Clarinet_offset_data = 0;//static t_CKUINT Flute_offset_data = 0;//static t_CKUINT Mandolin_offset_data = 0;//static t_CKUINT ModalBar_offset_data = 0;//static t_CKUINT Moog_offset_data = 0;//static t_CKUINT Saxofony_offset_data = 0;//static t_CKUINT Shakers_offset_data = 0;//static t_CKUINT Sitar_offset_data = 0;//static t_CKUINT StifKarp_offset_data = 0;//static t_CKUINT VoicForm_offset_data = 0;static t_CKUINT FM_offset_data = 0;//static t_CKUINT BeeThree_offset_data = 0;  // NOTE: TX81Z Algorithm 8 (lots of Organs)//static t_CKUINT FMVoices_offset_data = 0;  // NOTE: TX81Z Algorithm 6//static t_CKUINT HevyMetl_offset_data = 0;  // NOTE: TX81Z Algorithm 3 (Trumpet too)//static t_CKUINT HnkyTonk offset_data = 0;  // 1.4.1.0 (prc) REPAIRATHON2021 ADDITION, TX81Z Algorithm 1//static t_CKUINT FrencHrn offset_data = 0;  // 1.4.1.0 (prc) REPAIRATHON2021 ADDITION, TX81Z Algorithm 2//static t_CKUINT KrstlChr offset_data = 0;  // 1.4.1.0 (prc) REPAIRATHON2021 ADDITION, TX81Z Algorithm 7//static t_CKUINT PercFlut_offset_data = 0;  // NOTE: TX81Z Algorithm 4//static t_CKUINT Rhodey_offset_data = 0;    // NOTE: TX81Z Algorithm 5 (also Wurley, TubeBell)//static t_CKUINT TubeBell_offset_data = 0;  // NOTE: TX81Z Algorithm 5 (also Rhodey, Wurley)//static t_CKUINT Wurley_offset_data = 0;    // NOTE: TX81Z Algorithm 5 (also Rhodey, TubeBell)static t_CKUINT FormSwep_offset_data = 0;static t_CKUINT Delay_offset_data = 0;static t_CKUINT DelayA_offset_data = 0;static t_CKUINT DelayL_offset_data = 0;static t_CKUINT Echo_offset_data = 0;static t_CKUINT Envelope_offset_data = 0;// static t_CKUINT Envelope_offset_data = 0;static t_CKUINT BiQuad_offset_data = 0;static t_CKUINT FilterStk_offset_data = 0;static t_CKUINT OnePole_offset_data = 0;static t_CKUINT TwoPole_offset_data = 0;static t_CKUINT OneZero_offset_data = 0;static t_CKUINT TwoZero_offset_data = 0;static t_CKUINT PoleZero_offset_data = 0;static t_CKUINT JCRev_offset_data = 0;static t_CKUINT NRev_offset_data = 0;static t_CKUINT PRCRev_offset_data = 0;static t_CKUINT Chorus_offset_data = 0;static t_CKUINT Modulate_offset_data = 0;static t_CKUINT SubNoise_offset_data = 0;static t_CKUINT WvIn_offset_data = 0;//static t_CKUINT WaveLoop_offset_data = 0;static t_CKUINT WvOut_offset_data = 0;static t_CKUINT PitShift_offset_data = 0;static t_CKUINT BLT_offset_data = 0;static t_CKUINT JetTabl_offset_data = 0; static t_CKUINT Mesh2D_offset_data = 0; static t_CKUINT MidiFileIn_offset_data = 0; static t_CKINT ADSR_state_ATTACK = ADSR::ATTACK;static t_CKINT ADSR_state_DECAY = ADSR::DECAY;static t_CKINT ADSR_state_SUSTAIN = ADSR::SUSTAIN;static t_CKINT ADSR_state_RELEASE = ADSR::RELEASE;static t_CKINT ADSR_state_DONE = ADSR::DONE; // SKINI/*SkiniIn SkiniMessage => while(skin.getnextmessage(msg))msg - type, data parameters, time stampSkiniOut.send( midi message )horn ok please -> written at the back of trucks, always, makes no sense.*/  // ADSRCK_DLL_CTOR( ADSR_ctor );CK_DLL_DTOR( ADSR_dtor );CK_DLL_TICK( ADSR_tick );CK_DLL_PMSG( ADSR_pmsg );CK_DLL_CTRL( ADSR_ctrl_attackTime );CK_DLL_CTRL( ADSR_ctrl_attackRate );CK_DLL_CTRL( ADSR_ctrl_decayTime );CK_DLL_CTRL( ADSR_ctrl_decayRate );CK_DLL_CTRL( ADSR_ctrl_sustainLevel );CK_DLL_CTRL( ADSR_ctrl_releaseTime );CK_DLL_CTRL( ADSR_ctrl_releaseRate );CK_DLL_CTRL( ADSR_ctrl_set );CK_DLL_CTRL( ADSR_ctrl_set2 );CK_DLL_CGET( ADSR_cget_attackTime );CK_DLL_CGET( ADSR_cget_attackRate );CK_DLL_CGET( ADSR_cget_decayTime );CK_DLL_CGET( ADSR_cget_decayRate );CK_DLL_CGET( ADSR_cget_sustainLevel );CK_DLL_CGET( ADSR_cget_releaseTime );CK_DLL_CGET( ADSR_cget_releaseRate );CK_DLL_CGET( ADSR_cget_state ); // BiQuadCK_DLL_CTOR( BiQuad_ctor );CK_DLL_DTOR( BiQuad_dtor );CK_DLL_TICK( BiQuad_tick );CK_DLL_PMSG( BiQuad_pmsg );CK_DLL_CTRL( BiQuad_ctrl_b2 );CK_DLL_CTRL( BiQuad_ctrl_b1 );CK_DLL_CTRL( BiQuad_ctrl_b0 );CK_DLL_CTRL( BiQuad_ctrl_a2 );CK_DLL_CTRL( BiQuad_ctrl_a1 );CK_DLL_CGET( BiQuad_ctrl_a0 );CK_DLL_CTRL( BiQuad_ctrl_pfreq );CK_DLL_CTRL( BiQuad_ctrl_prad );CK_DLL_CTRL( BiQuad_ctrl_zfreq );CK_DLL_CTRL( BiQuad_ctrl_zrad );CK_DLL_CTRL( BiQuad_ctrl_norm );CK_DLL_CTRL( BiQuad_ctrl_eqzs );CK_DLL_CGET( BiQuad_cget_b2 );CK_DLL_CGET( BiQuad_cget_b1 );CK_DLL_CGET( BiQuad_cget_b0 );CK_DLL_CGET( BiQuad_cget_a2 );CK_DLL_CGET( BiQuad_cget_a1 );CK_DLL_CGET( BiQuad_cget_a0 );CK_DLL_CTRL( BiQuad_cget_pfreq );CK_DLL_CTRL( BiQuad_cget_prad );CK_DLL_CTRL( BiQuad_cget_zfreq );CK_DLL_CTRL( BiQuad_cget_zrad ); // ChorusCK_DLL_CTOR( Chorus_ctor );CK_DLL_DTOR( Chorus_dtor );CK_DLL_TICK( Chorus_tick );CK_DLL_PMSG( Chorus_pmsg );CK_DLL_CTRL( Chorus_ctrl_modDepth );CK_DLL_CTRL( Chorus_ctrl_modFreq );CK_DLL_CTRL( Chorus_ctrl_baseDelay );CK_DLL_CTRL( Chorus_ctrl_set );CK_DLL_CTRL( Chorus_ctrl_mix );CK_DLL_CGET( Chorus_cget_modDepth );CK_DLL_CGET( Chorus_cget_modFreq );CK_DLL_CGET( Chorus_cget_baseDelay );CK_DLL_CGET( Chorus_cget_mix ); // DelayCK_DLL_CTOR( Delay_ctor );CK_DLL_DTOR( Delay_dtor );CK_DLL_TICK( Delay_tick );CK_DLL_PMSG( Delay_pmsg );CK_DLL_CTRL( Delay_ctrl_delay );CK_DLL_CTRL( Delay_ctrl_max );CK_DLL_CGET( Delay_cget_delay );CK_DLL_CGET( Delay_cget_max );CK_DLL_CGET( Delay_clear ); // DelayACK_DLL_CTOR( DelayA_ctor );CK_DLL_DTOR( DelayA_dtor );CK_DLL_TICK( DelayA_tick );CK_DLL_PMSG( DelayA_pmsg );CK_DLL_CTRL( DelayA_ctrl_delay );CK_DLL_CTRL( DelayA_ctrl_max );CK_DLL_CGET( DelayA_cget_delay );CK_DLL_CGET( DelayA_cget_max );CK_DLL_CGET( DelayA_clear ); // DelayLCK_DLL_CTOR( DelayL_ctor );CK_DLL_DTOR( DelayL_dtor );CK_DLL_TICK( DelayL_tick );CK_DLL_PMSG( DelayL_pmsg );CK_DLL_CTRL( DelayL_ctrl_delay );CK_DLL_CTRL( DelayL_ctrl_max );CK_DLL_CGET( DelayL_cget_delay );CK_DLL_CGET( DelayL_cget_max );CK_DLL_CGET( DelayL_clear ); // EchoCK_DLL_CTOR( Echo_ctor );CK_DLL_DTOR( Echo_dtor );CK_DLL_TICK( Echo_tick );CK_DLL_PMSG( Echo_pmsg );CK_DLL_CTRL( Echo_ctrl_delay );CK_DLL_CTRL( Echo_ctrl_max );CK_DLL_CTRL( Echo_ctrl_mix );CK_DLL_CGET( Echo_cget_delay );CK_DLL_CGET( Echo_cget_max );CK_DLL_CGET( Echo_cget_mix ); // EnvelopeCK_DLL_CTOR( Envelope_ctor );CK_DLL_DTOR( Envelope_dtor );CK_DLL_TICK( Envelope_tick );CK_DLL_PMSG( Envelope_pmsg );CK_DLL_CTRL( Envelope_ctrl_rate );CK_DLL_CTRL( Envelope_ctrl_target );CK_DLL_CTRL( Envelope_cget_target );CK_DLL_CTRL( Envelope_ctrl_time );CK_DLL_CTRL( Envelope_ctrl_duration );CK_DLL_CTRL( Envelope_ctrl_value );CK_DLL_CTRL( Envelope_cget_value );CK_DLL_CTRL( Envelope_ctrl_keyOn0 );CK_DLL_CTRL( Envelope_ctrl_keyOn );CK_DLL_CTRL( Envelope_ctrl_keyOff0 );CK_DLL_CTRL( Envelope_ctrl_keyOff );CK_DLL_CGET( Envelope_cget_rate );CK_DLL_CGET( Envelope_cget_target );CK_DLL_CGET( Envelope_cget_time );CK_DLL_CGET( Envelope_cget_duration );CK_DLL_CGET( Envelope_cget_value ); // FilterStk (originally Filter)CK_DLL_CTOR( FilterStk_ctor );CK_DLL_DTOR( FilterStk_dtor );CK_DLL_TICK( FilterStk_tick );CK_DLL_PMSG( FilterStk_pmsg );CK_DLL_CTRL( FilterStk_ctrl_coefs );CK_DLL_CGET( FilterStk_cget_coefs ); // OnePoleCK_DLL_CTOR( OnePole_ctor );CK_DLL_DTOR( OnePole_dtor );CK_DLL_TICK( OnePole_tick );CK_DLL_PMSG( OnePole_pmsg );CK_DLL_CTRL( OnePole_ctrl_a1 );CK_DLL_CTRL( OnePole_ctrl_b0 );CK_DLL_CTRL( OnePole_ctrl_pole );CK_DLL_CGET( OnePole_cget_a1 );CK_DLL_CGET( OnePole_cget_b0 );CK_DLL_CGET( OnePole_cget_pole ); // TwoPoleCK_DLL_CTOR( TwoPole_ctor );CK_DLL_DTOR( TwoPole_dtor );CK_DLL_TICK( TwoPole_tick );CK_DLL_PMSG( TwoPole_pmsg );CK_DLL_CTRL( TwoPole_ctrl_a1 );CK_DLL_CTRL( TwoPole_ctrl_a2 );CK_DLL_CTRL( TwoPole_ctrl_b0 );CK_DLL_CTRL( TwoPole_ctrl_freq );CK_DLL_CTRL( TwoPole_ctrl_radius );CK_DLL_CTRL( TwoPole_ctrl_norm );CK_DLL_CGET( TwoPole_cget_a1 );CK_DLL_CGET( TwoPole_cget_a2 );CK_DLL_CGET( TwoPole_cget_b0 );CK_DLL_CGET( TwoPole_cget_freq );CK_DLL_CGET( TwoPole_cget_radius );CK_DLL_CGET( TwoPole_cget_norm );  // OneZeroCK_DLL_CTOR( OneZero_ctor );CK_DLL_DTOR( OneZero_dtor );CK_DLL_TICK( OneZero_tick );CK_DLL_PMSG( OneZero_pmsg );CK_DLL_CTRL( OneZero_ctrl_zero );CK_DLL_CTRL( OneZero_ctrl_b0 );CK_DLL_CTRL( OneZero_ctrl_b1 );CK_DLL_CGET( OneZero_cget_zero );CK_DLL_CGET( OneZero_cget_b0 );CK_DLL_CGET( OneZero_cget_b1 ); // TwoZeroCK_DLL_CTOR( TwoZero_ctor );CK_DLL_DTOR( TwoZero_dtor );CK_DLL_TICK( TwoZero_tick );CK_DLL_PMSG( TwoZero_pmsg );CK_DLL_CTRL( TwoZero_ctrl_b0 );CK_DLL_CTRL( TwoZero_ctrl_b1 );CK_DLL_CTRL( TwoZero_ctrl_b2 );CK_DLL_CTRL( TwoZero_ctrl_freq );CK_DLL_CTRL( TwoZero_ctrl_radius );CK_DLL_CGET( TwoZero_cget_b0 );CK_DLL_CGET( TwoZero_cget_b1 );CK_DLL_CGET( TwoZero_cget_b2 );CK_DLL_CGET( TwoZero_cget_freq );CK_DLL_CGET( TwoZero_cget_radius ); // PoleZeroCK_DLL_CTOR( PoleZero_ctor );CK_DLL_DTOR( PoleZero_dtor );CK_DLL_TICK( PoleZero_tick );CK_DLL_PMSG( PoleZero_pmsg );CK_DLL_CTRL( PoleZero_ctrl_a1 );CK_DLL_CTRL( PoleZero_ctrl_b0 );CK_DLL_CTRL( PoleZero_ctrl_b1 );CK_DLL_CTRL( PoleZero_ctrl_blockZero );CK_DLL_CTRL( PoleZero_ctrl_allpass );CK_DLL_CGET( PoleZero_cget_a1 );CK_DLL_CGET( PoleZero_cget_b0 );CK_DLL_CGET( PoleZero_cget_b1 );CK_DLL_CGET( PoleZero_cget_blockZero );CK_DLL_CGET( PoleZero_cget_allpass ); // NoiseCK_DLL_CTOR( Noise_ctor );CK_DLL_DTOR( Noise_dtor );CK_DLL_TICK( Noise_tick );CK_DLL_PMSG( Noise_pmsg );CK_DLL_CTRL( Noise_ctrl_seed );CK_DLL_CGET( Noise_cget_seed ); // SubNoiseCK_DLL_CTOR( SubNoise_ctor );CK_DLL_DTOR( SubNoise_dtor );CK_DLL_TICK( SubNoise_tick );CK_DLL_PMSG( SubNoise_pmsg );CK_DLL_CTRL( SubNoise_ctrl_rate );CK_DLL_CGET( SubNoise_cget_rate ); // BLTCK_DLL_CTOR( BLT_ctor );CK_DLL_DTOR( BLT_dtor );CK_DLL_TICK( BLT_tick );CK_DLL_PMSG( BLT_pmsg );CK_DLL_CTRL( BLT_ctrl_phase );CK_DLL_CGET( BLT_cget_phase );CK_DLL_CTRL( BLT_ctrl_freq );CK_DLL_CGET( BLT_cget_freq );CK_DLL_CTRL( BLT_ctrl_harmonics );CK_DLL_CGET( BLT_cget_harmonics ); // BlitCK_DLL_CTOR( Blit_ctor );CK_DLL_DTOR( Blit_dtor );CK_DLL_TICK( Blit_tick );CK_DLL_PMSG( Blit_pmsg ); // BlitSawCK_DLL_CTOR( BlitSaw_ctor );CK_DLL_DTOR( BlitSaw_dtor );CK_DLL_TICK( BlitSaw_tick );CK_DLL_PMSG( BlitSaw_pmsg ); // BlitSquareCK_DLL_CTOR( BlitSquare_ctor );CK_DLL_DTOR( BlitSquare_dtor );CK_DLL_TICK( BlitSquare_tick );CK_DLL_PMSG( BlitSquare_pmsg ); // JCRevCK_DLL_CTOR( JCRev_ctor );CK_DLL_DTOR( JCRev_dtor );CK_DLL_TICK( JCRev_tick );CK_DLL_PMSG( JCRev_pmsg );CK_DLL_CTRL( JCRev_ctrl_mix );CK_DLL_CGET( JCRev_cget_mix ); // NRevCK_DLL_CTOR( NRev_ctor );CK_DLL_DTOR( NRev_dtor );CK_DLL_TICK( NRev_tick );CK_DLL_PMSG( NRev_pmsg );CK_DLL_CTRL( NRev_ctrl_mix );CK_DLL_CGET( NRev_cget_mix ); // PRCRevCK_DLL_CTOR( PRCRev_ctor );CK_DLL_DTOR( PRCRev_dtor );CK_DLL_TICK( PRCRev_tick );CK_DLL_PMSG( PRCRev_pmsg );CK_DLL_CTRL( PRCRev_ctrl_mix );CK_DLL_CGET( PRCRev_cget_mix ); // WaveLoopCK_DLL_CTOR( WaveLoop_ctor );CK_DLL_DTOR( WaveLoop_dtor );CK_DLL_TICK( WaveLoop_tick );CK_DLL_PMSG( WaveLoop_pmsg );CK_DLL_CTRL( WaveLoop_ctrl_freq );CK_DLL_CTRL( WaveLoop_ctrl_rate );CK_DLL_CTRL( WaveLoop_ctrl_phase );CK_DLL_CTRL( WaveLoop_ctrl_phaseOffset );CK_DLL_CTRL( WaveLoop_ctrl_path );CK_DLL_CGET( WaveLoop_cget_freq );CK_DLL_CGET( WaveLoop_cget_rate );CK_DLL_CGET( WaveLoop_cget_phase );CK_DLL_CGET( WaveLoop_cget_phaseOffset );CK_DLL_CGET( WaveLoop_cget_path ); // WvInCK_DLL_CTOR( WvIn_ctor );CK_DLL_DTOR( WvIn_dtor );CK_DLL_TICK( WvIn_tick );CK_DLL_PMSG( WvIn_pmsg );CK_DLL_CTRL( WvIn_ctrl_rate );CK_DLL_CTRL( WvIn_ctrl_path );CK_DLL_CGET( WvIn_cget_rate );CK_DLL_CGET( WvIn_cget_path ); #ifndef __DISABLE_WVOUT__// WvOutCK_DLL_CTOR( WvOut_ctor );CK_DLL_DTOR( WvOut_dtor );CK_DLL_TICK( WvOut_tick );CK_DLL_PMSG( WvOut_pmsg );CK_DLL_CTRL( WvOut_ctrl_filename );CK_DLL_CTRL( WvOut_ctrl_aifFilename );CK_DLL_CTRL( WvOut_ctrl_aifFilename2 );CK_DLL_CTRL( WvOut_ctrl_matFilename );CK_DLL_CTRL( WvOut_ctrl_matFilename2 );CK_DLL_CTRL( WvOut_ctrl_sndFilename );CK_DLL_CTRL( WvOut_ctrl_sndFilename2 );CK_DLL_CTRL( WvOut_ctrl_wavFilename );CK_DLL_CTRL( WvOut_ctrl_wavFilename2 );CK_DLL_CTRL( WvOut_ctrl_rawFilename );CK_DLL_CTRL( WvOut_ctrl_rawFilename2 );CK_DLL_CTRL( WvOut_ctrl_closeFile );CK_DLL_CTRL( WvOut_ctrl_record );CK_DLL_CTRL( WvOut_ctrl_autoPrefix );CK_DLL_CGET( WvOut_cget_filename );CK_DLL_CGET( WvOut_cget_record );CK_DLL_CGET( WvOut_cget_autoPrefix );CK_DLL_CTRL( WvOut_ctrl_fileGain );CK_DLL_CGET( WvOut_cget_fileGain );// WvOut2CK_DLL_TICKF( WvOut2_tickf );#endif  // FMCK_DLL_CTOR( FM_ctor );CK_DLL_DTOR( FM_dtor );CK_DLL_TICK( FM_tick );CK_DLL_PMSG( FM_pmsg );CK_DLL_CTRL( FM_ctrl_freq );CK_DLL_CTRL( FM_ctrl_noteOn );CK_DLL_CTRL( FM_ctrl_noteOff );CK_DLL_CTRL( FM_ctrl_modDepth );CK_DLL_CTRL( FM_ctrl_modSpeed );CK_DLL_CTRL( FM_ctrl_control1 );CK_DLL_CTRL( FM_ctrl_control2 );CK_DLL_CTRL( FM_ctrl_controlChange );CK_DLL_CTRL( FM_ctrl_afterTouch );// 1.4.1.0 (prc) REPAIRATHON2021 NEW Set/Get access functionsCK_DLL_CTRL( FM_ctrl_opADSR );CK_DLL_CTRL( FM_ctrl_opRatio );CK_DLL_CGET( FM_cget_opRatio );

Lines 1–500 of 28860.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t