From abca7b640783a8fbc12c59fc80775be01df64b66 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 17 Nov 2019 05:53:02 -0500 Subject: [PATCH 001/162] new shot at androidbase --- .gitmodules | 3 ++ colorchord2/DisplayNetwork.c | 1 + colorchord2/configs.c | 44 +++++++++++++++++++++++++ colorchord2/main.c | 64 ++++++++++++++++++++++++++++++++++++ colorchord2/os_generic.c | 5 +++ colorchord2/quickwash.conf | 13 ++++---- colorchord2/rawdraw | 1 + colorchord2/sound_alsa.c | 1 + 8 files changed, 126 insertions(+), 6 deletions(-) create mode 160000 colorchord2/rawdraw diff --git a/.gitmodules b/.gitmodules index ed48a58..35e4876 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "embedded8266/esp82xx"] path = embedded8266/esp82xx url = https://github.com/cnlohr/esp82xx.git +[submodule "colorchord2/rawdraw"] + path = colorchord2/rawdraw + url = https://github.com/cntools/rawdraw diff --git a/colorchord2/DisplayNetwork.c b/colorchord2/DisplayNetwork.c index b2bb3e3..a2eb6d4 100644 --- a/colorchord2/DisplayNetwork.c +++ b/colorchord2/DisplayNetwork.c @@ -5,6 +5,7 @@ #include #include "parameters.h" #include +#include #include #include #include "color.h" diff --git a/colorchord2/configs.c b/colorchord2/configs.c index 61c0acf..db3b1c2 100644 --- a/colorchord2/configs.c +++ b/colorchord2/configs.c @@ -62,7 +62,50 @@ void SetEnvValues( int force ) if( !hits && !force ) return; //Otherwise, something changed. +#ifdef ANDROID + SetParametersFromString( "cpu_autolimit=1" ); + SetParametersFromString( "set_screenx=720" ); + SetParametersFromString( "set_screeny=480" ); + SetParametersFromString( "buffer=384" ); + SetParametersFromString( "play=0" ); + SetParametersFromString( "rec=1" ); + SetParametersFromString( "channels=2" ); + SetParametersFromString( "samplerate=44100" ); + SetParametersFromString( "sourcename=default" ); + SetParametersFromString( "amplify=2.0" ); + SetParametersFromString( "base_hz=55" ); + SetParametersFromString( "dft_iir=0.6" ); + SetParametersFromString( "dft_q=20.0000" ); + SetParametersFromString( "dft_speedup=1000.0000" ); + SetParametersFromString( "octaves=5" ); + + SetParametersFromString( "do_progressive_dft=4" ); + + SetParametersFromString( "filter_iter=2" ); + SetParametersFromString( "filter_strength=.5" ); + SetParametersFromString( "freqbins = 24" ); + SetParametersFromString( "do_progressive_dft=4" ); + SetParametersFromString( "note_attach_amp_iir=0.3500" ); + SetParametersFromString( "note_attach_amp_iir2=0.250" ); + + SetParametersFromString( "note_combine_distance=0.5000" ); + SetParametersFromString( "note_jumpability=1.8000" ); + SetParametersFromString( "note_minimum_new_distribution_value=0.0200" ); + SetParametersFromString( "note_out_chop=0.05000" ); + SetParametersFromString( "outdrivers=OutputVoronoi,DisplayArray" ); + SetParametersFromString( "note_attach_amp_iir2=0.250" ); + + SetParametersFromString( "lightx=64" ); + SetParametersFromString( "lighty=32" ); + SetParametersFromString( "fromsides=1" ); + SetParametersFromString( "shape_cutoff=0.03" ); + + SetParametersFromString( "satamp=5.000" ); + SetParametersFromString( "amppow=2.510" ); + SetParametersFromString( "distpow=1.500" ); + +#else LoadFile( InitialFile[0] ); for( i = 1; i < gargc; i++ ) @@ -78,6 +121,7 @@ void SetEnvValues( int force ) LoadFile( gargv[i] ); } } +#endif } void ProcessArgs() diff --git a/colorchord2/main.c b/colorchord2/main.c index adc00c6..c8a7ba3 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -18,6 +18,36 @@ #include "hook.h" #include "configs.h" +#ifdef ANDROID +#include +#include +#include +#include +#include +#include + +static int pfd[2]; +static pthread_t loggingThread; +static const char *LOG_TAG = "colorchord"; +static void *loggingFunction(void*v) { + ssize_t readSize; + char buf[128]; + + while((readSize = read(pfd[0], buf, sizeof buf - 1)) > 0) { + if(buf[readSize - 1] == '\n') { + --readSize; + } + + buf[readSize] = 0; // add null-terminator + + __android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, buf); // Set any log level you want + } + + return 0; +} + +#endif + struct SoundDriver * sd; #if defined(WIN32) || defined(USE_WINDOWS) @@ -162,9 +192,40 @@ void SoundCB( float * out, float * in, int samplesr, int * samplesp, struct Soun *samplesp = samplesr; } +#ifdef ANDROID +void HandleSuspend() +{ + //Unused. +} + +void HandleResume() +{ + //Unused. +} +#endif + int main(int argc, char ** argv) { int i; + +#ifdef ANDROID + setvbuf(stdout, 0, _IOLBF, 0); // make stdout line-buffered + setvbuf(stderr, 0, _IONBF, 0); // make stderr unbuffered + + /* create the pipe and redirect stdout and stderr */ + pipe(pfd); + dup2(pfd[1], 1); + dup2(pfd[1], 2); + + /* spawn the logging thread */ + if(pthread_create(&loggingThread, 0, loggingFunction, 0) == -1) { + return -1; + } + + pthread_detach(loggingThread); + +#endif + #ifdef TCC void ManuallyRegisterDevices(); ManuallyRegisterDevices(); @@ -181,6 +242,8 @@ int main(int argc, char ** argv) WSAStartup(0x202, &wsaData); strcpy( sound_source, "WIN" ); +#elif defined( ANDROID ) + strcpy( sound_source, "ANDROID" ); #else strcpy( sound_source, "PULSE" ); #endif @@ -263,6 +326,7 @@ int main(int argc, char ** argv) double Last = Now; while(1) { + printf( ".\n" ); char stt[1024]; //Handle Rawdraw frame swappign diff --git a/colorchord2/os_generic.c b/colorchord2/os_generic.c index da281e3..2b4321e 100644 --- a/colorchord2/os_generic.c +++ b/colorchord2/os_generic.c @@ -228,7 +228,12 @@ void OGCancelThread( og_thread_t ot ) { return; } +#ifdef ANDROID + void * fakeret; + pthread_join( *(pthread_t*)ot, &fakeret ); +#else pthread_cancel( *(pthread_t*)ot ); +#endif free( ot ); } diff --git a/colorchord2/quickwash.conf b/colorchord2/quickwash.conf index ab598e8..e83d38f 100644 --- a/colorchord2/quickwash.conf +++ b/colorchord2/quickwash.conf @@ -1,10 +1,10 @@ This is a vornoi thing: -outdrivers = DisplayArray, OutputProminent -lightx = 2 -lighty = 2 -leds = 4 -fromsides = 1 +outdrivers = DisplayArray, OutputCells +lightx = 3 +lighty = 3 +leds = 9 +fromsides = 0 shape_cutoff = 0.03 satamp = 5.000 amppow = 2.510 @@ -13,7 +13,8 @@ distpow = 1.500 samplerate = 11025 buffer = 64 -sourcename = default +sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor + #default amplify = 2.5 note_attach_amp_iir = 0.9000 diff --git a/colorchord2/rawdraw b/colorchord2/rawdraw new file mode 160000 index 0000000..e5acb75 --- /dev/null +++ b/colorchord2/rawdraw @@ -0,0 +1 @@ +Subproject commit e5acb751f337f3ae9e558e98907be8e3d6f8381f diff --git a/colorchord2/sound_alsa.c b/colorchord2/sound_alsa.c index e3c986d..3771752 100644 --- a/colorchord2/sound_alsa.c +++ b/colorchord2/sound_alsa.c @@ -4,6 +4,7 @@ #include "os_generic.h" #include "parameters.h" #include +#include #define BUFFERSETS 4 From 0f17c793e2bfa7dd4dc9bb017542de05893fd9a9 Mon Sep 17 00:00:00 2001 From: angyongen Date: Tue, 11 Feb 2020 20:58:19 +0800 Subject: [PATCH 002/162] Update adc.c Please see the email I sent you. --- embedded8266/user/adc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embedded8266/user/adc.c b/embedded8266/user/adc.c index 84015b5..acdf21f 100644 --- a/embedded8266/user/adc.c +++ b/embedded8266/user/adc.c @@ -1,4 +1,4 @@ -//I did not write this file, but I don't know where it came from. +//From ESP8266 SDK driver code (https://github.com/esp8266/esp8266-wiki/tree/master/sdk) (examples\IoT_Demo\driver\adc.c) //It was also heavily modified by me, Charles Lohr. I personally //renounce any copyright over this file, so all of my modifications //are hereby placed into the public domain. From 03c938b453b48680ee6dd837bc44bb86cbbfb37c Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sat, 2 May 2020 20:47:09 -0700 Subject: [PATCH 003/162] Forgot to add some files that were used a while ago. --- colorchord2/esp32shirt.conf | 36 ++++++ colorchord2/sound_android.c | 212 ++++++++++++++++++++++++++++++++++++ 2 files changed, 248 insertions(+) create mode 100644 colorchord2/esp32shirt.conf create mode 100644 colorchord2/sound_android.c diff --git a/colorchord2/esp32shirt.conf b/colorchord2/esp32shirt.conf new file mode 100644 index 0000000..dd6001c --- /dev/null +++ b/colorchord2/esp32shirt.conf @@ -0,0 +1,36 @@ +outdrivers = DisplayArray,DisplayNetwork,OutputCells +#OutputVoronoi +leds = 199 +light_siding = 1.0 #Turn this to ~1.9 for more uniformity, ~1.0 for less. +satamp = 1.600 +is_loop=0 +led_floor = .1 #Turn to .25 for more uniformity, .1 for less. +#note_attach_amp_iir = .3 #.3000 +#note_attach_amp_iir2 = .15 #.1500 +#note_attach_freq_iir = .3 #0.3000 +steady_bright = 0 +#dft_iir = 0.0 +#dft_q = 20.0000 +#dft_speedup = 1000.0000 + +sourcename = default +# alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor +# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor +#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor +skipfirst = 0 +firstval = 0 +port = 7000 +address = 192.168.43.179 +#address = 192.168.0.245 + +slope=.10 +amplify=.9 + +headless = 00 +zigzag = 0 +lightx = 13 +lighty = 19 +qtyamp = 50 +timebased = 1 +snakey = 0 + diff --git a/colorchord2/sound_android.c b/colorchord2/sound_android.c new file mode 100644 index 0000000..36a6a4e --- /dev/null +++ b/colorchord2/sound_android.c @@ -0,0 +1,212 @@ +//Copyright 2019 <>< Charles Lohr under the ColorChord License. +// NOTE: this does not actually work!!! This driver needs more work!!! It is currently under work. + +#include "sound.h" +#include "os_generic.h" +#include "parameters.h" +#include //Using android threads not os_generic threads. +#include +#include +#include +#include + +//based on https://github.com/android/ndk-samples/blob/master/native-audio/app/src/main/cpp/native-audio-jni.c + +// for native audio +#include +#include + +#define RECORDER_FRAMES 1024 + +#define BUFFERSETS 4 + +#define BLOCKING + +//Across all sound systems. +static pthread_mutex_t audioEngineLock = PTHREAD_MUTEX_INITIALIZER; + +struct SoundDriverAndroid +{ + void (*CloseFn)( struct SoundDriverAndroid * object ); + int (*SoundStateFn)( struct SoundDriverAndroid * object ); + SoundCBType callback; + SLObjectItf engineObject; + SLEngineItf engineEngine; + SLRecordItf recorderRecord; + SLObjectItf recorderObject; + SLAndroidSimpleBufferQueueItf recorderBufferQueue; + unsigned recorderSize; + + short recorderBuffer[RECORDER_FRAMES]; +}; + + +void bqRecorderCallback(SLAndroidSimpleBufferQueueItf bq, void *context) +{ + struct SoundDriverAndroid * r = (struct SoundDriverAndroid*)context; + // for streaming recording, here we would call Enqueue to give recorder the next buffer to fill + // but instead, this is a one-time buffer so we stop recording + SLresult result; + result = (*r->recorderRecord)->SetRecordState(r->recorderRecord, SL_RECORDSTATE_STOPPED); + if (SL_RESULT_SUCCESS == result) { + r->recorderSize = 128 * sizeof(short); + } + pthread_mutex_unlock(&audioEngineLock); +} + +static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * r ) +{ + SLresult result; + + // create engine + result = slCreateEngine(&r->engineObject, 0, NULL, 0, NULL, NULL); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + // realize the engine + result = (*r->engineObject)->Realize(r->engineObject, SL_BOOLEAN_FALSE); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + // get the engine interface, which is needed in order to create other objects + result = (*r->engineObject)->GetInterface(r->engineObject, SL_IID_ENGINE, &r->engineEngine); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + + /////////////////////////////////////////////////////////////////////////////////////////////////////// + + + // configure audio source + SLDataLocator_IODevice loc_dev = {SL_DATALOCATOR_IODEVICE, SL_IODEVICE_AUDIOINPUT, + SL_DEFAULTDEVICEID_AUDIOINPUT, NULL}; + SLDataSource audioSrc = {&loc_dev, NULL}; + + // configure audio sink + SLDataLocator_AndroidSimpleBufferQueue loc_bq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2}; + SLDataFormat_PCM format_pcm = {SL_DATAFORMAT_PCM, 1, SL_SAMPLINGRATE_16, + SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16, + SL_SPEAKER_FRONT_CENTER, SL_BYTEORDER_LITTLEENDIAN}; + SLDataSink audioSnk = {&loc_bq, &format_pcm}; + + // create audio recorder + // (requires the RECORD_AUDIO permission) + const SLInterfaceID id[1] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE}; + const SLboolean req[1] = {SL_BOOLEAN_TRUE}; + result = (*r->engineEngine)->CreateAudioRecorder(r->engineEngine, &r->recorderObject, &audioSrc, + &audioSnk, 1, id, req); + if (SL_RESULT_SUCCESS != result) { + printf( "CreateAudioRecorder failed\n" ); + return JNI_FALSE; + } + + // realize the audio recorder + result = (*r->recorderObject)->Realize(r->recorderObject, SL_BOOLEAN_FALSE); + if (SL_RESULT_SUCCESS != result) { + printf( "AudioRecorder Realize failed\n" ); + return JNI_FALSE; + } + + // get the record interface + result = (*r->recorderObject)->GetInterface(r->recorderObject, SL_IID_RECORD, &r->recorderRecord); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + // get the buffer queue interface + result = (*r->recorderObject)->GetInterface(r->recorderObject, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, + &r->recorderBufferQueue); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + // register callback on the buffer queue + result = (*r->recorderBufferQueue)->RegisterCallback(r->recorderBufferQueue, bqRecorderCallback, + NULL); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + + assert( !pthread_mutex_trylock(&audioEngineLock)); + // in case already recording, stop recording and clear buffer queue + result = (*r->recorderRecord)->SetRecordState(r->recorderRecord, SL_RECORDSTATE_STOPPED); + assert(SL_RESULT_SUCCESS == result); + (void)result; + result = (*r->recorderBufferQueue)->Clear(r->recorderBufferQueue); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + // the buffer is not valid for playback yet + r->recorderSize = 0; + + // enqueue an empty buffer to be filled by the recorder + // (for streaming recording, we would enqueue at least 2 empty buffers to start things off) + result = (*r->recorderBufferQueue)->Enqueue(r->recorderBufferQueue, r->recorderBuffer, + RECORDER_FRAMES * sizeof(short)); + // the most likely other result is SL_RESULT_BUFFER_INSUFFICIENT, + // which for this code example would indicate a programming error + assert(SL_RESULT_SUCCESS == result); + (void)result; + + // start recording + result = (*r->recorderRecord)->SetRecordState(r->recorderRecord, SL_RECORDSTATE_RECORDING); + assert(SL_RESULT_SUCCESS == result); + (void)result; + + printf( "Complete Init Sound Android\n" ); + return 0; +} + +void CloseSoundAndroid( struct SoundDriverAndroid * r ); + +int SoundStateAndroid( struct SoundDriverAndroid * soundobject ) +{ + return ((soundobject->recorderObject)?1:0) | ((soundobject->recorderObject)?2:0); +} + +void CloseSoundAndroid( struct SoundDriverAndroid * r ) +{ + // destroy audio recorder object, and invalidate all associated interfaces + if (r->recorderObject != NULL) { + (*r->recorderObject)->Destroy(r->recorderObject); + r->recorderObject = NULL; + r->recorderRecord = NULL; + r->recorderBufferQueue = NULL; + } + + + // destroy engine object, and invalidate all associated interfaces + if (r->engineObject != NULL) { + (*r->engineObject)->Destroy(r->engineObject); + r->engineObject = NULL; + r->engineEngine = NULL; + } + +} + +void * InitSoundAndroid( SoundCBType cb ) +{ + printf( "InitSoundAndroid\n" ); + struct SoundDriverAndroid * r = (struct SoundDriverAndroid *)malloc( sizeof( struct SoundDriverAndroid ) ); + memset( r, 0, sizeof( *r) ); + r->CloseFn = CloseSoundAndroid; + r->SoundStateFn = SoundStateAndroid; + r->callback = cb; + r->engineObject = 0; + r->engineEngine = 0; +/* + r->spsPlay = GetParameterI( "samplerate", 44100 ); + r->channelsPlay = GetParameterI( "channels", 2 ); + r->spsRec = r->spsPlay; + r->channelsRec = r->channelsPlay; + + r->playback_handle = 0; + r->record_handle = 0; + r->buffer = GetParameterI( "buffer", 1024 ); + + r->Android_fmt_s16le = 0; + +*/ + return InitAndroidSound(r); +} + +REGISTER_SOUND( AndroidSound, 10, "ANDROID", InitSoundAndroid ); + From 90dd6953093516fd1425f519e0dd5db544a43ca7 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 3 May 2020 06:54:38 -0700 Subject: [PATCH 004/162] Update sound_android for use with rawdrawandroid. --- colorchord2/sound_android.c | 80 ++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 24 deletions(-) diff --git a/colorchord2/sound_android.c b/colorchord2/sound_android.c index 36a6a4e..6975802 100644 --- a/colorchord2/sound_android.c +++ b/colorchord2/sound_android.c @@ -1,21 +1,36 @@ -//Copyright 2019 <>< Charles Lohr under the ColorChord License. -// NOTE: this does not actually work!!! This driver needs more work!!! It is currently under work. +//Copyright 2019-2020 <>< Charles Lohr under the ColorChord License. +// This should be used with rawdrawandroid #include "sound.h" #include "os_generic.h" -#include "parameters.h" #include //Using android threads not os_generic threads. #include #include #include #include +#ifndef NO_SOUND_PARAMETERS +#include "parameters.h" +#else +#define GetParameterI( x, y ) (y) +#define GetParameterS( x, y ) (y) +#endif + + //based on https://github.com/android/ndk-samples/blob/master/native-audio/app/src/main/cpp/native-audio-jni.c // for native audio #include #include +#include +#include +#include +#include + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, APPNAME, __VA_ARGS__)) +#define printf( x...) LOGI( x ) + #define RECORDER_FRAMES 1024 #define BUFFERSETS 4 @@ -44,20 +59,19 @@ struct SoundDriverAndroid void bqRecorderCallback(SLAndroidSimpleBufferQueueItf bq, void *context) { struct SoundDriverAndroid * r = (struct SoundDriverAndroid*)context; - // for streaming recording, here we would call Enqueue to give recorder the next buffer to fill - // but instead, this is a one-time buffer so we stop recording - SLresult result; - result = (*r->recorderRecord)->SetRecordState(r->recorderRecord, SL_RECORDSTATE_STOPPED); - if (SL_RESULT_SUCCESS == result) { - r->recorderSize = 128 * sizeof(short); - } - pthread_mutex_unlock(&audioEngineLock); + int samplesp = 0; + float buffout[RECORDER_FRAMES]; + int i; + short * rb = r->recorderBuffer; + for( i = 0; i < RECORDER_FRAMES; i++ ) buffout[i] = (rb[i]+0.5)/32767.5; + r->callback( 0, buffout, RECORDER_FRAMES, &samplesp, r ); + (*r->recorderBufferQueue)->Enqueue(r->recorderBufferQueue, r->recorderBuffer, sizeof(r->recorderBuffer)); } static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * r ) { SLresult result; - + LOGI( "Starting InitAndroidSound\n" ); // create engine result = slCreateEngine(&r->engineObject, 0, NULL, 0, NULL, NULL); assert(SL_RESULT_SUCCESS == result); @@ -84,9 +98,17 @@ static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * // configure audio sink SLDataLocator_AndroidSimpleBufferQueue loc_bq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2}; - SLDataFormat_PCM format_pcm = {SL_DATAFORMAT_PCM, 1, SL_SAMPLINGRATE_16, - SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16, - SL_SPEAKER_FRONT_CENTER, SL_BYTEORDER_LITTLEENDIAN}; + + SLDataFormat_PCM format_pcm ={ + SL_DATAFORMAT_PCM, + 1, + SL_SAMPLINGRATE_16, + SL_PCMSAMPLEFORMAT_FIXED_16, + SL_PCMSAMPLEFORMAT_FIXED_16, + SL_SPEAKER_FRONT_CENTER, + SL_BYTEORDER_LITTLEENDIAN, + }; + SLDataSink audioSnk = {&loc_bq, &format_pcm}; // create audio recorder @@ -96,14 +118,14 @@ static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * result = (*r->engineEngine)->CreateAudioRecorder(r->engineEngine, &r->recorderObject, &audioSrc, &audioSnk, 1, id, req); if (SL_RESULT_SUCCESS != result) { - printf( "CreateAudioRecorder failed\n" ); + LOGI( "CreateAudioRecorder failed\n" ); return JNI_FALSE; } // realize the audio recorder result = (*r->recorderObject)->Realize(r->recorderObject, SL_BOOLEAN_FALSE); if (SL_RESULT_SUCCESS != result) { - printf( "AudioRecorder Realize failed\n" ); + LOGI( "AudioRecorder Realize failed: %d\n", result ); return JNI_FALSE; } @@ -119,8 +141,7 @@ static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * (void)result; // register callback on the buffer queue - result = (*r->recorderBufferQueue)->RegisterCallback(r->recorderBufferQueue, bqRecorderCallback, - NULL); + result = (*r->recorderBufferQueue)->RegisterCallback(r->recorderBufferQueue, bqRecorderCallback, r); assert(SL_RESULT_SUCCESS == result); (void)result; @@ -139,8 +160,7 @@ static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * // enqueue an empty buffer to be filled by the recorder // (for streaming recording, we would enqueue at least 2 empty buffers to start things off) - result = (*r->recorderBufferQueue)->Enqueue(r->recorderBufferQueue, r->recorderBuffer, - RECORDER_FRAMES * sizeof(short)); + result = (*r->recorderBufferQueue)->Enqueue(r->recorderBufferQueue, r->recorderBuffer, sizeof(r->recorderBuffer)); // the most likely other result is SL_RESULT_BUFFER_INSUFFICIENT, // which for this code example would indicate a programming error assert(SL_RESULT_SUCCESS == result); @@ -151,8 +171,8 @@ static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * assert(SL_RESULT_SUCCESS == result); (void)result; - printf( "Complete Init Sound Android\n" ); - return 0; + LOGI( "Complete Init Sound Android\n" ); + return r; } void CloseSoundAndroid( struct SoundDriverAndroid * r ); @@ -182,9 +202,19 @@ void CloseSoundAndroid( struct SoundDriverAndroid * r ) } + +int AndroidHasPermissions(const char* perm_name); +void AndroidRequestAppPermissions(const char * perm); + + void * InitSoundAndroid( SoundCBType cb ) { - printf( "InitSoundAndroid\n" ); + int hasperm = AndroidHasPermissions( "RECORD_AUDIO" ); + if( !hasperm ) + { + AndroidRequestAppPermissions( "RECORD_AUDIO" ); + } + struct SoundDriverAndroid * r = (struct SoundDriverAndroid *)malloc( sizeof( struct SoundDriverAndroid ) ); memset( r, 0, sizeof( *r) ); r->CloseFn = CloseSoundAndroid; @@ -208,5 +238,7 @@ void * InitSoundAndroid( SoundCBType cb ) return InitAndroidSound(r); } +//Tricky: On Android, this can't actually run before main. Have to manually execute it. + REGISTER_SOUND( AndroidSound, 10, "ANDROID", InitSoundAndroid ); From 825d356bb6e1f4d19112fe2ab85d354dbfc381cb Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 3 May 2020 07:14:30 -0700 Subject: [PATCH 005/162] Update Makefile. --- colorchord2/Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/colorchord2/Makefile b/colorchord2/Makefile index f393fc3..3d992a5 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -14,10 +14,12 @@ RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt -CFLAGS:=-g -O0 -flto -Wall -ffast-math -I../embeddedcommon -I. -DICACHE_FLASH_ATTR= +CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -DICACHE_FLASH_ATTR= EXTRALIBS:=-lusb-1.0 -colorchord : os_generic.o main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(RAWDRAW) $(SOUND) $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o +OBJS:=os_generic.o main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(RAWDRAW) $(SOUND) $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o + +colorchord : $(OBJS) gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) @@ -26,4 +28,4 @@ colorchord.exe : os_generic.c main.c dft.c decompose.c filter.c color.c notefin clean : - rm -rf *.o *~ colorchord colorchord.exe embeddedcc + rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) From e243c7200bf7222fcce21cd499f66c9c4b8f4f82 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 3 May 2020 07:18:13 -0700 Subject: [PATCH 006/162] Cleanup extra printfs --- colorchord2/DisplayHIDAPI.c | 2 +- colorchord2/main.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/colorchord2/DisplayHIDAPI.c b/colorchord2/DisplayHIDAPI.c index 23d94a0..a02fef4 100644 --- a/colorchord2/DisplayHIDAPI.c +++ b/colorchord2/DisplayHIDAPI.c @@ -117,7 +117,7 @@ static void * LEDOutThread( void * v ) } } led->readyFlag = 0; - printf( "." ); fflush( stdout ); + //printf( "." ); fflush( stdout ); } OGUSleep(100); } diff --git a/colorchord2/main.c b/colorchord2/main.c index c8a7ba3..da04f2a 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -326,7 +326,6 @@ int main(int argc, char ** argv) double Last = Now; while(1) { - printf( ".\n" ); char stt[1024]; //Handle Rawdraw frame swappign From 3d922b514c79ec251fde25b182ff2622070bbd0f Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 10 May 2020 17:15:59 -0700 Subject: [PATCH 007/162] Rearchitect colorchord using CNFA + Rawdraw modules. --- .gitmodules | 3 + colorchord2/Makefile | 11 +- colorchord2/RecorderPlugin.c | 10 +- colorchord2/cnfa | 1 + colorchord2/colorchord.exe | Bin 77312 -> 777270 bytes colorchord2/hook.c | 8 +- colorchord2/hook.h | 6 +- colorchord2/main.c | 126 +++++++----- colorchord2/rawdraw | 2 +- colorchord2/sound.c | 108 ---------- colorchord2/sound.h | 41 ---- colorchord2/sound_alsa.c | 364 --------------------------------- colorchord2/sound_android.c | 244 ---------------------- colorchord2/sound_null.c | 45 ----- colorchord2/sound_pulse.c | 379 ----------------------------------- colorchord2/sound_win.c | 190 ------------------ 16 files changed, 93 insertions(+), 1445 deletions(-) create mode 160000 colorchord2/cnfa delete mode 100644 colorchord2/sound.c delete mode 100644 colorchord2/sound.h delete mode 100644 colorchord2/sound_alsa.c delete mode 100644 colorchord2/sound_android.c delete mode 100644 colorchord2/sound_null.c delete mode 100644 colorchord2/sound_pulse.c delete mode 100644 colorchord2/sound_win.c diff --git a/.gitmodules b/.gitmodules index 35e4876..3524c3c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "colorchord2/rawdraw"] path = colorchord2/rawdraw url = https://github.com/cntools/rawdraw +[submodule "colorchord2/cnfa"] + path = colorchord2/cnfa + url = https://github.com/cnlohr/cnfa diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 3d992a5..6854d63 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -1,29 +1,26 @@ all : colorchord -RAWDRAW:=DrawFunctions.o XDriver.o -SOUND:=sound.o sound_alsa.o sound_pulse.o sound_null.o - OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o WINGCC:= i686-w64-mingw32-gcc -WINGCCFLAGS:= -g -DICACHE_FLASH_ATTR= -I../embeddedcommon -I. -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections +WINGCCFLAGS:= -g -DICACHE_FLASH_ATTR= -I../embeddedcommon -Icnfa -Irawdraw -I. -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt -CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -DICACHE_FLASH_ATTR= +CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= EXTRALIBS:=-lusb-1.0 -OBJS:=os_generic.o main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(RAWDRAW) $(SOUND) $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o +OBJS:=os_generic.o main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o colorchord : $(OBJS) gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) -colorchord.exe : os_generic.c main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c DrawFunctions.c parameters.c chash.c WinDriver.c sound.c sound_null.c sound_win.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c +colorchord.exe : os_generic.c main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) diff --git a/colorchord2/RecorderPlugin.c b/colorchord2/RecorderPlugin.c index 25ff7cb..220f325 100644 --- a/colorchord2/RecorderPlugin.c +++ b/colorchord2/RecorderPlugin.c @@ -107,7 +107,7 @@ void StartRecording( struct RecorderPlugin * rp ) } -static void RecordEvent(void * v, int samples, float * samps, int channel_ct) +static void RecordEvent(void * v, int samples, short * samps, int channel_ct) { struct RecorderPlugin * rp = (struct RecorderPlugin*)v; @@ -115,7 +115,7 @@ static void RecordEvent(void * v, int samples, float * samps, int channel_ct) if( rp->DunBoop || !rp->fPlay ) { - int r = fwrite( samps, channel_ct * sizeof( float ), samples, rp->fRec ); + int r = fwrite( samps, channel_ct * sizeof( short ), samples, rp->fRec ); if( r != samples ) { StopRecording( rp ); @@ -123,12 +123,12 @@ static void RecordEvent(void * v, int samples, float * samps, int channel_ct) } } -static void PlaybackEvent(void * v, int samples, float * samps, int channel_ct) +static void PlaybackEvent(void * v, int samples, short * samps, int channel_ct) { struct RecorderPlugin * rp = (struct RecorderPlugin*)v; if( !rp->fPlay ) return; - int r = fread( samps, channel_ct * sizeof( float ), samples, rp->fPlay ); + int r = fread( samps, channel_ct * sizeof( short ), samples, rp->fPlay ); if( r != samples ) { StopRecording( rp ); @@ -143,7 +143,7 @@ static void PlaybackEvent(void * v, int samples, float * samps, int channel_ct) else force_white = 0; - int r = fwrite( samps, channel_ct * sizeof( float ), samples, rp->fRec ); + int r = fwrite( samps, channel_ct * sizeof( short ), samples, rp->fRec ); if( r != samples ) { StopRecording( rp ); diff --git a/colorchord2/cnfa b/colorchord2/cnfa new file mode 160000 index 0000000..22f0e58 --- /dev/null +++ b/colorchord2/cnfa @@ -0,0 +1 @@ +Subproject commit 22f0e58a4df57c6a6b5fa05665a6d454e597e2da diff --git a/colorchord2/colorchord.exe b/colorchord2/colorchord.exe index f773c09719e291cea96e546597f75a335b5826f2..80f46ba9c29293af9aefc570e204a30832ae88c1 100755 GIT binary patch literal 777270 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

24hEepD&3}_2>*Yr`3(!$(-0P#W@i~t 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%0AwyRGb8gtaQ;^mTmYeAc>v@Rs0f3?0!C0; z5fN5WQWRXkz`_VAdz%?p!7da6yQT%?cNHaNAt8{fK&cJP7F>W32bqb&6GV|^R9uK6 ztEkw>Bn%P}5)o1oR#sXJO2f=TLQ0^phUY_JhKUHa-~t32WE&EXQE{P=2*X4n5y1sQ zA|N>-5k^MEg$zo93SjrMut0L3va$*!)Ic_?C@H~xqXY_Lu)ma;K>A_wsH#C`3JNkQ z2~UQ}v%qq&5;$x{M3hyO!2Slape8}spb%hY7Ew}GW(9>aIPD4xH-U0KNDO2)sMbft zpw1K*g9w8HgARiQgA0QjxR({c5X12Qe+EMlLmfj4Ll?sohB*w&7`8C%VK~8Xj^PT! zErtgSPZ-`Yd|~+i{};nQ1|~)>MlnVOMm-l2F5Ln`xwtKUSoX5_<`{cBMTE3lLV6-lM0g#lLeCv zlM9mLAnEx;{v2d{nvE(p{u_&-8v1qXvuvoAxVRm8hVR2yy zV~JvkVM$@hVJTy2VwuD;hh+uJ7M4RSmslRKd|>&*!o@1WD#xnDYQ}2E>c$$t8pWEy zTEbe#+QB-7brI`2)=jJjSWmECV7yg>VD;&iks!v z$}X2)C^=hns_=Nh(Y!-B`?L3E?n>XDwl!r_(uRa}ajTOGr}~cfADwV$(*7xXr|z1* zedg9#o91kow{F4eMJtysU%qtZqSXu5&D$_%)9kG?w@=?Sb?=n@lMYQh+JC(7RL|M& z3tg8xuXWsPzteWV^-=57mKV*ho8L8kZ2Hplz3Ere-$sTe<|ei#&L*BF{$`{|KFiaV9}s~%N9t$tDSy7pb| z$GR_d-|K$W{jJMulm75iQPSc1;sRT)>+kKWMb^1LtSYh37ivCmN>S2*f#IJM14Dx~ z14Dy51H%bWx@TZG5RW{l1j-){yI=9iPUd9+i9<({Kxym%i0{C_;NZZ((BQzpu)u+V zq23vij}CzH5(wLYREC1VQG4((go0`s1aUFsCzm9ar4}=!6{Qw}(lSF*VsUDGMioO^ zW==_JQG9VpQEFa#Nd}CcS&~}Bkdm65pIeY$oEi_}CYEI8=M^)6`>Sb{3?QkZ)Z*g! z)QW=qywtoBgh+CJYFb)mawbSHC9NdBxF9t(rL=$n#4cn=Nd@Q4_~Oj;+(d@F{F2o8 ztkT?q#H7re%#uooKyrR=Qf6Lid`c!LBPORZ6zAj@q(bBpOG*-xGvd>VQVZiVGmB6J z6LSl2i5Wo@=4R$)=9cEh=cSf|O)tt!Dg}8gzAQ1P6lz0$X-Rx?Mn1&BAS+Vx;|oCJ z45`J%nPsW*DQP8;AqXo4zkCH3w-5#JSWapR7sJ$e2ZlKb4h(k_92n#h9T?&hK~cv5 zB0%wL|1sln$JQTDKyhX7SDKTfkdv97QBn*Yhd}CGr|2=bfkqiX{de&A4Rox=O2Ik5 zG$%zNFTX?~Ei*4g0p8^Y7f;Z#E+ju+AvZCv5+MsJ_R=$pOHx6F9(1&Tfq@|uY`(1m zsLu{(r*JW-8t9p%F{q{>6cmHY((uHhJn*Q3e^Eh3VxB@lVo_plYDsF5f-0nN1-UCx zAs{#;$kWdq>?8)bo`9nKq@2`Th4Kv0=u~P+320CTi$Por;1Rdn%;Ma{lH?34g#aX5 z^tc#;Q$fRJ#o&<*&=?)eP05LQVCz#-6p|Bja*`60vq3`^s>NJ-3=FEp3brsEpqzq= zLC0zGGB7ZxGB7ZJDi+XzTu&Jo7(ge)nldvmtmR~2_$0`{@K%X|;jASCLuDcZL*onv zhVHiv43aY$8Bzn87`VSOGi+VT#;|fN7sFgJeumPnKsl=*znlS-=0S8?QGRZ5W=d)?Xuz$Yv;?XNZX~#TfR#J2dhzTT z5O@QU1Eo2r;s^FnD{@j(iXrI=G;o%i3Cg$Nkxa-aj-G-7NQEtEL=!T|6i}28QN_Rj zaXj1)Rhj8kiRlbQ`6ZSH3@(|)pz$TgqN2n~kew*@<)o&>r{(157eP#jFU|xFOfh5@ z$LHkd7cdl;q$Z|R#wQhlasmTLF=QkS>P{b5mtwq5^vTRiO)O$yV0crpHUTug4{`u3 z9AM!B@)kouW@>zHW*&r2tbn;XAQLXW`c$U6H`(^ z8c$Rd!DM({u$Tr#P$05ohGT#{c#G)n5EnyH z5^|nGlr|u%6<`*FiVZG?fSkliu#iH2L24ezWYuB@)nYwW1LG8E^cAHhLsWo54HG|t^MWAE>Q49)BE(W;k^z`(goYbO#oYM5nJWw1XV`#k4wEYJfgH=$p zRZvaQ1SJJz>lqjrR2V!N@)#yFY-hN`z`&@&=)su7IDv69<2A;gjM7YYOz}*OOpBNf zGd*TvW>#W$WR7R9WuC>no%u5JduA>c6&5>|aF%?Qc9wZ8TUbu9+-LdB!p17es>N!} z>dhL>n#o$u+QK@4bvEl#*7dC0S@*LZWj)P$f%OXOb=F&~w^{G7-e$eUdY$zO>jl=+ ztVdb*vutA69EtEmlcZHrCH9_gPM{Y+;$l($13463$}B zqQb((@}BuJ^LFN0%(cw%%#O@T%*@P>nGQ28VrpcHXR>3GX8Or^jd3&M1jZaj4@MP6 z2F5!K+ZiS^mp^MCvQN&oZyd;VAb&+z}wza9Uk{44zD`%mj1`@g4u5C2{G zxBhS3U%S7ufB*iu_hGBillrIm&%!_Z|J?iY_mAvf+rM#t>;EqJd+6_z zzwH0C{`vkZ_&4R>j(>OlG5lBg@A*IX|D^xh|KI-4z|de0ZrgpRcSTDWU@mg`TZ~@b zVJRF7ODaKCLP=(BDyXHF!cd%-n4MY)%~S--MCa6;oMMp04n12dWY>$jK+8qY-al|T zSCoXPmZ2FDl!X;kp}ib_T7{rgP^|%) zN6bu4^~`t9&nqd)&%vq&YMKwSX>OoyutITa9=L1;r5in1`HNhKL1u6CxIoo!F^I@7 z1vg2cl{~oF0UJUwe4EI0kq!Fo4ebaIkP>IB>#&Av7;LFTXrb zAr&-#%D})7pPN{cky=!w0h*sJR>;g#P%YL_P1jLSP1jUV&?rhRDND?;RZZ9AVqkDA zN-xb#%_~tz$=;^14kS@;5OE1kyEXpjYRL}_abobL_U;ss5T26ks zLQ!H~dMdFuR>;d&$jnVlPt`3>O$POr7!(x3GK)$|6LY|m>0phiDd1)r zyue5-QGhma6jTd9Wf5FYKv8~4YH|roS9xYh26#qW!JtC5f`LIn0T!DD#i^w!`3gm; zpnIl4_9_$<<(K3q=jSMtr4|)u=I1G>rhw~We0q{HOTcsCFtx>nMWAfPz`$?-RBqRU z_}~Hx%1_P*6`cp_L2gd106D#({=Ma|e@=RB4uJ-`R|P!V4}coz5d9!^;IS>RS&;E8 zkj?}D|Np-a>X)Af@ruDsmIL+i@df$inII96-C(`-3=9qb-JPAS6g1rZLNyi4^o;ck z6pRcE%?(TpO&J&%kmStujCIR1^Nfu^@)ichhDM|Eqv3-{J0m@P;LAIsa@fn1ksL0B z^2w{kp{5X_ zZb<_(14{`rLqZWk>_h`I!;2DTh8iR>g+^uumQrSh6G&n?jm!)IrOXUG#R$C<8krfU zlp^?0*MO-FrOXVwN|_n1lrl5CDrIK)R?5u4RmRL9RmRMqQpU_+P{z#QP{zysWGR>sUQrHq+jNf|T4jxuJ36J^W{56YMsK9w;uaFsJN$dofPXq7WF z*p)Lggp@NgWR){BRFpF_bd)nQ%qeGP*i_EUaHO1>;aWK}!-sNa28Ie|2AK+G29pYA z2A2wEhJXrYhO7!^hPDc3hDjC742vq58Mak0GaRX4W_VP=%0Rm==xRm==>Rm=<;Rm=Rm=>Ns+bw(R53Fwt72x@P{qu!tBRT7NEI`~nJQ+6D^<)4 zcdD2fo>eh3e5hh(_*KQsz*No5z*Ei4AXd%Hpis@spjFMxU{cM@U{}q|;8D%Y5LV61 zkWkIckWtOdP*BaxP*u&$&{ECJFrk{6VOBLW!=h@4AJFKwFf)9qVP;^e zWo8hlWoA&QWo9s{WoB@xWo8JfWoAgLg_u=V%goSG%givXmYHEyEi=Q8T4siGwag56 zYMB{c)iN{u0O_w|W>BbOW-zH^W^k%wW(cZdX2_~zW~i!zn9)_o%rK*lnPFKSGsCtz zW`=!r%nT=>a-->RG#w6xbjZu#lv&~g8V*;24xKya=N2TEWG3aLI%SsRCKfO-C}YTg zZnL(9iUy?SF}Ok5!TC9vDNaSD#Tg6?J`66YIjJS7{z+M>$t4U75{v=)IhE=8c?^cy1{d%K48#n!octq zBnt9iNM>#-11pnzYKc!`aS3>WmVrSW#P`ilDa}cRgpnfygB3^&G?0!m58@6I1vvmZ z6wSbp1`+{JU6&Sk=B4F3GSq@aDvL`}b3wK_7Q^kG36crPOwM-BFU>1qV0g;}-wBk8 z9wZvfKB9yV zS%OnbLh~}fX)DFGB004HG$!r_Uctps#S)y8np(in!4i@R+B%k4k_rkvQ1mhMvxMXn zyQh|ff!8?AVZmt#!yXpsxIT1@o`GRMOa$y<28I(X;fa|gZuv#QnR)3sux#{&1u?5- z!4Myxl9Q94mkR1*STn@Or>B;HW>yl5(u)~v7~8;A%9D#h)-mh^>BwYYIKu+!0)otP0F|w! z1umH`sl_El`IXR;EiWzKC$qSOfx#Ij@0wSdi;!e+!6sgkT9lTUoLbBf0+R(5Z=iWu z(AG>x28KK&ahPFHO)jY=iJ3W$3=Ab0YJyThi|L9g1B&tsQj1C|9T|$Dr8i{%p=*UB z!(s-P)HDbeloP?FIcPx-XiXcm^mSxl;AC{m%*hD?*F~D3veP*Sv~UtEU;*O0I5V6F z(GZis;^Iu6#Skt7gDMlKlyWXDD$Xx*WY7fjJd^YD92tC>ptd;WS2!|6G5O|~rNVR- zF$JWiW<%v285k;<0`iMX0!uSt^#a30CWs$Xi@>wkjtmT@%)uG?X?!OnH6W42^9g?k__{qJa_QyIVeIH7#2arK)XU2 z7#2f$koosikJQAJ)FOr@P|+Yz>Bz7Y$^%yo49noW`~n7stTE(r)-6Zft|7q#tTR+Ely=%*be8T7|gH(CJu2N!#)@vTtG4~gffH&JA$2B zTEM{2&Hye-iowgw7a%1@#&Wm>C#| z#O^Mh#zx@P7Yqy{1T0E6C)F66EBl+lXR0(lV+2ClW8VLO`e)?nmU+fn3kK?n)aA3G+k%9#q^h{ zs+pl#zu9`T-DWq;{+r2}o0|KWSDSa6?>4_^e%<_$`D^pf=CT$p7SR^%785LHSS++y zWwF^}x5W{Qvlf3Wm@Pdl!!0u{=UQ&C+;4fslEX^eO5ZBpD${DI)d{PMR)4H?tj(;8 ztfyMfvwmy+#d?9w5u5WiMYf%`%WU`AUb8i^3$#nLtF!B|TV;39?wH*pyXSU)?Ii3C z?LF-i?N8f31FaZUU|>jKWME)6;4p|Vh%;DfaN6LO!G8l$Lpehy!vsSPBS9lYBYh)N zBU>XEBQK*!qco#>qYk5qMr)0>8C^5_Zp2{BVJv7YX{==IWbAF6Vw_`KY+PwP#dy8( z0pl~qcZ^w06ipmVd`+rMnoTyD>^C`Xa>3+=$wQNuChttXn=qJinhKgqnJSwao7$NA zn1-6Bn&z2KG+k=C&2+!%6Vo@QKTQSA#LVQ)bj?i7?9ANF0?mrds?3_ru9)35dusO0 z?7tbOxs-Xjd4+kS`F`^g<`>OxK|}VBIjaS)g`9=DMTn_mEmN=*@i0(Hya)> zJZAXN@TK8*Lq;P$BM~EYBWELjqdcQtqiIG@jC71w86P)(V*JKL)l}cq!PL(*-L$~8 z%Cy0Bq3LSVNV7zdryUiDx?>4_`&SN2BA#I^*VQUd((QeUa zvBYAp#dV997Vj*WETt@UEFCRL*2>oU)~42;*5%eU*8SE~tj}5Bvi@hyWg}{%Xk%%U zX0y)bjm-}maa$wXBHI(TZ)|1l^zBOR>g?L>uG+n~6Sh~d*Ra>MH?t42Z?IowzZn!} z4h#%u7#JA13_J~{8q72JV<2OwZJ279YdFhrwc%SsRwG`c`$qi6(#DR)yNnMT-!^_| z{M=a8#L~psB-W(Xq{C#h$q|zuCSs=BO>@nsSgf}=Xz|@b)Kc0~*V5B6&9c~Xm*r8* zYnIO~e^_!_=~~%Y`CBDe#f$$ttD*KZ47OKY!Ypd zuvN3wwso=fv`x3ou{~~EY(Lxnm_0)Q0|V$9%q0fD4Hyh149yLL3^j}!jIWz4GVL*I zGQVz~WYKSFVjXH-X?@)Ky!BC=2HT6a&uzu*9PF~}rr7PXdtoPJA8nsxUu)k23g-p} zh7JY>23~_ogT)5h41OCh8Oj(c8#)^X8m1d|8_qQRWw_O-)p)(}O=D&gf0Hni0+Vu+ zH)f3H4(9vJ7h0^g=(OBy`Ph=z%G@g5YP!`bt8Z3+tt71Ft!=EGtOKlLty8QwT3@i9 zZ?oEFr|kh-DLWUtJiEym-L@09PqZ(#KLB#a1P0JP5r*jo^9)WINEwr zcGEqk3}&om?q(5YRc5VbbIlf;RhXYK|7Nack!?|A(P}Z*VylIwh=9J9^o4YoDY?y5Y zZDnj-Y!}*Yv)yYeV`pv`YnNizXgA+(uiX>7mv-s)E%t}(kK3QKe{9dNfPvu;0|Nu2 zfs}!cL7hRf!8(J@2B!@s8of07VWexk(DsZ%krTm zvlXwEij}@qq*antwpE8!kJS>ZyH+CBX4Zk$rPfW>-PTjBS6T10-fw-}`nvT4>lfBP ztp8fG+3?xO*(lrS*qGS3*m&9m*+ki7+2q?)*fiKou$gKz&t{{|Hk+Yc7N;w?B|2h>jp^rGBoft$S}BT zz-MT0*kX9rP{JtOXob-mBNk&BV@u;elj$bgOfHzbF%dB}G_^PNHH|jSH*GbWV0Oq% z-Q3o^)qK0TokgZamBj>$`4%pg5tbJ%?^$wKDOed>MOe+WT5t8~GZ4x>#*cZ}GK4UD6VTa4Ek-!Nt}(J=`# zX)sx3a>eAIiKVH7skdp7X{G5@)7_?LOxexk%`D9d&6>^n&6b&MGdpB<$LymSlev(& zg?X5Hwt0pnkCdH=6rrf5*W+pf-9zJ4WF%ut)i{Et)Z=rZK!Rc?L^znwg+t= z+P<>=Ve4mi3$(NL0t3Sl1_lNx0|f&$1APNigA9W_gARj(1{Vyj8r(B@YVgiL)X><_ z($L;8#W2fois3%PhlcMAe;5iI$r@=G=@~g1c^f4gWg5vE8yediyBT{MPc>d_ywP}% z@j>I`#;hiSCh{g~CZ;BVCh;a|CfO!SO*WeBHMwf?*yN+hZxbd{4%2YcLeqNFR?}|N zBc|_6>&<%2B+XOI51OAh_p@lRcy0C5%H8_AH7D4gJvKXSe%o-`mfN1RW3kt^Uj!;2 z9xyO~?s!x(SZi>^;G98`QNPh#qiEAi)9t38%%sh)n@dD;2t01c=t0b!|t0Jo^t0t>1 zt4UU~tQJ|Vvf5;|%j%HTDXU9Xx2zsny|Vgb^~;LMn#)?yTFu(U+QZt%I>0)_I>I`} zI>9={I>S20y1=@`y284~y1}}|y2HB1dV=*7>lxMz9~eM)>M&>+I2aTdlo&7wFoJi7 zWf-T5&2lrRSd8_?mDDDq;(F!==$4h*X>>`(20$@`=`fT9Yj z8|MG1y)b#33Zytn7l!w149T#{FFX|$+xsPFsuMycnYxt;{IQs zVe&fN4h(xR^mj8cLF4a5p96z4hJMdzn7qzZ2Zs3=?h}oN$)B0#z_19zfBTAI@&$7o z7*a9PUvWK5{>B0ahV>ZsFPI3E?^y1@Ac*1qg%4r!b5=Ppm) zX~EE*)Vt<(qO#Z-a2Znn{{({IaGl0o2xQi|R8w_Fc z2e8Up7{lZr+;w0u#3+CF+QQ@&o?`Rg8V8vCgQwX1m+u6VXLyFqe=p$j2G1NAj4;CA z%pIn`;DrN&A2e)06vY3_;qnJwI54zp zxdlb}3cBeEy8cEAy2T|aw&{7LmX->-X?gj&0iLc5JbL<|BYVMHDs_{KO7x*PwIWq7 znSlYR#lghL2A4Sz?G964?3{8ATd3afq5Sz$hj;K!JM4LlGOO*0tV*&U||lB zFl2!X1M>k!PzlHb63R?rU_Qv`!NS0x0^%komZYZV7gaJaA7_kUVPNn83+7~Ir!p{~ z09(3(D>o@VxwI%gH?e|&`6O6u4Hs;!Nl8w8QEFN;cxe#xDMmpS28In#$-L5BB)QXI zxh+t+-26Nwxiet79S}JN=Ch3KYzz#0xROB&R}7KVodc^o0F_{1KF`R@#=vlds{pK$ zf%yWXFdGBI39f?V9MG~h=8KGyYzz!%xC)X>!Td{L{soX1K}+31zA9p1zRc*##=vle z0TxZUNziCo$@qZ@6iwfl7#O%A(FB!)#t{c-Gc6?6Kr1dl(Z<2NhS8Imfq@Gi*=re% zK&2NKR4W7XI&i$QFtCAE%p~Td#+N{iV_wh5&CI~SQIeSM;~ekl!obG7nQ;xsuyUWo zy!29Vq;FvaB{~MKa_}lCP{eHoi!gyiQc?rJinf7;SQywK<}hz(Ok`$Y;1OUx#K_75 zaa>|fDg*OjFqeU=9O4lM<|B;UEDQ`RkVJPB9NZjS<%k$Q1{UIBU}phc%gN3H${Xw~ zptQ+r%mP|J!@$6&&ceXJ%D}|J4$6|CCN^(#Qyt|kg7&2Jk2JnNE z7=r7C#$(3+%Bapa&04RB)S!fKB5dq7f zS!x23kpRmeEH(uR$_NzX7iX4$4!QyrMhq-wAW;Q@ywvnWBvEsas0!GTX+??2@hO?< zpoNhv7N9WJ5I_;L1c_-16vQVN#}^c(CZ~ciE0THfI=ZYsWQH}ATc?WfyEjm ztSyj-s@Mi3sw0qxrq~uFtP3(DGd(Z9Aip?|fyE9arUz1r5VHq~=`*mifZ~ds1(X`u zS-8RFnE@LE0}~?$Jeon}C5AO=?Z zC^k?|OJHMQ5X@#{U=RW&DF*)d2f+7Dz`()43o>#a8v}zdgGf9`yJK=mNMaHLt2@X* zWFc^-VqoT1zU@7l9CV%SlWxW?-8M z7H8oMU}9iko5iUPG8Lf+wxpA7Hm4;w0|O5i9&2$xHdIRhIn zm?OdEmXn`Y5}a6;%D~3Qag&#UL53?hHQl|KfsG%mq6frvD`sF50COjRxUR(vY=U6! z6cE>?n1M|Q%$>pInv%)DCIaTn;c_j`WMC5oa~5#9CRH%7iGevwxLi{z7}&(YoE2QI z$rTK25@606F4x2g1~y4BX9JgOQUL>-6qvJx%QdrrflV6B*#WZFxtM`X2F%^V=s3CKi@7P#7|>vlMeOFfjWBKy*!9 z$O+0?pr(RId}eMze0)5#zT{B30G0w(qA;m)NL9*V43dHg7QjU9L882%Y|g_4%1x|{ zTnr2%@t`9BAyqDi2S@@c0ZCl$1Ow6vIk!v_=wBJr^55_HghdTI&-hc8qdv<5a4tO?Y9V&L!twW~xRYhxke zV8cMoDu@DqPz??9Ts%_qhT{;Z0mH<|1}d&WmqUOSi!w2>LfU?yiie4V9bA=x33x#V zl417o_j8XA2nk}~Gy^pQnL`l*=AZ~-4hZuHRqDS$xu4D1!!d|~O^gv#nzDgZGO$T7 zg7mQjbA#f`jhlgi%_kr@B#42{lQ9*<3xFtVVr&Pi0I6g1aP)KWab;lZV+5NDwiBZ4 z3FAL51_q9JAJ5>BcvruWphyM|wpgY|+zbp{ZaJBG*$ixPU>*aP6NDQN=CUxbv#bMI zhoq4$fe9qUAMYOO>B1nuCG5n*z#srR*T;~7O9bRO2+xRtOB9qaS-^6}3|wL$9vhfv z!oVdC(#FBS3rfd9JkXk+oq-u_Dwo7>ZUzQckT|oarwapD5Qxc|%)`LI?CcW^5{Uwf z6oW+Ed_zDYiC~dd9tH+Bq=MEzG{n=-m4R(H(?%W!260d_InTquAOtEqg+Rrm&`ov* z1~7|(EdYzgeN3--K#?$=2NZ&CKK_m&o__A}!H!|B@s2^Rjtm8CKiE(5LW{rt!DZ}MlWZ+j&0diI<0~;f_ z{K;Y91r-yZk`~+m^Jieg;!idvjt@Kx5T&eq3=9&W#@&BL1~ynF!KTOosx{aG-~!4V zYJ8xu11aa#;AUX3;e*CBA4()aYD2bpoS=FVB^IDE3pn$^27&Z*Al0J*{+@mzu0g>J z9Bf-TxAQSDK&r-VoS~pmT3BTTIq{BxZ9AtZA84qVou!nIfkBdmZ6n`9J_ZIUztoBn z2DVLnV*CsYQUyh+WejYa!5p+Y+ububB*+oD0_R}c09Giy7i6Eb3_rwpkg1X^Y+L!< zKqf-AWE3&5ZQ}zaJt;^}tcZbaJD3l0$O*n8kV?1Aq|_o%1T(Om z%}HZmI}3J%1Oqz@$OCLp$FZFQ`-d$6#y`)eF91pi0s;&SGN3FT@9P*5AK)ME8U)Ho zo__AZ3~Wh4aXfHoPd{|&WF+a3$N*1gM;~-0DG()o{_(+~PVPbep#hLmiY*l);phX^ z671~Z>gyT|l}&@lg53pn6GS>bz%?k?-_OyQiR z;zK-rUHwBt7}&Crl)FZ_I)_3NXke&kkgH34kZWM5YcMF$K-K3UsSopXaYY0c16wYJ z92N`nFcdlZ`T0jW`Z>EIT$PWh$i*=r#1j;3u0hVOej)Lme$GLzj=`=BYy}vKT|9je zW))&cJHpKZB_U9FFt8ONsq*#r^9=D1g2Yg~zaIlzF_Nr{YnZ1qH2UHL{Czx~BjX_< z;S}WQ?h)eW8XU~PRzj2xkVBDml_KeanCToE6a?}v%uUFu%P>^KedgjB9N^;^8IP>I z97(yezhAJwk83cGhxmRA|rYSE>@mbsuL z_d0Yn;LHZk4fW{KPN6};A@QE>e*QtO@gW{TuE8GuJ}wMw4d@Et?uA>*z}ASQDA>o< zH2}%KO&D?zmmsWYMphBx=;z`Ti3r>lB*{=e$B+5_t{J9ak#+G52K5cxVRpnDFtAOj+PmqRW0 z^mAumTZ&a3sK^5+Z+LmL46C{T*C01kb<1(8gEtJ2i|ZA*mAkk?+7ZagSK?L+-l+Gf{Jejwl%m_!cB#!T#H*JNI|@_hpV$U1KT>>%AEZDgG1o{ zSx-nIq)^|0RT(Hk;~}vh?Cj_Rj{1$bRl0ZvJ34^|9X8=s1BrKd!rY8oC9-$7;8y11 z>gx}x2N5;xR@{mMg8b1{Z^NqE8Pq@sa18PWwX+eCiLhilVQq+*MQGbWSR33nSTfs5 zSP$GPn4VpP^?*8EAa4dUua92=Y0h~b&64nMfyf{8I#M8$! z3NnI#(+h_vFbv5nhsiJo$xBDb(2ivLQLNfwxeJu4;z1!2c2`RCUCI%Mb>( z<9Jm%`};vUTh5Wlb-@X|nmk+`U4s1meUWvX#ID0N$PJeA7}!qXR^#Is0`B&Ec>0Af zu${)L&;>M>pdp4cNGhQ%U1xuPP#Fv_+s`5?0e9A5-9UdoXp8zBk_u=? z7hI;piiz_`@{Z0f&d@$`uzzTfvnvDJ1te)7PnY0u&k$!1NbtuydpP>JyE3p{L{bB5 z$Ob?<^^WeKfe+9T-{6dK2}z~9kH3?nPduo39Ul7l_4Y*(e4J6qBXHVA%kY9r1gE1R)H?ga93=Z&x$LB31HLiZ3sx%%N zfjgg5zBrLmZ(-+(9US8-b$WE~6yt4Y&%5j!4tHp@ySU!1q^IE!F(nz z@TwcOU0@yyh*y-8%)quA%x44f3lfVmQi>SZ_JD;rKqhA9f#<6j*!F_OxIkiw6;QE# zU@;!9)cE3J2DbfR9v_HTz`%9@%o6|^TU?sUz;+PK7vf5d2hB^70wjj)M78T&eLzsl^Oz$G|?80ZFIkW~MN(9S6&+Km|Z+ zm)K5#h14Kgj2PHXidw2MFlaz5$xAI~U^^uWnwhd;-~|O2ND@51zzpGgszE0MI2qV5 z!kq22=oJ+P2DSifGBs+T!DNs;EVkS{eOzJDCBmjA=C97cz~!5moB=v_icMV%WIqFR zLfk(s7;?T-F$0?hScZuUbkLDYVo7Q+_<{yDO)=1DI|~eKodty zoRy3W3~aez4m0OXkW3!LPR@5AnS3yZgL4UpQvl}haP9$d3c(x!PSDkTY(-#>2p4GD z!aof%4^j*kli)l6GPDHDk>Ld09>7)#<|uILffhrQfjKIiLLg2#*ohjP(?OgHFh`5? zJBU*W=IC&?f;d%RjvnV`5T_c47M!3}vTXHW zjt!?6NTvbIap2?uaT>t}xNs(b3}^y#+&Du)9&QFJ^WaEv$cac5uBi{32Yr;P7LP)kO7_Gs7YYp1*L+Sn$Y~j4~uEExHL9mVCxb) zqmIZ{SQXsT1m!M}GFa|HQ)Xtu@PTcPShqGJRm=tZ5t=IIffE8WRm=x-ps8X3*zqio zRIw1ufu@Q@U=B1@ECzF+sbUG3BLYbQOU34JGcZU%Qou5>3^WBS2Xmk)UtWRbUP@1*`^hpebMtm;+4#Yr!073Rnj=8kz#ugE`O?umQ}0rhtuL4m1U90viBL z0h_@bXbRW@_5w5oYz1=yASqxQm=gg>0o%cx1V{?l0X8}Vk^**uIXRFNunU|53g87L zW>m557F(kYiqQv}h+OU$0?psS3_sXzi1F$$fC`KBJjmrfY&XGHFmQnmRf82@x4?xe z3m1B^c3TXT@Fd_aKo|{5Z+FBrbwHMH(nh2@gbD_>7ht<##e9fQaJ;jlj}NGU#=s^f zm8HYL!0HJ$pg@O#L9kT^I#(|QDxV><_8jp+AwKc&q3vK-@Dj0j7gwiHcLoKv7};7~ z1_rK>%7Rn|wpdw6MF2kjFTcnsF*!S=C^0z|d}|Q{TO3%Li3|NKJGOXPX*~u87B0|< zQ>n$pKKaSn#gO^d1lbqd3=AAxu6ZRzm5?Q4Y>BcU*9mZe*GlDqPLqR5B!MMFxS%V8 zlEGXFF08Kc$V|^*U`qkJNQNu8Ah9SFyuybq6)YsjfZg8=5^UvQ$8x!(CY7dx)^{$X8IZUJv{wDQw`3p@$n2S>=zd5F)#>}=9LzwrZBKy04?-jU|@!; zVPLm!oc0@t;fK?91!9k5DyvQMJxqz^YjUE4PxLC%m69z!K+5-f*u0{ zKd8SH6cQTX>F4I}$l$^&pKHLtAdsBIz^edC84LnB1wpCBsYPX}DGa=d+1v~aECM+N zE~&-YCHVymyhtR0dvU5T8dNr96UxR|RB%fIv!lBm=K1h%EvV2Q@et zc-26B36LCwuMXnNfaJlE18R2^Gw^DFL=`})kVQ2?qACI@<)CxZ;CF~I@M?j?H9+Fv zC5XJ*Aij=3IntqJygHyvWgw881oM;;1FtSf%m~S&Mhv`q%Q+bsOawB5OH#mhdNJ_o zgOZg6SOju2CIhblNXP~(1YQ=yz-tH+abRE$4sk>TDzA~aJ_Cvv1Ft72m}SB|gF-?b zed0kQM4*OzNMwL(e3+}Bi+@nOucvd6f3Uw>2m>E4BdD{)92DRj@97o~T|33^be$cP zB0;Ng*;yVNFfho15)u;!OG5?;qR>Gjg zaK)9ypd%A=KnLszEa5YRiRGmh6)^}b1sM%rdX`v}p3ESy1+?f4S*(mfU{AIo$W7M` zK-wXz_TtMEi_*&&1dgJ0~gTMulW|(L>T=*tPBTTp;J-48w zh(X{HvK8ep(bpi;VM-y#J_>vVIa3C@gfPFjASbaTEx#z2L4bjAD<=a3LZ&RWh(Ul8 zMX)?G4=gH#E}EN|m0!dlAdMlOnFkVA0gH>oC*~&QWEW>vF$kK17Bb40B&Iw2gN6m2 zKx+xW+dIUk?lNLvP(TRB`-b|2c!I{K99>*NSD%Y`hG*u1>V#rYV>7VOE$q0$PAPE_egeUme zKexo>lKi4d2H{+AB815JCKeTEB<3)PWFiUr<->&om=LBorf0$r2^Hx_l7Ol1Y)sR$t_D1eX)DoBPj{E8Vw zwj+tVgBR(-rGf+zT7pZ9it^LJ-aU#W4AB8j6QDChA$@8QT_Gfmm3he-MfrJ|RjCXj z(8(Hb<_ShfKo-?8h!_ZC)dxA;SELoYEU00Yn3dZ(Qr40Nh9Rl5{pZMO7l|k%kvmSRwGG3ORUVibXY!rha?LMXwdcK z;h7~Fe)&PEsd*(uiFwJDA^DC41v#0?iJ+!zzi8g#juGRF^Gy| z6E|iMl>m!_msiIlDhCEp$p&!9fRM72=F zoig)MoJ%SgM72?bK>-W8tth{!m_bwrNeZ+IJTuuhwImUA1381JE{2>-W)g#_9z@vF zCEnR3tvD<{rxfHQeTXPHUAQ>=`#L6rPPK>SXHf$r>EMzStfjuFA(A5J{9KUxL3{N? zjgZ8HOHv@Exu`LcDCpwi#2ip^FM-OMAju+C6d(sd%6d^#Bo&}y5F`aEA4ScOB%GaH zKu7s|7v<$Jh?=8Hz|N%x@2nKHK$QgPa>-20$xmkxwM3P2&d<$F%u8`9Eh)**V-U5% zkWI>W%CBG$wMLZ)Nv$XWi`$@zJ7=UOXM-hdQ6+p5lTvdSMD0*TA(b=Ca(h%s&?pAj zClBIRUtH_ zQPp^(szFI8s49IhRDu%?sv=)hMes;ORpp1O3KpTLiu_R(ML^0uR5by}YJy8rV6xCc zD-c;4ls#bbkZ2D=mUb`7glmUL2O~>|2YWddm1HL8Kz22Yh9FBqb}&G6g(69Krhxhh zC6%FhxsbLLgJ>ACbRK9p4|MSav{?bFO~a8C1Y{DN@!@Hnj;9ja?m}8KuU#KtSTmvx% zCSDf?28FPYcvs(mkVps<+`?f533?haFo9_k24)Z)WWvA#rY#s)L9}xu0~?5T0j(ux z2eF($yUsX3EYL!8#}H=^22K#qH7LkGh=B{l1n*Ad2C>2%gFGGmLKt{JoKQb+KmTw) z23`=y#nsu<*U^W855(~_WDo$+p`L~ef)IuggAjya!XOM{cv>)sfap+93kFdT1GJPv z48#ZpvBW_v@D@4=5DT=}D%2;0K@!9PZM%~KF@hc4Tpfdg93vT|L0o4DTL#1itsZc3 zb@TLdbzzVN2|#w&$w8RmAV154*wB5tDj+s!${A#~Du@Ge1$cv>8i)s)u>&t+asct1 zeEgjl96_w$kRVq_Uj`=#+ds(B-Ic)^!U0LRy2SfCdAT}=Ft|Vj{XrWxphB)7A&^lp zHEtjQXEz3SFb%4989YGDFxMc^stM3q0f=>;N?{@Kpm>W1X=nJ)58{V`rwkbw1V9`} zNH8dX*iMl_u5Jtr4j?vYRYp)4Xn>>v#P#&?admg}Vfgt5f$W+1*gf{9V_902Z9gwArP#@$U0-k=9h)_ic zf}9J=xWOUr3=&(BB!Wxwi$G^BNJOY1R72eXnn7WZaMZw%fNT1QBnKK_2X(!Q86-Ap zBD8>PcJmMNbqsM0ab}P>poJ<0aujG%mq8*&8zB>vpI-vEghK}*;h0jES)3XS+V&~2 z86ggCy?Y`{7VBcuWW*q`QV%YHuFHr)LQfwq>j?@)NK`RMd_fb3SOsm_OGp?ZbV0Aa zfZo9)aTy{7-sc$~T$-DkSX2obw1RD1mxwi*1ll1(Xg^EK5dKs|w3ZNyVxv z6IqpSYD#7zC{=N8iAg31O`xR}j(I5{^O93xO>T+r zNGkjbK$_uc)z1{6*(I|mHMsFoT4z8A69!eo-pu?2Wt>@J%Xd zsYMJDdywQqGD>rk@)9$1Tq{aI%P>GeBVdlu?^2qZTj}BH?CUB!AA<2W< z4A3b+28pLg67by_hXuk|&{#)iVoqjND!6R?ge2uykXTfbo0?Y=oKac= z9`lgsvIOY_4<&p0=cJfIY_bUpOfmGn4FQyAen?TXbclIVvy8C8U=<4!{R{l z3X)_%Vo`A_=pLP%#7aL?RyZ6{JC4|D04GP?07% z3sumwBsCZ0W2oErbD)GCv>gwA4wKe4f%s+M}wRgB+CRr0SQT> z&=em~lwXz!$}m#C5IIoNEiK8<1rNMIBi=9`DdMF+g5q5SlvEtCDTJp0=}#bqkVFrj zE>8s+2P&5tq^*&XBdVMcgLD$oR0BfNCo_pbdJ|GYL6I_IkluxqOhCCJu_QTzL3$ff z;s6B(ti3DUjuh!2hk>qDWRNyRifoW5#JM-Ih#E0S2Otg7gA{|EcnvA^p@K#X(zZxr zL>oMV3bFPUk}$-#NRqWk1KGi)1qJym{ z2D7D0(IlY#CkVdM(*8AkAGe|2S4IIO|h)#*=4ANC#36c1CUr!gG z_{@^D_}t=(+?;p=0|NuJB1GmjD1qQp3QtQiZ@@}@Je@pU;(dc7e0>;X{(y%0AjvDj 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

P(SU$ChNE=f$z294%0NbSXw zv?PK-%3cx?CNOg#wQ_KICa4=A<$<)80j46LC^H|tq(*8JR#`}O0tqWW$f5;EX$CU@ z7SHf9a}#*B99pBnRH2lYn;|N|nH;77ZcKU+xK}B48obs4HCW(^67v$%Q;Qg+GLeRA zVJ3l62!=v_q>)ybLKHV0fefue{DxBD%uz#B^(Yc&kVZ|N6H5|v^3y?C3=&oq>WJ6? zHELmX&od-(*SzF>&;M2h9(JL^4Pj zBaO6%7lE$L22DjlD?&#kN%vIH@zg2MwMSA*k)%Kw0am^RrKW&Ktr(QjA6=7XK`KN+olVdvZ$OZL0BHDGdKoTBSMcz(v8FiE=lpv zNoA0MEEEBU2531mY-3(LXzM70EO_hzvLXgW*4ZV<-0d~1hVl_7TkZu zq9nvIz?DH3Jotb`Hay5P#MR%=*%jgpaN&nVS(v|1sIM!7EVvNEBJbj1~v=>D?K3Dqk^#CrbcCpwK>?f)r20VT7ILsM z3j{ecNG$?!I9ZuRf}9z6PkAvgfH3&v6ix;fmctAT4ARiyQ&73Uz{s=93v_=&L!dJQ zuL~;!!%r{h!3vxV(jXO}O0SrKk@qE7*?~Z36#bC1I2idrhfT0DD|~QZkO>Bz`tJ-m zTu3Bk9Y)pbS1joq^E+WGK@_umwgSc2qe7gIq=?=r05)noaTY}Mm zLEd(y1B1Rl14BPV69ZE@*tcK>9AJ`%X<`I}qUTBn1~-4O!5}rDGv#ELu5@4k`BVPr zN(Y8me+GurP(xUmbEF-?<}j5pFvwnosr#`K5~d%Z>X^zPia2Z;%;5KhSi;Jj zf^3G&DhGyqe+C8yC7=An6i^yrU=#!$QT7`gf5-hm!JV0t3b|QS5S0EvAr8B%L>P3O z4{rqngIo~%|M(q21YTE*7ynr29+7C3=Ca<3=DF`pmnQ^av)WcD;OB$k1ls$ zsPboESOaw$Q!&`t;Lzb(p4h(BR;p_(q255XhLW+YC9Fw5iN#w;=I56z-XJ9aeDJ*7Skau6< zz;Mo=fgu?p$im8O00~46rc#ibc_8KpfbLggkoRBV!0^bQfuRDT8XT{RjVmAl4NBtR zD5RiKl5L|GXawEf-PA+2su z#%5qz4NBe2pxmVcUbn`y8WdlkgwM1Vw9P;@gMn$i73lgC-Qtp>3 z0W$gtN(7D!in<^Xy<0pC49IpUx`0IV&VW?sH>orFGw35`E90mx<`h-y*dITVpVmryG54jZ%Lb6_B)K5dXyp44S zqdx2&2^h^<1=f`cx==2af$apNej3t+aja(<8FcbN2LL7;Q|kc0jLek8f=m)FikP#? zfx%pmfg#w8fdO`R8*?w{_%KlZh%aGaQe6Ssh=F#%AM^qV7T7s|Oi7^o*qHZ&lwv*X zj~OJ-gml;+#>H-|XovkVtzc9F-Dt+50Xpsna*7<}_%+aBLXeS4h8s+K7&n2Aew)S1 zz`(SZaR;c#;zT~|k7*wx$O9}8LHJ>RO#8vY93WxnVSh{q7(ajxdjko9E|fUPC<;34 z55xs^Y18wIDjArLGpd3P`vVK+WM-!_Fr5Hfx`Gqwus^1gV6iov;IrA#4*O#|#rTSu zfnftw66LTzrqf`#El@d>!~U4gfaP{Ti6*EVG>+I2u?9cvk7*5~5;Fq>C+zGfrnQXRpu_$+ zp;{T3)`8=dg@G0Qus^2tj8B*t7}ybq{V{E3Yy}yHIP8yU3nM7KF>t~U`(xS)7GVO3 zKo9$4+6ES4VPJ(E_Q$lH(TbUYfm?v-5aT_Nc@TFqFdYVS88~5w{V^S3d;+>#jsu+N zj)H@mgA;MsAJZ|g5DxU%)np@It>q^33}Wk8w*H`4SW+K8_P=u1_m~kR2EP+=78TW2svUa1ayTP+L3>3 zELos?-(W|uG28dEfDD)lI$3Z5=rBN#a~T9sk6>eV1YON02s%Rzbmkhf6WBX~&?DHG zok4n7z|x?Z*!(;OW|syQ(9J76AR|AsfR5=GMm~a#*&SpcvJj-%$Ls+z3RxU{1RJv_ zL>TP|HfAq~Fzg66W^WK*goPy(bZQs_iv-A-ETO?3pw0k`6ewx1fLFt@G=mhfI7NoI zGO%=mf{6ukZW~K4NDKUmOO^nLk_lT_L4ni?I^EAF0KBk`Wo8Um3=}oO(Bt)>IgM52 zF<1(e{a{kibKY2uK~gY5*g0>k_8?InP$bH;fx?PegpGkg7;>sx4(L=jRu7N_R0Mp^ z8>=T&1aZzAs~0FQ2_v8L#_A0!C55q`^Tz4}3It({bKY2eq2igS=e)7{fl6dy+~>Tp z`h)T|%yY=6F0vj16@5&oC%~Z`!q3J6iUlT|=fJUmVidfhkIn2IC@X=Z7$RT}iZd2S zw6OmIMGGtFG#LhVF-A~6WCdwuV3%M7>0=FtNGUKvGG`?_0|P5`%OZOpBUm#iiMTrY zF|da*fnr<$vH??oL-;f3EJ4sHham%p2*^?fK@iV~fkPCWw!l1N1`aV0j}6Q-Vc-x4 zY2#qv0eO&_16l;IGq8ZV`V1TrYuFhWm_gz!pflz;fe%pc^Kj(imsVu_q%*V?Se#Jq4l!REPxjGv?US zAhKY0flnxcoErz)s|r73jy)Yo5$HS`&|zty1I{378Q3$B@8)&00=oCHnLJVmv=Yg>oA*q6$=LU8?=!`k`VkBA6XcWOS z=GaS!(gAWP(lK!CrAWFUp$j?o0P7iZ>}43L;XVVcjYd0Tj=da7IcT#r=vX+II?!02 zD+7B4k`l;KF)#)2Q@hwJk<>uli0zCy_9`TGaCbq16!VNZ_G%>6c+Qw(uR&4=PTq** zSBowMwhT4()uF2aXEu0RsYjQ_amE~b1G+*~AA&4pU~fcH1U{P#ajqGA6NVhbC7_k# z;4|jfn~_yO4_<>iv;|2L#~E|%tw?Gx&zNIx!zzt>#vFS)k|Nw^%&~VMDTAJG0Y68M zy%R|ilBf`JT^Mp`XUws8W2k_iF~{D6AqTY_ky?9^lt3jR=RF|BMIVwHaGHUt02S2! zehlpWNb=x#M3bL@BoA81kK>Fv_K8U9(9f7-pM)xje#RX8WF&dm(Hw}hKLv{{mNVwq zr{YxyT1p2xV~%|qUS*II&b?}A((y>46D{w1^A2bCzjRSJLC;Lj=%HfA$K~LRbUxiyO+-R8E z)wtEd%>@Rf7+{f}Mheh)hIv zzMZf(M9d6US_G5SzgQ^b5A!iKi$MLGfe#RX83A~!HoH56K61xuM zGv?S&;Z}ok#vJ=;tO~K5F~@!eNhP$Ui+08w`&lF9AtrJd(U4 z#u;<$7m%cJoH56K5lIcKA&d2lIrd9PDzTn1$9@?}1&%Z3*soww18Susj;dq7ilhYW zU9@B57}&2NsX&uNJ!6jjI+99^Gv?TDAj#rAV~+hMc9o7uXUwtRLQ;eOj5+q(5T&Rm z$U)YYKt}u6Z;F5i&`?!iIb)9f7D6E?upkvQicz-_DnR)UtOEH6IrcjU1#lx!6x>Bs zfN{ng`#szWU}wy+-$$r{o(=~Z_CP*kj{N~b3CN{b&X{9=h)@DG1=?CgIb)9f5m*^d zJUau!cNyrICj*0kho>K?N9*hwAJ4$TazR>_fkCh|ue3Ndg@NS)XxN#7fd#IHf#rgZ zENI*vWCDwaufI#Ek1GSqHIObb4o>kLkZ%99wBpnf22P2ItPBhcf)K7pW_kt#rzA*- zg+ZKyQ>;^#fkDDimVrSsAU`t?bmb|hbP)J-JMi(GK8^tat}YBBoWeIjW7V$hnwgPr*5zlLo=`f{`TZ?$Uf}9Dv7#Qi+ zA|3`t(DE3B4CuZh9!?ZN=zT>zLg=E9`-*s^F~q_574fKm#f1^~74e#aCU>OKk1zxY z3Qv6`&%hvq=Lkb#(3VBemKbbD81iYpmSteTrUbqVicbro#M31neo`TSIH*h#1})wK zufIn~>;*}Pf+SFnFyzl=M99Fle+gtF2_lX#6bN8Ks6{@)P@o@40&0j6gTO@;QScFl z0%6PuBM?VXftQL3@UkG}upD71P=F*4K0PhalR@A$LJ;C*xQr7k!Z=v|427NbxB*EL zv^Wzk!NZ2o1(JXsVJNT)NgU${LjgB-gf8gPa)FOXVu-`XAm_m`2$*srbfC)`F$mm8 zk_P(=T@8akA{TBGj2Q%!xlyFik1!OlTM;Ho}A}K*R!cgD>k__l*F7zV|1#H9-rh^n<9APN15J?5-utLx=8VmwF z5(s@DQScFl0<~zO&?5{5-XV!&9APMMLJG+&%p(j1!lV)MZb(NM3amzwfEI6vBMb%J zA<2RQny4cT1=h-dEE5J#gZhDvFcjpK=U`wEMnA$(kPj>jPJD;~*VjC@6}Mb3r=7P*4n;xDkV( zI5u%(20;n1ICxeYw8;+|)C_`>hTxC^9hno4dW4~%6p|E{BMb$l!SdkH0|g0#pbXd! zumITG41%%<5m12-JHk*<4pkg_&WWHrsxU0Z83Yv&5=ciF3M!%q!;UZ%R6+L^ku$0INZYG9LuoQoi+i6RF- z!cb5PMI5}3qNIXBP#Z-U6tJ)(3J!U5J?fz5r%?BNaFA#3s!^;M3?B1g%je zK-35W)KZJ!VpYb zFtCDX&=H0p8ghgohy^+dkAVZk0Hb{gO4zTFpL<4APf@*VGsj!gdvCqA7Kb$fDSGc12I5{2Qr9*Sm2eO5+D|6 z3JQFLA&3JyW>5;m0Buo(9M&fd;=+zF1hGM5s_-KWK?2Yt3?WR&5r!Z(>{0Ku32NEg_3LrM@2tyDX=?Fs*7jc9k5)X7@A@~SGkQnk2 zhLCO&;s`^Ly|SS64H1SlO+>8Z5rUwG33R7CgNT;`LIUjwLy;F~a%e{wiu5TW^g_4g zGl*m=VF*H7bt3zaq~H$7QbwqU9bqUEp^6X$ITth{2--s`vK2`JwkuU6LJgrB>JHFO z83qwY4GammrjJN+po7sseXn8$k&T)NEg+i_M;MA6&_b00ISOy;MD+CGvdBjmihMy6hqwdU zv=@;uMCd|2!cgQgL<+pV7TXbqBC$r!pyjp@1=x=;6p2SxgZ&6Ykwj!QIF2wBNk&$L z>j*=URAg1SjxZESM^+Vv;|N2MOk`E~jxZF-hNuMhu$)0BTYy&lLyj;MDKN-xjxZGYj-&$h2tyG+Q-o%WBMe2Z zBFTbI{K(H^5b-rb=)iJ>p~xO2c`Qd5iU^n^^kX@~P^1k>9=eSclv5c*o+3%W$Gbq| zXrLnuMLaAJ#zObtLXR*M`Gh2ed4!=zmnBFicq|!w4jlN4fSi9(!v6N{)3gLnYaC_P9q*ooJW zLLVw<#2{{qG*}K21&#K@k1!NZL>kftpYH{+_7;*b#J5P2wMZk`7)Kb2DS-hwn#4YnS1grT?s(#SEaj|e)#P`nB(AskP{5rz`4UxOy? z@F<0+C5bm+rN~DZO8fzh^Ffjq==?K`BMc=N7|~ULP7-90P{$B=fgYX)Kf+MrFHSWK z5@}4>%mob=Fi4a#W5^*NVJNWyLmu@ALkSiZbOR7a!AVTRkc1u}#~{Jaimned6v7~} z3_~0=VgWkBP(qarT?@3LL_5MzVjhMF$VV7T#BhN| z1w`R8SdTE2NPwsUx9LEq6e1mAD3OkAHb@fb2t$dps2W`mM;J<6LDPpU$IA_N70f

?4>8So|WiI4}K3kE+ZMzS7V8u=(Z$p&;;wBzt38_^Yj zOh+7vC)tE959%-?Y;Q)FMmic#vISid)Epxy-Z z05-@`Q4EqD=!zhdQN_OH>iG2K(WEVsgI9-AJm9W0K*WB0K(;_Aj^S5 z7ZG|>k)=@LZ5px+dYny1mIRrI6kjutLq!k~?2Ng0%rXaQ2kYzx+E+EN);tg?xp`;^HgAPT? zh(YooE;(ZcNo%AgAN1TnP^?2ok|g(|N~0fPC~1JyFhoAWP;xes1k_w`J56#aQj-tl zP}nJQ43a|N7B{4k0@VUi0MS;7T@uv!&IcV~DER}T0ObfnNmHaoAt)k1$JQ}O+9Qd= zvNVIFFH##3CJNF6v40I7Sy0rdA+-o$x?!mZG*ZPNxgU=T21(?WBf5U@P?n?=xUmQc z9&9QQM;J=(#iA5;grTIpB&hR(Y7WW~hLRpgYZ(wWL60z$+=NvY=?FtfKggm5NNEN$ z02a@%r2vwfz_aDh8V#ljrM%n>Q31~6Fa>a9php-=o(8XVK=lq>5%dT{$xNi7T9`?o zw1AJDQPrbJoIx5jML)t&vO*nf9@vkd?fkI1=NXc? zE7l_nC6_@4R>6}lc#bfXG)5X}ML)t&(h*4#^$0`BrAShsi~w7W06)S|k{4;97F3WT zA7Lo99cjb{E{Qn8P>Kbq5CwHML8H8|BMhaM;gW7|Jd@pjIVH8?Hc0f=>v8_ zydwjv!Yania5t<5+rt3zYG!h3Kw?P-gTfld=Q5zf%3vNuwGPEFg|&>SJ`4;3@tOHa zrD+Tbic%@Q3=D$t1tmociqfFf>kNYN$$2FViZY<3=`4crNr}a&42rTKDGtH-w4B6r z21PlL9FJf;`0zMIc@R%PFdlTG5y((Q1(1MPj|CeHj=85F+smCX9D0{Xp3RtRfzIb{OM5(6WC9!6eWPNuY)))M6f6|F(tkrH7^Bh_Y;ua5)eU9STQ~YhlF5$4g=#e(9Q-06hDE^ zQ)5t3vJdfRU=S<-MYfV7NCShsDjx%bk~8QO8y5LA5Ze{RW|J=jvE4!Y05}ATAopO$ z=auFrr4}(Ld4ZJh2<9f{m8KHJE{iaqW7L55Xr%F|LaP?GusD<7HrATn~y47Wu_|3=E7LKx{U_ zu+$>ZG1Gn!Pcd!;iE@DUq@bF~xGBn?fq^9e-7dyW_xwQ#3M?BM47yN|aSO-{u(JZ< zogD*$85|h5ZU|st5DW$Rn}KoL6VS<*5MBT%5E!?EM3@9ULCGWtoPt0zw$L+V8Fzrp zV-fTRr!Y+Eogis8LATUI(CwI*^1DFt9P*&Ti*Yx|9bAHGnW;G`#qoLhCGnuGIPpo9 z@sI-r85s8*2w-5)Vc-F20x`iylLW?1oa)`-jA@L2>@*>3vdhyc69-l zHw=vXK&hFoiL82CZCi~krXeBhdb zQ;RYab084}S-l_6z<4MWtT`H{xdg5mROs`A;~Z`RXk}j-G>O7ZI1DlYt|S1GQsJ^k z5VFCkCD5>qXJ9;v5C@%42?_If2F7D3;+}aasTHXyaMO-62Z6lG83gsJdJxR3Acyi} zadJRWY60j5uoO@OHJ*X-ge%wtZsSPX0|phN)D0r{96~e*x(S#VSWIvR4@tF_QuVNSrU!zoRDdf%#4-cp#jRjT84E`SC764mNq~Xz(%C=;gfmfM znt}21Q?O16xUuf3B`9&hz<31|`K-($a3vV=#lUzqH3;N70jL^y{4g+H1H~LGGY?b- zTO=?rUOxxc&H+-ClbHmsyKWlEf{bMWi9^qN%dARGVPL!kiYZoR1`9_9WpF`x7JQ5+ zE3?`M2L@$uad{3ZqVmCkK?PJ#f~zbB#(m8CatsWocRMg}fRFC|8^XY#nvz-uk^!-q zCW2D_WM2k|uJqKB_)JLdfYl0&8<;_bd+u%rhB&YhH$q`XY+!~Op;}y0l$n4wprVO;2iWNx*qok*>Gb)agMJb5fmTa1P6Ipo z;4YY>J;Gs*o`&k^X{e5#hU(}UU`O**GB9X--sQlc7fyns1uz|b71hz$njMUtV3%jZ zUCtB%b9pDK%R5nB-ihk+Zm`QuKrWxV%YoqqDK6i&3nQiM0=rxrlxZL*2{Se_yY6ye zPy;6kceooHVQ$ok+2z3SI-7w(D{YqpLtHj2-618nG-%BOX>T$x27-N_wbOy&HrUjr zNSMz9VWz64B$gzCR0@K2o=#*@(+6diKvb^>gS{S8$-tnSR9TW*9AA`LQd*P;DkNf< zK}}Gmi8;EU=4Bi+sC~&aF+%U^P6vkn*$fN{k&p;x<(b6D4a#C1&@9FS&0+#jz6g{r z!89>Plc_`obRxOVqn!>6QaKC^dOW)v7>sfl7`&mzF-?pBWmAY+9!5h3J#A(ViYXwT+zbLl^Jw`E~wlA zhn*{G*tvtlt`(GQJa#%Tut!0{1L|uI&^g~)$vY9rqYP4zyap!^aG6@1S`wd^pNHsN z*n^$Mv(te=0_?PWxYO+6PJ?M+V1%e~xSPLFe7;?cNSakar+*EKJ1;XbDnyhXX@F4g=HkyUefI-h`hXccw90mp@h#1H^2EE)J4h*Mq7#Qpzf;^BEFThl+ zz@SsN1Cl#*rtE-}40@|}KoU|eNHro8OarBLt?N(+K_U!N&w=~`Nf+gy+j|)pcYz~F zewzb>890J0;$RW93oU|nF+r2P0XW(30tatI6}*f98Ca5<$H2G;8W}N=aNi3K_dbw9 zP?52p2~uQusDt~e2f)#O791-@MGTDB!0!20#lT<)j+WOp=yh&$V7QmVz>pLR z2|uPXaM=Q?hQZe$Xfl-uFirGe(3!Fg5=MH*wm~AS7p7yP2PDE`G(kEH8T4*%b71(K z!@#fzqJjYwHhS;3IWREhGB9k136?T2=&^2xMD1;uAlP_P^J z(^wb{K(?}#GEC%PlVQ*^+75{@Igl#G0H$(C?(YFdm5*&(hJ%|O7(jWKv6sm;o`Jy(#y7v8&A^aW&A^~{b+ZG5a4rLbVmu_M z7!ASMjKhRMD|CwkgK92R7!-8S00ajk52FDC1B0nr76U`{76%4rP)Rm{=~O%egN08P z14BzS1A~Qq76ZeKY6b=~muxW^Zv|u!Y(M zE6`XRyj0{tF~(>NP9`8H2!Pol%nn{EnoK328#WjibarlbU^tV(z@V{fivzu558&_y!dKg)4)`hb;~a90_1gv4BFKK}T&XB$eseY=xu;J&-ga12=-wgPs>u z(i>GW8Y~$BmCQhuR0KE7zVFa;F2b2<_k z7}P++LX5FYpg|d?i41C>ks&yjMGZ7K#2Cv2YX37$G-<4f}6A(kdGfs(8XNCGy#mIQW3TMYw)-iECX401^f4B?630Aye* zW8nJ#Uka3B*vi372AvaI9T-3bm)@nV4h$eSmqHaYl`=4Bac*;92!Y2l2O9$exD}RG zl$si!npc_&+QJCB1eMX3DRQ#|18CTRaSq5zP!FbM0D20btIa8U_Zl zw9O6-77U<_0veBE30g}sM4oYQU zOl1TGV)Fjz#=0Re3U&rGGJU5NES|K1XXlDK;c=GpI^ejm;pA(sg{93 z9UdE*V6mE71_mq8&@*EWc<7mFVt_7aFf=bMA6h=-f=9`jCvK?+OC+a)?l(v+0uReU zN{~G8Xg2f28TFvZ&qP&`T9TNV12rn25#)oLAZLK=04q$(j|ZLO!dSqV0lKZHj)4JT zNJ?r217jihZiO(AL?#1c5t!Fp$G~8coS#?1z-Y&GWupUx6Ax`x+c2Hj=)hpzvd)2F z0}BI#RR#ltI;d_+h4+A)7(rG4v^oX`-J;aO(#)dNl=x!s{V>hok#OdT2g-C4!FTd9 zFt#v)h7p-3o+-0=z{Or{xT3tM21XUNw^$ZNUgr21vcMGZhkjuzE>_LBn)|1H&b#Fr@9l!aVUv8G}aP1_y>G5D6CM zi8sm^^cF!)`416gfLaggv+UX6z;Gj%fk8G6Vgbv<6=k4d2M*AsJQ@!-I55~jW#D$q zC>(EG5-f#G#71H&|^B2Wrr(Bs$)5nY2Us-*xG z1*J5wI!Mi%wcdfj4pcduVRTA|*1YfPp*1g40|SE@Oa-Lo4FlJ_N)6DO*QtSlL2L1P zM9m8e16W0mzuwh2wcddtIvo;x@IX3K#-Mj`qXWagTn2^$gd~IBgN=}axE(6UGI2v0 z8-t$ACI<%5JO+kcP+@331vfG{m?j2*@)66#HQ=}r0F`VEda;`v7;N(x7(SqCfjEH! ztdj>!3V=!vP_6|v@pCpo>Uq`-sEf-P7__ECjRFNM)MltLVCR7>hol(+uz@0=R*%mA zwUG9PUeY=ThO9gWhAfzoVCTX@57b`aVRT~9vfb>!(47ahwG@0?2x!8O2Xr+8C_92j z^#3#PfbK(BoWa0g3)sln z8b4%U^Z_eeyxM``3b;86YM`0U$YNmFw%UPVAxJ2IQ6`IlLGSQt2Zqym3=HC#5Qnic zw}866dQVn6Fg(d)V9JvfW^7iK*ZhQ;^09mJp-tCJX{<+x}p~b6)%U2gU5^X zYM|o%aB*;VTW=9md^ueFH`w08Q1Sh6aqu{w-b<+Xb+|aBxy8K};?DPQadS|KqNfWL zX9o=$GL^8fGDBKm{!npHBZie3+@535DOl^k0E!6)J5aL-)Mf(BNitf4D=S7&aN2{~ zO$?0I;DXy8sij~IuJMgwttVTs7UPuEVsO=#n4FwiT+F~|2d>XX{C9|C7Jno#SDx};5cP;EJ{t!EG|hcf=o^_FfucO?vUyRCkW7( zloO;X2T6eX^GOX13{Lq4ATFqO>1zPB_CU1_D`Pu51H<|T1_s^S;&cW^2%l+Uj?Riz z&>q{vRSpdQ@)#IGKto-iK?W`cVNeKxa{&*i2!!0;JeOz5{pY93y)QFK|*e4A>#gJsYN;9OHhMSi%WA# z7?g!TGHwTXK`rCV61V)K;LN=A9N1PO)nbs0dv0oOazQ0Se0)-AW==_FUOZGljRDF4 zsQ@*=P*i{fz$!otH&cEFhM?5q)Dp;%cd7;;0XJ7ZkSO%lKJ{fFuG?BZ28M9ZumWfy zBZK-n5Z?n7DUch{cup{SKrdK>QamRaJ(3f_XNW;5p5u&eqI|I1;J`LIGN_h=gxsFM z#X;sfGN|ikwM`;8%Uu?aY<20eh%omIuOOPozb(nqzKfqfl?X?Ab~tkKo^%3 zfoY9M&-n7>;*`=ps?0Mf;En!+Fvuj|;|TLNii7c(fxvVoL%)$?Jx8oX2v z)EIXGx3nD@6wKH_>b%MkhPtPgfY-ISq?Q#sGAJaof#kftAr!cz7MB#|S3<%8wCWPP zOGH724W!0xF)srHXm-jcGpQ)CsFFde4J6`a#>c<_y0#H2?8u<~iWMa0Cd>;?$)H^t zjwvZcprS{s9VFNp=Fr6wn2D@}Mq11E*VQUNQrd!gA1h7S4dg zqQu-{1}4QFpcO0(JfM3}L710;izR@Ofq{z!q@8a&BLf3JNIO4>#lXd~7i5`Veo3ku zXqvBx;RG{3$Ux5gw4&6)Vg_a*kgpgxi*xb|QW=*d_ce-B<3YlSkcy943M8q(nV4IUlbKe@z$^_i zK!p>e6qJ_Zlk-#4(lV1XK|K^^S&*a#LNc`i+;>SWVPKX6N$GH=(-KQ_ zO5%$%({mFUm~}v+4v=8UD$OlOOv=p3EU9E*)&ohnKqQj$bCWXjQsYxHi%UR}&cLh> zlJ$VdCYF>WCTGNhf;t{-lL1K52SqY5w*Vq%2$BoHCTGOJYy^@Ffk@_N=EZ{pu%t94 zm4Vq9BozUd%FHdzjR)1DASV@NCY6FhKE5n5r!0urV+!;B;{df$(EN{1u###m^9-IFQf=P8V42fQZI}M0aqyW#%R3WLBj@ z1QS4l2N<|mmNPOi@PWz*a4EpR#j+N36&?p81H(C11_l98L1@pw?C%09z8IKP_JL$U zrPEth1_nWp?0;qk?mMgu49xJ74qWu4mZTOHGcc)w)Nz2y6PL{5l41q{W)4sS0A*4J zW=;^3fipKXF^_?n3&dgJgk}(K5RZeiBr!WRkAay7R50@}u&}VC<>V)pFmSPeq`6o? z!dxt%@{x-L6ntDPyrA+3ek!jJ?AlY-q^TeYtT&#rAYFFK!oix8pO>xxCP3vq7fTyR zBevTgxmZAEa=_M3vPc!MGca(1*G{rXgHjR$CwT27iwwwVES!+FlPt0zDGpA^+DR5U zkQ@&uWbGu2JcuX2312(O0xoYvIALoiSrkDEBsdXkCs~w0#>p@Uf!9v5sJvujU|<6| z1k`31W?+V1bO>5I$r3%29aQeuurn}-fa3_fdy<_66pOqZpiA#W{rvr085l$Z9Nm2U z9YYuxMFSi`r|d9^1~>+X1c9zXVHOQ=bP9EIa}8o(5%ml8jSp}Pa`X*mU}a$8VF3qQ zN`7flPAc4Lc$7MX2{3cJ$)4!AtzaAdY4v%pddz~l)wkS&nYlVOJ=vt0lg0n-LQ9GUGV zNFz)bdN?xMBalTfLD=EQY_CD4!$cv6BeQ)4IaUlB6-b98voSF0aDto+iUEW?=!j%C zPOubA5PC#1n-IDv&1l%ZL0-YLn&0xGp&j`0X}cV*z76UxQFAXc22o|m4O%fLOE8I)K! zAninWiNp}W$UBppfq^q6wJd{yksrin;7rL(iH8h>2!J%Pa8_leS0$!1FhW{xoF(}s zi8=8(si4VgaI=SpGqI>Bv66vN7^GeRRK_QQ#$QE1rI83HcqK4Ix#)au1_lXE$bILK z0cvowM}`wL$zBOsCCBtwnlok}bzqPNj~x8rW?+zP zI_kjiO^AU(im8NwmHDWwBZ$Sq$}D`;fq{WR8cn+~T zEc32`fk7q*v_wUh5hN$x$iN`0a@2u=QJ8@tga={`qYZ3-JOgvo2I2qoEX22?tZLh!ki-+k`=OH&kgPT&X!ssS!je2TbWx zsL~d=Qad!IDlnz|hanDF4_E4nrc?u_)Do)n7F?+hno=E@(qyPoRz8@wg3y!-z?Akv zl^Vd6Mx!Y;fGOP$RT>Rfnu?~>1g7*MRB0PrX#tv23z$;wBajf-2v=H-rql+e)D)`p zE?j9Fic;p{1E5sS!)U@F8xK{>$qx&HiD+t%z}0p_)q=)eAo*n$n%Wa^wVR=86XE7A zMpJtRuJ$feZ7*Ey8Z@;RU}`1Vk3xb0V*ge&byr~O7!-Y6T|x^|5=&AU80$0kIxt*h z0cDCpK?VjTP^PGd<_V>|GzP|cP>+#mB8ze+17jnoBnfF`U{D6<<0eoxz76FT$CqS) z$}dnuoPlu;NaZi6R1(P0xge4FCXn95;*y-yl!BbZ2Ib=X(jt($l^`kY76t~D1#Aoqv%pdn42)|)!W&vZ3M-*Jj#dT+2Gs*> z3=GOe42;)73Q}4b7?jf)7;k_$J3yQy2F9Bpj%gbMgK{MU<1G*;0mLavk5A6e&CSna zV7v_yT+{}-#9p>%uLFaLFayJX0Z3wC;z(goc)r(x!CshwL6&o$1A~_^1A~qrM3$MW znFUlhF>?ikgK{>b0fVf~J_m+SVFrc(s2Wyg9#|BC3kpVW2FX~cIiM(H<~q9?Vg}1c zs2L1uKCUkQr6rJEsSJ!tpqK&`gi}C+_;a2KF)%2VL4`r{;oxXe0YwvIn8u^s4h(IK z3=GPU8V|g1kbzMhcZL9-m}LN|~kgVusQ4h)tI3=G*q3=GN;nLvZ zjl{w-v8SF56fU4e9g<)7I50E`Ljs?b`3GoppMgOI)FQhKGOdV#u>fRLdpiSzg6v)g zhIzsa43cSkF*Qk=KqDFy1)xY~U|<8)qM(Wp+)r|3(9YmzU;tqzO&#b!DU@P6$*3L4 z&%gk}JW|?D{0s~r%xj`OpPzvNgn9L}1Na#jK$u5Jdm29j0|;~GX@fF22y?E}O#@fy zNQ1&q0X_yOLwhYh0|N+i-qbAs?eRv84uiRT3}8yHl%IhCggK2E8T^7kLv_b3;X`$n zmI`Ki#(D+{Mh1rF1}2843c9(*Mhd#QC8c?(w&|cVeKV64baNAnk~3@zQu9hOOLGf~ z@)dN`6?FZL6m*MAQf$-nN-ZrFbkp+kbpt$I8F=*cb2IbO%XQ1mOmvfrO7uZEu_Qka zG+(8c%rN1o1H)Yg28Io`3=B-raW5to)S)-#84RE?Jn(QGOJ-h4K}k`32?LYETF@vS ztfR-21YYcdwWG%hmO|?7F`@VN*a}KAKn=8<{ABQ6E2b5UN{kE)>@1**)H&dCi8-kt z>Ee>2(&Q3`8%%o`L6^339_MFZVA{(Fat{MnPI7#5eo88MlN8fFMv&WCAc8qLi6yD= z$ps8d`@zB-AYteP5Yqw156lb1( zSTH9uJC%Xy1lZCQT)9c{$)!c{xrr4FOeeu&Yq)Zf^Yh9;OFweri&E1dgAGil7(w^7 zY=BDUmF6PJod(Nofy(9P=OM|R0n6=x$T2XTW%OWSVA#WzTvAz(YKWxn99Z1}s00Jk zc}CC*#3NkL4hPc(#t;?;h7()`$vL@+1q@6V8KYPj7|w7NB$tBum%#iBATO3==B9#t zRm8w_nX!$9f#C`REShqYpwYCF@gx%{n$9yZFmOYn2`UGTBaWQ>WN55`)*yhQje}_o zqY^U%0~b89*D`W5GB7Z3LA5e4tpmp^3jx48Mch`f2op#oB^A7LjAZVs+;L<}DT3-K_p zvrGUDXtNvvlc2Q8%fkZ7F$@fR3@i)`tPD&n?4TYBC<;Mra33CJ%$pbFGf#nEaCn^E(|O^pb%nlfpB_3PG*7)Y_YR|3JMYEPysZzu&RJY;MrL~SqLTt z?TE7)gQQ@B1u#*2kSH%G@E@~+{K$HPm4QJd9yD|d$#AS5APJ}lILonmLPZKnU>Snd z3zQ#3;^PZSU|E9I8&uMX#K))S2F$0Gfh{p!znJ{pOgS2rl@Pe|>0d{EiV`pFi zo!`K~A(6?>z`zO;XYurOVc-Y?FYbZAM6E|BIz@8*@hMj={D(&ePk0zarBpnhN;OXq>gRUe6qQuW1eq}i% z9N1GK5{^DlEy2znuD-6pP}wwyEZALOOCi$n0j@#8{(g==o*|J8?CD5~K!rk>E5vq) zS_bwEBze$HeeprA!Ja;zu71vuaMv)fXW~&6;2PxV@4~>Ig`~#CGuS)c+27H}HQ3n` zl$QL%U4vZw!~Nnxm$~|fhA^;aBPn-{aCHt1@$~nL4{{9*^$c=#0W(~KLlEk7kkp5H zy0{_&i-A2CLk=7ss21j7D01}k^N)1&b9P18l8>p##W5hn6BKN&LC&szA@Q)AY#G=K zFciCZ`XbCK#E^D`n*|FG2KFK(Rlfdyo+180kQj;w-ArGMBnvv@!5JETup0^?A>kC{ z>FyEY=NcT$z+OU>4v<5Ub(JFNf|%(X8WaTbF3e5Hs>?7`!+i!i@ZQHUG9FoZIg)Z` zf4^XVAJ=%8I?w?vt_!kYLL`{lXq~alY5YVXaECyExHugGSt*phpq;k z+2C%jN0)XA4GIp4_jLF34{}Am=)3`4A>6%iOBvW3krV~{xVi=)`L_u}4&oBfbpRgz zJ}wOG&B!W39Q|CJA`ywY1xYg0&oLy#)z2j!Vh7watw?G-Je^#F{2W7&@>m;IX*b8< zkYE#Nx@KT+M^fY*Pu9U~!En0F#cLJ}21t_wpB zbc-j*tKbwF%)s7_p&}^6IX>Lc+m(U62SW~OIU=?8A}N7NI)#RW`1>KnMIVwHaP&b{ zfC_3*?(avE2Zu45`~)O<(CrNH(^$~dO+-@X#_HYbxhuINtz`#BguR0&sFjpUtvT1mgx%oJ{2ZNMN$Eyqy zeDQ`1>@)DHgV<`wz&;bNGKj5)4D7S;Dudc;#K1lquR4gWMhxt8@G67YYQ(@k7q2p? zt;P)O^YE&J*lNtcJ|C|#h^@v9>K(YfqgLnb)J3@bxW|SgXD6k<)Fz}_N7?Wfr>nE@`jf; z%dn~gT^Wq3ZaGeM@P+|$alHb!a>V`ih@y8TZso9M2i(Q0aI1wI4ZGEQHEy+Vb3w&7 z1N$1>D&eL=RIbIX5~LvB*~8V@n}K~DZe>pX{=p$||EwpZ5K^dbz^V)sq4AK|4|aC+ z0Z08t+$vo>gB_hfotRCy)j;AMo-jA#R*CH0Ex47rxcd5o>On+wZ^f-RAjltG^){@k zok0zR0LLJ2P&*qDnFvd^6V`@^S%kJ7gtftKgC(<_g!RC!g6Y{sSP!Vv1@dMv1N&|w zRD1fxLsjn~tQzhIP$V+2??B_Hb8FUjdv!4ieS|y8AmmG{n=#Gs+Rv;==8PLlhW>$*?)q^};Tp8Gp;Z+Q(I^w})2m||Zyeggj{UDt!=SbwL;{;w! z97l_4>{qa;K{Mtmk`l0YogAIL zLA^>pm-rCJU~dNYYe*{4B;)=3LpOzhg*Sb1XRs^gqjc!*C1a?c(Yb>dv6R z9wR$PmVto_vYs(kHVbrOAQ$*Xll&s5#N=$y_1CH3qrMo}IIl-ym zjZ+Nl@v>HO3=Aw>pzRN-#l@i8oQlD#UfC05!`K-ZIJjK%N{T8W69VjsvSpz4v0R|d zK%gnm{5+^c5?Dfn3$(_on1MYR%$30I8jsBM3GGSh}XoF`d$WZvq1$fCS&lb>}1+rKf1J9mDc~Iayk^^antVNB7ELP47*p&f1Hzqvwf&v4B6hb)OH`FJ@6V%Faba8cIU|gDRiqSx{JG zQ3AgUh))Zm1az@jXkK<+et8}Pe>f;{iGYqU2H!&A376Olk`Mz)c!IZT!7f7L&jqJP zhz#r!B!NsMLBD*sZ~zm+6vy<;9N1n!fqowJ0w!$2mVQ4_fjG6d=j_mgbaX26{3GyhaE@ybPCdVnrAS-o=)em;(zB zfelEKpgnwW2_80tE|3J|a7_k*RY>B&sfDGW!Za}ldYOWN8#_W5Ozb0)SWrPS=&Gx{ z)EvkWmJ9->oCqE0vPKL7_mQN*{z6y7Adtv~+XQ0<0cCC!>EOz|lEezcwGslhJSg(u zTkT_K~p1k(8t za-hSuQ;T3{_cI6x3LxZy3X&mLRu?k}Y)2Az2hZ`srGf+zTHqHOG6)<+5{BpirwP!` z#*jqNMgRd_NE->9N06>zXAppP`Ozgj67y1WQW*pcgpn+)%uCKF%FoNJN(FB%We{k^ zE(@xU6EpKtix>o+Vpri?T9R79AP@|0SU~b8WVf#`c%`&+VopvmgTNsqX>dA$UBV!s zCyHxmh@>JQvmh08G%!AINa5siYBjnu@ zi%Wt^^HM;is=#U_322yP=B2~(`8y<8P(UXoCTE9dmSp(l2c@Rwl@ulBC0B;zI~Ek= zWF~|600xIRG6<}d0a+#jYGlUyh5Gm~2=d+m?RWuoBwXTs9fN{B9DQ7a7zFvi!r;V* zC<7P-`B8*HIg~+A03ikvfF%V%L4P3)xt;;unf*1D1s0LXPmsm z9Oyke41%HvIhQohPVS3{ zibL-(6_iI6hQ&C8paMd|KPMIL0!0+zfTGl5|D-GiK_!GRxOL1RsEj58O<#g4U~x#O z1O&UM=0R`d6jTNK4JP3XDON#Sh6UBoWD<)(mZm0`FbJxnNI@?V1uZ)&OJxw$z$WQd zl$e{!AgGBV=TelI4!UxaK~M`t9DJKdNd<$THi|GPU_qx~oKxIvkWRYqRkb@v)y`U+Q z3Q#!-k^+@}f@Vk(&dx4w`9-~RRuU8P*u32s(^(dsv-|mMbHR9 zRpW`O203(56?&m6goZS#8gEoJCDG%q)?s5m1rhe0q5Svn6iiUT^40@|!dEn*N1M^X@w z3BK_n9#KF>V3Bpr%RnfI#G(LPhDL!UzzvR&AW!h99D`sqxD^8LXQFjOg)|_2%<#-S z(4bW@L>k@&6$1BCrNbP9T>V0QAst^K1}0@A1_r6Hka$<$fRIQC6WqdK1POW?F))E? z69#4w9c0450;Vk(SV6RNBm*0Wc5w`GWnc%foPtAw7&t&I(AchHh_eR+Cy3`76yzVo zzy)GD`TP4YaD!N|dyRQOoKQb+KmTw)23`=y#nsu<*U^W855(~_WDo$+p`L~ef)Iug zgAjya!XOM{cv>)sfap+93kFdT12iBn24aMQSmGd7n7^kBg9L~Lng$B>31N@~aRNeu z7^FaqU`IDs$Dkm`NCs&T*BQc=0kJ`2&@QfSo_?+_46+~rp8$|Qlp0q>H;+tG|UDPVEE6^0O=+9g4gZ_7gREc?3D#2Z-_9c zW_K>BU=XpAM+k!2C9r0!h?fFFBB(Sk57aG$lsOC{FVN&N^U@(wkj|q>pCUpp^lnN9 zkxV5FL1?2+WFL|g+yPn22=zh!A)uAF3?dP#2tkl@K^ZqV#GOH8E0RQTNq!M%HNQxN z8bUSH9iX#}7(^U3FeKobJ|fA1hE+jbuVMy~jhYB8Ae-I%gM1xBTtl20L=I@7N`V{& z8sKLT$GTf(7(kZ?>X%PdX>Uw$aE86ggCy?Y`{7VBcuWW*q{QV%YHuFHr) zL{A?s>j?@)NK`S1d_fb3SOsm_i%1wEbV1J#f*f1HAaWTZ1zwLFA6%N7n^;r{8ngl( zH3T}@RV3C3bTNe(M1f0wGB!2w$ZA51Q;S?u(=zi?VU-T(SPqdyWHm0C#mR|9DWG(S zVp%e>BG25!^i*utr6Q|xEKSMG$EGSBSyfnON-9=WnaHYqQ&Tb%L8%IxdD#$^;0_je zq!HY=NG!=OVh|}dLIki|W=;-LTDyuQ6#zZX#xK7FbU=f1k+mPfzZ3gJf4}-{4BnkL%7ibs_bhe*}hXuk| z&{#(%_-qw$+4u=b%CR7^s3bQvuOv95v;;inA<|_D(g_|)_Vmw5Mae0mt3h&*V%0w< z)j2UaBb7lk32D$6CTheWs);lT3=@XMf#?+^N${QJ&^`I!L#IS-kOqrETJ!TtApI!O zIcPG7zOSe_Vn7(=aA?*S{Rb8H_i=?cWennz<1^EW3sRFAME|jYnmS^hsPgcpj_7}= zJZQMxKPNRj6Err&AgY2i$m^ez>I2$wAvz0H(6b~p7vy88+xK&zgdVgD9tvuMrR0}0 zh?XG@{rcymLgm5P2sYp@DuXoki%` zrZR{wK^oN!%S7Sf0=XpkTnvISc75}J5OVo`c(34>@f(r7M1Jt(`T zRWgYFN0J3qL;j#ultE4mqGjMAT}TpzrucxO{IX0?h7t1x1+oYz1vr+L^Y3;vYfrj$0u-1&DtFDTE|?@SJTb$T(2B%ph)!lpImzj2Og|kfs_Cl0KP94C0%R z5(78Zn65B8`=UL_vf7>5w7sVg~UbP(TbW0~(5e%$lU8AXFtlRDmq;jPUgVUELl8ngT5@ zVUS2iHX9@v5)uHHJd3K)CDMnT1m7$lldC6LnXQ&bsf{6HpfpkWD$2xu;3kkI1= z`v(%r!A`-T$&Jt;A6UOnvJR3v5%QoA4k&_Lyv`t5k1p+2Qh<hHpn0a!V)$g8WGPak3}hUtylVx67kwsk_Jc(L+AXIRA>%jkerPq5n7bVAgPPgEDSBm z1QpegE{o(cq?UeYQKnOAW)7&4E%_U(IIM9dse#mXgt{Eu2$NijBmoKvSZ-yI6au&D zA=oA^rAD9Zjol}p@ypm!D$ta{&E7Wj=v=M_OblH2br%OC2 z06p@HOBf_gky@5J5eg^7anK%Bn@k1Qzds3A33VY*?-95j^1Ah{op z3I<8!rY*XDkonl{hmf%JgDkp$6vr?FV95wx=x+kg z_Cu>=m@1S4e>1WQXknC^R{~N4nY&5LOf6!N+y+qwF3e!&z->z}0{5OJPlK0qp!yoF zC^0WF9b{4_(vUQUNf1S#xayL_3_&!rTq}$iB*Tyfv(X(r32Dq4W)&z+qnX1X$qyO4 z22Tw+hX#lE`^NkDJ3IRLIy!rJ`ng8=`?-etfp!eIx-dwVAdOtZOa<8t5A-AW6@Yx_ zqk`!>Bs0K1i-intLt+@E-7rTD(PBf9ID<6!?VMNwng|D#l#motp^mT<)Hi`OA)XO#<%0cfy3Ajm%eG>ag$440&92w2_)JZ=UaWC<=w@y|(RkcKSx0fz=?lZao4Yml3x zGx#(CZw49g5E5iv6N;>}OOU@WgABOFz#<*s7!(58PA&r;hQOjE#4*5?K?XdAghe(y z$TP&%-_O|WX&;y-0#UfOYS&*8X!JwcI;<5^X zW&%KG0Hx(5rZXrQfDGaQ3ojcLdIYr zMg|qAxkd~MCLl+sGVp?AF8M)M=QA>}Wafhp5K=HT_G4h+eeK7<0K&oy>?|MsK8%3AAHggShx&%>3(8zZc0ubgF-dR8hxl>BS=vG0Y3v|6@bFr=l%=~Qt|Pn zc_2F=(+(+M5jY>zPG^*g2ipcyz{H>cGDBhhVt)n(W{?@6!=DmMKsOr{gASQ5Er1_2O*0Tz*v-5m^!GFQP)+!(;XppsYuI$)52(E=1b0mmE|WWgs8 zO9nD9sDiFcVqmlYSp~X}G5(kX14vvQbbrxA1~vu;74VUTP**ZADuQeS9aOjtYzAKt z+zhY`(?kXhh!db5QU}2pd=FuE9m5M=7N%@_9a+stH=rBnT7u4T|9VV#*I!qEQ2s=y? zWa$b{)Wak}Vrw|TC;ed_Ci#?^fnftw68$hqklYri9Qt9BAh{h7IR>V)jLx9LBssAh zCJ9n^04f1GOwyBuf#C>e0azsi(*;I<&|#9Ch{Gg9L5E3lA`X)T@h^b92pZUhA12ud zK1>o8O|T>Gm{u|#VFE?dDJBL6E=V*%<)CrIj)*nn!z5*y85lTo@}Wmku4QBc9VW>M z)e1UH5)`j246LC1l$eu>e3;~Y(CL*Zheb(_n8?OSUA9m?kFQDxH&jc4wD24@i4Hl z^n=dGV*y<~$i@On58>N^(#QJblaz3^puq1E5EXvax`~ z*uc4rjpYg0)*NhyNwP$20{2?k{~@SU}?~lG59dacJN`6JRl=~fexZ%5Jo*r5@aB< z5M*B_vj@m1WO3+Wk`Q5x!z3ZXh{Gg7d=VCA*a4CtXTlGVWMcu90>bDANKOM?+rk3M zHZUpJQIW5HW5%XKzK$BY@*24+ydkAY3%9_YRqkT^5w7)Q1s5R=7?oq>TF++$~8ivo*)b|f={S4A_;69C52c9OH;k1M1HbJjM~BoVa5g5$Yj__#w^` z%N0VG1BVCb9D#Vy3RCd8k$D)3upZ-xZW7{{JjjU;@Y9+=$2g)Z2Az%wx3Cb?LafI) zA`F2YnFw}0^cY8kENEzgm}4A?(E)NO@=1%O7;c4}ED{nAa}%=aG7Q!5Py(%Y_Q5#D z5#c1zc?MXIaYQJAoW=w*2yrl8C5Ejq!$9MFh={I2QU`YzBuKFyQTU zNPe|Q7J{X~mZ7G;I&?MQ%mz;@_2|;Lk8wnE2C5H1mV%CPL?{9u|A%z!S`(5@5IKlT zK&!!F$2cPC#yrLmA&L7KM}!)z$2ek>#yG|ip$L9_0XSUaLr{)!L@0wEA%i%ou@lLw zkVJ)$>%x%3JjM}WG(|z2}tsw#re38aYQ&5%Q229l30#$M99NVzd@w^DM(I$$zngo5z`ceI?(bs=rNA? zltB&|G+SKV;u1r2eB1=j3Yi}5L>~=IO04uL2LydxyApeY4}`<7u<2RdN~Ro!x&>fj9nbRh<`9vIsLr=zbrFg-czQufiaQ8vgWCp6W;+S%fm;RBvx~4Elw%wThJi2g zF^&XP!~Fn?M9?vg1a-iD0MW6Ju=|NQ#*v`47=|Fl)d3RRfOO{JLBiTdImVHo7jPPe z2&VL!$Z zs}8hd9C4~aKgJQ8LhQ#lB2+?Kx|qi}B9wqTYp|Xh(lL$*70`|@xNLljCb3f#vyVyXeP(vePsyo%&2uy@f;YGh!)hNJ>b65|+0 zgmu`CaYV=xI>r&JN=MXV91&^=9^(jBih4*RWT63Mw2%F!2o@FCk8y-61O*m2bD50~kT+9qkxLxDrrFf&CaqxDu!- zIF4}yDacqpA!H!YFr3b1kWsfr)_+ z>f>4p8Cr(U+k+44Cl;lbF>vj<0Xn~sB?hb=sv2@oAJ>u3V5y&A5;Ttj z(+WGNkLv*H@4;MWG}8NC)+C zF)&uMGB6-yKnL}4aiR!959;F*LKlS`)W;=_A)c9+U&O$r0u~oW9Ms2c3Yu>aLp!Js zBqlgj9dx=Po`d>?K|Aw6J3oq@Fc0eE(R2reH5MiC%|1L@5GA0UgQ3ua`gp@ZDMuKz zxCOk-9DYzA?_Q9EC`bbJpg!JQaAJeVz;-$DWg-b84(j6zU_zLJd{7@>KavF05F-Y@ zizuStgZlWwm=Q)G4qO5+rQ_peLC9e_sE@AzNgjMgSfD2Z-)n>*#LI9QCsu@UkQIf9 zgZlV3AW4E2ufal)kB1GR3nT$OsE=)O;V2#1KbpK~6nm;4|e! z=s=e>V&J=vBn|c#x*7()L@wMW7&GuGbE8P3AJoTZ%Yz~hKD7$wxJjsTpd+qeQooR- z&=2b4JHU%D6SQ|PFEs~zP#>Q&ACd%QS1s(IKE8B*gdAuY7Scg|e1ZZ9Ii!R7__ia7 zLk?hqoK{oJz!xNl&;sAN%)oaPNf@F7oF)(l_3`OKs&Q~0K{{rMfo~gj3FtCQJ_BJS z3(*hi<7>q(i&zEE_Y}Jd$U%L4!H~)h>?+KI`uGkZNrTe~Y`rX>o+!dupw(}%Wv6^= zkR%WX_3?3uA=G0(sE@A{NeRk9eS8;?WIzW{p&!)8XCsa<9i#x`pgz8ZNGd=_@_|l^ zVBq7CKf={L5r!Sq$FGDCh8)z# zuZ$)Ftw;D(z~YclK|ZLDUlr^(m;};6ef(-@GKhov_|;LQP)-40;Mc$=3EBS7uZbcD zKd6si3q>5f&b*|8fnOU%7!+V2lerrAju-tAc(S_-xNs&s2BuE zf%dKPn;}UcAJoThjw%6Lh#vqtmWSU0RT6X(8DzOL1HUDz6lgm$;-Ef$D-2oinQILE z)~FJo-O->E@%U{}#bJlcG4R`>N`TL&W8k+#6@^sJ(1ZH;?NKE`Tf)J1IG~Ed&v;|t zcSMzeo$JQH?}R3S<)A)(XDn*a4(j7~K~;lsP#?c5sshY|`uN>YRe%EmHMZPQRlvd! zRgnj(B4`Als_{fsgB-f33cXMjLPHu=jW?{eeyFNo z5sIqFA5{^ygZlUbkkw!u)W;u)EDg#Ys5S&4OJf|=#~+L=jdoBUe+aT9(m{Rvp-2*t z&0fd{_3?)xOJg~xk3Sqq0mean{1I4Wkq_$QkHn$?T!u!0CBO|1_(6UA(co4Hyq^g= zd%_TLe2stxq>qW?pgsX`FI575P#>t{E5N{1rO&`1jyR|f#00l+7(p!1L49D_gn=1E zgAVEg(-sV@AR2T~ABct=)CXdL4t!(a0I@*pO&|yLfq2k^`an#`L46<=?BEg}5C?ux zABY1#s1L*e9n=S+!3Xt07)A_25QYhZFo*#Vt5CTpfK~5eM}_1W^v^0||kQf*;fe z5&#|42c~_3JzW?)KupYo`Xtc~>I3oN2latCkWgVz0I^{Q^?}$(2lauth=cl&c%XCn zzz6k##E=i_gNsp1to8YFsx-FWF?Of1hq?``@tE6yc7@;Xb1HPy+D&g zJE%{nPZ6OPy5EyQC{qbT5Zb5{+J__scR-dhLOtxDKA{LzgdoVdpdnSz7CND=ND{D3 zdqNRv2-Q$`fc7df2svtCNWe9HM3MuYMF#466*CBJ)I?|j+3W^Cs88sC7OE7;QJ}+4 z7=&`P5i+3N#c)eFbPy7dW52+ggM~ID#K9d{Yq^A#; zMLwuc=nI-S#2wI<9G; zB_gZAaZsO7GO{9E2lWZ1BCEo6P@hmbvMO8$^$BGntHO6spHMbLCAfoyc2J*Cu@NGG zQ4i`9x{4%)c2J*Cr!hhs>Op-%?~tTW4(bz{WP;EH+R2Y`P@m9uBo(L!^$GczA~a(h z)F*TmNfvajMSdQGkgpj+2bP2Sg!UlGV>zf#NWdJSAIm{~LTyO$(DR2tIh8@^DUt+y zxC=Cl20Exu$io6*Eb2jhLZ6VNFc0bz>aqms1P>*HPdfu2tqIL3!mB}YkYW{dfFAgu zKH(&!L1UPx5reQM(kL)Y7}o6(zJeqPK9mS_Bw0>kCHSB|VH>2uVvtt&L4Cq=&}1M( zilD>hgvAj9!XSr3Pn8q?2Ngy=h!1{HpYT66P*X?L6IC8Q+AjPbDi0cNM;z2Atb#Pi z3p=P!cowQ4>Op;71L>&? z|G+8<3y6}igb{}zz6k-nj%FuNEG7Sn^;7R7(@e*2I)bH!A`t} z6#7s>BL-1hq#<#TC}^-Beo&uiBGQO9_!KLMwYQLjA-+YDtVJ5g#yF@?Q~_zs8e|`A zFk7?~O#(J%D0%@&0_mVW(H5kUYOwX7gZe}jkOq!nT}049eWF!h31MOm>JxhnN+9@@ z!qbx28?aL3gZjk&fQI=X$qRJK7sf$-VhoJvDnRGuF^H*Sh`T_K2!kKgC-xVo8V0d6 zCT!+{#tIn3N|`a_kPqq;+khdDdQhJj3k$jdhy%~WreR1zk4a+?<7Y+J2O0@s5L<>J z4jQlk9n>eL%7(55T2Z1M)F(C%L!mRM?Fu`nPfVO0-5^+if|4GC*dz>j_(6SQ+#Kk7 zp$GMe)#H#s9MmWF149Y8P6Q`Y2C+m=B%=`r^@%Nmh~qw}Pt2AJtP?U)jC@d^SPU0v zP(TzegY}?3u>^=JaGMTv7GFt80qiV3v2NeaLdW++bJ1 z?1Lr>q=WjzM7Y5|f~kPT4}+K&b_pW}u}!ElP(vBSRCrK~f{Gh4h&7=~Af?->o%dV;+mZ$OttJM>Mw z5nTbubi~1L;!WuCpbjI#_GWZxqyyl@ThJvz?P2&qed4X?(#YrPh_|83BA)~&-i{%Q zc^aH}2f8B2+!W?Ped3+CR3aS^#30@UQ3Xy{;C>~nZ!SI=A_I*h@KJYgxhcqUpwLBx z-c)2Mlz5wlEQ20r(~%`XCL+bx3}iXfxSEM9g&a?_kR{L#>Jy)hEQuO{bC9J_qGv9O z43?;w2T_0sO4tC5_W@M5ElZs=^@P^s1}d{ zh_*`XlA!KA_@F-VAD9XdC-E_eMJv9bYPEt=3h1aa261~N zQCOM7Anq#y>UBU|4-*CHfjEB+9$8S@QA297!gRxuIcO-2L3}?R6%69YO3RgU8~;rNFISRQJPN08)WCs84(^7NxL*`o!%eF~b4npgwUAq_r3bw?Gf-6W@eY z7U`fqaX-kS3rKMcGXR#1U`rXqH-TsSp;a8CeCiFv2{jPkb9h8MrWmnFF^C zdQhMEY4DN`)X;+~f}Fv}AfAadB#mJbL=h;iy5ulJ5X~&madzTiNQ2oRk3lA!z^4m} zPeK~AhFJwly=dkzi1R}RufbD8gbwNxFF_i)hM5Yo86N0I@GAiM&PN5)cSvS{eHIHD z-iE|5O1oi>8luI9B5?+3@EiT0KJf~5gq@&M3m}K_F^E4y5_iRVP@niR$oM#N_+UGz zPuv)3z#RRcK5<7RNz{Y-#FrvTfr<;*niBXyed4@GXQPO^#WK9>XTl0 z){B8b5b2;k=|!om3=9l{$OrXFF9wORFfd~r)F-{9+lzsL1!RaY+ChCXs!zQb7?4E4 z2lb(gLJ#VL3WJMOYzOtpLXrWxJanM1m_Zht5ST&dn8g>A6frPz*Ls7FxoP%hV36X; z^=4q`_XZu_A{-wNx*#mx$1^x2KAwS*r^Oqz2tM8=#6Jiw$O{sbhMusJS(Tc?z-R3~hG^X<9@I(2S^xtBpKrY#uuO?$v{Gx zDGZDU86`nSl7YDJBgq(#Girj4Bm)bAk0fI}0k(7n7t)brj3>cjYar)Ep&d!ac#826 z=twfCB+8LwjHkhJTcC0%N0Kp~0n6=x$T2XUWpn@?NyY^}Xv{FaC^aoPzcjCef$$kBu?9bqjByR46f*+@7wots#@Z_W8BPG3o;CGBpKrtMo@ZV;DR4X#<&$M z!UPh59!bWy4J^dMzy>*zjBz`o5h(rz7!NUC1DOYLHv{8gFqeS~b|e|&5ym^9Bgr6% z?kG68Ik*rQuNHSiKk>6Pu7=#%_kdGu|at9fRECe}{jL8FJ6tXz@NHQi* zh%nlbWK3QVVc3ymOx_^AC<{xte~=3Ua}OwlSRlufG53O;3_qTXodr}-z)tLh<`x!} z`K+L@0A(SV6!ds97GsbUOb~WF8H+tglou5Ew?XHUF|b}>g&bL$TArMfn^?fW;sKHX zoj{seo(w*ojKvcwf;gUx#S4@lM39dsWAO%+bRt-fCu8ve`BDVqcrq4Ws5rFpgylCD zKTxSEg8O(f7JpFwgn176crunlpyG>(k*zp0JufvyAvq(lh=GZTwKyZcs6+vDXeAQ| zdrp2{x&oLe&4a1~$*_d_`1`qo*F~|Kg94uo#AjfWV0;ETMbE?0&&9`;fvt}*ft7)Q z15*FH`h^5VGH|fPGI_8wFmSo$fNoo3iv#l*xSSx|crcfRft^K!oq>T3+?s%BWJ_QI z2?;{BN(!(GuV80j5CU~E3>nx(KyHBWj2PHO!D$05XUxDZ2I8@Sc_s|(;vj7t47{N1 zvx6O)f7uyWK<#V>c8NrG1_oA;I1A`tH1;46ll3G!0|N`Vhs3}h1s1sp5&^G5VPH=L zi@auMU=RZtg5_W|wj`k=2x*Li(b$raq_H22#+Cw6f^je!TPj2X`@v{zX%JbkyTHfl zKn^=YIT(#C9Z3%nMjnRrw|4@P6lLQ(@h9?IF@(Z@B|*%OqO zKxeUm4sC)TU&WSZpyeGxt^#E`~vh!tBAk}B9CWMJ2W4n|`uMv?_}1qmLE##Ta<4v<5Ujyhv2MbZTc zT|5V)v6W${hWiY(z7*|XG`4ai<)9tHm2}x84xh@Pjw1d&u zx-nG14@P6_!H|Pmj!3P&NJ^lR&|}RI38xQ94LHp}Re%a=e?JDcek6HtJfg`@K#~V7 zhQ@I)8rwu9b?679u}wmiL_ZjfZ8DNP>^upC7p7p5MI3kr@kqP@1KU)*>LAB<88EO- z!>bH(Y?lE8+jP9jptc$^u+6}$4q~ez1KUiz${@BHGO*3Us|;$Z5d+(7yy_sf8ZofV z!K(~ns}Td+T)fJlwi+|A&BLn>VyiI&+kCvrAhsGauq{ARhB%-s*fk`?)6YE^sXSST zRU!0jGWfw`Y>V(KgPlLcwwQoA=)q`gOR%bgxCr+x!>SH+ zW(BIcRLjcq+4g}(kSt_*A&uqp#ZDB8hjY#VW_gdL2=wh6Zy zNW8-n=4RX~k-fVGw=#@_(b%@)R*ZQt8rwFks==o#WYVbyRyfFhBBZ7*RRa34T)>?5oL<4iNS z5pIs4adif^{bU$|IM0ji014W|T|M1BK!rF1+d;zGK*xZ^hlY6ict$yfc>4Rrdw7E8 zTp|&tB*MIKhyufqymFWfW01UbgbeLSwjaf+9hSSmSq&5-;DgcFj^R}dsygDqWe5Y? zal9(AAB@I!0jK+2vt3oUXqp_VqQVDJ8q8*IJb{0tq zxU&Z92Eq^eW0@~39m+7!#;yjYPqqB>1Jh;6aAM76*(^VLIo)QfmI-%d&YJLp#W|Kih{eS3Xsn|0}Zq>u-(J00Cq4M+kJ!@ z=#gfi^p1Qm8ruVe5|B%=9E`^H5TOKW3bupM*dBqEal{9O_{76|%E7MA;NsfF)hX1S zL4hqsc8V+m0~dJlHCwD~5@@oT3%r3KzsM;uIU97?OsZ#IN@@iITO3%LiOabtvm`S) zF$cD&n=M|}NREMlg$ueS9JG0=*eA2Ngn=zV){mWmfrHC6ucW9FG9kd0D4WO1z#zZ{ z+5`i-p*KGdDv<=15aDvmNlY(hU`qybC9u23BQrgNfh`5>A{nmWg2bX!@Du@CDp*L4 z0lU8$B-qNqj^zR$3<6#|##SL~A;-YLzy)$Q)G3v+KR}mda0P)*QUYC&3Kg#ci*s=K zm*-{Xr9+loF|bw3va&NU@PG{nPR&g$$jC2BWnilT3kz@s7i7Y`SS$OSje$Xgft>{u z>}&ye;)X3vHbxFKc`*lc{2Mlf3~Y7a*keJDT?UTcBsm5Ku`th|kWfdTcu>vk=u}1?)^b?$;pG zVM-xq;&FckIa3VtOgwG|#uiov280agOgwH*6hY{jc-%thqL4H3xTP_~!Dr%etANEt z5NG1?n1Uv`#L>>g1BnSuU8=yqAc5yhJQ2_)I8Z(>#&RYeujWxuSYuHF-&ez{1yKUp zq!$W36OS((lybl~je=Kn!_UOy+Y6F_+^Y-TsR~=S%9jgHY!DgPh9dqDoO z2vd;H#N+Qrl7Jdw#K3XI1`WGjUAy2x>%Y2Ba#^6 zG%M)Ya{Q*82p#CMMhyJ-k)*-?LRZ7UpU8#V1Y-t%Wo{H{^fU4JZFx}S!3RXa95)G7 z4s@CnOzIbs6#AKX{0DduW`efK!Oq0vcjiNqfNWp|mE@qCs`=CT5ptjvPe^Ct@e2wd zgSaGF4ziN~)CX#jy2VIiGp#J~^j z&!bB~&&1<55Js{P{Y*UmR_wB%$`*1nJpWVdDj;X#@dtxj4Uqhac_tqJAtY&VI)N=s z<<}EMI19AM5|-on*C0tC&cx&A5<{rRekLA&DUuSDGx7K@AjyEvdIB|5vNQA2LEZ$P z`D7!GFdd`-<4ipMg-9v_G7C~c2Qx76^GG1{fkeS);_=s_i9*lB<9~-Fj&UX){|PB1 zvoO!Z;}4TY$RnSL$G;j$0$RLf=B2~(`8y<8P(TxPCLaG<8IWa=+lav@#t86UVP{|v zK|d2ufDbGTPJD;~<@hCm@QDLp~EvKn$C>5rcp@HgRJH0ST};c#a?WOgsU}XW)5^0NC3M0DZFwevjFhG*VbtayGA(A4bGw}qBki_9<;t3cd ziDI0ICt!jki&TSv3PDI&FJOwK0#powq(J4PfEkhm@|k!7=BN^|HSgdv@dPYTB|(RN zLC?e!utb#t?Hop&i6>x%Aqzg^wIH0b5iF@KJCK0(PjP zkjfc)CZ2#jswAjq3bw-mRXjMkC_g91DY1w_z!6mjc7z&(fD@VomNW4LoUy1uI}=a9 z1yv2knRo)Os0uL8#1n8sRRInN)Yx)IRRIe_R7D=Bil7mIs>Tyl4RYwBD)d5C2n}ge zHQuOdP!bBNN*@fB;6#I}$QM-+JQ7h=`Jt+UMJTEwe^f=-&cqW4KvsisCZ0ebvNR}r zpxO|GERAs{opL zkrZH@i6;<&MHcx?Jb_3o3czJ(6j%Z@I2I2-6Hg!-+zNsBGtth(6V!n8F>#!UCkXDP zO2W^?19f}_8JK<;GB8LW&cp*T!7Us{5DRoB9+);^UAc81o;(>%fM#0a-0||i6!~@fyYL~$S#Kb%kPYUf!JP;p#CLV|b zI};DYhMkEAVk4c22jU{m#6#l2&%^_XfyU540u2B886dqR-$c+*1L#aV;k~k;MqktC9W^i{;F>-n$$EX35O0s0&*4|XqPR6@MeTK zxC4uPCZ2GyE;da@48kk*;1cM%j2MLV^x?9|XW|KeK@*3#1KP3|mM}!_Pq+<99@J(?EiMM- zR0iRvND}bjF3>O<=uA9e4-15`sAu8{e?pSNJQGj2%Mzp$Jd_MRSPc10JdxEPIY_Yz zI;#$RCZ0$V(x5R+)QCYu6KNC}CJgKLh+ILE1fTx{I{gcFCZ325(qJ)2EBs76kvV8G zkRip)l2ir}am0Wy$l=hV;6(mGg;CGEgP(~f@{bMF)DgpVCZ5QDs61%69dRa}hzimm zFYHV_ky)sMsAuAd?B_rUJ!lskekPts8Pd=%;?O#9HiDgrCnAG1_KQ#h>8XqSz$ys~ zh>u9)!U(P4Gx0;s|^up2!kjgoBaJ#1r|6RosX{Lp>@V^kNfuNM!Op}JDFYAbLXs#n#lz3U6ZHkTSp<{<@Slk%_7N2CxD~?Z zTf{zr6haa`ctSQ6G3W}5wgV-*lWCF?+ z;4|^Wwjm`BP+-8?yJGD~kq&Yg_)I)8Q>4fSi9(!v6N{)3gIEC4AU#Mi*ooJWLLVw< z#2{viG*%801r7GY&%_f;L>kcs9~cF(_7;*b#J5P2wMYZm7-!;%DIkqmgY1J1W{Z`g zNkIEi3}P3MB#_R;6Kg>lsRmmQIulP!0cqeE)SCmJlK4Og!<|pag#f7xX;8Bx8(xsgp3p;pNS_P z!vz`?5QEErh9V%VC{j~ko@NkFfT#ku=|IQcA)SdQo{nrbND}ExJn^%r8j;Su6TgC{ z4_S_v8|*5Web7XKbS9p-2shYAFck==dSRC^Vi4biDg!l?L0p9g#VDw_5rcRWssvKH zeTpgrjUPeq1P(MTL0K4fCZ4z+FW5hjP{uqHPofTzI}!4rW1wJX5iv;Aqe~;7ttQcc zE{k@)nnWYI0+8v5Gu9-U(B(lLMuhFn=+a1Mtx2??OM=?N@H6owTG6GEkFb$wLzhK9 zbWNfiLl*PkHHi*%MUc5E%ro&MI&rB)I*W%vq6?x5oUXwAN?6}qVlqSq8b>H+;z>+F zmIH+@BJ`#rOQFQuG-Mg{IGc_v2{I8WzGfiHp~lrrWGUo$nuRQZb|#+0Y-CB)2%Li~ zg%Uk;QDm@0%{+(#L{P#8U?k=v$w0>_;K7W%!~`k`s*f2Y6p@-(Ad?V5T#qILIulRg z0h%Cao(btpJc&}IMj6OBRC(7528pFe3qFufzGIL`L29)j%YbxUK#~K+8{$kn2}h&` z9g36@gTz5xa>fi2)<{i0=t*v%Sci@zN$f|JMn4lz!T_mZ=$xOD>X}zul9-djATb+B z0(2&xgf3FE5amofiDgJF{m`OJr_#)vl++>yiQiboVU05h4Wzas)aBropu|!n2~beL zPU&Kh5CXU9AxFA9A*fj znFTsIP9h9xFdO7C$b=L4OgxE6NMqJ8t3at2%^U^^e#qc8cxs5ynRpTmF0b5f7KNC-a7iqj5 zR39Rri6^-oY2Xbmi8vEak_D+Q1dSPh2J2yG;z=&UB?&nbPtpZEZU!D?fu4yc1zGL` z4h_%_5Y#jAq`^Z-kabNcvd%6+{=N*-;2HyqG~!G=Y49)v7A4>_@ub0HNLXZ1&%~1k z*DzR=LC?gK2GA}#FGYB16bq{XW~hNOMNU#psTITKH2p|>vsgAmf0cruGX8vq!Dkk7=ESqu_mVPL^H z6HjIdr!NBoE65NLv@`K!Rg--g7?4E4XX2rYLeIp53WJMOY-i%hL6QNwJanM1m_ZJb z5aN^bb93`kQW@msL5ta?HRN@={1_O7@{7|l@=_S&b=NR3K)9JXsSNUZpfjXcgbFeX zQj;?nPdhJTfJz6(taBj6hl#*%?)2 zO7k+4!8RL%g%}xBpynDe$eVy1p~}Dul9}bl06C$Gk%1*MA9UUtgS_c)Uj_!=&3+6F zAS}$l&a%@Fw8S2y7PitoJ}EH;rrvvnA86@5bnSfsOgI1{oRVLjnUj*7Sd_vbp9^xm zNPJ#uImEqr5I$6AImnx-d1Vapg~;pgB~b;_$IDD+D<+Fn~gtg~7|7?q?3dVqPzqLD_|Yfhis-F)%7DWME)m zWwx+zWMGDzH^}f9d^lnW{T&KA+A24(LNA#?;J5<=8v_GF63D%bY#<2+CKh&-!>yP> z7c4SC+>AIQk;ws+ompUKBr+vk!hJ>}Sc;T05}8&oDuT~QRL6HlBGVqmji56U-2@mI znD#P)+=F^XBGW!bklWGENMza%7DhfJk?8>Ad(atqpu+((Qy7>IGAghzFsOjI@G}yb zjx!pdo{`9O0&FSD8Hr3M!D86YNMt(2_!8F{iA<-#a#+tuWI6+ugPoDcbe7Q_>lukm z=fLXVXCyM6XY@rrBa!I>V=(d=iA)z6BazQYWV!_Aqn(k+beXXg>lukmD;ZCK&qzE+ z${C4FYZw)w#}I-`V5YT#YAoHMSBr+Waa}j4GG96)j3_c?foal~% zgB$sbM5be4AhnF5>sHDSwMk1>Z$d{OBB(nNK#i5lx?2JTKKTxTP=Zr*Fe^CB}c@FuEMAk!~;)~)l z64}f_fe$$&kzIoEEz%i@?0t;s7-uB1$1?dN&PZgB1M^^KB(leYxu7!=rP0nvWKUoM z3Bk@tgAaU>+i5x*7ChG;ziHP7HGXqBySmXgn1iUJVfg=$t@(Hv~3EX)D9oGTf zo$nY1IxUESJxS;^LK@?YMD}DPY3yetvZp|lV4RW2o(hq`enujD8blWCF0h-hoRP?$ zj-&{5o)X#_iR>9j@}OPgSkFjg&%~n&dPX997Lpq9A#!-nNMz4OQclDfiR?K@>LDlO z!4K+U&&7}fhX?4uIQWr;?0Fc9FwaP2&&O1R^Nd9H0u05VqX$7pr-07tV=u&z#&Vt= zdl8ZIKm#kT4D1z1N+1Va!4$wxonx;=QUi4(wlfmhtB};e-33k%@t9{M zvR5Oi#&bp@dkvC0aPmeZzgl!Duw|&JuMS-eIJ3diNd=XC$(>BB{YVBayugt2F8viR|r2 zir{AhfWtLDB*@V(*b{UF1Os~qk}~M|Ebwy>**lRWA&Ckh*M%X6c19w5H--xM8HwyY z7;;d{5vjEoNeNUEdcq+h;q)P?0s9TA0#s1@`!TThBguo~5lwyql00Z}JdQIG*(V~Y zLq8*teG;l9`WcDrlab_MN6R3*Fa?V&mNOFBr{YxyIl<3>fqfcYWsnp63>es_<5dO; zzIa0h_8EB9L2NZ-V4sOs8N^mY2KHHal|gMaVql+*R~^JwBL?<4c$GnHHDX|&i&q)c zR$~VCd3e=9Y&B+JpO04=#8zVl_611F@STy!z7VTI=rM)xGYHui;a3JbijI9T0d>$b z64{qvRR_uCP|HDQB(g8Xst#1-fomS37csD}!L1T*Dn#X4+$uo|pl2kqufwej z<%~r3^@J3H&q!q7fK?eNLeb7hWZ#HeCG3nu_D#6eK;j*qFgN2?iR|4ixRqg?k;uLk zw_?mQ64|$5RqgB_d46^Sh z!w{rm;{XZT5eEvgA0(^|bRr;8XC$&8qQEdDuN)@B7$h$pAwxTo?MJa{hvhC%8jJ^p z2>6Ud_G5SzgQ^bb8Hw!2@v6jrMk4zOyqd6_k;r}$yAI?t64_7TR)cazBKv8q3bCA# z$bJS%CA6iBc19xmStKP`&q!oHhol19(FK?3uwvpol04=aiR>4Uq;Z^)$bJz?4Xh!H z^^8RJOGqlQo{`9Y8A%0>GZNXaU{M2Vr6bNrWWS1}1ngb3V-OkGuOX>GlSDluk^MT7 zN{llS*>51p;yojg{U&ym$Y&(7-$GJ@|BOWT+YqIwCm=d|IQqG}LT*H1zbOJ9Ktol5 z<%~r3TL^`qz=BlJC`R2zr~u_ZunOcO5ZUh_6u^x@QE(SkLA;~0vwx^x2&i%e4YV<^ z-@~l{c19xmeS{k5>4u}>cMiR`hmnRw1fWRC+&W1f-79xrQ&{ftER1ldsZGZNVoWlOQ1k;t9|mVlj+ z$es-5;yWXeJq7F{5N473R!!!GZNV=W&dM4BayudERJ?Y zB73zg50*0$*=xYU$Y&(7*UG+wo{WxI~abY0z4BH-Rix#=x^D1AH3dL(ma^&=U&dA;%^19BBqib%III zoE}Uo?6^dp3n0xfQTTC*JU2laVZzYk5_ujWTLC*Rk>@qYbeK}eafv)%LC!=Ridc}7 zSdx}sl*_=wz}Ss(Tp|xAiXim3L>?h@QOI$LJkl8A;Nuc`RKVg$$0hQbg66v<(2h$4 zi3v~LuE4+`N$zope41xKVGTdV!YQ#h6>^jXe9IM|7DNeX|7IxkxJ3SNP$B}aZ38d% zhaZ>7zZWC{S;-0B#0*=~%%2NRcMuuaUNeDABtgV+i2?yk2vd-cOBCowl7Jdw#2|1H zMHF;~0fRsoGr|b8;}QjUSrBqqj!P6MK$3?YiYV|JAqep@T*iqNVH{*#C*rt7felEK zpe2N`5ES5HL+AoYK#xllScN2xaa^K+8#_W5bRE0EMt6AxS{?Hp7lf6iDYs$blBaAsv?}ASi&4Lpm-|U^|jHX##OvqJS=>Ed*YlhjiE#g8;N^k1hc{E>XZh7|BBP;}Qj0 zvCD!sBSVkSdWu~IU11k_ynlh@dk&7zB7E z5c)u(;NubnYSBcY$0Z89LlVb0E>Ylw6p~p*`N^rp#h@buKv4lcvMfv*A&-1qqQGh- z325<#I4)7(9g-|4ppz1lv%@n>GW_y`Qd9FviW2jZD?{=f3kq^Flfj!RgF_q{1lG!c zEQ73n^$Yd!VG!iK4L%gmF~rj)-q$fG*u&AsHHblw4=fB$e26lDL69Fs7?eX91O*Uc zAOToX5EMj+!;ec86ha7s^FCa)Fp>l;gEI(*vp5(TA@q_7;9C@2k<2ZtUgNEifVz;=KIz}{vM zltqYu3VhgciGp&d;?P4?1m#hMVKL4isDO|_IxbOA5k(kwT%w>7LKt#fqM$OG2(%s% zQ~`@aLIwG_L_t-s-(V6*$0Z7?p~)bQOB7T`k%FGp06B|+K~MvmB;*hVK}{4n_;HDX zS}5Y+)&3T!vJ`VdiYy1+ax zQP2QM8rN}&f`&+nkd8|fG(r-GAD1X-j3kP2T%w=}k}OgU0xDo2Wxb#&k_u2U2$BMo zJ%VOP63E9T3Yw!zz_vqxk4qG^K$QfY2M0YaQP2`q3bd&laa^LH6^1PMqCib5)9=y8dH_NbDejrm|Z98ksKC+#r^I-<(J zPS;})bV8Fz%}Xsx%s~w#XDn*aj!P7DK~;lsT%w>Wssha85(V8*Re%Em)gkVvDqvxV zs>lOX5i|l&)p(++K@MG1g4TvXoM=!L`JyU9|C}P$UV+ z?lt7&5(UGMrLi2BC>V~U0OPns!3Zp}$j2oLMq*I_E<>Zh5}K0xI_>SbjBfrBZvh%E)l|p9+wE=1i3o;y1KxQLUe%$q8yh95&{_o zQ{x5_03DYIrhS4vT^Kw-Ow8jFrO}Q{1o7d=C4xAx;}St^r^p~zHwFd=5F6>ZL=YEo zTp|(=bULD|3&VeYkQlz>5=HjPf|56+^8{;|h*-%Z1VQZ*=&pPQ5ibRV1lnj#5Xn@+5QH}BMD`&`!5xsLj8G3dE>R>x6(I<6E@;>sbX=myRwN17 zp@bq4Y6#U(cYyZRGl)29U`W6Y}7<(0ojZ=E>Yxw7OE7;QQ+ee zMRK$eGN3))a7#FJ5E77M3c*{nMK&YE!5vuS;}S)Rb+KtOVh~xW2bVzCWyBz&rw^A! zJ}yz@3z|5@9nhA&h=d_Rmv3ruabkKZbWg3wWr!4b-7&V~5=CN-{R>ISrM+|5=ByxRpB}=Q6wE%6|UnFMKY09;X5u-Bpad<+`$5m zG=lpU;NucSij5EfjCx$6$W)L#d50v0a$KUwBol-t(0K|N$0dq< zM^b@$T%w4dDMB;Gafu>Vkz_%qi{$4qi1?ZzbYM9yQDhI2JeK1UMFh+d`mr3BDAI-` z4?P76lv5c*o+3%Whr2+-XrSW~MLaAJ#)8H=Ae$ILN6CtOLXyHfE>Wb*5~LG6lng#| z4*9r5(bXV1NU;h!#t?j5qG%G*pfOC;h(S~nX%rYH4D0rYUO|!s9}NXM7!Gz^qNokh zU@=H5{J2EXIcPGFAw|$}iK60&0b!8Cp{E3j{(}nRI4)829~-EtgY&pV(f?3+&~Q8A zxI|GEq(NTTafza{Pz6zsOBCJDff9PqE;#(SMA0&&pXM%X`~u#J?OYZaRsD-V^|jvbX=l%6<7k_8Hn(dB=H)Q zK=3JrrzMFuV5P{%B})7O4f8>g7wD`tjN=j|7#Pu2fR9U*P{$C5ogN22E>YqyPBjb? zX-wG61&tLjNR%>T$RQt>D6s)U9`(3H2^JP~0}#i~Nle3#gdSGMAi>Xyt`9U4!XU8> zLmV_<0Xi;GLX{0&3$&s{J1$XT9)?1c;}Rvr+0hMx1t=)#F-T0pkcS_aD8bEvt`~Y- zqC`Co8N_jk5q~j7L&Z25WIucRh3YtD-IbLqCt6=s) z6NPhrPEKkv_*6;>5pJ-LU@Bno!yw^>UBZY#ViT$i)KCTq6&@6$pyEah5>2QQNa^+| zsth!KAQL#yumojc*l~#xdc0u&K*B%RDHt@l5gOzJ>-S04L2@TT9&|z&?4T?L$$E5Y zrA7IaBadl-IPqGT(&H1g?2 zl5Oa+$mj7%wqwX*p2;WKfvyNLH-&jzqGTs7l}N`lF-UenRDshKxL*m6qsb5%XdIy& zmnb;}Sq>Dsh|rsgEQJzp(~xD*<7_&zB*;Xh_?m$%hZE%-n_6p=wP1*z4BECbSY0Z9%NZ+@xi z`6Zc&C8-ROjz|qU6e%MH$%DA$j2R@Yk(zwaL;gUq4joC7+>a`aeq5rY0aC*d`M5;M z*+>$g;}Ruxk(z}l$0bTGLu%=|1aVDvO)OLir9NZF=T#6(C3JTZ(ZVZw_ z;5I#^83fe=QUK9biCq%Zy$2tcDER|Z0pdJF2FWO-Rx8wSgtQTZBy@Q@%5jO3rbw+; zP)Y$EIL9Dqk0c5!a~LFjks7fuQIH;p^Vi^!1*IJ|q$Vp&H!PWhhSC@$_v2B)Ac@?x zMb{59KOAX=1-d+VEKX7i+}eeNJ~kDI;}RwJVo?e^E>Y5664d)bH3#LmL`e^%wHOGS zpvNUjZo(>ybX=mOA7s%5q&S8d082)&r3{jrWWaShsw$KMe>1WQXkmnTT%zPQh%#_t zhG84@xJ1d*;3XZXzQ%A;Cen~JhDq?_5+%FjFhdZ{EYP8Xl3_@L*&vTWCY->>B}z_0 z8ncF31xmeW<}gU|Lk6$GQ$vJ~OOz}@8o7p<3bGj<=tuA?0Hs796-?hDnF01$EM#~a z5_c%=hB<2BSOrH0io_YD!Ef~A5+y6t5q2USmniuRN!%6dafy=4Amii6;e+kCL`h?$ z0dw@@5+xmxBvFq`lw67=1u8CJYf9k9B}(!ljkkm9L*(NUrM4ptyul?A$0bU!Ak~GS zF$2(GJ?ywdsb#n%A;%?3xq!#bz=JHoB`N+nsSMJPY<3UPL#f~k}r0|W0RKL!R62A!RF!w+=yA4n~1 z**ntNi3;Awv7Mc$5C9QIIxbHk7vy@x*@+5y5I*|Zi3)|ti}B%SCn}U7FWrZpov2Wa zvPK_rcA`QfNKj4>bao_mm7AZf+i z%)In+u&Y7G`sF58Ffj6fLXnl(#=?<7F&-|;2N5;-;J~059}m%106H{^fl>4?D9bR5 zOmJpU%B_sgNzTtJ0~^V}C;-w0J3o+d&g}pO24%714h$d$gNnZZ0|N*%axu*HWnf@o zuy>^Ud5kGJIf+H-WqQdB3dbE7m>C!tI^7r;n1<>xhb5!O9Hu4bm*$l)j2?5C%0Q=M z4#A0T^q9jEztUWW(PIviODYRe8AgveWMJZ8&&khAR{#?zr{%JQ`uO{~gV(o>9&H5tM`Im_z($8w%h)+mM0Wvkhax zM;C(DFTmGYz|JfFv*Cnsoed|9=WIA( z>}SIX<31Zs80Xn=!nn?c6UK2ioG`w#;e>IW4JVBEY&c;YXTu5OJsVCK_t|j5gwBQ& zCgN;3VIt0k6DHo!nn_d6UKQq zoG`(&;e>IY4JVBEY&c;oXTu2-I2%rwz}axZ1kQ#N#&tHFFy6D_gmIq@Cyf7WIAMHe z!--%!8%_lK*>EEG&W01gdp4X1&a>e}aGwn)g8ghb5dvq!i4Zs&P6Yeea3a{wh7-Yi zHk=57v*ARDI2%p`-`Q{?c+Z9t!E-j82-dUVL~xu9CxYv2I1wCY!-?QH8%_l8*>EDb z&W01gcQ%|Tv1h}H5qmbA81A#-#PFRBCx-iMI59kD!--)%8%_+@*>GZ5&xRAjdN!OG z_Os!{u$>JjhV^VXF}!EPiD5q*P7L4KaAJ7Rh7-eeHk=r)v*E;WoDC<2e1Hb{P$$sY zaALU5h7%*C*o{4aXe?kiQ_pNPMpBmaN>l{h7-qk zHk>%_v*E;XoDCK_n z&xRAnc{ZFlQD?)6<2f5n9N*b+;<(R-6UTEloH)U=;ly#B4JVHCY&dZoXTyo(IvY+L z=h<-LSkHzN$9XoKIDxa_B=DaNCxQ2DI0-^$!$}Z08%_fM*>Dp0&W4k~e>R*1-m~E( z+8}3yK?W{BN9G|PJ|;oT*>Dm>pA9EL)Y)(nIM0TYz;ia71n#rpBygS$CxP#5I0-yw z!%5&i8%_e(*>Dp0&W4k~eKwo~&a>ep2%QZlf%9xQ2|Q=RN#HsgP6FrIa1z+ghLa$0 zHk<^(v*9Fgo((5~=WI9$+-Ji{;5i#k0?*lS68O)ClOS+5oCL13;Uv({hLgZ~Hk<^G zv*9H0pA9F0>ufj)oM*#H;5!>mg3#G;68O)ClOS+5oCLPB;Uuu04JU#1Y&Z$LXTwPl zI2%ra;Ms5zc+ZBDKyKQ?PVEXPf}E)4TEQSe@N75<;?IVYz;`yB1i`c6B=DXMCqeLR zI0>T8hLa$8Hk<@;XTwPlb2gj=F=xX`5O+451d(UMN#HpfPJ-C8;Uq{o8%~1I*>Dns z&xVsA;%qnxoM*#H;5r*l0^iwi5;)F=lOTLHoCJ|)!%5&f8%_fE*>DmB&xVu0cQ%|P zfwSQx@tqAPN#JZaNzAk1r0|{%CyoDXIBCLX!%0I91q1IEK{;Ixd^Vgk_((7;hoqsN z4JS?DY&dD+&W4jFa5kJY;j`hSi8&iin$X#B(j=Y@Cyn!LIGKf$ycigSQp#af1A`2f zv*BcLo((6nB*2S-ffZy3`q^-@s;j&h7?4B_K_|wci$c$ag9@Xc{RTT1kwFfU4AAA_ zXT!-s5(4}801lpgOf)+4o)81ad7g;$HB=%j)Rkc z9|tE7KMqa;b{w2M=5cWHCLl*ZkAr*Y&A@zBa?m8IsD zG02x8uXctW2Pcp1I5>Imad46`u;bw5=YI2HV35K%4o(XFI5=bh@Nsa`AT#9WZ}MSa zU+aG9Gv_@M$plN@$q@6hsEXOCucLrFLLw+1)#ex1A`301hnJe zBaHIr3D4~MJ0O4 z3D?6N|Q?% zZZPd(oX^C-z!4(Iz`(SZaTVxbM$Vk%_~iVQ)PltHR0gJfjI$UR7+4^JIXQ_Xsqx7L z3{3mM!W85np#LYXNHOa~eHSQr>oK-}cSlGOD4qDls)PGDK2$4y^6~RDyx&Jfk%W z1H%!{0Q5EXmAG1^KFo zf$1`1F$)936$V%|7+5~yCL^^6ypKq(?I-N!lJ(}jVJX)|LH$gpys z#Ju!UaHMZx1f@3y&T?naJ{?fRZ3T-kfkaYL1Hg*5frVHYSRv*xZD&+xW?Kj z8e|^CVg{zeU@ik^IZWUP<3(l$1{O%7I|>eN4$g8!3?Bmv@i4HlOkw~9%|0ylsQoWvN| zSU_TIEFfRAv0MY&7smq1x*TxhK)IBG#g~PFfh#^fCpjJ*xhaVyi41Hk$sn~HEGhY= zNuZp-!jhJgpIE}c#KQv4pHOkWcxdH-l-8MxK&hDr6ktbT&SGHTi!ZJ$j!!Kr%E>G) zVPIael?5i2ms(WBz`PU`7;xhfi_()Bn74ooLKZ7yVBRCd3JO38FbT2)E)UsT!+gXT zEM*BML9qf;keXMPS(Km0z(voSCT zg2I|XC_chDASB)qykCofht+XD8v}!IL~;T6Fg;c$P{L#o4$e#movp{}4AR2_mIf`C z&Cg?CbunjSVBlcj0U5c9je$XgfiE7U-7&c&Br%DB)g5FYvJg1yF|c}oj6xO<&a6sh zVD*FuyJZ#?m&CgTxW;?trBpDmdO?K!N^?Pi46NQDJ{yZ9I|BoIylaHBYXEq^8T2~S z0JiCzhuIkzI9)4}Qwu!aWMniY|b-Wpo+k+G&d==C?K&YF*mg&wWyeZZ4TG~0fZjVk^Duui6E;P z*yeIt@qz+IltnDw+21e3H6n!J3=-oUSPq3~b_H&I(S~6%%;PHoT+F~G1Lp4GbcKeIESP_Q)3vyO zflUs~IRa7}T+F~G59XfWbgd{!%}Ys52}(`REQUmq0tXW>1H%~xW~ayyR|fWOP?5*% z67C=5!oc1OO6Rb=46PA4R4O<@IR;cs!lcR}l_iHUND3xc028$biSmF7*e#r(2xnQz z$-uxDAD@?64yjZ*JU|jq5pcE2;RzKfD1lXa9A2P0k1syHpafR!ad?ATGko#!={fmH z;6;XsIjNwgX=yP7hYu((@WsO_#N>>`y!6x*1`c1SIOvezOt2F< z0|PVSv_(#HP(U*Wg!zMN=wF~r$_hG)k%3Ku@iqek1DFF5c+B{mfq{XWgY7e;JU0Ua zr%!%)Kw?n|1KSrya2DZ^1LfAQj5oPJ4P$N&w(pGYDC&M7tNRI6ClT)hK90%LFT~Z| zHHd+O?Gs}IHv@y@cP<77sZs{EUtrs$0!tH9AlCh1e8vTK8Hzr(zhK*h;z5H23<6xj zcexoDgh40&8!~W-fIJD|88L8)f@)tDu$(aiml%l02IiSCaEXJoaWL?J(&AfgX!Xs` zzzjB(OJW)~0|N_4oIT#n$KNr;)6YFV*fGpC-Z9A4k)eR?2m5s%Xc1DBpA(*6l)}LF zlN}s9oRB+bAY#A3Vl12?iRlo5-(Ud_PVhPe|FpE?)Di}^KVU%~h+uFk=sK+YA_lg< zU||7Hkmq1Z|AECsz+woM|G}aXoUlyiSd^N`z{bD+@$ip8I7OdS8X86Zl9c^Md_L5-yUj0~)>!jw&s<0v}=18V?WK$*jY z7nFBF%6WEkF)(=XLIanNffb{^V4KGYs!3P_Fl82S)`ATJ=|`?<0{lTKC@7eLgKaD4 zQC5#|(PiIFTbR{VeC4T<#!J&}D*&s=mEfpf+ z=mXUf?Cjy{>lzG|O@qjS-34|NL>hEdWU#-VqmO4uBm-MIk|Iz`0(6ul$o&wt3~U)l z^5A2Pf?R_=eLP+LoFn0`VPMO|qbk5P$kX42fh`M34d^C@cxQh{AJ<@KP{sf|59LTg zwrnKjt`V-zq0m-BV5n!1t4n;4Yhb8ra0vVeL$(|w^^j8^VS&ZKmWv^W#lk!cMUH-c z{*jJ;&aMbs@-Y>;I0l4xf`ZL8$l28|1b)g916u)xVi!+egjt0c((rRC;m%`VD?(D` z>+k0o;vWP}AO3y}Y{f{jpkYsESEwZ994_ejmrg;R?j9k2uED_!Y$ZhL067#{S1FP% zNa#9;1_gn<3v&~)>M{(~aGzm0fs?HqNjc~!3V$D0l;cWV8Q3b2lsNkM_=m$4fD!^I zMKG{cBB_D8(cdo^WSEb?vo|8#tB};e-31Qucqdm6$1qR-Af%*SjilPo-!C4n!_zMy z6e<1HAgKcYj$lwrH-+0Gx$4Fm)7gq+hP9#Z4qC&`ZVaNqTy$U)&$2FLNts6r{P>6GU zxTCi#16vP<9Mp0|YVAc*0+nI~*Nb;e< zu0h~>&&|=<6;0hlBy~QXF3vvw!LG1=CEFxaN&f&>XdMO)2nM#vNb*jg2oFN88Kz*7 zMI0ju@kqP@1KU)*>R=~uvQ5LQ400-^0R!7~yvm@q8ZxlWz^e{ot04p1OuWhnE@`jf;%dn~oa1C-pRks|cI(WkXxwu||Te*v?bC9cJFiPpZ61Q^r zQGu`!U4>gM+-R8E)wtEd%>@ zV_-cYg^)sh16F0A2t_-AlWikzl`fvaj!r(V3~ZZltAWHjJYjCetrFS0TW~9LarN~F z)q{wdb}Meh0YU!gs<&ZP4L%kS^E^p}CEE#WL&PjX+YZ9o;7JFT%ytsi1GfsMXBS~T zpiURao52ihyNOWk=@$=Gy@#-BxF0}~$iTLjunxEnAUgID*5T;p=IQ4d5*hE|3A*|% zG9GS(o1=4xe-H!PeliRRLB!Po610cAg8B;Jvhg5cZJ_feA!jW{If7bTxV>hBJ za+nNbki2w+4DCp^AH}L2mb*ZyDjpOf;1f96j^R}dsygDqWe5Y?al9&>{rw=FE$2w& zs^bJ+O&+d}EG%71I!7|Fokdat?ySMOf&PBb7WFwK70`|@xJ-u?6X%iS z9i3gAq21tM|Ii?3R|d8VNYXx@F2UiRACuEDN;Ap0&OsR+h?0w>!QENak|G~E zXK&E){C+O+A&$Y`3~bksRG>-5`}v1>x_LT-GbRJubtILJ0RcXap?=OD@sOSX1KSNG z*#Kux*9eebg5$9?=x$(m74{~;Oi4XP&4FPq48Q5+^ zlm>uw!&_63D1nY+-4p>2prNX8@dw2QH141ZZy^+d0t=kEP*vPUr~u_Zu!`V#7sn7s zs1bJ%3gAYdD7cHNAl}j0*+0||)aZqpa1XZv*9fSZ`v^559#~J{WP5;60&=OZzaMDa z4%*lR4e2qkJwzyhngR`fR6jogD-()$^Yn2AS4kY~_l_trFbJoV`{b9qB$lLtuE}O# zzYiXJ7EUSm$V|^b2tNP`voJ8jwX;8LQDR`=5AzHP33c>|2h~`h>=6gVDg z6z}Wl9ONJD?-s(q&C3XiJZ8TTP*{fsGcZbn2K{9?80Br185m^KO5%%?6LS)a7#J0M zxS#@%g&>SdAXhRlyM-_?DhnwyFvz(F$HQj@p~JI`s-V$bR%QijN3cBV;4PyXXb_o| z*}(!L3)dZxpP2`qSz^?9z{|kE%6vuEkwHE_zBo0xv?#NrGCny!KRYv(fl&uE3Bt-; z@xcL$G-wrBK~8FJYF-Hgqb@{c%?Aeth4}cQRM4uM`1Inm#LS%1qErUPj0eXZ7}^;a z7#QbFR$*XJ1mBqL47DZ$G|tU5kwFe-Z`NWJ1_q{y8A_%n92h)Q85sOk7#Nh9N*EXo z7?fO3I56a^GBBh=#URdSQ1LtAz%W^rfk7$$gag9{RR)GmhyoTi!Oo6`h8hNy^b-yY zXH*#&7GKhoRq>2;(pqVFlC>Vj(4uKXmG0p+GMGfXk6Of;kIv5z_ ziYtpjiw_tWO+nGhG%-M~Ahjqhxul4J(F`<4!!$8MDgU?w!yQ!y25D7@SC}RSFsL*f zcVPIh%D|w~aomAHPK|*1{*a72KD*J9T-B?U}_^67&O!c85n|7OG5J?>w8k* z@#&VCQ<7T5z#|G$p)py2fdRJ~5s`oN3U_JK)IlHg%uVPNHJ@);<}@j^84^fEIr zfYx+C`S7K3ATc%;kcZe<9)s=61}%SML|-Zwg>|W10Sf~Ie6ba?{Ztmv^z&@c`nF{( z3=I4rr!xqkF1BKJe8;&=}gCKOV6|*x)4+~fty4Z@@rHuu=*a~Fi zPZkCSAqHXO#a7JjAOn$wz=b&jvj@m1WO49fD`roKFxp}(W-o{^Y_S!yH;6C70$Ikv zz#;*1CbN^jzYhaTGe`=$h=!#XB*6q*B*^RoS>?epGl`XfK^VFw4!X96Rb?A^IUFco z!K9$8XjqLwQZPZ-+8S1SkSGr*Mn18EJkIhQY$~W$fUK=y^#Dl-Lsr{>*VeFlLPZd3 zYgoNNnM4?QZ4Ik8D4PglU0cKI1M;6R#@ZTIU#K{!g@d%VhSd*L)C%KXTf^!P%Cs=g z#Um}4WIY5*@#L<$0WFzfiCVjvzHm}kPkAr8{U!N3E`22Jdstpv;r46r3D z91_~>3=AwFaZykQ1It}wg=Qy@w()-tfCLL{)SWnfQ( z$b#Jko(Y4jPXP6a;AY30GO*`kD#E#zfxQ4j zF=&YZs6Xi+8p6O{h#`$--kH4!Nfm6}0NC~M{(cPX#YnQyAs&b%WQ+%MEdzTAQ93{l zMOvM}UW%j(61tG#wUBt2n~+tPVW@`t49i*u_HrcUut6-CI#3tbm4UqiNeN^^3Z?)) zJIr2*qz39nY-<_VtB};e-319X%(V>c)kv!GtYu)YK~e`!-iYK^i!KGW3^n!Dp{oIB zHh5a8N0-L2mVvziT_LIuL6$PGHzFwl&w(T69@(2P6fCk>)-te9#j6f7(+<8(6j7PNEJGLvnQ1p* zV4sfHG)VBp8#1uZz^e{ot04pXOuWhH+{#eaGO({Fq!7H8fqes3WuOQ}Tg$+{5w}X%S_bw_xYa=79iA{Z<5r36-7UD4 zVXS3f--=r?=2`~!ZCF)wx+Ad~3~ z?8ot{#J-k+{RCc3Sk^MIpTw>Mc`XC`DcovM)-tf4#;Op@S_bwrNGhQ%U9`0f>}Qdb zU|q|=ehx_mw4)0y(_zKLc_ewvwG8YRkfd>}WnjOEqz2Zu#JZM&{SuN&tZNzAFC(eI zv6g}T3Klh>Rytxy1p8GaC1CHOEmvS*zlNj&O%io21N(I(l^AOo*l!@o;$6$YeiOS& zN2Ik3?6;8A;9twYejB0`b)^FGS_bx;BH#utstPP?8Q5fjg zke4d3-$5vV8-b$WE~)~IwG8a{a4UeVWnjOLPy=0s02=l{yG<0u(^%Frus_5w1=?Cg zSGZKpulS@*IGK)(xlZzSHHNX-g46N8az^*9;@-H@726ij3-&p))85l%~ zTe!i=%Ls}zf%we)q|!771uiKSIR*y7_=1um1}fFT znz4XyrRO#U&2%!y2ZXtWF)&IMg4LAEF))aU$Cu<3$7h0LicvF#6|@Xwg0&+9L>zpG z3&%z9J_+k%7?&l<-)YWhQ`Bg2bvA7>yxf8elPy zZKcJjDGZFJS+XF@SQa=lNW{liq=2-$rpSTBbSA*Wsu&pEAYuj+oEe1Uor6N+eM1-+ z!P6Jw@$o5@c~B2zmc%C~=Hw(LCTBA+=K9Hi%(){A@(9Qo$qbBn5N9ZWodFU{VPM<< z5mNz)+#@ zF->HVngixdW(CP{NUu2Iz|gD6z#zj^!oWO{flY>~goSw`3y9`mp2)$*z#tnRUy@Ul znhvq87~~R%lMW2bVB01rFfhoamF6WgFcyOXn`t5gXq`_AQrI#u2IUGeFo0ai_(Fk! zK>_TzAduq}z%B~{xl94b3S6;6G@(_daE-=lad=yM`s9aEBU{JZMz`&sT`Gf<5ECT~Wjv@nt8c4dZgMmQ} zq`noz02wf|gMmRErcOgvk%3`t2LpqKk|G1c*$$8!q-{=Oh8Lru3{wd-v^19sGBAKJ zqdbEp6KG)ulRMp)k0gVp=29y_%SZCOK_{NDfl3U}$toxt)}c!>u%AxEgm1M4GYcp* z2%gl!gfV{%D-9W?W->A`u!2iNM(JCipk)P@hKw=`K#OizA*CUsEJ%uj6;c{9%7Nr~ zSRth$qdbTwzzQ!785KYRBCN2|kWmrDmtaMdhKx!e<761vKx^?B7*&KoYePT|*}w>z zTIPh#(}GGv#^^(g3=GUHOF@fBAcY?j$5pV@j6CYoZ z8K20&#B~ScF=n0#&QP%`1}1KZm;_WT8KjN}BE|q0t72f{g@|!XaAsiO4+bTke)=b# z+|;5Xy<~=flMW2K85kHIAtfN@9?%LM7Iu_W#4-~s2tM};L_in!IIIILR6?ACbp@mf z>p57=U@3gbjScf0EM-vCv1o$g4RXK|WVr=sISAx92k<#qo0%9GIL|;9_ki5Pz=gKB z2jq4Zh#>MgSRi2zkT7JO9OxXZkD$dpAR)*(SW2M9Js>XfIao%Z#XVp_*g04rOIL6q zO?5M!WCV$=fvmiU&&)$R2kSLxaSv1y{TwWi+!m-@F4{R*Ah{h7InX&+o}k4&T;Kyc zP|v{vsXG9b0G)&74_e&A1znlIbb&Dxw77>0aSm2AXmJl0;v6gx{{qO1pw)`-bFkXM zi+fNHjs^pmD^3h&AMMu#}k@7`Sp^hn}rv|VPJ!w zgJlhhf6zHt_d(`C+zndX1L87pA)SNu6tuVplIV^yf`Xfa3*{UvkPr_8I}0c;v9lay z03DwPN)o)hEDQ{cphYtvf{4XEyda-}k{lmI1Md`O1_scoE-0THat;_-i zmRDf=im)y2VNPUWVBkhO2aBDhoCQ=+Lr+p-wx7cSa_}P1x}LQx3=9Gwr!xqmFYfsY zTA+hi+yn9&gAjai4@eJ-5J(!nxThDqxQ7>HBm-!13xf#i;vSHJ$U?BiJs_iy#X-FR z24+u)Fvj8@h%jPt4~Q?y!U{eIhouJ;LadNOaaejmPKK}NVFwp-uoEJoxrJ3_1uG~l zKv@VT1z*Pll7a~$*71Nuc|n2y1nfuVo2(2Bpi>iJXXLPYfFz(I&~-de5#)6|p!^_$ zx{e2wBSdhl;{o|n1j{-es5q#xfU=GURH};LTgL;+pD@p%uHykEZt~Xgup$o1VKWB> zJ{xFV4+Fad<9pD0G{icdOjZU4j(8u>;E;G%zmT9v1`hUEra*QE1}?Xp%)D#{_Bb$) zfy)WPjR$jC7}!~4*%=tvkTkLw;fsPcvNJFU!4?I9+yLPjF>r{2(gq7y4zwr; z#A5^VK#PJv+Bg_^LD}aZI|Bna`>`{yg4WtFa7bjaGcYiN#92K(T^KlmKuqRKpd(wr zS1>SeM1e&ffkfPVLqKX0!6IMS85qPshG1VvbQU3vZ6Ogt8s|bHuo7$wiNF##7ZQPG z!R`W2Lt|e^gir*Ubi`apgpdaft>9Wngj*G2ArV3ic%=oQg+vJD#4RL3sD~^gLCj|7 z3Zct^!vnOc0(l`3x+1I#i7*u5TS$bi*ahiO6!t<4S7BT9QG}!lwrB_JdgwwTgcZ>7 zRfr^HfEDXPB4Tua9E!X&s1(T+kkG}ykO*N1L^a%Ju=PL4hLCrDL^dEs6;XbVk^ur@YpnHUI)B@s|raS++C1R!@7_NVKe@PLw!cXK_uH135&XwE?OA;?nDLL!7B@B$R1#VbunHbLYdEjt>A@3_|!pc1urDRrwn2%cp(u!Wl&qe z3yJWlgV+jQNQ6%r#8&V^B7`ym3yH8Pgs$a5UPy#j8GOCQVx)9}uorHeFJd7PHuE6) z6sj7!kO-SPP>~0&d7x7>poK)()WK(?;OdrRbstC_j)g?Hj76M`fHaZ4k_giwH9u$} z5n-cYYF86sE~qX7EhHjrDn#X4+-8ClAQlqgG!T6u5dnp;g+$ntfg%)hArVfMNDGN@ zs)3{rc*5L_)w^JOk-fVGw=!%CiE!GEbs-Tp)!@|)u%!-&Wig2Ad^=Vbp=d*_jX`MJ zL0B8yHdr#-NmviuDwv*Kg!P~-BqA6FzQ_xS2&#tr0ThX#g+v5(zIeF}O+qmm#2qMEF$VTu6jZ6ZVBfSaqN+B*Li%eIXGxh1eGoAyh(Jx|j=z z5K6$EHCWFLb|?z_Ii!$>c67mIE3B9}k0g(EArX=V*bhZvzldZ6tZj*FArZnfTnmX1 zDsV3(!c+rlrK2n)LMQ=y7qtEZ`A`)0YbcIJIWYxeArZnXYzv7HvV;~AVO5E?kO-lM z;6fs>Qq*NaD64;NieOQJeIXHCAtAP*b3-P*guZ0=t+aJ}AT|9^O+9b_HLh5bxsZ6za~P zz#bzDT5rM?QdyA7z#c1`%?g^vaV|OtON=#0LF7=56OEYmf7iE@YCMV_u zrzV4M5MYm&1+7(K;es9`;gg@7UF-w8LW4a)HXL+Y0heoDNl_(aLV!I{ww#rLL4XT< zj!7QK1gJz3SVDvga*jTGGMFpDh1E5n16&x`Q@}2g;R-HDEJ_7W5wNF%h2$8p`@1*QXA8g+ zH|%M$sdAvni>08|Uf2{eu-AcOj}<+388~~hLCb%_h&sQ9i+qdoZ~&+;-SO% z+)kiTe0CPlI)&!~NHa_nesv1Z zO^`;IF!YiXo=3=5z^+c=c?~ihrWA5@3eQ)NGsU3G50I`-;bCCxWo2MM$bha#;o(FP zgkGA$BZMvrxip1G8bcg>X$p@DSX=~gX$r3?Xxdx6Br)CDA9S3alVh+e19;*~ccYUlAmSOGnFq?}#ZHOEsqtk7@rLoq@tJAG1*yple46J# zVU0yeFywY5_1P>cR7f2$wq$o2lok3s~l6Y`xVQFe! zNoHbBa7j^WVlIP#8#_W5Ozb0)SWrQ-b4FrbUTTh0X6>w>R*ri{A>mRXFeo}oXpg`l3-9to>@}KAdt?FkON(sm|BF8 z6BIzm1r;RwgKy_4W)RqpB<>Er=?pq>DaSXpBqKisw5+$7LEsRQG&r63CgvrkgN)S^MK}wj z7#dX!0&9>Yf(nv7QgaGG>bb-a>Vr~qQWJ|)p}7+hyTuFwrASJ`6EjP|S*;)^l|kSF zk_>1?GN_r7otc*o@@7$f4ugP=IKp(00@sSu}^u@Ff`KxRRzQza;s@<<@` zfkb`sL7A}@P1FT)|X_bxjFg9zy8M3;D9$Dm*jM<3T920=csFgR5r$^ZsI zeiUI)4rLG&K!||^U`atx5Fs8^kPOc041z)kL9hs1wJ?$dEQ2!$iXcS687D6>$2UJO zGds12K~NMS=aLqbTAW%`mYQP7ASi}S+=xL?9Gkc?gP;Uh96ZM#kEk3N1SQ{tL&hiA z( zOHc(Y4hfZjVE5EKXss)#3icaJ!WmMmW|pKf2&$pUBo>1#1y$98>L^m4c>y_z$*G_< zMP;cBf*RN)-9Q(YF$ij+$hj0Hrn?m77cdBFp@=(W=A}57R4@o?qX>fnHnj-Ui793f z)IpL0-S3l`?3-GW2wtx*sEZ-zl9|LHs0R`DbcuI%Nh=P^&neAKWf0Vdh=S9Fi?hG4 zV>0MOJy?DgG(eILE=j>!>I)hoDRR!w1-Tzo-wPTci3gXYKuU8#VW4#ho)!le57Rwx|+5iAkwB41#v3qL9iNX1P78B&cT!Hp&52JUF>1KPSg2v4}y? z5mm;$D8IA-ti=gU0+e?Xb5H}x8H<`sP$`HMkS?fd-15QaGa@N)MOEOOpOasNYKzo#uHTya_FKe^g>k#4QW(0-l%F&5(=tH9}Jb?M1!ix z7gZ5F5>Zw8p{jyKD5@fVR7DYxat~Ea0J56kk`$OMw9pDfmIh@Hm^>u^1R+bi7iGe= zL!^U|rNe{09E(aalXD>Vz6ypQOG1v~gy;%IlJHCc^%F`eL-TT>eJjB*Wa&K65RF?= zDy*pms$jyA6a-`@my{Nz#v=;I2rRO$c^L==kysRf%g`vW1b7u%NRTIZP>w+`8r%wj z_cPJDp+XvvJ|?WE3Xz6)L50A*RLL;MAXmRoUr5JSh=GaGh=D;OEF|95Hy|Vu!UVT) z7(s%bMhr|~+Ju1_L+X9XsMB7h_eR+ zCy3`76yzVozy)H0PnY8cvBDgKJRSW)7n12 zFvCG?c@P_VN2v;k?dcZ+KDA91!~wYi%u@sLK-)9G^IQ%fo|BKi6N4j&6&w=e>gdbh z1Y!FJIl8+tI72uf30IeRea~APyuX7!*Kkr^p~zHwFd= z5F2!wc~BT=fTRJ$_4M&^b$9e(`2Qb?=j#~k?dk$G6?6tPNPyu#KLezfx6RB;cApBFTZqOhH|*Vg`|ong}f*o8A0_d>unv zL!22z4rrlDfgA-o(wspgM;jp%l%HP$w}e9nA>o)(mRXz{3|f0EvKb)`ZoPXVOBU;5 z(`3XTvQiH&fv(GlK}1g4=&BkO)RPe4O+o2?G=eNV&q_85Q8Xi$xp_nCLUQ$XmM(hOKMtXUMj58$xJO~ z5J^N<x*%b!7{*a#88pqc5>k|yR}32N z6WN0#ACgg;o0ONBnd4ef0@`n#U&J6HV2;r5Qkt7v>EY?@@8_A9oKp(wb&9kh$%EPq zsl~+*$2>)nfDd zuHZp;P*cVLG2kxxj}6q+5%WZqhc|UZ|3l?L!|nb#so|NRu^|Rg6{JC4|D04GP?07& z3sumwBsCZ0W2oErbD)GCv;718MY% z{=g~;3y6@f(r7M1Jt(`TRWgYFN0J3qL;j#8l0i-kqGjMAT}Tpz zrucxO{IX0?h7t1x1+oYz1vr+L^Y3;vYfrj$0u-1&DtFDTE|?@Dyk& z$T(2B%ph)!lpImzj2Og|kfs_Cl0KP94C0%R5(78Zn65A`OXy zL_vf7>8aphkYWb$M5GaI@RiXJYi}V5Lwt)QS&KA~9b8%fy2=7cRsm_u8e|`AFk8G7 zO#(VR%OHLMNdj_l2gDIANF&u?3w-j^8N?Nk299A}M5n}b2JtGegh+h6ucwPod}c{n zd~R_?Zce;`fq?;95hC##ltAz)g{LKnH(;eco=%=F@xH+kzCH{Re?Y^0kmMEN>*M0@ z>zNC^=mVT~86+4O(N*~6r=&7SsAGt`nNAn_Nc8U~3pCT!+{#tIlD zN|`a_5_3~iKotTZAp&Z5F-Wkmpc~*=Qc{$eR9ceCATbR?(iM8Oi3C3@ zx<1fI2!q5j3~|ta1!$&4LX{0&3$&sHPXIu+&t~T5F-XkAQ0NS5yTX=FNQkqe8w3kb zP|{sBplL3NdK@xAscET2sd>q%3=%&ulz{6*a580(NaRE^ zI>aZaG!L|)m_cG0MBD|`HW}_<>B|K*JIg5zt)7Afd+#_75bKgPnpwlN+HyKCphDWE~`TBIH3K98i>B zlAoNP!ys9YF6~xQfRJrKmvzrC$VdeZPC~UeqALKI9*i)c30)r4v`0ucqf7f{BP3hU zB|+`sY*<%YvK3uAI6tk#C9}B1wW5SUvJG9NOs~<8I_+0pRAGWf~W$gD{#LO9!HZQGSE0GNkNXkDadl5&_x8$ zRAecXc$gVQ%phrv)Z`1#%=64kEdj+kbRelGNhJ%Xi=t9X(o6sRPr}gaaiL_ zQUj^&2z5EQ5hl45NdgoU@C6@|Lf|$%q!|R&0#X3cR*78_)V4aAlAIk0D`^4G;1RarO6ec7-?tT*F{d7Uu60>g&oN1Fk8s$osmw zc!v5y_B{kK$bf4MEXv$``~w0a8DzlK02X;?7q}7NQXh*F=q;uJ{y`xOGT?$8iy~)# zUx)(mumu(c!LH!R*LbJU;CRq1tZR@X==yFMa9J-HAMETH7!-83f)1MlaWivL85HzDXGpOK z6=W8qCTB1x=!3YdLZHEa(3w7IIf>~E3I-s9IKYAo3WgnW3=BLnC8-r95NnJ;S{T_G zRb)!@GLykJ8-s-y8C0O=8ZjuCfE=O9zzdRD><3+t&&a@972#I0u^FFay&wiBLWp-K|BE=_z{5$aUcN^A=nXt z3h^Mmgb?D0K!pU5aWV|7pgCv;g`^)~m!{;GXXd0NCl;kJDCB~)h=A^1g9Kq7gb&+D z01ElkyfOxbLgXz0;KM<|!ez)C2ojTXQ*!bc6sl2n3P1%LL4vYZ1sNb~5ftWn2QYxn zJ1xxv*#VjSNCAt$`JmncqXhiurp&6;6b2>+Igl9&^VtI!7+64NfX7!(#w3joFGoB##}d4vfmIXStBnR)R=sfoq;c?=3m zR)Tf|#KVjzOHR%y$}E9PF9k`nv%CcD2Y_yO@CbExWl)@RI{Z{@m7qXo5CWfRtGEgz!6KAcly1nNxEf>@2Z&?DptuIa5fCa$Eh$UP zVNhHP;z}^EvrJ)NU=S5)s;s9R7(NFvFsLz=u&^?Jkac8WU{H^bhny-~oLW*^oC=!1h1jua!AS=OKCtoG zAmh^*80A2YXPU^MvF@Y;1A8#Ypo!oUUy+O{O3W-yMYwbW=nP12uqhy$l}joM7#R6L zK4+T9pbU-+Mm~@OnI^I*CmJ#^@`1veX(ESmq7j@Upj=d(Q^LT=50R5lOs!yG6a)nq z)5HMH{*w+MA2EQgGG@?9D*zRpX$&x0sftm1w;%%p2rF)8SPVKDl;Nl+-Op169UYuj zU}&J1%phF-QPTF3w|fiKoeW>7fg zz#z)Nz|abED~@Y^pyNEJ zf)CaNoiEJJ0!k9Rpc7)nK*xE42x5-&1o;e<3>2Z`x3u(N>Tik$_N(AZi2gHwY% z8|d(Dv^$hp`Pi@>v#P?zz`zm@J!X}~-jfZ~2=QlQU=WOAV_*;hB`F5}_z35Kka)=H zOAI_Lj*HkB7z9A)sDkcLW^n=~IR*jfF{>=jAU!N#Y0!F${5%F07b`ZBiFJ) znm!=yj>#nP9=DvLLWFUrCK z-b2mW0}3G)$T6#|y&xwe9kU85sbM_^=rOBoDxvJ4umBZpFe&IUt8B&~DVQMam{m4= zkSH%G@F%i^{K(n{+HnK9962X9v4DZi10(@z#HN-fgO6Ed^Mr~Zj#*{%0+mxJ$E>n> zgGwsw$E>pXfP9I0%qp8NR2K1Prn>Y1w?u}s{Y@H1CA;=nxE znX4S}U@qv))$1InXRdN2FoA^lp=Yjg3TJaNFbIH#unZYEML-UM@QfHZMZpOLEN9HX zDF))Pfq5njoZ=vD91Ogmyj0D}zyK~Y*%??s<2VeQ5-OYw46Gn=7SNfioIxNaYY!&_ z0}FTrj)5}@EHVcq0$%0Fz?ldZS;vX{%vFvgp>~8c#+j=e$w<=J&s^n5fhfT^bCn|% zB7yzPRgN@>EXZ^5;1m0>oVm)8j-&`wLZF?w%8`L24?2Yc>zS(@nRrw|&s^omLQ(@7 zpNhwO<|;=vl5!%>T;<3?QV%(C6Mpa?M=pjOI6OcHP{Pk#<;cTOgn8yFM?R(^oM*0b z6ksR@9c2nyq7FLylcNwr8q4{Z97RZ~FwR`%C`OV64K+H0PO%Gj4T7D%0SO7D15Pa#SO!#&hN>M-7rXaPmeZzgl!D zuw|&JuMS-eIJ3diN zVc=*+R)KcrDn|>FB#tvzIa-m_V4k_k(S}tT^~_a{b|gjcvqr$-8Xpqm=obtbN9X83 zQU*Qm34X3BM<&Rpf_#!vx2bCsh9Lk?;=BDMA+DS=8tPfSH5oIWHq zV820CfC_4VKL(C|BzbT=qRCG{k_T>{iOapo$= zZX#5}&s^o$Ls&K351>e7;Mhx82iyk`9s3CDz&I`yZiJg7=%P#pj{Rg90y<|a7}8=p zK!SF}0i_%V32OtLFiO;!s~m?YFbv5nhsiJo$xBDb(2ivLQLNfwxeJ`tKp_G?bCu&5 zUd5oQ1A2Kg$8o$Wv7fohaRRR7t#v%5fG+322d3JggfCJ9Cxe9FhuXM;BbC!-|RXNb;Cxu5w&JlE!g)Gsi_FHL!*( z)-zW*E+MJJdgdy}Wh52BuEC(K;qkB@E2!cK4QAlDf<+Cem5w-bmE$Us60mpC&s^oW zhNJ>b67|egj_XJ&G0t4&xPc^#_sms}o7hz%pSj9$3rP+BGgmooLzLn^bCu(!2zUSu zRRxwaS2=DW6oLW^6waAQZrjKv8fPRRQvms-S^329A5U z6~NA1<+zVf13fJjl-`jqZ{~P_Py%u(mNQp59wL-LO@X$RQ2qP}tc(rY<;@&oQVpQ{ zZ{xv-dbY_iFbK{D-SE4PgMmRv1$38 zvml^YWy5-2D@PqT_E_L!DA3b*8Mt~A6&M)A!iYMrm7A9llt)=m&uisz0?h!hvw$Y% zaG%!-lI2i@4#qPuh{PkG*UG!(hXPCtd|oT>Qpm&zWa&*j_`Fu$EufhV_?!p$yjI>l zp^6}%-vn!is)n4`%6p^$EL8?3K{K^5t*LosnML_|47?XWnqi{w^ICatf;7T}q35;o zK0>wvc3vy*Ymn(MrI7PldB1|3i8z(DASbaTEx#z2ftP{N3UnuaMHa{fCpL%- zY_qFiCXyiHyjH;gCWI--=d}vmKHG*e&}v+y^I8Q31rTyb=d}uMM-qpe!v{IEte8PCND!d~et-po;87%D zhz@X?K%Cbqs4Ik|5pnJ+gCKM)0K9S-=@>rfYI{KgVXXSVn`IdUTd~U`HbV(M#jXN! zUaMd*xWxgBg@B)$y=o~`y^I8RM#1W>06kwd!D!33y1?Xf}(4j#Lf;b zS_R)BiDR7CDtJN)$t=wCS_Q+T5%S3AwF<6Al7JR(neg*k1>Ygbf&!YT^I8Sh%783` zEWih!W+uctofFG>twMZYVQ}I@lmQGv{3ybp9LgXhfDi)-z>@!5IhXyjCGmgdFmDtwLhh#Elq)#IcDRGYCn5#lhQpaa6t&TAEtLXyIAUaOEaSRNdDpdeuok^$QR765yjK}Z%M0xIxf=d}vSp^8IK zbrOD&M8W9-^So9e10-o&=d}tMA}K;TuT{th zNgRG&tB^60D8_lMLMBMENEHR5tQRsxQUNLkK~kXO3xv#&B#_T*6*5PafbGW$04=u_ zvOtvt9Y_h;^}--zi7Ev;)dF!|tB@6jEcob61|e%y3D6-Kpo39`Y*59WVdu39*`i8- zk11skvO^VxRL;=zT7~RUB|#^HfbDQV6^9@7$spv2Dg!&-lR?M{O#;h#twPRN)S#W$ zD&&Hy2IIU|Ay-rdnCG<$xuL262Lx(txudFpg(0dU4^&0a2tZZiiK+%UbWs(0p(=!i zG^!eJR5d6G1y!XFhDvavK~?07st6v5sH*%>Rly<@RgpicB5dci3I!mm!8or~C=gj1 zls!;w2tt;|IImSG7+D(ayjGzQWJ#p+T7^Q9Bp`c!k zu*f2x*D4f=MFF@BjRH%62G-)?=d}t&gIgi+ekSM$BBX0Wgf$?2%y8(o|Q4^sB zWHaKtR?!1ms8S$DfzG^Q5Y5p>$bb%+fLp?$gOGrn{s=xJLUc1i9Nd9LKCe}@SQncn zBL>lxdTF*w1SfjYn1k+NOwkUaM##vKk!cwTdPqE5dbNt7s~+DqQEail!s0!gXG&XeP2M zeCM@_WZ%@8`=Fwbih-Gd~L z<-Ar=0ds_YEa$a~wjs$wkD&wQR0h$fND}bjF3>O<=)6`@4-15`sOPncenOJMJg-%> z%Mzp$Jd_MR^b&l+GBl@%tp>?KidE1#s^Ifl#gdQ)jbWlj3}Tu{qrfm>Shq*)3X&xF zY&y`%lsSoz^IFAhkOqrETH)ulip@cjfea~v&KwmJM+^vq91cBPRO}yA81+2XWZ3Oz zV*l7cO&y%)wTk_R%7cd65$CmvsUQvV!p>_In}sTfdS0v8eh!q-gLc8;=e3HJAr1W^ z4paqaBiMPZVlqf$zX&yup1Rl%tdg*R_=q$vjL-@`aYk$+(%>#Aj=<-&iY-AJ)kQk5 zRqQ8LaU%vXEu;}$#QCcXVwcdwq35-VMI(*oBGg0AYZd#CBnzsBVCS`pm4SzJAxRXP z;^F7Diu-~B8TT=)@Q9cA2#R;y3gL}iiBBMfkVFrjkVTx=Dq)S398u+r7$lOArWz2E zpu7Xei@OiBgrbv+u5(Q7R zNZiCCYQ!KBfHX)CQVe$DHKfpo3K}s;*dmRUgG51t{qXZzB@&TFw84iNLae=oBn?o0VLnLm0v+~% zlF-vK86^2x(e;5wLKq~MVTgkUEI{YAN~*G&`&cjfMa$c*XI6JyQumA-m zJqF2181nG*S|zzT(Dg#kYn80WA%i%tRq_Xh5^$XePNoc!iJVAABhG7;Tm})xeO{}i zEf-iPWTY7RyjIB=F3_L=^guHge_yQUwMr&HRDs)cpd(q4&TExSM>ZQIiF978QI zRNRO`vI$iJDcwFrm4U{OAb0`?8kV3e3_Gt?QjZtxA4vFPp4Tc>2g#iXdC(Ds@Z*%E z>d~c<&;68YK$k^3`%|hBT>;2+#QC36P3ZEV4kN<$W^`$!b3mn9&?Q0bVfcBiQmyFH z$j7TmwV}%*9|$Vdjvwd?Xp@7zI2ik(Zc21wr*OgOnmt6ANS# zB8cnJWI(4ZNIgIk1kE!co!2T=iqt3r8HXzGTEQT-6luW+@~Ny0QYlESHe?x)t_w(V zpm;-^*DB?R)SyF=GGdTAh)d3xLCPAb$p<}U6cp>wktC`8sM6@?wMrQvH4Kr@Yn7Uf zBmp|FRZ17BS%`98tJE^2mOj#Xtx~_Sio+UbQW{8YN2treEkUWJND`o+fSn-8ASDED z(?gm;P%R(@5N(y%B|+VL@OiCLKQI*_4rFDJib86&LJdbq8!<>h*TbWn*D7U-)M^E# z6wry63{v(;qOdZDLCP1Y5epLq>47+Z4IWug+EGJlvch!3k~wH7jX`QZ9u*8y$W2>x z{UGzhkycos%Y(<_q@=*DT}bF-Q-L_IRcbF5rLgl_rR*g^y)RUAP|jtrA~vFbfEegt_X4zD}z)f(vUQUNf1S#xayL_3_&!rK&P5Yg&_@QgFFVA zZ~`APD>Vse%o=7DDD|S5!yv^E8N3Eh4G}u8RjLGOv^qG%OK<9 z$l-(SyjCe=qycmE^ID}GktE$w&TExgiX;UpE?{d);ODhU@gj}4gX+W7qLND3$h!1) zq=7fMB;veQX%?iq5Hw~08mxz%*DAdXmn7u8R%sXTxEXkm1$thq3}m?vI5a@JM^Mje zl?4wWLDn^)$U@F*l?B%rSfml>waS8rA+RU`pVul29z((+i+WzGEVzcjq6~Uot1P&t zz#@-&UaKs)#=xQsdS0t6xEjDBk2tSY7F_CMQG$G4t1P%+$D#;!UaKs4*aC|J9Ot#l zg3Ee-Ea$b#E%fqdU=Tn$uT^dlXafL)0P=aQa*IJ?EDS6d=e5c$;qYf*U=rFu@NLF`xbOKDrn+gaqhZ6@KLCw zAC3w#LvemqAOiz4$PCb_P|(B3N)n4o;D@6sF5DRi+P?rh*%WqkDk%0C6c_yj9}W6H z5Z~dbic8kwI~-MUDO9=`x;i;NIX^!;GnGN9<|OzyvHPG^`OvKe;8RnT=Y$6#9c-#R znHdt?@hO#g@g+IM;DC)!PRz*xEemB}6sVSCU{HV@6PZ|05Dz(H6r6NfnP*r#GAPEU zf-0d@$f!V2UzQl31G@E;Nn#ZP0|PTle0)-AW==_F9$e-S=zvV8c1X)3BCit?Vi{x{D+| zzo?Rd`8eY=(6O6f!JN$OR0ie~U`tnU=O%&9ER4@htYBb12^L$!4L%bwJ~OW*2XQPW z^C?Du(6O6PNt9zZnNNe|wm{`T=NiI~(_}samfHc5V_-hZxR!;1VGnmQD4Q4}nSTzf z?f_JRf%!b+W)=p9Bizsf>zFSv?qp$LIKf?z3_fj+`6AQ5 z1YLRs@>LN7^JT`@ETCgIVbPSElnjao2IiHFddv(A94scFBP$`%1eJrv5hvvMN|5S! zs1OJ98pd{J1_o|;WUpl`U}Rum;D%~tU|t7~R~82Lc!>7+5~yD0^^Bg(pcIjq?&BQq z>B7LqyqWP8$S}mQo6K7nLFtWwyBxe14is@)!6Hl`krc?S;>_E?LM#mI5ObKfGtOsb zVBi&CKE&wE0&!d-C|w)|a~ZhHAueHHKEmk90@`s0PIO1X!Og*4j)W8h!`iE*%ie9gh)2e$7T$c>EX$2%ScCGq(9oaA_LS;3q|8W+Tq7Lf(%3!0!JPLiwDRkWO3;6ju2st;~gQwh~phWd@&X# zr^paj2G(wn|CyjiJ%U1u33k*Y$oVWRENMCUi6sn70TAUAxIiaTvYcmSU|{lricJKG zG5J6aCS;v?mKBuxjo26%#5q_%MU5!54us}6HWfdx8K6uElY$=*36g>dA`XZIiSmJ> zuZs;7O04y43=EK?y8Vv3Y~aO40cE^ql-8@Xg(c zIjO}Zi6y1Q3~WB2a1xD&Ww+#v#Ju#>6b3e5s5q!`lnK@Z%E=6DexPz$6n>aHByT|S zC`5rjD2Ky5hk8IHr~qVPWP{c?$r*`73@l8n#TofUCE)spg@YZO6~F{aeqcgAAQBX1 zOu?Q}uJIuZ?31UlGcYhgVuj-uC|1~gpvOf9gN|=T92W_aY4 zWfJ0GVBmJk0o^If5eMcma63V`@n9|s0|(1J&{3br8WWg6LPGH4B8xZ}7=%GRXwY$y zAm>4NpyMJziH!v;2Rbei#A5^VK*vRbv~e)-fzoCZ2efctXJ7(#BN;d)v^f|USV7`U zkmDjjOxDR93=B-*0RRThD6q(4kO+8@6$57?SY#^)0|RHgudAH#eHgVF$0I9;8u1}N$d#PlnB0Q5hTsPp#&CZ;YNsq z#@|wtOBgtm1)qa50e4VpdS-qeICpZW2rg#_Ri>c9<5UI?Rj?8PZnz#buz(0Rc-oLd z9n6zpV8`iL4h_NM91IK+pfHIC9mE1Yrz}3$F${DL6az<+P#;1X+v%4GX`H8Df|X!9 z{SqvJ^YlxwEZALOH(@{h5}^omQWoavmk4>#c>uUhzr?Kyarz}f4fuFKLZ@FMloNOQ zB|<&q>_fy6Y`I8L0FeWS2k0n3#^h<;ppn)4=PQN5Z2gsqw2UM0KxdIY`_)ot?*a1-u_ZjR65M;y4kqieN1L5xj zzD6hjbV?>@*b996CBj6=5oR!h5a$V2A{hg*6=oRtKoxknS0Sl`y9=Bku%CX3uo?g9 zmk4#>w!cXK_uH15+c(VT(mLy)DQ(=QQ)b%ON1J%r(a@|#yI^Fp$L9*12|mKPQOGbgPy#DIN`Dr z$s>?Ng^=sQki$Iv5@9q%H}dJ1=yFiY5vjEo$pWY(^z2GR!s$a&1NIwK1*o8goPLS0 z1{_yt@)MBsgU;2#eflNB94x0_qDW#n{SqM$J2VL4g(*l*fXQM%{Swm@ggVICj0OxG z)9@MxIhzrD`XxToAi)<8KK&A(I*6^{(=YKUgV+i_{Su!tsIB1BFY&2^*lGki{Su!t zh^^q$FYzgZ+6q4X5}!JVt;V3!FYzgZ*a|-V5}}O1>6h3PhG3q4iB}o?kio@B2>@X) z+&Evv>6h5dgXB}FYUt^g*wlfFJaEkeJx>U9`Xx4Xpo57})h);BK9D*br(fbSHXeQi z9@6P+D~T{2b{^O&+-l)Q!_=?T4r^68f( zgqWwVE9mq~f;!+n07W|k$3DU?BIfidlAAi)htM@1eatPOP5BeADn67&L2 z!;rjkm<%@|dFcol+L3HOid8!-cY)GiJjfHU(=W047^WCpC4kEi29DzdjP-+bwwxp5 zk=$|uuO<&yN0%Ufe_v!BC$Z~5JN*)?qd{uWPrt;b5c}zu2$j&5F6QZ%2qoao8m#Ar zbowPi1+=3JE?Z&6#CasYVLkm4p&j?>mk2emrYf$}FA*wnoqmZ>f&27JOf{fZI?Cyn z2qj?eIypLfy9fD)`nkl1I0kz&a9l(3H<~2I>6Zwzu$_L1kR^2bC03Par(Yt}5Ip@7 ztQ7TZOUSjkkikoin<7|LU_bp5t`HPh;LL@3669?xMxh*Tc?Y2YZUl;gyQm7Voqmbp z2xJ9Fr(eR=K+mlNrFXQ`FX2i+B?b1=FX2j{ra)V(sD6F~b}=7lrodGWK7=dD!r?3q zn%0&I$fzvNOis*!kF&ang9c5d!ZM3WN)vM+gQl)vF$T_fPhUrO*Ldg=iSeLP#x;mR zgTqn0U!H-1+b=OUm4U-a+*A%UQ0tpnoXo)CCJwTegBxld+!}YVkv!ZW3;ff963aoO z(+nIQU||970MPwxsYN0Aa2Zdqj0lnpXd)Us5M0c_;RTkJK*;)J=B4J9<|d^U6*F*n zgJos7{lEhLX+g+ZeZ+6GGB7B>B~f(xf+dx>;ag-fi%T+-iy1ilz(%StutU!kMGF%S zfAO{Qpa~dIAallJJ9-l7{Ls}33=Gf_=U7>gYZ$n}o2{^&9}1FY;&v{|ECEGZaB4F6 z-dB!zSx-d<1{Tmjc5-TQF=(S{F?c@^M}n*b2Ll5Kw`*QWQ6*&RiX%}L6v+bIpbdkm zc_0&@5=meQ5pK7f#PnhYj$|-b0=sKGGSf2{I8wk4mf;RANGwVPPhfGRf`#N5u=^W) zekjPX+~7l$!0T)|DrEf?L5T+BZm3f#We>4~e1v&^C`g=x+rK<7GcP>^JUP$6Q7wBO zJgyHiAUHKQu^=PAD3yVu1}rSV9bAx^2Q{}=7BnLx!oa}-3U>AYJaNO3CR?lsip91vWObues4+Z6BCiL?|K~q8;ETCCm77mt_{L-YH zR0b9v7V!KNl*iMApN-#0#`Js?`Gw9kP==q_bi7)t+SYlCn83XU0 zTqTgtKPrN>Lsi4h5A6U;^?^yylru~#;`~sMW|%0_`Jo_+5fV^Cz~_e|i-M-=7zD$Z5n`C_FsWZiQdrIpMd$-k3leC_)bP{7{5A z2cH<@`{D3Z&EDK<9^Il|Y;yid7nZekfL1P-UB# znU`9`Aox@ms|xt}p$J*5=Z7Ms!RZ9Hj9*Ys6d?mzkPgf7f@_c@P|goUsK=@PysqA)Ty#06?A?mswnLIP*hRG`Jo7LZ0Cm}WT9J&L1$`! zq5^b=pJ13YLLTk>P=o}uctbfq6d?-=XwX8@@XV47zx<%o)Vz|S#JuFnkbK92f}G4` za1%8+#F0U8tqe$)D0oU9dVc6U4h9BMXU7mvmv~>tpkNP2AJ-rTAwIA$xa3CUat0xO z6k$*fWe^fTh=BxPNkK>uA&zu@C_)gN_u;CAktC4L4@HQAGY-o6p$IwD^Fy(TgU%1d zCJs736f6#2FoJr1=mv1efX|6^OixGD8w^5HNK#nO4+YDELk|=r3_>zsJHP^9Z!-wV zB1Aw1KH~gPRB`CpDMIq7!mt=;5K=%$pqw9yB8)gc6d??5`Z5S9qlrK_2nwly#UY`B zdVVO_Z!igz^Fz^Okk1cAk%Asx0$Tl6mdYTcflU%}Dv6LLiX77Up(x_u?JwZ-Ls5i5 z0gE_46iEuS^akbpPz*Wn*>`#nVf6DuA)?@Pf$jWIBx&5|haxFLIX@Ih9O?W}BvCBq zha$-$)gYh(22$1wnIfqGm6ISTP}w77h9rS{ekiI0Y=02+{7_U$&;g0?^FvXkK&LDq zpC5`L3qA^xLC6|a0(58t_-s!bRB_nZmkdI-s1o2~GZ}>JP(>k?GyMEeR7p_J6l{kB zsyO`UNd_TDR2kTDlMF&mXcAb@55=Me5ml8Rsw!B7 zqAK!7RfPTgP-Hb&&JRVF24xRa8-kFfv78@@ERAt~D6%BV`JqS>knNnP=Z7LoV?93< zNdcDgL$S!Bo*#-u0k{l}0!x4!97yMff?FZ*ekNKsR9FMj$HaMlC`ej1%rVH-FVq*( z@fBuZ;x}brkO>Qkhn^n_VuD*Zj3Ab$5d#yLHep}}(Lp8*EMVG#ffYnMM>4R1Xcxy2 zR|a+v%PBY{h=Bvd0xk4%3~}~g-~{npgM$2n7`Q-8Cx3q*25t}wcAgRsh!g7P?dKov z$G{8XxVSod`a1eB@PRmB1lZVu5BuLw!ORBte{jkRS#r5CiG_P!QJ{a+atJhz%OvcX4&| z^mBD#kOc|&1c3Z02VsVT*zzEDkgKzQkPCwfi0$bY5)U$46~qC#0?bnb@!ULpT*0%9 z4j`VBkG~UxBZw6o66EUW%isiI`v*C?yD~UKI3NjEmw10CFIVRf1{a8+e-J{*6(j^Q z3Z}*lB;f4E;0~ri)h>evh#BS@1iIAA)g>Nkou^z_NIWRs;z8OO{_}(Q@bg1K97sqo zD1g{bkwLC*3=9q+c93hZYfudp!myT!sFgfI5Y#S#9#a82KNKN>d44FW9On6<2zlr> zbkO;s7=qA7o#;L#gcRHXS;`2(Apa2XD7a{ZDnbzCT+mzw^!!kS1Z*#{XoMO<5b6%l zVH2S9Lop=anm%eELC5Vt&JRV1VLv|q1P=q}8^FtBx(6I|pP6eGGijaU0cY%h{py!7oWIRjJ^z@skBY3hViyAZhSWGUymil$;{A8YBlPRzc@_!p;xH6a}9jiYW~1_K00! zLP&zoN&}sgh;)7^LKb8X^7)~tGLRuf==q^2Qm|t)|FJ-Xai1RwYRgD?qRPWZ+r|E~ zLF7Th?I`DmLX3q9`+)Z5h|NM8`2`)(S(2Iy@-d_jD7K#iMGLeGj(mP7HhFM1LOMSb zn;J+@UF-+az%a=Aynvjgh zpUfoi`Jo7Hpj-hvKNKMf3Jh3#SE3y$(n0=&oga!&4iW`Vuu9xSN&+xZ@cE&rios62 zCV(LbK0g#y6g1e6e10fG7JRrK#M)a(1KkkcB1zVQ*Cs%M5Zn2o2opgrh7D#*lp+mg zgCwBCvkVd!kR(vg4@H;+wjO$ZC_)t0MTDLo3X%|wkN5R-@rlnYNsG@duE@=aH!v_T z0Ckp-Qj+9rPy)fH6rPqO-++~(o*xPt=7abjbod~)^Fz^9z|Idv7l$3Eh^ba~|SL(%0B=Z9jKK{-DZ zT?x2O1SeC_`JqU%DCdWQ#qpjW3RVFbDMmX#6f`Ix0hhsbekfQKxZMUiBDAEWASku4 zG_|;dK{A~S$!w4$>iMB48j;Tky@I9>S&o+*MH@6xpq?KJwiV_gSp0y_55+10K0g#i z25Kni{7`J-;PXRKB#_eWQyvrzja(a)l6L{|VZ9qByECUkjFhY?|WGrBbLxs)yFlA!i5^7)}? zE=M`;s|{T<$^n(_7_wLnsq8>k1eu${dVVOHQ(!8Q&MgC-9|~3lPFLW5C9H2QH5tVw z^z%c(x*+ij3SC6#O-0s*5^vLxWzgenIm_S2K~NkmG3*fCx(10F2apBpK)!1w5DokU9iVK~Q}RIzJRt5ku-nkV%Lj zu18u@0+PwhOJ|UJfF=ljF}X4is-F z=Z7M+p-6$x55*w|K0g#82R-!?6zkBDB&q#K3rWH=^RS#BiqMXBekei$dVVO10H^~1 z>9R;I<3*8iD$UGENiAZK`i)f_);N>WKx#WeT@G#uN-af_00jl?L_^T|p$MCxT0jaQ z+A0OHN`kugu=7JP6d(==Wsr)3tdIsLNvPonY4G`>VD0GVhk^ycnn1}5bOIyj{7{4_ ztRw-QABrgo(gSh+8l)yJOb<*Jly=mRnyfH+STY9TZds7|;o`XE z!DDe!QWE%8pqw9ysTAq_P)te4;>_Uk%#!2`1}P6IOcen|i1S0S$)cVg3RVFra$$i5 zOGdDz3{soGv;ENK4NMhEfxj791+*~2dVVOlhy*7Bm^pCU5a)-2-Gp5c3>1koNQ2*4&JP8f2X;58Z-O{K6d~>k zI=U@0FC8KWFUOWa#>bJv2gmuL2&1r^ABvE~I6o921u76=Yf6yM4@IZ|)rV;3hhmXL zIX@I34;nK74b~%_ABsZ~etsxO9z4hbKR*-{{E(GPp#3-K=ZAvTgTo3%7IuCp4r%1` zLvbj9o*#-sHay5P#MR%=*%frI0)s5LhQZ=U`1zqYj6pv?6o)eS`Jp)Ek0Kg!OdVVNKjD>*-%lV-S0SpYRAVWmc z=Fq|!771x2aOKn4ckc+jzliqfEU@C?H7$$2FViZY-@?kvLbNr}a&42rTKDGuTI zw4B6r21PlL9FK5(T4qivgQ7f$Cm=upae2Q zX}(1;0|Oh#4A4<$*iJoFTG$>83IwdDo+>Rm9t;Y=v%w4u$_Nuua&mGLGxOq$QWJ~w z^B9zt`~htkh=&b`5p$j}LP7@pp!tAr{ZTXaI^- z(fD}Wid_9%;^P?@4Iv6Ma}(23!I=gm2u?rp9E{e}LKql?6H`)B^HLZXZ9s(tgK$Y= zQF>|#1EVd7%fi4^RGJ4qxDRqlXgv6o(D=-f)ZF+oLk32>{165Pc^*c$Hz1>mD{~nb z-9Z`==6Ha(EW)64UChAf3F2|!HPwiL(Q6mPR3GMaA~y1%Rp z3_QXaiNzTVjO#&L<^&j&Ko&7>NDF0PP%X(wjW143E@oid^dXdift7iQwIc%u3&;(s zxrr6f!OCI=#?7Fd!pgkB+L1vmz92Qz*upFx76IUp2hY7So?(1&+JT{*iGhJ}&VvXB z2KDkp$lW`l7T_2lYv3kFcNe;ZH$g%Bm=|TP6h^@ut)}m=O9LEBm;wN z7XyRd*E0?b4h#$o7U2vGIt7so4Axx?4B8*q7#MV_BN-Udx)>Pr=SMOyNS$?H5MXCu zV9a4OxDd&}P}#-6U~nXofuR?~*dEEiuoR>bqy&$=q5N3~28k#J1|!A*&}q^P#vrpV zpLJjm0v)KkmvL@50|Qw94v?`R^Ur`7AoCw~F)*0Gl;TlicnfNWDPsUrF~}CMC6ebH z7{o!A>|$h!fLiheWH!hWj&2491CS-M-3$ySFr{Eiu&XgtI0x|vswFn(92mGkmK}m|1(Je81f5w49KAM4{K7xV4l&OS)mHC0ZBLjnB z_&JC;L~IR6jDf-UZX^SP=~)McXpobhGG2>dU@(F4b^b>(FywSIFz9kbfm4ZL$5{u4 zwb5X6d6>#U0cXyC#)08DNVi2wetZG=s9{JU!oaA{$k-dnz+ef@Mf!}OU2&G+!U)O+ zWk!%Xkc1T|Q-b!0F)$i3N-#1oSQVw_fR7VJ;^!yF!wN7Xh@vv1_>7by21aABT~`Wq;fJoD@)@#K8Cr>=?V;#G-7Na1(D)l;&3o!D&YZT7xM+D9T*s57#PepoQ9;S*APVvtjsN-bY*q{ zD$Wc^D-5j60U&WhP_YK`3?vO2$UA~kC=19<436>fMX3e(MJ4g6MMe2V42;2`gQ^2T z$#Tx}Xa)wS+~RZw#$XVWX(EHOYGP4(0R!Wt^B@JmW(B7l7$jmC7#iRfia-r#Gz9y| zo58H-lmmlR33o$UbrLH-hej%GZ8QJDAfU3Y1){YF!EZ`Hr8Ja>sN1xB4zZ;W_O5!1> zaTn<&GbEgIU|7eo%VF7zyOCbW~vnIKMPhMhsqlys1Rfq@C@8RRTrDWo&Vnb6N5 zXGJ@MoM{E403!nf8;cm|1X;-8){uj4K}Xy|4!dQz!L)~Q0TTlQ$95qG2By7?t3d?} zC-NEOO#2vTgQ6WG2tR|IX+Kz)10)RbH3QQD#(SW1v_V3dDGW>p8TmnHkb}6%i6yDv zGsu~aGs=U`AO{PA&mdbuZ15gPDrt^$8pfkuhp=Tm9U0`$q zok7kCJ%gO-BBKZB402BB8RSft!2Am!FM?aU$)!a_3{009OTcH4!=edxt})X}#_dd? zXxhufz`zBGCa4@Vj@S{g20w$GX$_+Q=pb>}8RSfB8GnMK4yu)bX&pFTSr}Mhha$ty zAZJ?7c!`ODfxQHN207Da#$u3Rh%?BUwlIRy8v`f&405KeU=b#e2=okcrfpy$76w+x z8RSgc88tvhnF}x-Vmt#f58`eHro&(^11IbZa;77UmzWtCSRje+C^)z|I1y)%GaUm9 z@i4HlOlAND4e06xHWpCYXlIbKv81ptFfhkM z&md>E?_>cvyPt)Dfo~S*ymOG#83a(zAZK=b#KOQJ2s%XEuQZo|*$Lz|20`c< zJuF~pN67IF%q~^nGst;BM!scXU=U&uMm~d_*&SpcvJm7j17;79QOM$;^E4QkJt4wq zXOJ^{L4;vvkTZLO_-rgOtPBk7@vafht^pyQ{(kY$_2&UB(>dAL7#KKRE0R+SK&=qa zToMDz49=yXlb8|0ki#NaW`f08I1Ye1+Os&rKxZ!_6oIxrf%-};vpMxS85nptA%}4U zBo-y+rj~$?>0p@yHb4NO2Q-IL1X;($z%rLpksEaExCo1AytBVwh-*X$!x<(PHjZ9) z1_n;h%vEYd3Dha<91thE6d5qEaDX{1oGwL%3@n^r4hN@8kr4w67nsAt=~86Oz`_mY z2ynU-nK7{NfH@+ZE=A@HEWBWj1g9J54EEr}vQ!2ZK8|x-3=A@y!Kvx)#SAR`U==+e zu3Iq!ivXBA0mOAJW?&HnbEkl~F2xKiLSXI;PS=!71{M)8XAY-paV7(cD44T=(>1Ar zfkh0=S;Fa>Qo+C?4(6=jbWN^cV37cG)^NHeRxq$gf;k&FU6TqJSfs$5Eu5~I1q>|G zV9pMZwaEHYs39!^(i7|DY92RL1e3m91Bz?>r>wZX*#&L1~_e1$uBj8w;qW5eBu(C=V$2g3d)3Vqjqh9c+$r1U*PX7$O2af*vY@ zd;~qHKov$kf*w>=3gb9}9+XXlu^d4U6$gz}p&UUEs+NV}qe+mm5>n!W>SqQve^3Dr z^Bn3C^q~5W3H1niCgdaNnQ$IK&y0KoJt***A&1Vh`~qcSR`8+oEE0@&7#J7?AZIHH za0pM}WMB{kO^p~baEO33L3lE7 zL~cI*jv=0Y?(xBnVXpCxL9UJr1uQ?<_i;h9c~O2&cz#g|1Itf#NG^v=8lm9Gu{`vVU4yacT(z%O9{H4@59HH77N>B)^D(RFfk6yZv;AjeV1*TUEQ%Z)Yzz#n0dN6j4ry*sCITtvk>g}wFyw|t z2pa4lg5|_~mL#DyoD2+5X^a!|S(1^Yv7eaF zk^)hJabiA8DntVNiTNyP5LvLhz~?PvIWeCl9Z3=BbX~L)^I0;GS- z=!y9(Sx9O?^IP$FPt0e@Mp911iTNx!Na`WyrNfVHX352n1BVCb_;C1%`7C)DiZD;i zXUWG@g!9CFmI4gLE}p&!3kxx%v7BzsQiP-mkubMXuYpM;OByc|h6=;%1i6Z2Urkd#1@ zmZ7G;I&?MQ%m#OJJ-RfG6Z2Ub&=sQk5M(I>OCypZ@JZ{46Z2V`FytUE0qqX;@b__H zU};8Hfp%g(OAC@DjuZ1)T9MRXo|w z@mV^NBq50kA=iZ=hjwB9ssdC{ z`};Al^drfG;}K1M0+Kvvvo5&eb8~cdMN>BsNgeu$`7D!ACDBjJXPJy74?AcS;e{z! zWDzIfLp&01z`!yUuR6$i?gk7j)9@;Toab)9z%m`LGN`SF3@kJ7s)N{S$iOlauQG_O zh72sT@G67aYQ(@Y8?QQutwszibMPvI*lNVUG8eBhsIA5fEc5WHgV<`!z%n1NGKj6l z3@i(flp#*84|WX!wRD4#%9Djy6+#cKcZHtu$-uG*zcSdtu zS`IofpJgdlb)X^-w8RMEzGYa|fetf8Rks|cI&3HAv#h|a9C7kCqUc?TTRHmid(m zKzz_Z8w1Nd+zMbP=Cj;KsDYk!4@&RIC+4#}KqvvZ6w8VEEDsS%pr$}u)2M!a1Xjil zJ?q}ZKNxn-y#vd3(SwQ%44kR);I)PfEIUMJf@i`~+g859Gsqx7L3@p3A zJQfhIC?}bLWjC152I3ba7J*h9vFrg0aez$B%mbfc#K5u_EXD;AORRv3?E{PPaHhr= z7c;Qz2lMzqyaEQ617My2$k^i2Tn3hdV7?G%YCLEX=n$AE0+wZ9ISl5Bai+%Sq$PqK zbp$LT!I>JLUzV58z;YDKm*Px~FG?+DU^xc%u?$E$H8(Sbf#o<@UIi+UmzK}Kasn)* z2GL@~z;aUbq9Ox>2E>xQ)N%%vQ=&GU3=B35JfPqLNrH#KnIZg#iqP?DP6k%U{Q^i~ z&T?8bM}dKXjfFvpfk6Uf3P0$m^W&hQXXbzq|A2T%M+`BX?dItd;u^%jDfml~fq~fv zuNoncVd7y#9nsFk%LvL=%&14Sb31`1SJ+rUlj2P9Biflzk7(xs$(~SxdK0u_9r=iM zo+Ue!U}E4S+If~j=9Qoep}|MA^K1c448f<2z(=(6>=9K41a9=c?~ihrWCSjhvzHEnc~oC zKBObsc^DXXvokOtWXe*D7@M9kMv>-}Ahr@(I zk7(x)2c;Zg(6$Hg24naU?fiQ|65=2U)FayYbHRxXA_F_$LLd`K5OGAiKmZfM6yzh? z1^SUBpoSPR2wX%F1s~Ba5XOu!0&&zXX!@N&fR_a!2bvEq%1g{~&dHG*e&;}f& zBiaQ71rTybN3;uUM-qn|xDGj|w3tC4ND!d~er6Sez)>V&hz@X?KpfF7pbKg5fb$5_ z0lN$W(C$0BghygtN=_<+fPpZQg_U{98AbVdnN_KfBiaR8vCD#1kwEr83p~ZH0&+yV zKrpzG0Lh=2N3;tZLXrlj6WC5k0Xgnv)*wj)6(oD4<`kqBF$i#pA=G0( zqFtaANeRjk?E)8&WI*e0(2r;run|X?4pM+|M7zL3Bo*)@+68zd5c)u(KKXg+3<9-i zqR=DS1>PZvJLl&@b_Ih^Xi3Xw5I7-)WL8l===K`Wv1OpB03DMo5GIX~M?RumU^S8i zw0J`t(Jt@~Nfs2)L>?VP z%7E4R7ubo)X*c^1uapfKnGbN zj%XLO!jJ`@w#^`DjVb{;7YlTJx}XiJxN}BoayD4P7F7a#GC6~w9jYj#a&{^$Dap@c z5VS{?1RVwjHp&529DcetgPr7hN=P_5U8=`j;aC{hNy}>P!&NV09B1Asv6|bMOEm9st_8|sA{}X)u1F4RFys$ zD#3{cRgo{MB6uXCs`5is1&dHrMgFLYupQAZ7=Ww>_KxAo9_CU2E2w58Ah<3qX zWNEY`+66<9C6SJ37Ys#`fSj0td_=oo7_u~$BiaSSkrZGY(JmN)MHcypcELz23czJ( z6j%b>;D8^|E*K4Ng~0onXx&gDjTV${C`20G1r-AKQl;TXw1YanLJUmXO&J)Z5J$9w znBW!;BZvh$q8&_|FffB?&=Kum+Jb=i2*Zd$2*NO75C${kkO1_E zb_f%4L_3HLT_UdnV#AMU2XR2IfE>{d;(?9`08eWr5aoz=kPyfy_z~?O0niccVA?0x(}lqU#Kb(J9dvLzDBfU4w1fEYBicb6 z*b(g@HtdLY5F6=;b`TeFL^~1>bRs+Wh<1<|@)7NjUJ~Mnc9FfZpyUk^hP6yYtmF}b zpmquLBrpaMF9n1I+7ay{FVN)Bj%XL@Q$*;6p7g^YlBt9t2yN7f>_d`*J0MFLp&oWb zyGVp8LJ;I!(9k&Oh<1^!ND{Dv&_yED5UQc>aLdd|We{=Hz>t7z`iLY4I`|oKM7zjF zO@tPZ&4?q~MGk18N`V{&I_8o=Bu5(|13Fg*UW0B1Wac~C~`G|Ir zVqI*Sj2J{#>cJ(@br~^;=;^~{k&kE>`GO`6aR;XkfczKXcw7eg3tsy!wutzc9HK$Do~GT7x6PiXvR3AUF0f~Ea*hT{5%E` zUo(UbEJw79>_L*pazwj`fH^`xmLu9l+K}X-C(nX%Duc*VBnkL%7ibs_bVR#|hXuk| z&{zlJh<1@rNK%+bw2O3Ef^>q1lEKGUr<7$Dr$Tdz=xUH0q*w(Vot~JSk;)*NgfwUj z6E$KG)kGQvh6%&EJ)&2TB*Dkgf)1mG9nmgogEUwS(h5JKU33nb3}i?VbVR$TIATB; zWJeyqFwYqR30?kjyR%SR0U~}*FPr}d_=qGEL1^H zlq1?j_j90x9<&P%KcZc<3~A^Wal$&Jiw^UR4AR&yLJg#+F8TwjBuwi^q;X+{R`3z+ zq7#t@cR_IkKB8T83DT%8(h=>VKe37%F^Fm*jp!mB(Jp!kO&oeeyJ$4hXf8rM^oVxR z|46c+Y6x~jyJ#7BNEebsp(!4IM7x+TD3FCgDFFWw?cyIn@s3*|ys<0(38WB`=phG; zgAQy4&s>OGBPB;vIU@$~B&4YZge2(vbMZ|`2?a&Uh(UZ8QZfPM3h)u_;@glC2PiOL z?OpM9q(}!j417epxG7R(gG3?Dy@^HCh(SC6X^^F0Ozya15=ED?vxJi&udqgyV@gqFv%OD1qQp3QtQCZ@@~Ck7$?p z0~+RoBrnkU&KO6uOE55^s{kFP&LE+VAr3pS8h%8(#9y3h7$nk|u$c=QD`1c)WyX+0 zKB8S>1BN{65$zHzEa(Oxj=GkZh9L<%I9r0B6Bl37y8 zAW@G)2605Y#19N5;5reUOc^8+IgyM;9MLYZ3?h#Eh;|8EF0f9>NHOve?GiCupg{p~ zxD3`K+9eVos=#eJ&?)RCh$Gr1(vi&uNg^H5E^!uBBhoSK5?9dlA+*^VKLc@DT_2f8B2+!W>!?UJ3iR3e=o%OKeWQ3Xy{;C>}MjwVB7pmBt9M7!h^ zWI0giB0_H}vJ^_ZO+%JJkF)8>k{}b2;%f%79BN$6M3zF1r&-7nkkp58<7{L})Cin| zEQJz1b5UflM9n;i0z^>4Q^kBF8R!@VJeZM}m_P+V^)Z8_B2p6zWD>&p^=LAn6BQ*N zpb3KJnUIcXmn=nUl!1&xm3OURkX(wi-~;&}b_U55q*fcU3`o}nBsoyL`K6}kmt-cE zq%uf4A~onxq>LCO58{$DW{|W-YVtu376-*TbR^x$h4K@GNhJ%Xi=sU^oVxJ-&n#QI2SrG(~E)f>H|TkZT4>dn8dqj39Bs95$%$GkVO}e;uvNCEE&O;GDvO$&-O#BWSAvxZp(O1)_2Fi7%42Cueb%dRuV>ckj zuro+LLlSqzdPKYAGRXKia`<37qFvG$X}}!)h;~UwBuUgG+9j7FNr8$B*qRdf5$%$^ zNaO9G`VjeucB$=118;Ci#1ZXMEJ$@BXv_dKSPwg*U1}LFNyriHQZC?eGw>h_^oVw8 z$Z{WWXn;0+pdQgK10F(xtZPD%g&ff?1FkW!NF$DDmjMq$U{Mm{7~skv10F-dB8z%N zy9~I7!J-U$M7s>QrobYPdPKVnxW>Su%+1F?ARv-K23!qbkw+ZSE(0$0u_yuU>v42< z4e$>NVUPhA>{t}Rj%b$w4_jbS5bO%RA3NSDG&mk~QMPN4BWPoq47jWpz;Z;p>_Vkdg@GC4h<4c}CjuB4SU`pdqaD#Mr>X=xCLJLPKB666 z6naEER2W>OA|1gFOZyD+kYs=^4;|<$W{?Lb1m^hog81Uh^!T*A_!0&MgMERZh3ZE@ zCyAdAWMJS2EpTTLK%C5Kll5=^S^EfQTUC9Cr|3LJ;{JcaU*149uWOS_VZGki&RD4#^FIoWBNHQ4cxC zy*>!!futbNLVeUzvc*CB7i8n(b2IbO%i}?-(JGP);KxNWFzzx^0-a;I#@dlVEWa;ohikf>`91A_wSoNCB{jYSNM zM?hho3KC9)oH56E6lB;gkVsK#acW6?T0toT<1tXM*!MCpD9%0Sz>pcjz)&8{z@Wrb z!oX;)#8kq5&3 z?kA;|={nFnz<=onHE zmw^lE7}Cq2V@M&1?kFQDxH-5`jv)mJ@i4Hn^fNFpu(NCilb|HQ`IlTyjy^4 zyk}lY1p~7eL>O@lDTpu1!V>Q32VOG9QV$Yf0Us*K(gO-G7RaHJEWIEfzz>yV@qwOj zI5Qk{f+-8AxDbKvJ%eT?R+Y_QDNz1`NkNa8WHkm!!31GPOtRX8M0r6m^PUwH0IW|~ z85l$$2TJDTCKfQTdVnOLBH$w?Sv{d5h$ALhy+D~o1o?xeEQli}*~~#v z!3I86l3jxFF6dZY4@W;2A6EwUK1NV{a6qmharFxcie%tmk7bHsXJFuR%KI|G9dsHX@zu@dA42oH2( zB{-#k}e2Lu)Dx#T46brkUbqq5$FUX zv{MP$Gmzv#`?Rs1O30pxM-}u`LiQ{qHQ;00@SaM@o{glOh*JsKbCA?S&ZL7Mjm4ge zAqNf*&=GC$Lju|JFce{)O30p%sR-w(gzNaK?t%oVldFeg zn5Tab;#4j6Y9!ToP9P9uD$SY)xBO2|GHuR6$44F(MC)9@;ToSA39z&;(XGDz^n8#1uZz^e{o zt04pXOuWhPeJNITpdt@k^FYseVPIc|RUPQS7*uu3ajL_1Dk1v{+{)oclOayUVqb|{IsEuE z=s8X7t8lA@8x2#t8n;@wxuCj;fqe~bm2gubD%avx2~rU6?BVL{&A`46w=ySx|KJdK z46G-l(AVF^m4ST&R%M_FMLU&{eIss_uu}=yH{n(TiFbIy+>Bc#vUj)OR)%pZA^TR` ziZM?mWZ#BWHTbAB*tuzl$V61<+X-t!#4JMF4#L{tw!xCwPQrTNR>Ab_BCH2-Dk1xB zB2e7VBbqv2iyk`9s3CDAb2Vv`+hPEK`J&5kf0rLgdh7s z!rDM*@DX(?A^RZ;3`6qDVKR(C^3oA9v?JMm6svYv?gD2uP>6s}C1gK_S23vSfSyXo zejKk#?57g4pTMgL%c+FyC$Z~5K9!LD6mB&rrxLQC#;Op@sf6rjkW@ljx@e~ovY$m# zg7s8F_H#%opdDRsnGP!^&Lhb?I=eW>gWJpT!TzB^&aMpX7m%cJoJz=k5lIcKA&d1? zLiS5YDzTnQ$bK0~1&&h**{@(x18SusP9S z1_kyQ*%Da>1}^Y=c=lM?3|0mP1}^ZPj{G90#N=$y`9G&}I6d{cOeHZ3pZLvPqyTjk#R&N{T8WBmeA)vL&nx3<6xB zWr?YIkW0c!^GX=llfV)pT#(zQ*ptCr3GA-%$V|^*U{3+NNQNu8Ah9SFJowL^3Ko)M z!0vAb3HEZZW4XX*wSbrNu~*1S$bq~KayQhCm9jkSARh&R4z~i`0u2?f0*iBS`IqNq z=A}bc!ZEN{%Sy5{Fz|4J3%Kl~p-AKmH0t$Av z06cNSo+fJ}2b!^|kzrt9!={jdy$&3EEa}uMDEvf1?wcTuFk$G4gxrrn7QqBzClYeM z2AK{Mg`7yp{T1X`G3cxi(usuJ42&~a85j^Upc4tXIZ*_mClYcCp^HLJB;=OH5C@+~ z$gKhv7l}{IP0GnG&a7hKF$K*{i9=V3lw=gegKqhjikAZ|4cTGs$bc#Zp4MStlwQXG zlHX$O$iRZ6H9NI3zJ!5Mc9H@E19PbYXypuK^$Ez_?9@sI9!7-=3JeTFAU2~SD1R~t zrGPHDVpO`Vz`(#Fln2_h!>IgFfq{X8fgdC$0GhF3U}pj8V`u4AU|_lph;o(v2OYZMt6 zq_a~i3m6zXK@KSIWnhplfpQk~GBC(+Uvgm3RbgO|HM-=$V6DQyAP2sz8WgAu4DujX z?7ir~APlY6_@F| z2nl9PHzuZ}fDDfZr4fE~C(nSntP>_9E310|vAK&g&tB8zlhYB@+d z1EUT|t#Ka%gZh>W4h&~h7#OORA#P(dlmo3qvSCoaa>0S2M}>i5GE|0@863~DpDsXL zjU4yvETFuh0g6@7dYN3Xdq62g6BO|=eGCjz4i_946hU#X!oZ;Eqr||F-^aip<9@+` z;hqWugN)w=2ZpaI3=CRv7aYLJ3Vg$~x(d`05~xuxTZF|C+G$0psSIF(`vjwooG=4} zOKMJPNh*4^%c}>H(@hj+U;tr85gjvO1_s3Da18YYAbFjeLJSP9c_pbu81mX6DV+~O z3=BT0iDj7ffu*!T**8C#0ZMTnXVei8W?%@(DRxgS2?M81zSSTRogiTb)LW|2++0B&OssZz99^ZJdk^%Ej~EF?~VQdT3y8Of&OlU++(j> zl$w*DtP3he^^zIRf?XRQ6zT^WS%?n^b`5p$j}LP7@ppzzn7hQsGcd9r02lrjLHA$7 zmUzYE(H76Z$N|xE!P=35!8;PPN=*uMV>Y9^U#Nn!rKN(Ip0S>Rf{}rtxq*qHse*2< zv5|sqZb@lgs%<*xh_1|J1>M}lqT~$Q0#H+~G`FBAUqLrrLD%0%LASUh#Wp>!)Y4Kx zH!Uw;H^9@Cfk#gtyy{W6+{{Ebxu`@RgbPxOQQpC2P!JDSS)TSTUEZ$$@XqRsk(sgRF&u zEFuCen}95!054fv2U@_i53*!!C#Z-3-T9oHpORXTn4ZeOw2u+wb{2>r@{%=>Fxt)8 zZ$L|yKq?_i)?`6T)<9h3C2P8%C2L?o*pfAnrRX6WDRlyc0Br$HIN*x zo3lZ3NH=G@fR?O5FUXEBN=-}72Q}xJ&M|`2A>W+s1zNI(baQq9+RfQvpe1WaH)n(R zm^WuPftReoq6xmXY$fAS@Xgt$NxV5*4thB?C^kV$*4P;t7#KL=#;#)o#Vhukvmb!g z$e}D*1KlUhiLzu3l-^Kp&IXB~-JA^)LcTfM40dz&EvVxXb5cP|)<9g8o3kH)maK7r z6Wvj8aHHLv4T=HK&Do$##Kr>3>})KcB*DYM!octcbaOU{AY#cH_@-=7lH-MF;OS>( zU;r(Vg7TpY7};1rVr(oR53#X41ugMm$;Gy0jX4JE&Dlk$OV*}?Z_b_zS{b*3g@J(| z>_yvj@m1WO3+{ zHHa|Ak~N4hV#ykaFM_;e4J5z2@_=+}=6ig7Yq75X<1By6lHqgp;W&t+PGWPhq z)beELiZ+l0@}XrrgmP&zt2Zb&VZSt))dv(H!dO(FV#GR9MjliXBK)flqK_+pi8<76x15_6p_VA}&q_ z$G9M9i5h4b8iK-RJ|Fo5$LVi{T(I|BnVNSp<7aWaU>ybm;X0p4%L zz!3!&IR_E}pJ~Owkq8!fz|O!R3SJ@xnni&QnmUGg`nd-)uqO%aL`Y*>x`vR(xpWPz z1l!UzumsMfYhYQhyTES3zH|+t2sF)&xpWO74;swFwR8=)D#X$?gc|VL9zsjk5Xy;L zx`t2>S-6B)KaqH4H`gmad^I2CWDKwL76p*U+W0Ei)=Y zayz!AYX~!-Bl=*k!3HrQzI6)nboU7Ha}5q=U@t*354R4GLy>irBI$ydiGS%D!c`E} zaG$|eoFN-tj$}A!3>WLtHH3+f^#?G6f?NYbJ%e0b7}zV3jDgq+GYmW%0uT2pBz16i zK|&4d(lvz5_?NCB)Pa*XBKg%KSqPQ_TZWqY>d@7IGaKB^_2|;Lm#(2X1J#EhOF>K5 z5Q@M{o=}#qq02#Bf|#^!Msf>mJr~@eEl85Mm#!hKz`Aq|n>5DKHH0GgkS#b|kuTI` z??7@6blMEDJgpN+5|XG8a$Oj5Ft0-9I~drzF;pNgT|>AIVlvcnL~89t(hik`E<8gd zoIWHqV820CfC_5J(lvxN;CMunpMa!4G}tu=_tG_lIarpip-5s`x`vR4&G;d_Fa^m8 zFj?$N*Dy^%sDmu50xw;|rwp>N3cPd;pE5}BL6)xJQwOmXymSqpGKj6y*8a`zZTfs}$@F|1Z3SPQ~PaVWo@X|GW${@Cam#!g{5m>s0O(Ask81m9J zyvpD!gcc*ECxpFl<9rcI*RYuf$%|0c(4}kG)PagTa6X6DqoAd0*wle$6;ahK$Lcha~qhV@S<5r8dc4rN4m2gu*l>r0$THGo@3J^=z zaE1W-(lr7KVN2JrDFa0)=F&BsDv_41;Zy^OcX-0wjMckfdy&1n1-CM6OV@DPj&x{8QAv`b`dd4*9cmRVF=QSs{rLyAz9$*5*+Rs;_LxgIS5_o!@zzK$p~0e71z==glV{zt|3(5 zUb=><2GmMNS-OT$0`@N2>NL>OHG~Q@NsOgy2$k5Dt|4RzEnUN^5^d=kLJh&CYhb0Q z3)4{6o81(_q5}KUHMl}hV1Y9iG^s4H=mop%yTCm71-tCK!F)E5YUl;K?0djMC>QLq?*)sYT(HZ& z4=e_~V3&PAmgOw_M>1v z?1EkPV_+Z4aHhuRgD==+KMs~hzF?RA1Xu`u!7lqrQ8qc03wGI0iF&ewFW3bI7f2F3 zu*}TB1LBLxK?5Dz1-tC0MM06m8h~;2F8gUwPdU)U1V|nhTcERYVD}-5u&ar&$ulr; z`X(l4WagzZu&axK>|@~cE6q(xE%Hx;t|=^LVAlZ4FmV(MGcd4giuHo#IyeLJGeJui zLh^$vbCdFOLK2g5QW@B_z_J_&L%@>74D8xq2_8<+M2&wMyb{(({ z0vz2S8+5@OAqMD$!pN>>*Aw#xt;B=f@9Y@j81Ld4Cr-^BFHWCr$Z zunR$9mz7@xI-fqZC@i%Iv^bH0Jx2_bSC}|`L95Bo`EQj3fI)4&Tn13$FDF%y4aDp$s04Zi*F98e5a6*%TV@_szUM}cRX!cUDi~=X<#7rdN zGO(};r*C3bevy9x=xRF9jgFPYC8@da&?yIpoCYLxa4D()E7F3P1a=Z!eENsIGzKATiG?#(B0W9Lc3Ad7gy%B7e3#Us?4*Y2E%;J*FR{*gL?IF`S@O1G&T_zo?Rdy%U@}5*T}SPZC^0a=iZ{OyXnqZ5_`!Zd ztW%i*l=;*15=%-!Yk+Tp-Od0`wvhN@V7~<}16erH%cI+3AYVwp9f&X*6e(B%E0aVCo?ZK4_rkQGq8Ju zWn~bF1zD?)IH*EVfJ>t2^aV>QK}vi-urVs|;70R2yT7=YDyT98g{Bw_ySOUl-G%uTh-4QGW4^dBF(6NB=F0R4OL7oAi1N}tU?WFdq zGB8NWs4_4xK&m%quqGBxxBQ~=#G;hcBIk_6%sd8mSFkt-H2mGbJRVMD>)gR&0n7Zpk<&FC(ZO$AWsZJ(m+?2?A)93eMH!JRsRJHE8<+ zw5kAgHF=sEOboi395VTjx|$p`dk>%2hpr|+tOklKcd&M-YS=pRdtj+2U=p-q2BsCU zjvS;JCW^F<9HbE@3|~i%Yz1N+ImmRFQrJ3jkTXTGt|LFf%D{k-fvzJ*7DTKgM-zpw zBS#kp)%*ge>RHI`fAA}Fcr}ecp@u~X{GJP5Er=4(r8%L{ zJL>tuL1_SdpeXo+b@(0ie0xC>qTmA`!8b?2&XMNJ1t%Mb4D5mr{!Ao6#2xkg0Za%} zkngDH??;k=8e+u2e-T9#d`CTh7&F2Mv^(ngd07y0SnjCjFF=xq-9*p-8X*YrGF--q z6=59YFkQqQ_52%@RdR4E%{)xJ@u-;8*5Gkw(9xp5K-SMIL-%Gt6<5P~||k zJHw=YAxWX%QO|#X7hxvo+8Wp$_599!ND`0>r9j(wK$my$r}HD^KqrtQ-BHgkD1eYd zx}%&FEG{2rG z!dak$Utu|(e+`lZ;*NTLE-{39?03}jmm(=axuc%{0+I}f_iRt97la&! zz>gvf%ApJb0thjX04ym82qMJcchn0AAq2sBAFf&$NdkUHy?_Wp6r6F8?x+_KMaUuF zQ7<5dP27ke8K}8$}otu%Ll}{Gwt80UabM(A^+Nchn2$V#tB+ zR~FEN2&3LnFQ5+*1*Z$lJL&}tkfd?lQ7>SKqzLJbdI2LOarhne0>((97|g_ z)gYik5K`6)m?EhF6@wrtQ28ieh9rS}N4T~t4N5{mRq2DF z5}asI75Snnf=42%DnC?Jun0v}+aha?4e zK$bE>J?v(1p$JukAjr9(SwPUu;6huGBw+V%3q`0QR72eX8Wd*`a@4?(fNT1QBnLXC z0My_uW)Rw_iO>SF8F4eX&;cz}DUhQ;6BrCaIob#r&~-*|OE`285|A6Y!M70!ZAOTL zyA8-Ug9{bwV$)>AAhc2sE`hGgh(SnCA1;f0Gq}(fG;xSKpzSFk2}6V~)SJPDE<>ci zn?smQ8u-3%_2j;spT&EP_r$g1$&3@(%nQ3-C=g2#8jExJU|aREZbMu-4Ly%}8S zDv}i1&EP_v#t3bwH-ihkLy|(d8C+M)F(!G*pfsX)CMT*%K9p&2r%5MGp7 zl3E1H91KENkz_#^>E-7!2>F^JbhzagrKT6rr==D#2<<_V56LLaP0CBm z%yF$KDN0NR2aSL^LO+(9!G+q8VK z6uyEa3BCmtbO$o*W^iE}q#-(xR`|`}!gJ7MAOks|o56*}5yNmGheI#K7XAkn#&I*a z@IN+C1tW^qn%~ID}U4&EUclk%rVjaRj~@TzCo6SQ^sJ z;KDz#iW@NqYaxxJxfJCW1m~9)C8sh7UqTay-V81rjWmXaP!GKsT=+kdET|fS-3%^V z1|CR*BvELJhu;h?;tL97+!ubs$G1g4g5n*wLUY`Ap2lLh@z!v63{_02GI*h5=b|Li?$$*4}z@+ z-3%_OfHYhOYnX#>1{bXYOW?ci8=jKHUV{<{KBe%qB=!cZ6!~Uwu|J@}6-e>|T`P=n zGq@N7Bf1Lk&ER6{7~-&tlHoUli~Yr^hCwWi37ff~9vXvKDKmx~^3C948!+VI%Ll-d zykaaY=mt2JloVwqm6oJ3h)u(ggx<@{AjZ#%t`F4zWDr}1Ar9&$f);^@sj{JKfmW1g zH-n4K!%&EFGq{*IJGw!z00kvI2C+#P^6;C%#ke`p^+In37puo1gSZ)7><5MtaGeNF zrVL_Z z&ER6`$Yz5ik!}VTJBzB(CDQIRNRO`tO->DDcwFrm4U{OAb8ju8kV3e47(XzOph1r zA4n);-V82Y2g#iXdC+CJusdNH#Ou+ek#Cq5Z$OttyJcFu5nTbubi_^5;!WuCpbjI# z_GWZxq#LKjThJvz?P2)M;Nq?5(#RKiinpQ5B40f%-i{%QdHu9_2f8B2i~#1%;NqRQ zR3hC-${^kaQ3Xy{;C>~nZ!SI=A_I-1l9bROAGq8UWI0giB0_H}vJ^_ZO+%JJkF)8> zk{}b2;%f%79BN$6M3zF1r&-7nXg7n4&qkI+jlem`QYg_g7exk3)Xak@Km;Xh07iU1 zk_>c=0v?pe6Z=p>P<_lGuE-2(&_U`)kV%Lju1Avr-3%`N08J1yx{q`-xOgd2qYPvm zs=R9jgZNUUX?EoMzZt|+kXmiXG9X+oH2vAHByrg zdY?5Y)}bRw;`>ph(QgJ9H$Z9_g4TD!ZUz^hjU)lO8C+Z!sac3}Gr0INq?SI?&EVp{ zv5LbQXW|-2ZAYlf!7V}YrAQK>pa_Od!HWxl+w_oVhH3#RfM~14E(z-1gKq{G|ADCh zarHNYcob5r6>2y_+K53Mx)%rKW^i#+q*f~^rGV~MW)QbW5`~pH4C1~>jaZl{NDsvM zYw*Z|(vBKZlNF{LmdrszX$<1~@u*-BM{e4p>j#-1jx?{0E)O1y6PE(Fb|ImUO$B)I zCwN)4_+BhZVK;+|+e;!cE6g0od8p8v!Non0X24-80*atFgNtv%DvNY8xVRr=svA-q z!wi5WBiID8_$KfiE3`_6sX{66HzTWn7DkvigNtv2C<7N}FmvFxL2m{ZKMkHpM-4r= zBFLrR4C0wcL(&)~K@@@Fs!I+t1kua_-JdNUhBTNB@)%^8AAB>o_#~t;YnWA_)Qe^g zgE&8A@ESZIPv~ZF@e-twYnZ7Zo8f_e1iu21?|f7+eTQTQ*k`ej;cZ9^qqH05s3BTx zC=zFo2EWm71{beTN7xDKn?P>{7k`E%?uzwhaPegtV6DjEgY9N;abu(bbM%|R#T}6( zQEvtpUy39JDlT9%`S6>;#d(p&+d=gq^3C89+mQy|;F5@&!6jIb>O#<%0cfxub~Cud zGF+07o53Yqz~g4%K^ExE;F6F<7U0kT?Oa2>8C(iHgalblf+7pK8C(inV_=a++zc)S z9)`f81bj2N6nG2?i!AER;8Nfk28*&Vf1glaR|Y9?O@T!o^=5D>aE*aQ8T4jwDR4D_ zMILc8xD>e5$D#!JW^gHR!Hz`{>}GH&@UR6I1vqX7mjajd*lq@wUibs;W^n06pashe zC^v&kF9wORFtA|U3@*K7TOb1iGsqD1o55vN1%enDkVL^ZgQJT=Zw7}7gNsybH-pPU zk^#CrbfB-8K^Bq_;!&^976R=~l7b$Z8xL9*4q9THUsMvGlbKYMSX3FGmzbMc%)oeH zS1T>fk6Xw^6VwGZ{Z9K?EMT33a`T%7}Q}BN_>$F3`*i4LLm}#&LjgH%QOZC z2B~<@V!!;n@}kTVQ2p(h=UiG;l$uupo;_kpkvP78ldJA?22C04q1{rV=YybrT*q@iKI52=t5@Xz)6$0}o zh>z~iH&>ATsR{Duhbs;YKiC-<7`K7_X#w-6B1jO^k5cjOsU-ofV9$WoFf%YN0J(C( z6$b`&u!q<}8KBNz1d`AMMZ=;i4h$zib}WHJ0f>$6v|T7pV~~n>%gjp&aE0zba;->B zW?*ardD!5J14Ay@sm24!9PO&5*Rz3Q9{^{R|AU;2>)Q znNSPjZUu#KJ7`h%gnkAFurrOWI54aLIkOAmOb{F0nNjG@gdF({3KghRA*U2F7J!mB z!xaYxU9ej52ox1d!Eb5UW9KbgQKZTJ4r!1X^H}T3pP) zm<00agv$;L`C$9shk?==17p%Q@HySkC`tjj1(d=V7*j!MYkfa7<4n5jzz_j)PsZ*r zSb_ra(cQG>GDd>haM^*O0HiesoS;BPf-{aHNDy0sLWyXnO7JEZMrV-o87@08fR4;$ zoC8X!8U;`(PzeIhB(5MYK;qgB6r6`ZkqeG%caRZRL0oWLdw}Bl1z|;D-;iEiC%VK(28VW*ci^hpv_dmz*Nq_pj>jp&{7!0!_7#IpB!1OG* zVPHC@Tdgg#sf%F^)X$I+20_ic@bP1AX7z{wMdf<`+gDqGiC|r#}MJ&@q25{2( z1Tugzf`LJHA_IdVPXq&lD~KT;!N3qPk%581q`0IgCpC`&O368Z1oDz|3qT@ZS}u%1 z8+0@)!^$wa9&??WSdyV%TnIko+TfZ4gDoQigH#O4AX)dWONClnIoRgoIu7GMZBL|$HoRL_>z{J50Rs|;DQki)r3`{&M zV8N99QqUG(W|m&iG0>ojK0ZF)Bh=lMfoYB}BLf3#ab|j6dSWgE(`4oypyOsio@Zb> z3Q`UW0LD36m>3w?D;O9ZLBdQE890hS?E_~JuY4i{17}5iGH7^BLf5XA0`HdcM};HctB#jY|IP{jFUihFCWP0z-tZ+?4YFND#XOVzzsTq zSY#3d13ye$;3^YHtzhjn2L>T#1_q(c*Bls>nHd<8nHU&^nMxQK4TYIXSXh~P6dXZ( z4z`II-#B_1g_%kOc)s*9a)5M$urO1J1n0zrZ!FUpzxOgS2y$PC7${ z?2@LJ%usOMfkBp$f#KD#$SQX9FfhP_fN{VF41x|fAZCi>+;Cu!Wk$_`Q1b+MzTh^2K{OtgP0|>c3Yb74zzhljP_i#z z0)-JIpOi6yPTU45N92<<2BtHNU>zWTfpnZ%a>Ceq9PKKP^9}lWxQj3c8k{Nczf^Jdp_4IQOkN5No4gsC%3%*w>-q#Uy zxT#}NRuODArk_ftIV8RUt1{Nj;hW{WBK&wIK zexhy`I0RC~#9o|{UsQrxxv|8@mt^Lq8XJM`DJXjdQirdyWC1A#Debrcy0w7?WIZd( zW-xmVSTm`WDNB5QT3UPw12Zega+dhay!`kQ1{Q6QlUd?ZQp-R*W6)g}Y~X-kP+=9; z17-8#5|Atdt4Jy6=zI3!5|CB~R?&1u1_l-oH#a{em4Q_ZWDpw%s|W)Ft2js_2S~0o zGlhXw0>tG4annIuNf4I@#4SomEn{Gn0vRj-;)B`;46M?Tj0_AS9Djrv7+7UM-k0F` z3}VZI*fJb^ARFXBYy}1;CRRvTgBk^Fp!j1@VO4sH>}+L_=?oy#GxPEpSXI!Rt%~Gq zHITy)&Q=F;5zf{Cagm&@2{IVT*;+`>)&?DI4t2H;hz)hNE{Lswe3=%!y@lGM;e?jW z$j6ei6)7?@FmQ=7GB6l|ZU9gR#RmgtJn{}{wk3+7I|0CA;2qLzOF_v6ZXEc&Ew(Kn zgOJ6_7})mIF*7i*vb2CnkR5P&$UbSdBlE#hOTnZxBLf3W0c@W%+XavjFj4qEX||gn zjWA*8K54c`Ad6svuzk{OuR*56L?Qd6*}j4t%L5IM{NjR~#FDi9qFe?x21Y{`kdr}a z79kJXEzQOWmVyaFcT2Mgp^HLxOS4I1h=X@av#Ef^IT5#Rv73VI;su51cF?T@U}7%| zI9G!1<6>p8W@2FAhqx7-8X3!PgWSmM@WFwBm1Qvt1A_oW+zDg|qcJP!vMtbL9%xXC zfzb(MqF_8|E|P)K31qSm=&CH2W<~}Eq4bVGxG)^+6fB zC^0i9GcP^9I47|1q?WN2YzsuU0LTU*Q1^sU2&7x6fPqmMq)J4nh=EZVB+I}c z`jCZz0agq$&bh?Kz##UCg@IwmBnAdCW>yA<8ySsh5yqWnhq0XJugc zF^Pde3goBxHyju;K$X2~2uN=PD+7c1WCjLlkeFmDD+5E~WCjMw0?_?llNlIfCU7t? zu(L5RNLH~jFg%#dz`!88?}h^d$X;1C$dygZ6B*bTWLa-IFg#{sU@(G;GLR9er#z@SiY%Yi|Kfq|hHXJFWmkYtcgg6aTWFa-)61_mW) zKM+cBI4I{Pf;XT;DYlc0D!Hk-$pw`RP)Z3>07FPlH)Zf`Phf)W1S7)^CeTGZ9?^7d z3PWnhvf{jgqRhM!Pczywc?OvP8(;ZcMtM@c?F)`1qvK%$$c^r8;!AMEm*f_tfeQo{C6IA43{0Q{rx;jNazVu|$RXUIYit;}AtepS zjSMW&vfvAD7?>Csc;e%8i{s(3#lXk~G8h(PjB{2pF);8JGca<2OlO+Nz?;Xw$aNRg zteD8c3o2X_OBfirK&qG~a_}Y=r86*codZkr@GZUNz_1=v$}vr30A(|Nrim=f6Is~! znI>{DPvij6Jj@e$*g(f^oCMu)Auhte0KzQtOboBVX;&eJu4xz4B-KyOFV;(D*l^2% zVIKnn!%tA6C9U#>(|1-{+ z4r(J+FfbZ}gh4$x_#lTVNDn7Se)}y422Rkxh3QRD!($^81B3n)1_o}JIL~e-1_q}o zpw2$;m0J!B$C(%yzA`c}@G+Gza86|S#?iz0eHtSJ|I1qr43|JjPX4w7!(%1}1~(>% zB1S_#@W6(Sf+I*12Y95Rhmj9Fu+f9)qw#?UHX^>UEM@%O!^psIc^hJ&Kq}Ngkd5eu z@q9rwK>%Gqf^A|1$c>;X7;UHm6a>s5?+8_ZMlL{MBwP$0syGYst%#Bc0|N*%8i+!N zE1(p!poozO0|N*%ZD80BY9cfE#12Su2Nlu@uCHeZ>4h$esPH1|Cj+-%XfiesTGwom~1r>V?&%sfsl*qs^ z;kE~`F9)`gh5xH-MQnypaQzT3|z!oC^#|* zF_mzj6oNwN1+5TM38GZwdCbhfaQrsZ+T2YbYyUDcFw6#73lkS+XJKGi2d)EnKmj3o z$AKXnRA;nGj)v9? zSe?r`5ne9{WZs4PeJa#IA&_B)sD_ac0;2KpsTBo?EX}}Z0!j;vptuvOfbuxOvjt`# z3DB*}NF(H+*k=X>q6Bz^92E7E&=GQQH6o5aLJrmdiad~pZHy2Nh-ya)TFF2uWm@TRxa+_m%D})-lf=Nl1QKIl zVhrAN#XUuaV`Pb$MF1?s5!B+x%a7UY-fB{Mv@>%d^h&cNWCJd$d#g8Xs@ zrX!%D1Ll9mIc=Pf3C=>0uUC!+i&a0tN<#R3-)n&cyf%2F95n zwSm(a7`RVyGBE7853Nt;+JHK$4>=ha@~1N}@WRCTUW0lZ4E!LqpYB7affn+B)HQ+B z!Nj2I7zBQBGBCWk>%edVG~86&3o=xQi-BS4bOr`NkQko~7br1ugVcS$>%hPVs+>yp z!qlw*8442@0;$~%Y92ChgTgHJo&$pgNc|zuRgpYvIT;wvO=n=>S-{D_@C~F9ra)*X zCj*1w3AsQ0w4>XJ#=7r07_QflC02>c?h$Ba~1=GAV?ByxcV$;sIWgmG2Cw!0|PHi3~o3$ zI<+1_L#4+RWH=~P5<#kA;xM0rLdEM5w4FG)5T>>Sq!uQQtTqB>?$nvA3=F~`b9rH6 z$m%Y^)HNT4nb{696DE$VR^TzzSIa-b)XoB_g^9z|f&xwHF*MIC4`PD`+S*yrSh)() z1XBPGIL_J7fOCae0f`lZ*$fQ4Ffr7COM46rxRrGv3qT%p2C0UL!yE$&xG6BTyFnwk z;8G+Eq!uO)RSS;oYmXfmet=?oEjv5Z;hD3c4xc!ifk6-?33l{)n4`a=I{F&OXqXtP zqotleLvXz@$Z(LOUxHM_#GwuWrwk3a+IX1SKOnU*ab&dtFtwYyVQTs3Ffj1K#F5p; z!PRbusZ|20g^44pZHB4c`WU7bH21*^6Gv7%5w4b>gMk4Y$Q~ebVdBVY4?KZJ-VSS+ z+Gvnkm^iZ92Qan!(_w1!Kx$#)P_-hm_Z=8CxEL5j{qH+4SaLBitmj~05CgaT#lYQ& z00l=7pMz~;0BF2NjHyHbI`kt3?(cYjL>a`HA389&fXtD6=)e%l#lUbCY7Q4fpCo87 zOGN#l14AlERqR6thEgsDhJR31Y!kueh=HaZIR7(1aY9^!u$_a6^FM<~?<1(Q zk3NDpI}@sq(U2Htb58VtjfY8Gc?@w1$kS-nFi672BjR)OQ_>h1{Xx|+BPer7l_lns zrb0!eGC?ETjQ*ejM2^h7lK6teq7nwiK#*z%Y50l;&`KXrtAH6)&&j~MHL}Rv8fmQE z8c+;@G(fsFvPh$8a?t(^lwuZ?j}u{F0AZ#La`Ev6`Q@1mP>L~6AtyiGD2D+;GO;r& zq*fFd{{8|N@EaKpsGBhFJmldufDE>CffI7dE(3=s47KgB-c+(6=p z^Gc|J0#~61B9A!33_}@Nz&eNxEq2HlaV`;IU;trkBhD=%3=AL)A8|HH9+2b?>MB2Y z3K?;}gPPvqozX$jdxp&XfhPx1rvK0;f=F0anwgizz%&Cq;tUG`Y$ML^pW+yC24xr! zX4(!NaXt%(M20*^R91Y1ns5ob^lub0eV@XUe1 zh>3w=e>zH837Pc8IT?p_GMIiVk>M#Db!42Vv;*pCvcal0Z_t8RSP(GIxy%gdvx9{} zvlW#LjNTv(%jY03u=E89aY6g&ejpC_Tm}ZN6b43rka-h897rD>%s)Sufq`3qlY!ws zXhyG;fw2oT)WbiIfq{XCk%fW5<{7l7;j0ZA?v-X?U~r$uz`zF+=T`--c46QFxo*od zXj^VtI7sa)W(I~RkXo2H{};&UHAw9vn7N_NFtxcLwJ>pHwRz8>=9YrynR!9xHh|Q^ z#F5obdJc7OCTN8vSnXtxT9`Pp+5<4PIqb{~3}Cg(Kx$#)$Z8+J)aHZ6q`_);g4Dvq zk=1^KxwkSNX6_k~T9`Pp+K?Ae_a=42)ZPcFg^5Ge3a~zRU;wRd610Erz~BTK#b;oI zj%0U0$MT`;z(K>}oD(D1zJr&2Lx%97E4GDE8g8J}!3>IJ5pcr|ls-hE4YzHeF%n_) zh8tJ|$Qd9FkQLjakcJyry%@B`2Bnw<#b=2yFn}=A2Jl`eCI;11P)%f&$-q$X!hvDm z3mnB5xcNq5@f8DJTVM&ckiNwixUmVEGJD~`(8j>PusD-}0cUXqEzRgtYSCku80>on zrq7^ZA>Iz(#D6Lwm}YI z21)UQr}#lG5rCxawV=Ep2u;*bidhhvpbgSM2|6%~fg#|f1H<%}I1)6te?nn`mhc0O zpSyr9q+fytE#=P4D+6uh0`&nCb5l!Fi{dj9^HOqBLCd-YUPBsqTe1iya^}*^ypn>F zBG7s+-&G6@49w-ArB5Jk(lgL>)g{p6I@X-P0+L6r#90{`L5%|RWnBd&8AYjyDLMJc znR#jX49qJStw7WKEDoT>T5!3aY<2WatXr?<~@w3K*Q4;L>L&D_cHDR#Wz<@ za(r@rN@@YDg5=&C!lM5J__k)EwK*Ep!VPHPM$N?IB1PNuPFfbov zv}9pmPyun16H8LlL06G6A7}JrVPNn83+7~Ir!p{~09(3(D>o@VxwI%gH?e|&`6O6u z4OdQbeqI@96+upXQEFOpera9_1M?|HCKd*U4N%Fv(p)6D(_pzRP`TXvJS4d@V7VO- zIR@slj0r3Z412heLA$UFk<^_7t2+RdU|>Gan8w1uaD=M>tdfEG0%Hyf1H%cfg5;ds z!~zE9i;P7q3=C(u3X)5~{7Yc|1&|lPE7y}ti;5VSFEh?#VPLqzzy^(`+$3l;tz>)% zDj!&$gQmqH(FB!)#t}zOelj%H;$cF}YZ$GV85p?Wk-e5t8MF?M3#yfYc^x=jSs2*j zA==|hpn93tGlI5gag-#c`#8sYx-hUYZ)TheGOXMuF)zIo9O+vaL5Yrms~o&lwy2VU zc`I0i2_%w|3O?qZc^g=Wg@FxX4)b=#AkYZA0P`WnZy@s^7Bes(26Gv>%3%UW7(w^X zv2cPD-BECGb8wX-V)z(Xh=+llWf21d13L>SZ?Lm~(k3rx7GDCi-WWu%f;P{AR!M@Q z5X8pp#_)oC21;^#5DmPmnHd-&5e9IBlNbX#3rLI|oYmM_{(x=mWC7)Bw0(Fi6)X%4 z-0|@_$>2Q<@hOQVi45#4eJl(N%<%ypel9*i3@rAWSwPO-$-=Z!T1R0 zfRK1cXVB%93_L83Jgf{1LJ`RYC4Qy33@lC{uQ3P(XQqR>&LBN3U}?~4r}=pdEG|n} z7#KJhctJ*rg9fx2MB+i(9g|B!5|bEM+(8B+3xOk#fyD!46tXz@MmrWyh%oq$w0O4w z*LcsolnMqGFNm;TX)Z{RfyEod7iD2~3HJ|jVPNeAITOCtg`EXdIEX-JP@y@5O$D@W zn4JZbZD3O6kj%qo43dHg7QjU9L882%0Dlkm7t0e?1_qJ%_`K9|NG4oDfNPMazY7CL7Lpnl&tUI(XMaZ@*I;K)P^th0nTvn8UwnwCud9D(2m?np zl5*DwSLaYrX%iph8W`#sFDR|im)XgQ;~~fK!_(O*j$60UHwAhJ^h@6Tpfd588`|s6uWr(BFrkpkamQd1q%-b zjv^#gzW#omA^t&-7>f7zW8f%8k_8>i;|z^H*d5!DkZ=m}boU7Ha}5q=;3y$V2gsqw zx=N9BLCkax4GIEz7v?5p)nyo};XZTm3=Z&djEqNCUXG;P+21eN-^Vo`rVezhkt+j7 z1(Fg+A0Pj4xB^&;VBn}kQUi4()G!}^XKzHfS0Sl`y9=Bk;+Z?On1I}#l+)$4$?Gzdm91`#8?&lxm z8Xw{j=L}ih_MyT?3H(+k_zpaS6hTW@Hs1j(#pqk%+); zL6Qvha|{V_^>c}b*a7!UE0P)yPbb$PKgSTHJl2L)+RZUIB-jL+t{FJmkrX)xd4?dB zn;}7te!-rg;(~#r14&tMWN?V9Z@go;W2CRYiz@?1Cz2#2Q6c2IFyw-vUInMfU85k&hg=n-mVNBJs5IO%Mq!y7fA_J(kV0~#NQ7oF8YwvfTItp0#s0ga(_RPJUEQe z7>hX%U_dBRThLQ^*pNu7_Ui?fe^uq&*6$1w?2(m%izT8DuHf`MZ)lDrcr!h?`& zhACKNT|9%GJsgAFVRpnDFmO!8tIo$Y%+&{^Y#Lr=Za$9g!60SR@hXD^U%Vj$#|*sc zAhsGZaLmN33}UMx1IH}9%AmFyF>uVrs}5qT5d+5@yviW98ZmIp#j6Zzt1$z|JiO{4 zwi+{V%*U$?VyiI&#{wi}0YU!GuED{eV$(Gw1k~z5O2Z4WDh%-m@(&5|0o7JMp3adB z9E5y1IJRV>Oe&vIC;a%n`Kzl1-J&e zp{iSsQysivfLvU!z^&ZH71EACR=yIqa#*ti?&4Lr)xwPq@P~x{YTRn!=7NfE297nj zRl-e$s9cL%B}hTMvxlp*Hv`8y+{&E%{ewf`{#j2*A*4{>fK?eNLgOK^AMEVt1CIKQ zxK+A%20J?WxH52T!mS1p@9>1V8MjJg?{2}Z%*EB$A5;$_YTB*16$b?QqpRMARkbsy zfe_#r?Sts&w}EgLJl>Ba!QZ6L>XwxH`H7 z`TP4K>o|#Bhii}6_P4ILkwq- zR6<+2&i?+OG8kUApG8sv?ySMOf&PBb7WFwK70`|@xJ-u?6X%iS9i3gAp?&0F|Ii?3 zR|bv?NYXx@F2UiRAad; zdxJ)R{9NKg9D}_XIIbb7K$DF3^AGWK^K=GhOa_kYNGcrz0(=}p{hU4GAw2;GjvGj_ z0nVPT5g@+=#|L9J=x$pLYD1n*+4S!TWKY}O=^9%|Jb@Yh`)i9vs91A%Loc==AZ!Qcu%)@4@W;2A6Eu$C(sxzI}2zwgbBWh3w>o( zJkBXb2A+w3Wk53t%(4s&{7SM63<78bX!KnGbesbNJIg}`1_oY`RTi?)AzIKFI`WA) zJWDiWVPfDDad?(OhPpFz3*zJBP;^`9a8Jd@!mtUU8z#qPl9b~enOFa0-7KFrJ zkc1fc0BP_|l(2g#_;bN27a{|@Fiap5NzgAJE*!vwFvT%FGY57BpFls71XQ&VgTO@; zQSd=80%6PuBZ5m(po+nFLJ07(Amm&tN>YpR5_6pM^YT)YOEUBG7z7HC&i3rkb; zN-`63pcjt_xUnO2!Nfiyi3JrTgRX_kOU-dAO#@wmDPYQp(19*%#2|1VNgC`gbTteD ziCnl%FlG=?=0=eYuFNY*tUz4BB4EpdA|FtcUr`Bj+$2=F;F8iLnA9&MseoW;GJ;7S z;6<1T^{+>Mel~-EGar%!dA$T|FV7CyHd>90IH-gG;P`lG5-q$fG*u&AsHHblw4=fChe?%F;Ajpp*49cMlf&vIJkN_+x z2nr&^g9?(tIh{dJ2q6d-fvXlql7MA!20;;oC^+NfCFVfyq+$>hMaa3N1*I0J7L}!@ z7%~WoVG}oE5EREIZpO(}q>B7a?-`6o2l&4|&SB?&bkQhS+y+(LIU_YW8!TaqD&doul$ygJXoo5ashnY!+oMW? zZdU~x<$x+4oLrQjljD?F#31O1D&t<1Us?dx;)Esv%Dag9vpsMjiRf8P5s0zJM z6+%NARgE{Q8kB^Bs?rBTB{5Bn1JP$t9&lsqu&cG6IXN zYhDIIK_nIh;4(A{ECFtCgamnl2XPn#qrt5Zcs~=Z8!Ds$>0^dx=7FyJErv+LyP!hg zUaDl6W00#~s4oM!<156#q;9~#AQ2W4@9G;65(!~~TR4m$K~EzFCNOQnzzm{;Oc+?e zv;_kzh<1)-U<1)Ejv=lL>>!p?a7YjX2Z#k)-QpPH?7_eZ;<*L|`3Es@ftXJI{yq%c zAQtQna2^mR)X&?`KirRj7sPRKb@udi^kLuwaXbwf1VD7Cry+wNgki)W1Ywvk2!j}& z77QXFI@HsGK@`LQjo*ra7@;7RIEV#aiYEbLfo6C@eL@%{K^)L(Jt+_)*wM|^F(}9} zl0h28b%wBIKy1*ErHiYZr=P0}gDgnECjjJ6IS4Zx#FhuKgIt|K3olhbY)`)s@Jc{c z5C`N6Fi#D{1D%Qqo;h&<@tl18ofsTJtl*F!S4Uq4CkWd=$kE-E!5P8nv57kR_ehe&~+Ixi0J9VWj#Tm2#G2N zkuPZC5UZdqdl3mkgf8FI;^M^gROrQsB9|dj;N`3F!KJymiA9y5L93!%aF32bB-ZFE zXt^pxflGceHZ}3cYC?-si(FFEGV@Yll}=`AF@s1VvKp7n;^f4l6i_-uu`C%`5%_{3 zY}TbBt8y$&$;`*5Djiu>SY}EpR#lnEs(e#ZG7~|m3Y&S^5S8E#7I>r)+_wO={24@w zjSvCsmYI`-l-8~yNd*+;rx&Fb7yIRxfbL5X=`==Y^GU4CFGVD(cSurBIr-o*2au@@ zB9lxInn0K0I_9N-%u7y%HMvE;BdPE&0BMG&RXrgNFM=_8`fJWR&J6T^F)=0H+4k+ zL*+rk?fyBb;hCVZAqG(uq(NT)oK&C8yle*1S*U`ZC8@a}A4A=~p995L&@Ol=s125q zU(O&}hBWl+pOXre2WKPLfV-#+(%3IT4W!X4`U9&Zv9RHHxQl3gK!$i z#hH1fsSKh^kVbXGGE>W8CjG=JZp0v}g*2iI8YBqLFD*(=We~lDCJwzdQ8XH9G#8;B zlwH#*8ASgh$%3jOf6$`4ASVXVGVqWtB#A;(d_YltStcmMi1~tiA_7VQj-@5}x!__N z8u5nlND(jo5ftyZ6~a@1_$QD;NTPQxN=+OzMd{V@tGxQ@wvqnxjFF$1_lP8-Vjnsl6VbD zAo!HR(~`s+uu>mSCr_7n-{1&e9|nm(pkY2p@`~{Faq;){%q_@C1r^HRw96pDz=*EG z4|Ls(ggS<}OMY@GNTXX(VmgRskob#J4TD4)6E<@}V+9NnrOX&|iMgpMAd7ty3m7Ce zV8}aXB!cR+)FM#3i$Q{g1>FG0l9Hm#q|%a928n4HlCBURGf42WqU!^VgfK`f!w?4z zSb%0)BvjeZwLmLM@B{#4`y*%`QDPp3LT6Ch6?!`;gM>IcxBl37y8AW@G)CMY#6wJ0?&Ih8@;2Zj=God`~*3=)Z)NJfYF1eNB2_Lnk9 zEQ5%9ocMI^7wjKMCKBq9q5W6b5p4$uqkBNG>l{? zE|pRFdGN^^$u5X0aJmBbE8%f886pFXqmmTl_?v<(2MS$808K@fLW#F&$TH}0HXT_K zWFk_0%|MnzjjNf+QpoW%3t1uIK{t{z`};x^fQK!xCa8u&RYYc2N`P`a+@Pq=4j1 zpVYkck_-mf#UL>j24)NcWS3ZYGcd4#3=v6>FG>$~PAp0ZF$hS`WRO#xh7P?BjI2CkZFOKuP7#Mj9d_V@2fG#&;(f46skOS$4X->zlS!69( za{*X$nGXYlJotjEcmmq^K~@O7c3@xwo!&o30iub3L)k%^6kbEG2bfdq%fO(Rms$=x znT&xEtRQ|q1A`Js4x|!v@dG2L@7}Vmi7{S2gzydnVhFR2)fk7Q=29pB|m>V;O4gDX69gEU>0Lw=CI*fwYK&^g?Wt0NVz->Q@}eF;Y;wz`m5`Wq?>I12vr$X1c5> zgSsRrAml&{1_pT+a4>iZgTfAEk%9&TGlvW}1A`)x3^<6Cz%r~149d_z0Q*q|YA?5^ zFgG_ZHxD-`_*7XKnfXBB3^P?t3=+KHpjS6#U|`UIx(w`ZCJ6=xO@si5tA*e)Flg&B zf@7CeT~YyTs}3t9)WE*gg(?Me^tc%r81xb9J%u4U44^{XAn$_`kb}f@Cva>SLbY>y z3Nwi_Fc@(&hKhqi!dRBkP#B~#f;$pysR@z*D+7ZmD}y0ehZ#2`NErizxe0@zFav`H zNL>(Ps5nfcB}gR$gB7wk1A{dZ7aYJgAe$K&Y(b`gTw>SR#K<7X2r|;Xvx$)r!~{9a zp{t3Jfk|SblLP~UBTRyU!3ks@$RQEjkzn(jkp#FI7+fGqK_<9DOkiMe(_^%k1P3i< zxVR(21(Y5A|*3mP$?z?5KM@J5)Q#{mj?NM!i1A|(f3gcb${ zKRpJhgIFQT85sQGW(D1GK} zFffEdh4{dQ05=0e7+e5cs^sx8FodHBv4Vsc;6;)&;X(#gFcW|jJA&Yn z1yu5JgG7Z885opxaTH48;9>$+8i|3*7X}7#s8(?7qe>8_A-Kp^ zMwp0Zo(f7dbAzH;6-5Xf^J-8bXp#e^Awr1(QX8>AYa?(;$O`3v1CR}rKtM$^J3NBG z*_Z>hY68_%pfm}snz&$96F0O}2J7L0RZYC$%7UALfe#cLpkUyKqyhoBCE!#b2#rc; zRV4(fnuHNS38|VyKrUop5QU1vV_FRALa1isx(ZZ@*l{CQ1(M)ugqwju3Pld=Y-z9@ zD+7ZJ*ma=V59~TwB-gPrFvx*D#mc}S4`#42Fer#Zt71h71_lNtXi$LlDnnfhO&=;y zE~}?7D8Z?kFt~&3J`hI@DhIEV)Dfu!R2o52?lefXp@Eumk*hCp1_oI51+qq*fk7K; zGB~1jAoT?(GIT*jK8T@b0x1!p>h+P+ssU0?Foa1kFc?7!WKdo)hNxg*FhO=O#JSK~ z&J<)51A`et0gALaLLA{!s8$PTSqlw8OHj3fT)kO=sy9%DWeuyjY`_c&1_oPhXdMdj zqaC8ofYr+Oh(KguaDWC9IBPg^GlKLufvR(7gyTT92#Uj95Sl=>lq)2BKw8}(Oa=yb zxOP^w(#Hd8Jt)*A7#KWR5s@Ilz<^wri8C;GL!ym=!3SX;ic@?M;uvA*2lYEEiVlBh ztb;;UoPi+#ZU8sPpJ)XW@wFVh7Qc2K#(frv6lxxxt*fEOrS;Oq~tqPUT=KQ{vd4>;FzGcfQ%^?`yVW|_8ZXr!HHH1?b7}ODA$iSchG8W`HO}M@2wYnBm zGc;mgr5}hZ&cL7p4K65G7wSt8SAu~-4~Z+zz@U$$Sb~AU0JGjTL=j?TU@$@v0N-K= z>p5a?rlF=b7Sz=oPj|A6b%dvf=IE;&A=c8i(6qtsuF=)iPV4=h1vzKk;F(1 zF<6+eAlwA;Co5C{o|W0)mZK*UcBl(L{*ho{Kq?hLiJB9V*g@%x%Y?yG*hCT}%8kf2 zJV?0-ttT$bz`&2{Bk~I{sDI!w%LWyIdypO3gJ==Tf$Bx1WCHRG7tAvtPjVx9hX*FX zz<``2#2Fa)P`!ojPtZUrfi4Ls<`@`QP?J0>YLaJzG*#JAn{^x@t)N1k6Q$t>Ze($R z8*bbT4BW`o0CFo7rFe#<6-W`yjZ#EIWCW4J6s1fPLJd)*CMqaIMUV;$P%#b4BA~zp z70}@74${RJM})5gQm{)R(wP);t^%1L4a--c9tyNmE(*0q--U)TBMw*4D}*7XTo|TkcyZaR8%v7!YB`3$7AVW3L}v_~&_SIsP)dS!bvQvrg7O3xB+GEa`XM}^ zeh4qD&&3DnbMeFaY64)>xfvJ)!3@w*{K!#&(g%kZG@{U!3pc3cB8D8$C^ z7+~FUP^gPDFi65e6BNu+NWlzhg@8wx7#L)b&4#65Xs<^WA%|isQV$)b1KN84HCCV@ z26DIpN=$Ks3T8zVAyx(kB@_W7DsapKi3L_5!MfPsS{u>DhQ$mABxb7pKnOjV34`OBn}GpTN`XQIIc6avSCBp_B5qN8 z3*t}{LCs8Y1_lX4IYLydB615N649Hza?mCR$O;Jt26<>&f^rcJP4v245vmZH%9N1G zVF?BXHN$y(4>D^gJdO{Ln1 zR0?X*qNG$EJ;=~8w*ofKeuc^{NoYgQ@^gZ2l^iCFPj?{zt0X-kG3=BADN}%54_7nzK=bvkMznW&l_ zv$_(6RaZzYRY>DR98r{k5-@z&8$PnYz<@HYfHUmTN7@l_2FiP=ZCOORmq(a~V!Z;W z3IPCnKndVX#;cI9Y@+gE-#UaQAt=_qUA~{ z)T97!34)>*xw`|?jy8x2YBPYM4^(D=+6=Iip#Y0?So;nhrKs&Y(2O!_41!jpU>UK2 zc(!F~$a(ECvN3Y}yml2V`Slkid}(;f-MF89r)JGM38jHUgn@@}kh*8k8#r8}<>0&P#*!NPxOh zl9<)K6s)?3mE!Qumkd-pIGM;o7k_~{a!?DwgBIen~ zWu!KP3aqrksB=`23L6Oq2Bf)jaOr{EmqRW;5ayw@CqbPVSR(>yz8vf!>=%BMQFu=O!eBcon@Y)Vo2OU~cf!dR%C`lSzR+*s+ z;V7%XaRE=5=-qhOC=@GX6bd{%#lXOhDB!@|cTmzr?ZAW98X}FK+Dn2)CwQQV5Sr?F z5fP2nU_+i)62}}>Md|`dFfa%rLL3yYpbkA!h=XRC7zG&_7(|fLj3`!{aRd-3Z<0JF zOIognjMwqNhGuy|BRiPOVW2BKAtSP&nKW>50J;$r%-lq(6%$Y7;XpmG2+uVWSrvao_dP8hVh5}v{3p@xIvot1$B zX^;*jhe20DftHIXAw`z59wTJU8%73)jbwltBoc_R3=mhGfk6#9gRA4n)yQjP#2FYg zQInPyB$t9RtTu!RYBs<+i0DHTC`)CKk|1cQ475QDTjL4tTcUX05L#G)#)Bjn7>uBa z8p<_B;);V7(V$gmsJWjNefR=g9N-+lfK-b_w3VUB37obNlQ58^&ITL9z_EY=oK`_q z9l|G&;R9~e0ti$_K*J6+aEQ5p0SadfoO_?Iz7-l1}grfAqFuppf92TRSFCY zhzSZ-w1zj%Ar7dopb1_P8njR@V(N|?C8eP@e!xiswfRFtN&po&^dHEAr6I@=78OP( zz)5c?_L@Ku3QCZmHW9RFQ3jdGk@g_jnipXE-ohN}J2d+3F3rSfS z7^ILVMqxE6crpW2E+EZjg5niEfC}nhLnBuX5xk%xNglZzQa~z)kgHI5VTfK&fo20h z#T}@ekbq8hff5dEE&yDDHYZydG*0;#(V+XDeM5Vd#B z&ANl9dC?ffg>Kw$&9tIRUa%9=V#4U|;~vq(V~@WB>&@)IB*MFIvFzm?bz*NiZ;2LFdGvA!H3{K!Dr|-iZTZ*n-P;Rt5&x+GTJ!Lx#Ix zYnQ=gs{?danH99MnSsF(+8{=6DLFyg6d)_b85o?Q%FxRY7pO8&86wWW;0jX)G92VA zH)!7zDRa9+g&>_)aJ$0;MTnJw!4pM*n}NX#DgZGD-1#MUXa=(74!ND`DXh=Nz<{W9 zz_|nG&K;$MxShS<{-<6P32aeShphThyYO*jes3A;2Yxu&-08lD}EVKaSAaLyi9t;6j zEXbWScxnM_6r zqwzLQP;m?jLP~Z_LE1Q&^SPjXm!J_H2@r#U0XzbTygvpp{s&6QP#JLT0jXJ785m@d zD=Vb2Kg0%1(6&xKs9ta$P(a>*sR-JDiBz*dDidXpuOXEXqFw>FH$V{uZ#Ti}6=H39nW7(^o1My?}3RS9@F3D%r}w@hHk2$IxLnkpdIp(i6~vlpC# zSs>{Lwh#=Qe!wGbpjbdG?*j)hXn7wvokF(H!b&UXxXqy0YlW05z%h&3M25yW*fWR* zG9;-XHH|@Wg48fZD_}t77K0!obgL(#=M1l=p!G5G(mrtp2GDXDaB;`Lpoo+dFlKuZ zRSbHx4gcJa9(xkt79lrkIRK75NIAgDz#xsB+hq{VP(*GAwKP$3yBu`;w zS_B|^Kahd|sdI@?i7l56|L6i`98fUFxosNW3kK7+#!Top@$8}*<)zsS9A zr2N9bfIL0}T499j4Ny&nH07Z#+0KZ%!yI{OGN?n1+}=Q$>4an-(ENxhyblVm@t}*@ zam{ifmZ?FyQsD6x)P-s&ORqIam!gETIk=egL100y$R%mVU4l;o$Ux z7y|~cvjWvq1om|yCmcdM7$Gr%*tdxABczppzdnJqxnT$KAlo}!`f&r+k^^NwNH+~B z-GPch#FP|xlnRmpp#>NEs5BxrL1Sa8utJf6K@BOJAeN}3mxIvpLTFn<6QUioC=9v( z&k7nfga}|s!XW2?lQD8t3K9hOGznFtkm_Zi#|cntM~aSnf<_3uCKeyC^aXVZyzE6< zF@z}pkj9`G7?2KA0jU5LYbtusgCC%=30YqVT6qEAp9+d=Z~{Os9l#|SWU&SEwme92 z!UlkLYw{4X{ZCe%a@)CHP4{6>CRLH2o>qGQ`OxSQDXz&v>oCpmE z5Er!e12jSp-5daRv=*r1V_?vRj8f`=Dn?LIqzh(%&H;ebhoHoykE|CweE_K-kq<+G z6k7}o$ftIJ?JzUjKrcOEGY6nXia5%-C!i33%^h%Kwq;?{2Oy0S3=Gbo z{Nw^EKW!xQkQ$z@a3N3*;07J@1u2H1qi3LbXV`oJq-17gV8ECyKveMHT#E1*r2Zd) ztyORd16p?lPFP~Fjti`{3eVIMh$VdAGLGb|cBQ3`9kwO}@%^F@TV)iINdlNy$1}Kgs7#O4=1ro?z(nyAgGcbTQYCxAH zfQDe9W2tgT<(53CBm{*w>}Wy6CL2(>$-sbo*b6wlffufTmSDq|>q9y)NX0q>gBqwT zQ-`DpNSUaCQh$TostK|Hl&GMS!idHlB#p2l=7W%mB8-82M6w~iR3Tm^C}_Z{k&+^$ z?SPsTp-m2OK|X}%0+1UIpe3iER0j4FXn+e;_JcX#Q5Vp74azZmXp@1++XF#K5jr;x zuE%5%98dy49*z-bU;w8{Xw42zate@|9d`T>DBUnHfJP^w30eh`pcxockyA5xgDj+8 zM|6duwJ$X1XoA$kY+_)5CPYYr)rJ@fuHAJ|Gb1FyBONmYIb;YFSYYqLc6oz21{ew7 z5aa=nzo7@NK|4LhAYX!7M5xQf2~JIcT7#hWD(0prXkh@aMo^BCPpl`i~{q6&OM3us_W5K&hMA(s}yNP#Z`lVD&# zECdI4NFnhc28~m2(nP8{K^v)1S}CAm9*6*>jY5-<1v?DnWpFQbo?*b}tw4rG zU?;AidjzqF8C*|8k|b>XGB~@yRx5%z!ie@gZ0(H*sIC;nC?&*TnMxd-n?Owh5QBk1 z5=4QD56m-#AlXj_M1fKsyv_%4P-=ZdmV(yzAQjM^*PszcNH&4g!`z_$II;lh1}v-t zE70l?>}C8ta9CU-=FP!HJ}B~#;u3kc3IhYmP8Cp(mv!)aCQGB9wWm!4d(B*6_UMtNXqffwQ}NY%xMQUD(;1@MDX00RRk zZlNuGP@M{G7zrVTi!ewb$WVBF3d-}MnB@_yJ_To9#O6_O#Rf?z638{KBs2)XsYVJt z@TH*wkW7U=q2S59%ut)4?KPyl2J#6jB0C~_0o2N?VE=*)16Sk>4EU>Y>e~;lPT=-~ z;tJUX;wa}EqSS7nkl}(P50EZy^fbf+OGCU6Mc{+0`l)a`;Rk_)Zzn*oHiGHw0=r0q;!)FZ@9j2W2YcRXXC(VN6hM3L1%EV1TTj z0396&PZQ7+(jher(wb!Of_KDD6PP?~_6SDuL!SjClj z$r*5E3=FJH3<3@e%wHK8nK?f(GQVfE(PgfhFn|91h0K%d^dcwj-IKDQDvFtN0&~s@ z<~NL=(&wfdaU`5#o>a%-b&&Z1W7-1dMRgoDwy_)+V{b59r>PY9S*U0^m~iMbnTt5E zFfs4ryvF>XCXI!W`B|kNGnWl>MVetd3lsAMwp}cY%r7eEF>`q_mqsvi>rFYg;7;pA zj&+e7etY7B7aKA#u`sP;=Dx;UYQxOSagD>NvcZxozghGgsL#^RIz1nOGSZ85c8w3IT0wg#b8{7iT0Er6NiLSRQ9!$S;mh zPt8j$%1qWvW?(?!XMp(0MJ3R@$;iL}%a4o<43G>3$zO~N46sbd$iM(fvye>4$iM*0 zwu}r6phON=577=%s+R#O6X4m3k%0l8tw7emvK7cIcGIv$!N=A>s!jP+t=ajXAWCeW=;+TUnU2UawZj#JshRXl@ZL`X|_xj!oJNM zwtE)Ze)hHHcf^_p@5Q7k?8D4kQUO*3Qv8{T zg@KXLl?#+i1DUbZRmpj2i3~-FuiAEFbHC72Oef*CbS zFe9=AGjf(-Mq~+Q5V*|{UtXM; zl30?cm%+dSEqKlEWs$k!o+Nq=KGn2nRz3lf-Q$IlZG&dHwz?2LOzIK~{GWna4a~7jDvYO?#hXs)_+&71 zed2h*>{Y^S5djMRFCe19k4Zy}g_-$oU6VaW^U3Sr0Bd4viA;|=dD8DR$3!MoVJ0tO z4si~jy&TQW%}DZDwx5}$yec`AcJFC!Zf^GGSj(}txw(a-otcLzkC9oMLkN;W0ytVZ znmL-ied{y4XJz;>DT_oiZ>T@P+{nnJ%Q!!SL!U#KBjY5;XAaTHrA#Wq9G^kN$yN?f zTrsjmu-%B<&7>q80 zz!W0PAp&uA3rH^;#8*CyEUe7u>hx~RU(C$C<_NR&8s^jq%#}~}F>|eH&e+Xdp*Mdw zGp8O%$7B!zb_FP+8JR3ZKmvszf=N>pL=}JtCKWLdl@B7Al*K_5I2OuUIK(PSC!S=| z5Z=vU3xTbh3d6&hIZGlzd4Y+!%4R_VbJ4tTX3>c2*L^v%IM#7IZEoJp!p8i&wrTRz z%Jkh2K*oVH3eyR;WotR~E3%lmo`40tz+^1P1|~~TGGJn^Y+A?6yXGs05jf_nI3ijW zR500#MKY&1F$ zXE=N~)-rQ)L~uOqj*MhsVa_hGVbT!Big6n4Cc_V`N(c zmSJ)g$b_g_!^WYwHj=}3H%Oeh3Y1wHIi7(yr3XN<$HL5fo53q%3NtU0G9#0!FmsXK z0VXX$=5i(tMkaHSJ`3i#`#~Nm-2o7)rK|+p= zL#LBt($e&d*tP5CFJ@8^<(LCXFFW*TV=ht%>KAXaPpWy^^Bq$fMFsq*cl_H>w#lit0K}n7UoU(C>FlmEa z&B74{(hCYjm`YFvX5om8DT4$w#{{+ulQ_ygwtU;oe6DWS+C3MTJj9sgIlMRwK%QsY z1tyt%K&CM>DT5L?GdLocnJYOWm^nGT_Hvv8tAVKG02O}B9H0PT<^aVqGm{}$FLM=B zE+camhXS)4htL90_^^FqThF1-q%6#|j8T{=O!z62g$TzICQV_cSYakdVU7(TV|RcE zCRMP#OtE~-d>p&>d|?U`02wd|MC{=3VG0xWX5LlL)WXQfe2U@3-cuaPAYI!*1d|rn zc5uK!9mD|&4rb;mrgX+bOIN36ZoO64s-5AHp31Rl{`{}ZQXF0!kr_KdX^q2-BZK)+ z9g`^|^HD}74Mq+IMn)$VP(yMWXxbiq&;wudkbwbI_k%k+$;cfWP~!mHWMG7-09VV< zzALCH4sAO?n2L9xul%*WBhq$}FW zv7X~Rvm}xY@l2YGixx2HihO4>6`s$b#9Y?om+H#Q11gCiHh_{JGbs9*!AS&c)n1VK zV4Dmp>)wE;x^YDlcfnyi9UV*>!uw(;fkTju17ZmzKQJltx94O)BtS(nGaCn}@MNxUxA#8T9QTrAeg>1C z2s7uJbD&hm3{57Gf(NXyjzc};GjnN)BnK(6%GUT~l!1(7WNTsrnF?ykf)WE?8WR@-BjZE{P%ws&9*k+3 zIVIrEHvzFxzLMQ-77ua zr&-^CL$SG`jmb)&m19;rsLW(i7iJEPSfJ0Gp~oz_W??FGiXO9E$pYpCJ!VC{Gt9AR z%u0I9JL@OdaoDEsXXcv6T*9%2nXieXl)2oCiI0JiaWXR~ocTc``y^F*dV2b)xk;%h zDXA%-aohYnl%6k|Pbp2o$RP!)Y{6Bji(7~>s2j_~z))I}2^uKI(hY{D2CxRS9y4l^ zK<}1=B4j~?0|WCiMn>V?921#W)+;c}u3^#_pVTr5lv^0tO4ypgIRnB1HL3`)=CL({ zn{CMIKw_X~3nLqd6$!4~KrB$l1|kM3_ZSVKg(Em&GMNcfGQX*7ioDJtTwYpQI^3M9fnCV4gN?(6jX8xwh{;Ac3K=s?FqtxfD@3qD9Z-=l1w=4cPIz9- z%<09XECRLwT$enmV6qbD04ZVy*O*~`EKJP*S!`GsnH#H1!0ZSx`x+=tm_hvr=6@W< zOiCimJZm^6Gk;`wvX=QnT@$lr$pR)DP-l&axsc-tw1Ww%ESYwJ9L=O5#Kz&fb}fe@ z*ePWk5nm?lVAkVMV6qi`I&nUv%u3@(YXL_PlRl^_V@w4_7RW1%*6I4z?O>fH99|r) zN5M=jjx`Y#Kc_qq=lp9G&4U3sAy$ko5xnR?m5SvXP`=xi9==G z(=XtXW-hp-$t1m`0cV9|29&}N*Wfowa}|`}ebOBmn7J5j7kuHc^Yi0K_vI)LSd!Ax z%v_qr%r|f1{Fc_{-Hm&}lLPO;4xB~01M?B%VPIz>@xi$il-EhA-QZ(lj0_B@SsLUc zn+yjAWaIRuo!}f(^J~L-YA(MtkgGIP^EfGDk+(Fi9{lGX4P9>`O`aGLn~&iW#u)k@#TWCubxUgC@5akY_OQbP@3T zenF-K1M^N6Mmukg=PXRj(`&re*)a=pTw~6kH`!;mC9{&3ZA-IdKqPZ+lh6G57R&`{ zJ|``idD6^%IJ`@lc_%P)l`v1NFKOlw@!?SFi=Dzz=FMCVO1F%Yn7KFmU@$bmzVqihm$MU$;_ROfEyva~2Bb&;o_8Jd<9X2E&P6KhXIUr#SB zzZ4i&M&ntEiGf_ z)w5+TipT>M=xknWUtC&kIc&WRJS*4DpIB;DR=V~Eb4406*C%FCJzM6i2^nA3rl&_$ zW;Aomh@aWaY*MnDk(yzmh}G){{eN?II50UXFbnr5y4cb{zdTc5~RJGjlhAMsk@OLFox(H1lj`&RxyS znj8wu=}jCewtL+{G0R-s)Y8n6VaFlIA>z%O=14n>Z=%o?BCKtuXk!b~6}0wYCAqa&|>zFu0|(gLYTc);x%uCHHfy6Ae;}elm@Wdvla-CA|z`!iV_|n-Yow+hC)ff~MY-`xcY$H>c ztC~`og`1d^#5l_IZ9#d2`$=mnI6y=>3}U=*T<5SWEp07>ghvcGJWi7y9xj>11v!b8 zjzvX@m9!2FP}vOYuDKK?mb<~{a=}G9dRT!1$e_`IfmxPuBe?hh&4e+sfkw$#z{5{0 zY@h;;g;}@>G?2@j8^J6y57ZH0Vom^wFkNTnYnocdq%3@W0Yo^Hsfm&C^nw;LonwA!X$v%brNFh}^U5526wqX3^2o;=sVH&$vH>W8&u@he5gfAcz1>d@(~NWtcfYEj?!D@(IksP2FLj zw8_i|$*m)4g$AU?qF)E$aF9tKCKoW9$qYsA;U7~+$PQ{us^xgg81GV>BsQb6k_KysM{a49AR2Bf7OObiSt zD=R_kv5;3*f|g++udD=(xq@5+u>+zN!XC6sz|bqE^2|KY3J{2^QA<|jZU(6SdeH|i zWtq7-(m0lYD=`jm)ii-^50jeMjTR;i;k6v;r%t6a^D^l$o-JD)-CXZ$xPimFoLPuN zfw`chwA7xNd(HKUYnii4m`^i&VzLnKV(zP7!=x+D%*CVu8Y^aG=AXwb^@*7qR6jB^ zDS;;n)CxKFo#ln8lk4=QD@w0?h=1l!IasG(R_kxhjH5NjQUfXZ<`5VP=a6X0J8# z=Vx&2$z+y$!kp)Inz?irN2K2sW?_yK9GjWTInn|+o`Vtzb18=nXtctX1Jq(*^8d?h z1)AmswQ(5PIP}=SqTnS@OyJ2-CLK@@hmma!TO_k)38ZEH3|zOb!IpF}NAU3_3Tf1HF&Huf#zYL3)!K{LFouA46ZSlunpW5%yD2~zQD*Bz#(i4 zUe&_PrT}W;v4#1AC`iW((pd(zy_mssfM6DwU@rf}tWd(7AMv@2LynbL^8FrDYQ* zas+Zrx}Px{aoB+MGBFo$2u&)TG!?vv29(#BdFF8( zoK!k7gE?f)-EL6gW4g#OiCLJ#hFNSEGcSjit+%%!C^4;{&oN0Kl>V5QbJL!A$A3=W zy_$J?y%&cmM>_LW297n%VjOy{NR4&_NQ+&V$v}k3Kx6@jK}^&Q&>R9Y$2YK>{SZy~ z`QWNR09(6~sO8TLuvMtZ44?#nyp|Ny;z3@bijnuBnHg7phqd-V`5kGK4QPuFsH}&S z*`NjXkoEnb1{t)0$Ar9?nF*=22T}vl3)>C@ngK*^v@xNr+XvYNZM4C)LhMD^4g=Q) zk%MoC0To(^b^IVz&~^MEFG1JwgPZ_c$Ipbkjvu5PzK$PcJ7OI_ga=#459LAE@q?TU zU&qgcyy%_@bx}Xaaj?N*ki}@Li$T?2$8zu-NCk)O5{}aO9Hl2YCN_IVF=NZY zv;92gf~HfjiIpP6|$6r#Z0;(tCIaU5;Cv+Nc`ftTq&1h1~j#g;_z zmrog)DWLrc;FO6-e01A6l9XIjSwNsA1L+5V5;3HiLgp?Kl++0Cc|eSWr$$DU%~>E- z(9{U(fNWbGQwMcMHd7P(MLU7(zmL zO2VKO-b%vE@*F4p$|IR8y&{=KN|;n6nBt|*aO_^Yp1Ficmyx-msS&hn(UD_*E0dE* zE5{cmCy_4ZuXSsf`xu$*7-uwdfR-~cv4QFy<~3~dH+FGE?snm@_2wwu_^oXBXAVV< z(rFym=eNV~#L3f3(?5ILHiM@{n3(s~&tpE#02QOcwt>?_QnlzEb4qQ8FP?iyy^PfR)@Ohyvk%$z5f)P$Kiy(*ZqBX)zV zX67wv_PJgfy_ZQ-*grCOcQrPKAy}$LxRi;JfswHUTo1n^y%7c-x$*FHaSZSzZr}!~ zLxxf;!Yg7>fq=A{v>duw5-pp8jDZbnBYI>=Tlm148NKC(*<8D_+kt^uiIMpb!!=Or zggKc>3DgfpYN9h&onRL6Dvf03o&a7q!^9li#39P0E}X?IFs~WZGGgXf1=0(ueISkU zT4t#UrOf+4YpPE$T;uQ#C}&<@zl)itt{>?OEg#;n8v>P|3%r{5SMjX4ej4r7jH zCJSMXW+o$H4sd#9vfu@^@nH&>xj&s|E{_299l%Xdj;FR0&w=}D3+pFvlxHqr=G?_B zGLM;a-h!virx;9G})QFRPDWe$EhKSK8Xjk&YO8fR8~i zX@NVWplKw~kOY#rFq4)@DQF0{wDdE42-h8)?)b1(uISsRN!qW?fUX<9`8u&AKQFZ+ z6Ep<{Y9YecAu=JhuYsCJl(qO!c62f^Fd%K4Mr#kk6FtaMSfU3tsYX~k5xfl=vTYi= zfosB12L@(EM*mY*J{h|?K>K1&aR~1&j*Mb1ZDQs=0oqs0t#`|oL)bbJT!is}lhP?{ zqe|$BfwZK=ke-|j-3>`riUGCYQ@|VaLGg;{Ba9{r@PP-QVO<=Z2T&uZ;Ftpgvk0T; z%2@q+`(*zq-kG3sEf!SVg2ok@i(+>(mxDUfjBI*r%={b^gul#ZVq#!q6al9P97RhC zamPO3EJm=UDA2hM^w=Jbly1=0A&!QRwmLICv0{aq=LA{FG{-xsZs(JOz0;HfkybSoG1i}vC87iyfn~| z3uN>X6l%zccEHUZ3%6FzX1F)yv>D2dJY*Iy9D%oo92 zaUybZx>hxF@h4_6jwj6GjF8j}u1d482MxJREKuW|0p?OrLe9*~gr1iLN)7?wf>oZ5 z^>1!!5oiq=$SI?}MR1cH>5wf@`8&{+FLd+=RG2{bCW8_R11nR&N$~n|yRa4=A0HoY zcW+;JKMvukjNXxzP0UIhUQ8CE;L6$?oQ{ca5;_Nk#HSS)8bGoxDEkPU0v{bD0nQda z;3R5B&m@|emtG#9k(yHgI-UjGP(=)_F(I8J2P&JP=g1LX&?8k1C}sZWCj1GL4HOrU!+D@7*8r5BBpF4(6__7*@m&-h(^EllYH3QoZc!@e7(Z}wDoccR zZ9x-!qs8FhC5PeFPX2apUokhzK%&#vNYT_YQCqfEyt@e=9m&@g_2ZI)1aK=33CV2 zr)i*(M<92Ii}|^7un>v zFiUZiFfRcOmy1NawAFG*O=q50ug83cA%b~#eH!yohBW5p`guk@95**Pp%+lB3Vv`v^MKWKlD*?%0WAI`UU|?h< zwMke}Qc;4`BrE_I@NCr2kf0%?c*sN{fhGr1nG7k0;UkQ&HEB%9N3EeRNx+!Z937-C z0-fy%EzH5=J>WbJ+9RF$MjaiuE36mTHBjZMJH$;U7J;#z9&@rzmkj4y3vjM4lNMs^IN|q!v z6>xP=k&ZjX-GRiGl)+813l0p-j~E!MPNh66+ilR?!dzj)%@y1OCoz{aF$-|$`Gxo~OL;M8J~^H2=)=tYiMiN@S-|THbLo?e zW=&?TPhQ^4nH*ls`W$-k%wB7l6;3RiWLuvze?D_Q$Gl0*QuCNoPcX?aFfv+!8Ck!x+;oXld-h$pBA%Lr~iT%tkJDM&3&O@>-S zqm+Z%gM}}ghvY!Wu_55r6Jntz%Ayv~Fd*`1H>kgYJlYLv&VW)XWbgr^6~Z30Lrm~R zCD68F!zBj>W^qQ)$))FH_c9mSFa|JlmT&~}U4&0=^_cH6tYNM?;lDdqig`-C9`h512@1?}>b;o%Fz7MobCf_#&+uWcvPp4c z7SO8_WBygA$K1iV=J@;rlFYB`^q6Neu3;{=Il$ad@5S827{UCn&MSktfw6?Su|Cc7 z8_2f*3|=Owwz^wD?S!j!dd!O$CnzxAtMg($&Zx(n%n{+cE}i*#otNi6km9L~Ud%Fj z%!O&pTqkUqt3c~sLAx@`y`7k=6mr0g=riEVR7y-{0`(_JIOm(8xUi^14^sbvCthHS zgHwx&@}R>lpaRL@ngav#K?X+9A$D!dUM!5ve{0sTFfq3PtGXm={ZA%q zVP=6R%thDA_AqmC*q9qLXU$_W6lNCnVoobz=Kb^qyv26l{Znuq;h&jc|GWbGXFBsP z=GkEXoU1O0){WHlg?NcWh`DH9Sqn4QCyx5D;qU|zZVqgHz%|T8z zg-U|7f;SG}Dddm~0g!r#0ia|y;RdKB!oXO<9MZ&*-ezIMkpX^$fFBxfe-x<250Z3 zVE2^}<33Q5AtB-!lJkp+$lV)2t}zB@?kV8R@UCV;cJ}8wCTn3|=5h`pCPQH+P6kHC z8n8ptXyj065Q4mj2&jVF4h&MZ9Jb))tnpy`iOXk+B^eAL@8`tB2QGp^2b6}Dn z^Va%n%oiA#!Wlv9h95J7POJ1$V(ih@u?M z;6SVgo0d+rX+)P#3}Ab)CX@ppCkQgaobU+T&80~^7UY)`5swc*?)k{T=*7ase2uAz z!QXN#dk6Du3_F?zl(*5`6UyRG9wEk^WxeP=IadC zSeTesGINx$Ff!k)nJ|@Ol0FL)^L*wLER4((A#n@d3CqG{4vFEL3|`EO>N!3!-(z4> zVPsxf-^48ciG_*z0&^1!Bl9M(7DhJEJ{uM`Zw@;aCg#)3911Lq%-d=}f=tXMOzMox zxgaesL8*v&R?P(FD9~zjgu5m%OM&E{F@IuVWS#@o2ik4Le1ZYIM-j9G>pI74=1Q-1 zEKJNZnVHl;-g#LAIgS>*-J6k(xx1c20i0YJnO`z-Kn|}1d3pl)^s1K(dd%scm;*RI zF^6z~f(xRCd2ubsDGe+f6Id9T7uJ;6>2$I%G2Z~^f)zC&g*TW%Qmbl8m<^dU8JTQ_ zS(uoYfWvDB*riNtOzJ``Ol-_Az|P-OGl6+WJ;+dG|Ji^d;t1H(eNbH!*g$m<3lsAO zu<(VN66PW%RYvAb^*G&kqy}W}9%j%nSui%oH5NwZ<6w!MUU?G(+YR&QB zDJ3;Wab_O2nuFmP__#o9HAgwP{YH~UdO?19CJ~Wg0CL=ENRji036$$QYa=-JB!X7v z^3G!xn`hu*&;?q3#OH#r0jWN;n4MS>0fl-bgygg9x!hwO=g3({!Rv(PK zBW=BH^}TIDEdzaheIHP0ksdnjc!CbM(c$g0J)PB+)mpE4xuA8 z5ggeKEKJNh!Q9g|5nr{Za3n{0WO6VtGRA{lOG2>ZoqNHZxN z6gv7!`XB^pE~SI3StnvflfgY7q5}kRzyi@)KobdNi8+}m@$iN7@fnGEDLLSiNf|-X zpiNu2?yG_g7*c)#2-2_*Gtv&a(R)51gVD_3m`E)`yEqEejudzep7a)BE(2xqogAR% z!^!e_;6^2AInA)f0t^fc|NsC0&&a@7!@tfb0?o0+|C7e}E>A&HWM# z3=9Vt7#Kj;6G?;3PzdCcapqHS=3{}$d5bzQXh7uRU~(!@eZ`^<44}S=GoM2gpN%u0 zLpa!%zF;=UT&TLeq7Dr67{GpNW^(2WsO2+p<_pN+b8zMh@Z|Gx<_n1C;^S~U3<@Hc zz0qP04EA7q4NCbWocRo#`B*^i0J(RTm;(c-H{{620Wwb^6r@1G6YM+>h(Qc6bIyo4 zFo=WAQSb#TK=RvTF$V^9h+Hh62&%ui#2pyqA#xDok@RVb<2KU)k6gI81A{)q%v3%B zhFaSjRBI*LHs-k2L@3F1_n_4gZRx74h*4SH!Jvo!!`jNis9hsaOPtHrA3gs8xjr- z!Vq=-urvx1e=Pya0}9|gki)>h020@fbYNg*1gDo)CPzM=c4kLDfi@OLK9OctXFh`% zQ1}@5fXQS&6=yz!STH*POhUxdki;P(-h3jChxr5?kMZ$19_Qn5Jj%xc%5xz5^rRdZ z&N47C1VGZ0K{zxuI&(7>fX&I|V>!$K$)h0kzll^2^Un!s2Zj(9T>dFwp2Nt6={QGj zrXaouXTAca34AHed<9uxGLtU{Bs2#iQx6u40Fw+13>MJvlTmPBcz`qf9GI^#Vp=By z)%!=$fdSM^cIGn(+nx0ZDu= z&U^t(?x1K0@B`;-2$=?!F6QHLJj}=8cnoYFD1U;&vO^g&O-_K?HDB3*A&m(fZp}0q&H|89C=#3nyuc!n;7kz= z7IEbha6HV%<9LjZ!|^yc9AM!(L(PE!bkPR5+{Z}s4opsZv<0)FR4U1EyebN_K{O3@JUYR(D`%2j@?N0#M``_<_lAaQw$Z^nn};Dyu+d z8)-N&fYxS$-RcCdqnKh5H59n40;!#&;lKcDyWWvfkSiU>2;lOYWY;OQlAjnFr zsfGny&w|WastKuQ4WQ{`xuyfdQb;;SjSC0n*^Fo*4a*xo+71jWA>o3hY;jDT?Ynp zNEl%A53?-xvIQPLGxZ!8KzZMpPazOo<3QUepzz+R=KyZ6IP)n4fZ`uko}binU{D6f zn?gLY_!}JJ{Q9WoxIo>mtna`88vaKMPf)YT8Jt}pnI;yJZn#im)R`OXHjq2_>pL)L zL)?>&?4DOR#6=CTt9QU5o{d9%8V>P;IKyQFo3qNVT5}C(_K*8Eg%qFcr&vyf@u%bfJd|k{+mGZqXRTP8BHA+ z^aU6gTzD86+yz*fN*UbvnM(`U1lXBMYXsPsN-G4InMzBT#RLxWFfuqoOABWn78V8u zZ0!(GUP|C*U@&lXU}(S@4h765Sn4xS7=rX}aC2a|gHvwJt z$6gyItnCeO`vK(V_kIox8hG@}U~xC73<2pC4|HItgt!~rHfJh^G{`|^C`f)npaTP_ zU4-0zkYGwdDceB(D3IDefsj4`LTxp?0RgkmI>>=R4#~aa5nP@c zFy%ul1#D)5`UwpD3=9h*Abk!{+6D2CM>sG9;Y>dX%x+lH56FKYy^_%m3^I_mGPq6$ zwJ#NzMOdH#1a35e+7BSLrtuC8q8#A%A#zwS>#?Brm9e=UR7URMXJ7zb@L&n{t3oNL zj0A-NNW3-OfdMo}2C9r8-C9V$2PF3<9a8@x(xo$>LNwHc$M{%4X%nQ5Kf{4R7ZO+C zuug}jO>FJ~g{6-G0|V%K2GH^w7~d`fQpSSZ3zB!pfR*VA;4&Sw1PmlzoZ-OG1F;Jn zZisd%Q!rZ12_A<4xe=uAe})4?D?}g2jS5Wl5J$r7YsqwAfQ}7>gTe=!+d*nM1Q{4W zmn$IG!=UmABz`*6fdMpi3vMrBY1y4%rS2 zvk?9;U}{9D0r?fA=2o@?!wzIMn;?FLxpPvE1H%kR-oR4k8ZhPJa3@T^R-OX`=r|{A z{&eGOU}oyZZUD@m(+eCJsu1o|U8XO3vq^d0COFVHV(`mJ4zfFu0rfWE(4fOAeD!p_yO6~Tk62@3Z@oI zI$Vi8df;v?FTo^LNYb9FAP$nUhlx*5Ah>7&p^_nJ4$*4m0=*Y zW%Y#1J5Zeb5M^Kho%X*6VlI~Q!hvZ6mN)^GMIgNa4e-7s*xgKd5NE^Wk2E+i1VYS) z$a_QNLGA?U7i}c$PEZ&x5My8f9lCFTvpx=B^2HIyAh&?@Cp0@SY(#d;YKU84@`5e! zbPaK95JVp2R*?S87Q$`?)#*Os3=E)S?5{!Uf8_kkY>8Hyr6Ic z>Hpdb8Fzt=V>2~E!VM;0(}yPwh%+#p?IY~g0tN<#B@zq_FZvu95@6wqmd||nCg{iW zb?7_uP0(lZ=4$~n{P}voG?N#U!5q%W_d^e)#t&49!nlID8rIP!Q)LJy?Ij|z;iU9 zvMgpfnBQpPPm{z5r@VfW&`Jb6~KA#1FV!M6?;1jnT)?V0z4E zI52>2qQn?GP+)3DZ-0Q&G02|dGaMK|=@6dIvmogl)OH2Qo6mG$*Z_$mGsm`F4kJ##UrV1{!84E{lP&xzan+xwpV))CM&w=SS zmV^z850KvQdDz?hpu7l@zcUY>&XMDz2)S(tYFmKRip+Ol5QD`*$YD?y0o)D*$!X0e z+}8({r69G_<~uOhpkNNwa& z2ZkjO`@w06c^+y#0#fsL8NBU{D9@PEk&83%m?TJT&T_(O0OWTEIR*yMakRf7VTd&@ z599EA00RR9NPqJR2Zq@Yw`0*?z|_GP;>=f&0h$^q@Ptetx#KVr9CsiyAXhD^7Ie85lrEk9I@+3JPZjCP&cxfsJlPd0D(g#e2Av+3`E24^B@24#SZg@M#%?{Z)WLsFLqc7_k!K+swNkh+6JsuSN$oO!vs9T?(}>@5RN z5+Uq`h281h4h$R&*yk5OZabjNzyLa^bqXXdv80O$jG*!eq%LEx1H(mFeS(&!o%sTo zkFsD^x}f?6q}TG01H&yyUjY>U3d~oSAcY;Yp9)eVd=%bxM8qpo03t@Ab8{fI*+&W2 zFQB};K!t$;bl~MSL|7RxP3Pj{a6Zh(;=~=m$KeXDv_WYQq&DD~0|V$@7iT_&5Kv`~ zttfd93$B;c7#IppI50Rv#+yUIOT!ZQSU~AZM~#8uzzGM2I!HVr z;y;CpkH-z#?04o)K;pT9){}w43Z&NobRrFoZ~(>E3N;1>(5W?`6KO#0DR(}|ygEpH z!AS=OK4{tk@i&}wV2B30(SZpx=!?xiAbbC)F))D7r@>(_NR5Iz1B1dT2L@K?IwBC? z0LsT^F37DR>I@8^Gb514KR|PgAn^sK92guRc@?ePWtsq9BEjSeD%c$SFpF96cqYh< z2d5nv${~3X9AD5ic7901nc%R+=01=+zNj-WfVSnYgSZ2n#+ib+_&D4S^Rc*aXF`*^ z8+Q?u<;%@f0hM;<#$FbI>L?!#1_pr(4h*@FG=QZnGVtZo@#Hgz0@Wu5;9AAN8MDlB zVPIeYnbmN?fuRLr7BoG%@+tUm@$ooA(~~E637?DypF$Y8aCb$oJ3xIDkU0Vu;d2XM zzk*iBfQk=KZeKnbPd}Q#8zCm|GdHK<0u# zWhBTQ23H{Q>;qbJ=E-%KkHwpt$p>5%gU260Y8G69%&URweGvb`6$b{;E-fXb9fTp(X$aq+RZao2Hysu%2O9i-Pnn}Gqe&sP?_PS$~G z8W$gnJ9iQnAB!_sFR1Z?&0bKSsYIKB0kj#F1(t^~>f!=sanQU0dQ3WUW1ZIp#nB0E z1_sc+Pf$69&0bL7`HeOM186tqK5*F>kOOY>Gr4i`v3PM~(*r8Y6m%FEK-(lCb7%&j z;uNbJKymD&!@vOAVR#Q5CIL)axcFE+xtWq7_5^|LaR-Y*NNje3{4zy{fdRDX542Vj zmzo_QyY52Pb7E5is*~>MFff32${DhQ`!S$AoWNWJn=kg{u7(zGF5JwqFi}?=Q85ls@Y>Xi30_5HRP{INiORn6$Q0F>vGo?Y9 zo>=1zlt*vqGBAL4bbvM{gL=OH;7CXXSJ|$7ELh_Z6!rpo3=E)!@}PDLjIZ$8fdN!k zLzj4uQbRBVTvCfmGV>BkGV}8of=iQ%D~n4~a~Yg7Qj@cTOLH0GVLR+oOG=AVi$I%% zQj3Zhf-|d9{nI>i6Vp=}oDz#u{nMQDQ&Jh?3sN(UEzIJJO7luGb5rBN$Dt*bd1es2Jpw__Tte)Z)|<2A9N=M3>B> z)Z~)$@wX%@dcn@NG)RU$xlp4Epp3AOfO~#&&)G6f*Ku`m{Xbx z@g$0kpyZQWT9jE*36973D zQ<c$; zPz<)+GY^!bN*qiWic8a-O4HI(i$DpFAw1X-ny4Hs7~C>*a)Lk+WN5_TQkq+UWCkR7 zK-oXBBr_=|72;x$qdIE5UaAmzD%1mKLWvm@s5`<`tKK zB9|epD77#tGY{sv(7b}8)PlsKRF70p`U4s4@9v&j;+RyNpHo_r3W_F%;MAPdXaM2?SN8HstIKnhAtW++O9hZ%_Ll9~qb3^=`l z(q?jAT4Fvp>p)!=fF4$$T+w1Bo*R72YAZH za8Ph+NkC>rY7WTx5YvK7@(UbH7+@YpP8}!#4M}Mb3tTH49ZW31Ws+xdejdngMX80s z0gzmglbMGSoz6Ll#l@fu3NZr7n;;kXmzKb?KxSS+X$d4TG5F?}!F*$60*%<<{G7}b zr=rs03stY8{P@I@skdq443uc3?iciTbE-7Yk$#-!J2`tS_&Sr2)P0r6P0F{}U#U=Ua zMTxl#xrr4>$^we=(?PX%W?3pkACiD)UP)?tY7wYncZL;_V6&0b7#lHQ7AU9%L0V!` zaZY}I0jL}-NiA~A&q+y5amvgqcFM_5!ewc2c4k3AC35Bm`5PRT9*M;n?x`iLsCZ`7H7nP)@gd`^Aq%ydt=A{-TmZXBDAtG>=XI^n?Q3&CM@MO#!(86ge4*#Tg9wWvN9V zfl3C@$?WC6AcX}vsSF@vGE<9#Qxl7lGg4C+N-{EwLCyd(AR3TLxS-T@L~23}Mm$o^ zes1p0`8oMT3@C~~!Xb&t*`TzV2x=#Qq>)N!6ve2PfwbZ=5mb5NGpsl@FQp_OR3N9P zmSp4?mn2n!A_`Paf$Hkwd{8)pDoqH(&1UuG7^=a-g1vo4zT9{Ks%-l>(~ z9F2C3IIL`pPc8vzLWD0!54arg%!BBI+Y}$4i<~Y%Ne`A2@dX;V^#yP1fXjJE^9Is5 z0m*R zKpC|tEipM2TvWT4W~PAZ)zSi&OxHYcO`DmV3ToVf%19qj(d1T?3aUKAQu9*si#%Om zs==jOVsSC3ZU$Fa&Y(6$j%Pl&1p;k(g7o@iCKV+Xfm)EMc`2ZBE3GsS+>yf3E(I5p zsIDnV1-rNyR6awcL7l&%{7RS9GN^lfGK)b?D@X|pjv}zD%D~Q!&rD&+NzF?y$pBYm zP$z-vsi4%v6i`@$jLuE0$VttERLJnSC;*ogB_I=uQ;RYabK>*BeFvm)fH?x{OqbM> z#LOH=P>O~WG$o!c4B&61%6C_#_sWxE2-V7eN|Cponu%ErFN_$qPl50Y&)*sYNA~U_Hr6;8rH&5IF`= zQYirk4y$) zy*-dNr1AqKUk+;gF~pI6sde2RsG>E|Xy6Fd;s{@Xiyc$BHs412+s; zz~d4}XasfHT*3Wf@R&+iW>HCLVopF&ehIicWd^Fi!B;1M0vIxs1Mb2y6bGj!gGxMx zvNXuigjiI%3Q$FhOX71u!*dM9CGm+c zMqW;4UN%T187zX-MvIS6&M!tBONGNwQXCK;k8;ozNhZR5JOsyD2cwe<7#SF5fe#Tg zm=B^KF)}bPG6Za8Vqj2b1~Us-7#J#8z)YA2K$`Y~4`DKx52BBQj$&d6JjcYq@C3pH zQO}qd7+4vK84T6u3$ZXTECF8&Z!jNb2*{?dP@6$CD_Ca$=pHy32ot1B9M$Hxj0_BN zVA)`hENDj^BSSFENSG`WgTZ`|D$r(8Mh3V_kT6I`HrUKy&=N|JqmT>$x#e& zQVugB6mC}lNO~DKfC4}i$P3I2rBgtsYl2l5GczziOoBTgm4$%;luD3I1c`yd8CmQY z0|Ucf&@pBVfuLhROyyZY_gZang7#J>s*@pAAl^Ga9lp*3Enok9kLxQDL7#LhsAi^NpLKPGN zr3X?#3}02SnhaG2h6+`P8W1h64i>(r&cN_X9U=^(mui57!#8R$Fvw|wOyT@LAH>kn z1c?XhYcep%Yk`>-S_}-yS`eKedYTqUdFhT65Mwo%Q&2x2#BkJRU|?q`-I2m(C^H|# z3DAZr1qT8H1B0S00|To9#4Hf4q61d2Bn8B<*MUfY=zf?4h;afc0W(EMiGjgL3FNqF z5Vb`KY{-EW4jl#tka}i@(gP`Q#j*?x2C`tqAPQs=GehYNxQ)yp2ZO9U0jN)nP8MvqIW!^}8KOb)35q{vhSCWsAO{S_KI!u%j6m7`$Z}7(j`Tg`xCD$$StC9XsZ> z0nDy%@{rWR$Pf)mEPEBe#ve!lMK~x|pv3cX1qOyy3LyOfAPS_IiJ^!GM4yLf+>&An z&sIe|AOk?jnVF$<3*5mlLs%IK7>uOn!wh0$DB@u=lAaGUj2)y0BmgrIrT}IrTmj50 z8x$BAK)Tr(3P5Jb!Hwc#DD6pME8UX9CO02u8e9>~IAldI6G8dfK^;^FGFuopGJu$! z;H(}9qGqczFt9KbKXjN6V$D@&VDMuAt7C(Z%Jc2NPhtE%oAJwRMvj%eEsda4+T=JC zzRzY<{l1^^J5;ff@_c(6HMkakH5sl2@^UiD^X=z@%sc?G5Ja5sgRbgP550M8^Q27;bc~Hd#s;y8A71v~7Pyp9v(I5&`v4K4_U6X-fAw(QRLG>Xj zj9x7UhB@G>FB(Ka>oA1;GA#y%?GSko1(ipXAqTV=7!E2~Wg8BXgI|IXYc2Lz?zyMYY;(*liFn~Cc_CTCqWC)!74yPvK)}g7evQ%fTROJR3cQ^nUjGbf)k)6*;p7DKq?p+fvc(9G|IJ?Bc!0?X+lmjR3s0Yalu|qkN*%=r>ZenJbxC7p<2I)=*n-Bn^ zK=v{+gna^uuz{Q(z{tkH;0b1if~X`gGXO;8uz?MpQD4Nyz|ag42T_y3Ot^zyu`w`w z0t*FzD3EU$8Nxu0Spp8A01yRo7g8q#bexhH6DTVbXs{_W8;giY%gMmg0ccauA#gi7 z7(^Wd_nbhxC_$ma!0?TM0es#eC{cs-ED$2mH0?Jkv zV_+~8gNVb_aw4fs7iC~*6$J+hh?0gX#inhd2m`}<5s=bA5VZr$3BXGBCt~ zl}3Z8vx4Ao2>{XOA;KW)CR7+i--QT+s2f5M)gT&TZZwE`0u_b@ZlWLqLoY-Zh#5i#Zq3NkQQfWr!& z3MJt}L0~U3Ffe@NXJGil4@w3G^Fg$*04UkPb%3Oez(Vjr20>m126J9e%uS47D`JqD z58_z!g0+FDC}cU9HKM!>49XCR7`8$NnfV}&Iz$tQf@*@uA!`De$jvY@f^A|3n+(V{ zkbomZBZvZNM3G0<3^JLUVPXv1#2hvmkgXsAU5I871=Wm@hiMMrW?%^C273ua<%6{Z z7w|GL%!M#v3O{i%Fi1ia!i0Xoh2Vj#$;-fyz{|h@DjZKb&~tOgz-BfJ6z&nV7S8r^0dKx5X}t^Ie3dY zlZSz!87d8;&+vfkhf9NmHuEqr@G}%Lcz`QA|F*124t1OJPZs{P+cHe2dosH-1l=bFf?+5+&mFXPXk$k7}osG$-t1v1#)K? zi1Gu=hPQJwFw6#PLR1HF0mfwX~&04&Cusui$IVN#lZjGKYs0@y_bY#xNRUEmmxYBKr~1P z6GK4-%)~pK3=E)vWn>5f1t>^4lJ0zN28K!8pvHay1M`F3jtolkL0pKc01yQV6J~}2 zmiZtC$O2}D0=D@e2FNC)0v+ZyUYNJR9)lO(AUC*zBR9B&i-7^;7Nk*SknBHj<2VpR zWpRNMiCZHV1H&`0ra%w{(!|6t5wv#}>^+b!sM3IGTnr3r!AgTb6jUiZ>4B7jOlD*V z+Qr4du$K$m)?+AOkSk&+Vvtjs4-z@R#lT>~Q2d{L+ChBV!U{}~Gz3el~?E-I%qA7le49FQWAjf;Un0PO8R5T(Hd+Dj^Ray{DAPN*M3JfsCFdAKx3O6j);K`91mg^JcVjPx(G&3>;;*bRe z2&j1kqJ_9X15`x}hN|;HOi8fsgOs=!7}U5xlNY571q@2_L2OXqFfs&zC{W;l41k#r zVuKSN0|Nuh?<@=sUMllJRzMsR08(tq4I1nKNq|@`;8F&j6tmeG7!E-Chwy5skDY-5 z)I$N;0HXE4ea0|Q7qtbf)L=e{UI7*kTF1e_AP>$h!5~T<%nSlireJ0;h;jvYFcD=Y zNdHU@P{X2#!APYTQPdydU|_hy0jhP13D!C=wK5D)waP4b>L_nc28Jw7NWhmdD1n$$ z!Q%qVEXIxuY-J2en>iU6wxJ5a0vM*5ouP=Kj6q4638tNqArPc(7uc)tv{=H)z)%kA zVlxyV|jq-Ba2l;(qkKxPXv zfP{7!Tl_M-! zFfs&#QUypSGea@cd=LW^+RO~aEb~DOkY;9vVz&7pMmpHt@IE5UHN3FI1NPv2n9Fz> zpkW0Oh6PqB3j+fe*tZh}K(q|lw?QDP4a^J$QSEFD415d|1=y4sCyKC%po~f!V`X5t z4IQ=t(QiRxC=3AtYzz#MU=xBtR2`TZ1foD=B}jEH$ksrx3k>Fi=z1_4(LD#5`Ggfz zU=%PIsgxoL43HbO*%%l!VTAx{5ipnWJHz+6jNcJWSHy@~GBX21HTc$PgZUsj7c#5_ z3lxyhTxPJBLqLX3WB`$J^Fb#JK41o=yRY0`j4)A`cSD+O5w8{-5i2iXGSgV_5a+Ch{&c;0;CoO%#LAMBE75M>P$M>m&|ArNFd$TiFi z6F1abLw&=@5C}3FYV?gvOh%kr(nFUe}a{$ONkRxCL0Ahn2#LO^pK|RPw zkh5TtAT~S1>kH~RnHd;Brh!!wVcZg|#tB1=TT%~Vh(kgcL_tkn0v{IzITYkoMuxBk zCWy^QeQOe9PaZUYMCI*JvkU#-ZP|Ma}=oDa>xS}4E z#U`!+Q*z*CE+AttWu7xJFuZ00)jr@n2-5%(0-2Ag0TyPTnHU(pV`_v+gKj?po$!a8 z;z4}S%|swE5DmIzgOMQ&G~~J;eD9jUd=Om$P9^Ya0i>%MEIly*bS5(BoGM0!Xb=Tb z$;2=bUX_BBf((YmJV-gnL>M2$Hev*g3r<{84`P7!$TKoTgQ$3zILrqigCH&p2I;#5 zUiuLXqV9s3K_Cj`0;EI^asbq=4j^xVq>HsP~MZdasz}8_NW6eK>(pWZnDG3=H}V6B9tXzRzTw7y)H`naRkp`xT$;WL_2rIq9$5Ga0{6VEjIlQSSQ$M0~&; zqrmW$djg|8h>(Mr03nqilpLbA2VEMa2hNZN^FcKDZbybd5Cv+2F*1aKsAu3z5(uJR zLluK)&<#?I456T11a<5fAd`q7Hpob%AOx8PIv86BH0W8#pj6BNZjph9>OjUNKuiWvph;Fx&jl<8 z;()BerVn&+59s0`Muun*1+o#FGH?_!Fff3e;K~4s`!WV}>p|A=F`$Zr#6b5oz}*7k zfZT$vu#15Kd@&NbIOwvZWelKJAgJ3|&Y%S1fLw{L5az<;3=H7gxX{846h4d$aiEd` zq?-|Z`WILa$V;H>;20TVK(~0^1P3B~Vij~zjUhN$l<o|#~Gmoq4Ux=A1o=(ZX*hC+sN2ATOF_F`lOV8<{pfUm{@9kT>71w@06 zUjfw}p!-Qdwjy;kK$et&V*_L+G%+A`twHjjlT-N^3hT;YiKUo92_#kw)>puQEDjQb znunqu<}{E`w=#gLrSkguAO`3v2{wj_ETDC6Fh!t(22_H;5;lkpiggIT!5+j0Ie?KN z8k7(~_AxRfY_TLN|9Zaft0;KY>-PB8Dc;b$R&&nv7k%{IwFUWA$k!50|O|np*jdu8bUn6 zzyM-{?r~&fhz3#pa0fKlgV>-WHDO9Y>=j7zAoeOapMe3y23@NGQQrW%xe)AdP*{SJ zB19ZCzQ@3j1WBNTfh-`574)Tp2;F$sz_4jRoa;F<2@^GuDui0eoEysMAfrSWvqYbW#i=eSyy1 z0*x&*GDL%@b>PxvVh+gn5U)-I#WC2oAkCnoxga6U06wM*bkqzZLo|r$U;wY3^?>Y1`Z}fb_KDyAbkK31-i%xW+I3UTJ6Bd5Ut0=z+i=>3&gg8=z`g6 z!_L6q3LZo;m=B^W!NVT`AgU8845D{IghA9FFf&M(lYt=wJPJ86BAk0Z4qW3_QeB)$b;0DhD7|b`}VqkEFvO#nzWat(|r9*|+K}YmK z3GV_I1H*NwIEa1*o*S7M0-|3**b#5J85q7n24z8%D0s$dVg!g5fXpL?fM{U|+W|yN zfT!02K$HOJ_cb&fM|a39AB^?9|J=%m>B?~D)>O9coE}#5MvcY z92Vf9a09Kt0(l2SyF&s65pD+aVLoGI2t)Y5U_QtPASW_1go7xM3qgk1@-i^kgIyX9 zb15T3z(>%8F&|`16lV2uHU@@W;1Q!R5OoVYBvj4=qCt*iVwebO?}JruV`E@A3|1Nd zqCoQ}Obio4Kr|>0K%){M8st)tIEaQC0m^4!Bldu71E-Z>P?7=p8>x!~k_DN}$UwFQ z*Vq^sKyGJZC;-zR!0EM&0YrmrWMU{$0MQ_unHb6#K=f&F;we!8IUeHR5>PP#b}%em z!ZH#ljf#NNV>B$8GBQNNk|rZVG{_K;&tV$CrZ6xtU{?*31vvv0@i1K=HY5>5!x8~Z z3Z_Mthk;=#BprL8iy?(+6b}PK3V2c$KIjDsW>BUD@1KAL2ABggN1Tg+K@J=$<)Gt2 z!NMRhDK2m+$32npE6+qmx%nVINF5JDxyCmZm?&5|^z=y3DV2;2(I5(RajyVqZ3;-` zL>4v>g;;T=&BVZ90^NB7q6@)A61=AmYA%+7g@Qp;C0He>8w;@vbh#zyfJjCL__!LV ziwfG^f;6Vm!^FTa6KqHTh=Qyl3kFeBA;}tI7z4v~=$;HvO)&+uLU2B4hsFnR89y=M z8wW%Trg}320|Tf+Wn>5dQHQ{-g)k5Wx`P&}@d&!M3Upl%XxRdY?gy((0G*HwYKVb^ zLG%K!Fg&_IxFpvQtVVDC!$2@~Vl93@A zM1krwE{3ms-Hcy(yBU?{!%RXJgJ}hs+`z!VAj$Ampque4e>bBXOrxCAS03cGle`QJ z41y4+gDB9MwEPU9k=t&@i7cS?Ix>>;L4u%5nvrTTQ11bB9}uY60@0wm))*Orr5PC* zKs`Z_Fw8Nas}(?L9V7;#LGjPX5DfA%B&6XZ^lfOfYe&Il4#@LhvtZJU3<03IxBFmO zc*+3@?PCX}^fCq;xpD?2WtRCMKFAO*hO&B?7}zM#a0NR9g96xyfM9k8h7<@BCM&|u zz#s=+AXy+VAH;wt4F*vw7>`goos8 zsFBPJod4&8bcuqMhJ&a8R#273`F}o$F%cpTqNaeE0U+unm>Dj_#=sB&c0u?`Hkf1J z0S>bR6t6HVK;xdZFiSuZAUoEAEu1)~b`#V`U{$b?h8ct6RAz>W6X526Wk3d%Ko*ux zs0F#^GK>RafGQ70h5!)t0qo#F5CsZ7uu154fn0{<uZ=?Zd^%oZ7#YIQgYOa67-0LfdOPPBSR3#gN0y|fH#=OprZ{3_&0} zHnTzIgbmf_gP5R}1S3NbhyvLI)dRH(oN^&{1$>9w6#%lU6>L`k$nb3tCdlx0;CKoE z8GIDN1bF~7e~VQ1f>f>;9KRvAq8?o9K=Kr1yLA`PzWzrK>7}YCk6|6K+bp$WrIy& zU|;~*>Hu*BhyoRDNR9yAS_nE>mXRRJ*q64x-M1nL!{*0BmkJh!O`ggFqC- zHh8%Ps<}b)42%rHAmc$Qkh}nrSqL^U7$gJH3lAR9j8_h%tumd7fnh#`xtNK8VHt#Z zk%@ufDuf9OvYpWWA|pe<4@Pib7PRA8or!@#3soWL{^3K{2v7$9>P83I8R%s8;M z3=9my91IMaU~K^)3Z#UQAqYf)R5CIIfT$p_f*=qT&B4IH%}~z4W~9QbAcC~C8g!*2 zsE5VK5CEc7z_AhxqFfk311z9~3}SggBw+S~v_XcYf4c z<6tOcC}L1DlAaGT733rihH|I~hzGKOlcAhpq6ZsD5r_-2h?AiZCIsSwtmB3X8Oj(* z!|mr{_{5iyFo2xG$PfgRMq0fHD)2xzx-v18gKu^PsbmH%M+Y%L*FG~blyJcGffT`l9b_zM z6pfJ~07QY5gJw?=N+*I2`Uk7N!^Xg10q*x3&j-=%VD`j_ZgvI+(6T#5h5!(C7%B|b z!@$7s45|$>(y^g=PnhuoWE1s8GfRbSuOV2%H9P>UUED7=JXXJ=s8 z0M-!<+JFR-Mydip8>b-V1%N1!ENI>V<|2@RAP+Dy1c0c;U~|Gj)KV}r07R_irI9m@)8ih_18vVfQmz)}+e+L?ygu22%<0 zG)U=6u$kc?GeN2u8NxvnNE1i}*lGp_25h=OLu)W?AT~CAYAg&4G2pfnJishi7#MuP zLO~!3)b<6HDKMLySr{1H!O{UB$_w0yEMNiA#Vqgu12Nx%r6xvzXpkvr0T#f*z_1T& zQ1BrZ1_qD{qyURzVPF6m!pIN+qCjSV0t`e$RKf!crVm+8_`GQxF7i z2!RxU7RWF%1cE5g@-{|>a1aGjiyZ1*%nS@5agY~4^hL0-f!CNB8193c!v^y~G%MIS z@Mfh4)Un(Q1&G`QayG~aZiX_1Ak4{uPy>+);uK~EhIFuX0U!#b6*N2#q9Lvb22oH4 zgC-QgW`P_$8>}lBM1hnrG6aC!%L#TPJj*sQGcbS@Gcp8&D3D@ihT@v}AO^?|W`=^A z`5*?!2sVa^A#5fx^FeG5@X0bI(wrX<`^wfZGB7*`*F@oe85tOS!HwDQO-u|7pvzoA zacaoSzyJz%r18J4j0_B*B^02-teio1K8Ov{&Bzc0qCjh_U{Xh*CNVMufee%c2mM4J zMP>#Dkino@6hxbW55WP=-^#+{dJo)bp&(QJ!A=VWQJ_{kD6T;|Ax?u2zJMC%Ak~Zv zVKDm`8Ny)JA=N*Jp{9e{QZ{m+Ic-odK(q#fC`l&JL}NJvL=wbP1g(l;0EtYDU{jh8 z;)49c$PkP$KN#jFgt_3@1@*d^7#KjV2c<}u7-(LJ8|<+F5Cxh`;sP%OWmW;TWI=q8 zH$d?K(*io@2y{*nBSQd)0!brz3nU8?0wp+@4v?kUU`xV56lnMt6z(8;GDH|eK?4=k zQU+@T=}H1i2Q@JEazeSzMS#QpN|x9w@fKsREW{ z!5o+kFcqNCf++y8k>zVaOZ7k@Q_sY}080Phm69;k;4x}s<)FDP@Dghz_TIVsA@_-^oZazpt526l4f$BxnRjZ)t9h?ILd>J7t zVHg>LL5pJ=A)+vEf<~_@QH72$FfizYg@Qqp0d(O6Ob2NEYB#u39SWlMfRh1e1_`17 zbS)WV3M~k<+++(_CA`}Mk_8p5pil+TAPGi>01yT0>VbqobOKmc0Ehya1ri3)AOjg0 z!ax+rT#zutQqX=?1_qFUuxK=8U|;~PMPg)#29?Ml3m6%qK@`Y*m?{t(WC_wV8q9?- zB_KmVCV=W#5DhW{wEG9V5$qewG{&!d(-@`agM>k*!L)(cAd^AbU~U8%1zJXlMLS3s zH2x~cP*9I%GRPO82|F%^uiP-(KzxvmSWJRhjKw5mcNl|1I2uHOf=ZC#EAKQ$&~BAN zP(qu=C^sLp)&SH#Knfc~9KhSqpv7;X^=3#}1GH-WA2?YDfGAMfWMl{iQIK2$3PrF} z7@_S#B)t|)3=E)FBxqX^69dCTNO=fW4I)5e&1_(!gC&?47!1JDh>8xh9ul;~6O=GO zN#4bM00{Y5e}lD+899E zK<7&`GK7ODbQ?f<9JJzqJfM&>`Ho}L}Kp6>SJSe6>G-RAG7({_=Vq^#aQ6SSnDnLi! zfEJ2^(k_TD1p6=mM3sUaGSLIHn*b7f0U!!;BWQ6b~}Ru%>Z zi02LFgJ{SQLjZ`{57s)-2Sh`{1d&@|zGP$whIta?c~DCPvS`p?K8W5A_D(Q}0__O^ z^)*4qZGhMy-!d`;gM0_7gxNtO-ac$H^Ff>`;Qm`7!$co88D+-#ATBdAs8<6Knvd{1 z!bPApI-tx7TJ!{>K?XB3Omtxb1rn(60&_sY0P-f71B+}h2a4OtPoja6Flf*klzBlx4PwK*VaCY70BV$jA_+u; z9K{0KQO5>KP!OGE44_S-5S^f66rvX<&jQ-$#fC_=pta)=6(P_`JWw|iq#Bei85sgV z6euY&G6aDrNU{q6QJ@sU$PffeAB+q^2xASv%RE5wz=$|>LIo{X{s!mJi5`EM7#KjN zfU-P@2BkJoZUFfKlrTWzAR1&GNF3r`$dn_AgzGchoLHZ?LbM1w5f2#Hsi-7r-!`$1W4A-G14J_fC@85yEM zjpwfrQIN+#Mlv!)!?GO6448fp4bpf9JODG%fo-A-o6LL=53=Ji07QYNXgL^Qk|5p> zu;Bq93S@yZLlI0Gs>)wY9nO*g?*01yRoEmh0~g(4{UsA3o> zyg>LRbWb58Lo{d~A*jv8#V|2|?fV?Y?~@tlgZLm1fEHOmg<#G=5&{_n!k|6~cDO%m?w$f&)AVM1joZVkoSKZlVDf`I|v|vXR69aXU6FFQ!x8nC)(5Cuvcps7so89T}={(@%GL3+V;8)&Jb zCS98KOZH$Qnk5SdfY9AcljeEldmyIP`<0Kz1`S#DcA3 zU|?uuVqj>6Xa;rtdLc|ua}}ZxUig7ZV$flOj0{2BL1UfZECgz=gH1Zl%)oFKTmhqK z0F5n!%3Nj!hVu|v&}t6QQG}5Eg4kM-$;`lz4N(F*Yr7J{Y=j?l2sd^rbXXjzfemZ= zFf)|b&xbXB*ci$LK>J`oH3F!#W&>p=Lz(#?HmGO@D+Vz@Wi3oGhz)8A!4$(vEf^nE zL4eX6j1S5JpwbJ*2Zsd%1Nd%okVC+hfEXZGz$^i=L9T#l0kng~22|yJSs1RoZwQUS#=7ZW{pnwKT!a@}m zHef+?9k6N@ED6&As#kH^0jo|?bbv;1a>0o&07NYSGlN0YLNF8FT>y=-%tRFe72?KV zpv>A~@^9Cs{z}^J#$fMT01i4d9_9m~%jFK~Ou4ks%sHLFM;= zdSYND*{J3HTAj!k~d*TcX44|1SMut!@1!*xcfRuug z4kJS-hysl-fJ_C^o#2EO3Zg)(@j${REDQ_@;Bpu~djv}CpjBI-<`js|0e3V4${86L zPJo%gAPT%snW30*K8SH290|ot^Fa*IT@uU;#mw_T3`aqpS^njVcAPRK90yD@} zAjSspNeRVF^Fa)dM;RG{K@@1YA0tB$h=O<>p5P}lLV^_JOjwvQGK9fg3=#%88RSk7 z8{|5WJ3wrZLqLJb$Pfs#10)QKNYEN`P;zBt2mn!##dzVMxB}I}j11u*ss`-;01yQV zFr?gU3A(@>A`7zQ1K7v#WC)5HkaIy6g6PfQ=qP8L4`S?vaG2(U7@%F;j11w(9)h_L zq!tvhj0`~_>INg|9OEK}0tOkRZEqma+nAf|U}o%sr;$LA8K=Nz6rz~{5(Vu#L)-rc zGXvyIkYJT_V6xPoNF+daF zpyPg+85lr8ic*5Z^l>p1GL%7f+0KU<0BYjF#6V3J(Bw2DLlB4p8Hua~#0Qy;tOe#x zkQJa5%g7LLj+ues61Wdu#9*jmC^H|#xdnE10Ehy$clZ!40V@HCfs99L!hmWsXy1kb zM1%S_j10jbYCgC-j2MgtDFyA`XJVMh0;1=E^K}@Af+~fVG8v2vVADX+0dqU(KnP8+ zkp}ZYH0TTqMuq?o5dQJK)X5#~_P@I7d1 z6r>a;R>#P|&j9cKEdg7H@EB-a zqc>PbFo;SAuf;6hQVXB>*JEX1XaiRs;UKCVt@5yip0JH%4X6ZR0;if_5XA~@I)G?t zh%nf#3=9m5;1zJdHzo!KPzMhw9lc;;U;y=#kc5<(85lsTLKqo>L6j%dXb=rL;RwkQ zp!RnK*fx0JfX2kC!6PCD^Xpg`7(nA+j10jbYA1N8te9~=h;aa14Z*c>!ngYbfVTU9 z8X!yz6LUbcCZqv_SQ@Ox%)k%}brj5#NMi6bf+Pk%C=W@D2a8_#JRXud_<5~JVxXCJ zuy!Od_<61Cm>C%UgF__@M6rW?8U&&gz)biMF=){`s8B&VuXP^dmwAjV3?J%Up zj0^!FiUFJ}Kr56%5+JMy?HGadgQmJbjXe+>BnQHvMZUMe#YrfL0vW)>Pz>5V50VAX zD?b5C2Z1Qip)o8BMF$XJ3R*@FG81WTLliz^76>YhK!-dqG6aGsh(fqOLCZ!VLf}?5 zXpj(m^c#o)atKl`na;q#a2f2501yS*k_J8z6~urjg=Yg$IDpQK03CT2K)nN+aREyyc!10VaX|-afQ3}RLLe^4 z5U`L2SO~<0n+eefGZSP0C@2^if=ARfqI zun5>{5D#PxSVRV7Gt3rt&>=O@Duxd_;0bCQGBPkc1DB@oRxC^<8^j6oL8=`YL1QZA z48|(V5dVM#yugB`AVIL@^Facjb}TmoSP-HTBmg=khnoROJ4gUzEjL4HJ={!~Q$ZHW zgWVJiGBE}1{H`9h*AaHf~ZSDhJbo}p!Ni)JO!QL2V$qNFfgQnD;`v}6CgDO3rKAx zL>^v4fSLhIz#a<&QBb7}Af+H<85zPr6v$*`8yFeFKo&s_1Gxu`K}82>8w(>t0Enst zw*krpKs3}~7m&eFZJ>!|ur|+UB1|0#%$PfUcAYJ=F5CvMY0U9?4Rpp@j>p(N6%nS^mu?mndhz2>2 zks%O7fn3PQ5DuaY!GUEkA4D62E3RPB0$xyvfNTWOppXHzuvi!vAl^bG29PU2GtP_* z0UAsU44^Y1K)OIK;s)1^fuNx>dvN3+bb)5!L5(HQv<8RK?DIq#Q1qNu=9%Mdj$|9$(#T-kU5~n z7Bgr#8_ApiHY9UEdtgDPFff430VNoiJ3(ydl9dS1@pGW00?Pg%lR)taQwL&$;ua(q z!NR}*axI7rvjnCNVhaNUC;@=ff!qrd10`P2HW`o@hz2c$U}7k!S;D};uo_(L1%W6~ zFoKl8w1J!m>MsZ|Obq$PGKsNl$$NbeEjM2Se(hj1==MR-2nD7hm@%-t!N?E|au{gI zHqu%R&;gL3GMkYh`U4{a!#{AwiH0ReE{1u~hT#X$5qMxDLFx7#SXnSg#}^3m8zTb) zBsB-aG^4Dn0u6{mhV`RCQ#IGX4V`Gv$N_W$2$tAERyy=-t&m+W3NHabi3hZb3l#96 zRawyW9uXkzpyoM9{1s?|0GwGSM!?KMaRJDXWQeuPnHU&Aj)6rUhz&a4k&z)9M4biC z2^TSZU&{D>661Uj7vyH7Py?COjC80A$Uu-1h=GV9c#t}fooWn)SN<~?gU=8!YY3=CJm((o1-tQ2Qv zD5#$gE63Rw%E40uu(F&DG#zdzGarK23jDggWst;70k)sb(tdXM+RE&|M z5436q6p1i@gNhJP?t}3`#R#Yff$?GC0_tFF26sXb3z(T085ls#4p8j?qCr`Wks%mF zfwC(|SeA)_K^LkGL{9^!b9jRRn+c#HW@IB^F7ShP@}W!48v>mfK;zzEX^`!ZW=;U; zz${STo{=E{MBM?G0-y>5tPphMMKic$3jk4|EpLnr;U5_o7=D9A;R-=#IrV~t0zec* zVJJc&DBi#(g2p016E4sV$Pk6W=MfzTgdVuJLG>M|sm;g`0HPpz!Vn7K-Aq0~1_p6K z$i6es1v@f=3=GOhe6R}`7#KDPFfi;CK&aa%z`$@6i4Rj3CBVRtj3k~Rz`&4?#D}S4 z5ny28MG_YhU|^6$;=|P0@G~&D@`Kk~7xObPR7054_!$`HLYOdx>-iWMw(=nyxSNlG z;SdrZrtUoGmJ#p~N(S>m7rT^!&n^lAQ8i#@7>E*vo?Rrv$H1TtWrJud@M%gxAj%fZ zga_mY9tMWL;L~pclz15!T)}1qT;XM4cnD!K@i8#KjDIaGSg70f^@KTYVKZT2d;RS*VvkRt*iNP4I1jL5Pi*YkB z$U(vwMA?Ixp$^;(44^ne-Y$TuP!Fsy7^JWY!i1T~#Ld8<0FG;e`5;;wEFAz+Sqv2h z(KQfZ5CyUcQ~)BI05TsW2BK}iN`pZZ$P`8fuwm%Bj)59E;7|=_;ACI`T_niJ5C)>S zprTOo&vL+Jp&|^RnRiui<39kj7q1Y)+|9zka2&#HW@liS4&Esm@DF-9BdE~iU|?7P z-meZ%EuhsTFTgDrgZUsDbU7kuv3r>k2LrTMkkSI)EFiB_P8p!DGbm zDgY$J0}c(&|MNjEmjs6+=l}U2=R!>5{0|>xzQxMGAOSf+W<{AL2Lpo(IEvtf5yto20AvT~ z#!E(q0MO|P$zUr3N;nu8sv%5RVC-OJU^omh6cm%{sIuQc8*RaEFRY)>3c5W2%qg#j z`|b-H0|P%K!a$S;I3mky=J#+gFo4|8%urqfSNxlefdQm~ks%x=k2C>yj)j2%6t18Z za4_eA#MmIt15qGp&}IYp!a9&VXkRrbA;E$S#75Q+kvE=?kT-_A2&4|Q2Ah!qbiEk^ zXo3T@-I0NT0dxR4=*WZsENX*5T3`wgn?^ws^q>WONX=@HqN$L!2#5lWL^3i2gDB8B zS*Yd*aWXK(g3E>g5Cyt)g^?i`L`{c?f*cFNNt_G}^$;NtH4V&!S0A}-3=DQ)p&-0IQhj0HQ(5kr)}mKon@P5fj5i z2M~P%tT7Bkfl4NjFledm2}lVAqWmC(NDd%67|cdgA)q<1L~ybV22rVCY22;^ZDO)3`KoA9*@?mBuWCAbl1I-pOG6aDr(9}CK zLlM(_5JMEw4+2r32_R;M0;c&Oh6Y$X97OqonSme*w5W=aApk_(0gHx%C_!*|1cE5g z)fiy6fEX$eaS&w$o&+jnnh#=_gT(_tlq*=gfN4I60Sa42hHwxS0v0c1oDX7Tf%9J= zh*|+=27#z&U}gY_QUJ$eIEVs;9V0^^h=K&6;d~Gcie9976ZC)wT|f&O76Z{zp!FW0 z14Wb>=Y!aw)0h|;!a)?sRFEpow@;;snv4G>ktfgJKk<8Wi$w;4lsY z1uQ5Kp@|E0Z7xU!hz9MQL>d(a^|U~_hmj!&M1gV%Xni|~z5vcGK_KcjByahEXpnV0 zpe1j`D$t8!UV-in1Sf06UObSwOTh*NfGAL=1g}XgR$-H#58{DVOfWJ8fGCh<5EC_^ zCW1sj_AoL8fDHcuiGEN)0>U5}kY^bg!o*PzWB_d)Wn(A;pSulWJAq>cw0%`(K8WoO zP60t6$_|_Y;6)I~Oi&hJWC#aQpi~dqlp+r|KLB*#1ISF!l6ug&-XJ#Uqy!MZj6r5T zi0uu%#s;*Eem;of2evQ(M0J9h;UH=~WZD+KrxIj2$U~s@$2zPG44_$FMuu<@1#%`x z802pdMpEhnQVMbvC{clEkc$`@!a)?sF^mjhAPQ;%sH6uO0G=F#TIOR4-*rn!7ief7 zw0@k2p-hI&NQUdce<@|h`3Z~+4E2nl`*M&)!PYP^Fn~I%Abm(}V33djxN->vom2^$ zlR%OM&B%dHJ7#1E0Lg$3VnnK#J~KeBKL*YJOk|KzPM8lmD+Z(xCK3y;_(0o7L0kD4 z83I7=n+Wcg!<(3(b360Et_T28putE+hF}l{G62a+D+UGzXRyLx(DpRYkwT0N!Juh1 zP<4*f&;iZIfv(PAWC#XPzTm0o;`;d@Mm)p-Sg3$jAAr<=ViiRDgSS{u3}BlW!lphS zv}p`POFG6r>!L%}A31{OdEh9RH4i4Zfw zrVgwRM1U$U(3B-3LokQ}O>=^eO907%FvuLxXfqoFv(5x(2JrFHAVo+X2OS0onsP-d zDnZx9fL8J#g<}g70|RK{n2{k6M1d9)Gcp9^Gczzimg5G1DA1Zm&^S4WJ_zmrl!kz4 z&>9-(aSx!iEg&Tz8q}s`Vkiv((VxM^UI2(<0vAMu3?Ldb{s&S5@(T!qHp6*93MG(> z)`OYBAZja^833xWK+Rc3~=lKG&C6OgwU z8Nxt1#K8p@ypRDY1=+^P5C&2NQh`(ygWLdG%FoCU2BJU<)tMQ}D&~V2kkMhdLAT)R z+2Kumm=F_#2|UhWVr&ebHd%uX6#@kU0|Ns{{2ti#@GLQznSo&`IM5ME1}4VLP?`ca z6DEih7@#fUpjbd|1;fNp^uh#@^!@>@Z~{je!r3q}6umG(B)yO*eP;LcFG1xLNfcMBSG6aAoPj*5)30k}G2g1~6WMBZDQN_p*0GcRH0XsDy zpOJx~8NviDO@{sAw-0w?ZZ&>}(5dJ?3P2z+l1L>8tOw3HjRKn+BLT+hf5 z1e!oC0~;9x+6mqR^(eY7Mus4eCeUO)==?qSPVyj7^#d^~0Av(s?HwaS0L&<)O-?Hq z7#Kiz05CEHfGE(_GK>ttumb{++zvWq0<=I4DUE~1fz)%H_WVrW1gXy4)w2)MR4(0}} z96<_r(8;9 z-qUBs0A(9CrTHKMP<%5ofX@~IoyCG84>ALUVd|I}3MA%(G=Nm{BAKKt0WZ2i$IF8j z=Yx_1hz9MjXJiNfQJ{m)LBb#-L0AQP1rSJ#fKmqr1_scMYtUj$5Di+Q!^jW}qCkxU zkTA$Z5Jt3yfG?1r3YCsq?p9fm+j}!$kt)TD*=>^$@lo&v|K!;6& zrcFU?5C-u(jenO7__|# zv_}YOP875k10n>^Dxl?QpaqIZJIg_uL5)AiOeq5chz%Nef$$If2eCo!g76s_KnDka zPMU!6K?f1aBHb$kG7p3)auDe7b5MkC3ei~{0=X3CMA22u|ah9zYX8;cStXaxnTi3}lUW`cCWu^2?214$k< zeF2sSoi?!poPZ6$`x`*ph(QI14)nGMQP`b0a2bzOz&dDT2xO87D+2>)R0xNq>Z}Y5bHU>Q2J=DmB395QORScH zM$$p!SU5~N%gVrD1s;?%m=B^sruin22>Kmrvpya{TCfV!NF4AB#q7#JpjGiWqu ze;R1l3?oCdItv4XCb&Zroyy9KU67#SEOAt4Xb7|q1MkOGcN_`xNhQ!?c3b zfsz6=MS!$0GQ@yXKZC>KY8DFvLq1p)JmfyHFfjZ?6#^ABmf$=KHw!c*S^*v+g}D6+D+9wV zBtFa;Aa$TD4?6pTm4N}Ig^?i!r1~1zz-SP41I$D*8>9!>haf(**nk-g63Ro>3EJ4w z3l@TVXA3I>!){a|&^#Zgl!L_sC=NhH8jKIK0H%(SAqJ)dDIP$wpb`w(l^{M^i3Sn^ z%@rW&1lbLmv_TRAO>u%QI7f<_0yYK)&~zt~D$ot-pzGF=R4ry>U|0h#L*c=<5p-o0 zSO^{n57-zOo}&tZPKE}Z^^9Z|akV@sbU-`xL8FEs8gfr#0BH0PIsgkA5QH`~I6yRL zM;9YQ0EmJtx0=WSqCt1qg3jZCo>~Vo4`en7gSsZ5y9mIG!=>hfm>@$L8G=9*sH+Q= z0Wm>k8ymw!4mLxn`5-pvZUU$@h$#VX>q4YK?2q7_9R#94u7IipF+t}SBK7}3jTX={ zEJlWCkRL&NH5eJ95&nz@nFjI{BSSPuJLrH`q|gKn4}!BBNRhzW8ABSQelUT8Ri!VQE$tqoB4 zAvpzPDX3e3Bm_Fz4YcVENyrX*-yxDv5+efxXeSwx5NMC$X=uFH2(V%fHWThbOAPh>kpn4j~ zGLR`I-~lao9so6rLA_j1^BqKk<`Y;Mn6Fra&UgbE1KOSnIh7Nn1R{bEV}mG#_lRNg z)T2Rn27@}Dpwq-adv-wAWrGg*gxT;2v{8eFfkB9cfuVqffuWIwfdOq!+Tu}45`cv3@ywI4DHMe4AVh_3Q!H83I;UY2Wo|a z4rzx9GkgJ6RU8Zqb2%6o?r|_MeCA+akO6I~gDL>6wlU;jV6fm|V2B5$La2C-AOpi3 zK?a5uf(#6ILH%2(_zVRG1}P;522*7Q1`g1PP*8CY-&d7^Ax@QnVJWEd3l#^k<+T_X zbhH>4K7;N>fr=m0U|R1#7_PE1Fg#&}sb*ksA znUjG5wBidU^PQ7{A&!fIA%}~BAp*390xH4A#lWD?#lWD#jVcamK!P?ZfigYl{$Z$c z2GDjJ&~^;aa42Z8IVfL&&Nqe0Phn(W0Cgro8?`}A7nryyCj&zO^iE6AWtK2;(7kw| zJMfgb7#Iw>V4@5Rpqm-z@-Q%b=V4&r;bmaZ;$>g}UC#(p0XjtxbZjPQM<(dX9+)`j zTujidIUq66c0-sr=o}JBRt5&pWcGKYDFo1&#-J0ELFX`ljz@;62MyYS22Vg;R%HLd zhBLo|ZnFd35(Cu$I$r`bZV#Gu0i9-h5_*y?RGI-K4?0N(bc76OVivSP8Z-p~lLwu_ z3tE^98WI5QFoTJkF)%P#GcYiKjtKN%WMBX-{|8O~$TKl8s4>A*K?+9D@lQ>R3=E(V z#ffP75p>>DJQD*0Xod&0o*tABK?l~rOt58QV2FU8QUzLn2D%&xqz)zz+D-{tr~+#2 zf==;376+ZO13KygSsY|GsMWa^)TBj9x1iYr&;||A*#Mx4dYC!(j0_B*(-c5r`Ya3# zpi>4w#}~llL5Bc08YzJoSd zA>|X$bgL;N1A{Xo0|RLH8%#au9PBy4wHc@~&BcQDYAbHUK7nnRq?R91b z29RGstL|aqpnM5h`3zh33=@}OWMBY|?t#{OgVuo~i-Xp9gTz6rx?$p=jr)gL7#O%Y z7#KjSvtZ)UtPBjGb#Ndt&>}LJ_!H>*G1%fUnD`GI;-KL}(40BwuTLfBsf-DYNLjV#7twg&5UAqC32g!lb1*qNt ztsH=f|6ycc0L{07hOQT^urxGIr1L!Ikm^f(j5-2@_u7&~4L4gMJk?RLgzV2mY zU;wpvW+9b3pj*R1=er$XWMBYIGJxCz+HDClR|&e60CeOi=wNS{cn}iG}$ETQ+F);0Y50!v`h?hF?hXpym&#S_KW?gT{+t_Tdr- z?MMVI{p(|3U;qtVg4!FPQA^P1=K~~v!o)#g1Zv`e{D~|N8ao87vj8>mL1_tQFQ_R7 z8Y2PiGy&}_hKYmP6`(GtBs*kXBupICkpgvzKx-vI-7uIqr~wR0w@ge73<600g~<;$ zS}!d#2eexT)D-&nA5_027nP(|r0RiA!b0*as96l+GBPMIfX2%}Y;+82?SmS;U^QS# zP^SabC<9dtkj5Tp+#Qq$5NbApRf3Mt1l=hXpPE+&>cD`^f#`})EJ_EhUIC4}B1AyW z107ZX5dj$iI@z)S+|5#8fY=3^83W0KFf&7ZZenI$QECY&r9ebLxNsC@)d3reQUjK5eI7~nU3fP@+JQW8r*2Z@0=ATyXj7sZ1(NLVka z7_@E`ECRNj5q_)!SPVw|h29qr%101$K(@kUAv9=e4-`K5)CfYgftrBKjHmJ-cke>< z!$?s11Y(0igqd+N$XOsR3I=Ud1POrbV`c=cegpXsB!a-8326`y)U0D>1Px1KssWXC zAT^*)A~Pdskq(H5ia~WRNCY&&$jk`Z5C`=HNDzwSp+cbYgqcwj646jO7?s7yz_368 zl$sbAm>EIcE|?602Gv&}9;lvTW(1WgpilsbKrk#{fJOnJ`JysCH#09?H@T=JDK$Ma z50XPbjJqDRM(@17%WABq68#^Eyux9 z6et~m)L~NtatA0h_P|2}R9=Hb5g6vvGzJC+h)?s2eL!m@be21E?nf>R^H03>E4rpp> z7I-iTlq*5nSeY0Y&Y*~Z4)A!4A_D6EbAgx6!*m%kF)(PNh&V7YFgT!yfcgsIC?cR5 z6m%Oh!abn-Q9vmj;fn^)_EYfMewbaLI#mNjWESY&7`O;5B|t(IloCL9=b*+ADJcQ& z9!5}Z1%(j;>lGmiDNv?iW&{mIAmm{zP`LprEuiH_00V;`ObSke$_-Fy0m?DVjJ%)( z3YUX1K;;Igv;et;nGv+54<>`4LFER>&G^a`@?dJfB1f4R7@DCXpcrCc0IgmI4Lw5ASbS1xT3TvRCFm{|6p;$h znkuMBPO*oJGh{*rA_6iRbeil9sL7DX0-db;8bt(jZn!3RO9L$Rf-j)}Z({?A#DgZE z85qE4%_B@!VrF3Y4OauQ3v|%<3GnVMu&&_z(!3OBCm8|IE=Z6FNDZh@`bQ8Z5}#A- z5$@;00BZRmOa`5o3aVuhBA`7*pcTjn5zv@Gp%Ba*kjbD?CD7_lgqn$<+hd@0DkN0r zF*7i92qWtPT`MymMFg~vl2r_*2INAgAO?mRaC1N+0j_=wp!4t$c7gh&GvK;F?zzm& zz@R4%GY2FB>gTOS5&6c3Z1hOvB=-V6=5zwja=TSsJ`wo^$BI^R3 z(YhQ(1hm({M;cj8A`1hM@VW62Z$ZFbH7#JR)h)iW+U;qtGBiy_QG(HFqACON$ zqlBPQ0E8OQ#nMT#$R=NAVPKdkhb#iRU0^GU$V(OmhLb2FzgZX<-k^wpHZAeXBby`5 z%D|wEBBII4z_1@h#2R!}A&Lm-_H0oFWOG3CJq{=$)vOE**(f5DSQ!|mp@@L4-ad#T z0vgAAgCcU9m4QKA5!tSftPBiJC?cSfIrk|ctKni}VEBk4BF)CY@LvU{2HeU8jX|rz zL}0ZHq(lPMGADE(iw{Au1i_fK45(EBk%N)2_6BGIkG}!UP5eQ0)nq1~Wi4(E>Km zdVY|a`ygk5#gPe6O~k(a#YCwiF zn6fc2^jN?|;?t8d^NJy(uAoSOl(eAvMGaO428c*}K}II13k14d6e0pL2y_z(XafjB zBnEWBEL;~zO&S{m18DCELJeq|a;YWEc95DTHU@;f%jS^$K|e>Mh&_jbs-q}dr5 zKs)&mYV_C{7#@HxkAU=57#Qr?85lq#QwTLd>2qOCe zbaC$l6g6Af85sVch}>sqV6b*VHs>2V14AT=h$sgG!vmC3U5$f*0n|o^4V$?w)bI|rJb_p6?8>E>LO#%@`sL)`J%DLc1x%q!tHQDS^dySZY}y01FLJPXz2J z6arMs3uu?OEQ&mc14=ERQ!^m_9nh=>NE8)=Qp;6USZV>SIYN~O@j$5s)M_G> zT0jF)kkkTS*agxK$Dq_=Ey}3V_tAcC_9PvYYYt(?@eN`cn8g_U8PGg9O(;PlnoPydtpmG`EW>}np<{%*@ zKyrRgK1P%>`Dq`2XZ(|Bj+l6()>2zd{v8h8l+(FKZS(D`|wIZ-6rsayi=fR_NE zYxofMz*wMI?#_qBayR%+MwlFo2F0?204$b~=gDCz7#KjY{8|eZ%b-I=5OOdUD3(EW z9HCei7l*|%=o|y=v0Ot$EU$sbGOXtea|xoH2kjYx#ByGKNorbVUJ7dNEe9QW0*gUR zr+^LY;$UDn4pRdb0Ubam=?#l_kkAGW1_o1qm5vci`VKs}BCCI$vVb-^omY5}dN!HgnMT>x4y0;vl?cXxrEi9&$NjX6Z5C{VWr zGCl^HZvoBiAdG>P8=(6KAStS}Br^xSCSYIywPJk2p(z2=xeW1%W$8Kj`30>oHDD`F zaxgHwK@qtOY7Ip|&4HIK5R*YE>H~PEGFUT|pmvIyAOve&pw@~|>li>ODzyWaqCou< z&@2{A7D9tkl(jG{MSX$@qLH8!Wn%(MQJ||V&=f#Z6let(z7z$jK^moDWy?a)I01%1 zpp>wOh?KC0A6A2aMz64^1klPLNJ_{rElDZLEK4maMotfRIT#phU@?d#C4e0Fl7oT4 z4yJ}7KCd(fv_8@SE&@{Xm4kty7)6AYlY!wsiij{L14BzBdTN2#4oWS_pta~A!{C^_ z)Pk83U~SPU@YK=>w*$t2jfxb&M@2y9URwOfu*Q( zn1(PwYO58duoMMabqdjoOoD1FP%nT`ic*q+r6|ym2bk7@Qq&zHQk0JXEJcCJ7Sy&D ztZV_TZGohyg2bZ4+|&}Z6s5??z_0)s%h-CFApdD|GBBKmsR0QvSaLEj?2Ce>4Umur zCj&zRtbYL#UxY# zrY9haY~^HN5KM%L!0Sq|n?Y&y0XyV~V6el$1Sx41?m|Y;wn?ydH~~wm62h>O4HTzv zX*dIv4ku5ArNcx41_sdLV7N4x0ZNCzMPca>w1FQij6#4)w!iRnSOOZ!K#>P=KfXV4lyNP14rNG#4kE*!y%kAl)6G$r6l&lfov7`DUI zfOXyFWMDX%1WP|4p%0u44C2YiB8*%N3<@I9SOzI!5awcF*pUKJ1L_wsFeq^`F!ZKE zL?C?xV=e}U@-$=-A1(%ltaN0NNG=A3LntCypc54{kkwRhF)#$8h;)OFTFiv0fu;Ed zu)jcQ9<)jgd8H8peBA{sMPLgb*vQfXSgyp3at2tMhld7Z1UNj<2~e8uT^Lnr!Rl296y=4F(isf7{u$kG-eSeowuUCRyC z4WVFZ9<(4IlIHzOOA1O$!t#sq^YSy{X@4;n1A{~sBqd;rQ;=!vxEL5d=0eqg1Q>R5 zF)*m-Ba58iVqhqPiXhfqKuiXuDA2Khpi5Z5+Q9@Vr6@5essWb27(wGcU@PDRti~@P zqQ?KW4VLQ82{14O!p(p&K&cM2pa@iFGBavJvMNjxN`q1zzc(z^Edw<#pfU&wl3{#+~1y`zj#l^r7P=K7qKt4EvBErVaz#v)( zQG-Zz5R*Zv4zy|>)DuH^l-j9|K@^rxL1#B1>;bW0sjh;ERCnY!EY*qdGB9Aq5Gd8@ z$id1w(8^Sh4X7BD>bCmBQXS|{I8=EM50vUaJ#s>+4s_8ZB-P*AGRsZIdrxTrKY ztbWJ71_qSsVu(m}Kj5hjG^&q1)#Wq6R#mxV78m3sRyr0HC04?VItEZ#X8=ttxKbUc ztV<|{q$o(eEYHorAXtJdqRY*|kO>t*q&kSnpi~FiYl6BGj@qft1)l0a^SPjSMPOK} zt05xQ-M9ivb#r+c7(hF<5axhbpj7up9+v7>U=}RU-i=`pEY*S5pn-IvVo<6BrCCC$ zu7epi0s~sLhH3_g2P*6GRbZ(ORA*y42~^gZ!BZXR0uYc+R18XWHAJMk1!AzW4sz@P zvMI0{7PNaAxvcZa%u7u~8o&jWbuG};f-BX5%DSjZTR|Hc&Y=9LZDd1084cZM5MaXN3c}aDhN532-Pf5s+*z+OLYl2 zYuMMpuvDiHs*F($fsWFE*0U2zb)d^WA!Qw?Y{4*w0hH>_tHM$pXlDxcRF?}+b-2sA zIYgv7A92E|4s-(oB-KI7x`0fSDML_MrvptbxKbUctovFENl}opE}ff!p{5R51az4A zS*Qpi)j>=KrMf-L3=FjGDKLn^YFNxU1z4(UAtKfN`V32T6ZsezKr3rdV;Yp|z9_>| z-F3_;hL&|w39wXm5UUzcSqGX`#Fy$oDeA2{EJbDGtUWv6DGGE56RLYbJWx5dhlmvQ zgNPIbI*0-#Mfs(cl;;;^!|G2^ih2P}3HVZ!M>BHzY3F8OIM{+LGM$@&L7){Pf=E#i zlR+s8v~eEQx74mZE#N5%v_l3IjtC4(Q5{62sBR`E=*owE5ey9QL&D&Ofl}0IRalC; zinAQMod`=&pj}yT?QjMtMJX_WZh!-Y53C0cmj*LH{Zr8GDUfmucTXWg6PD_>fzPf0 zYephKwdXE)ssru(K$3(qL8-3tTSHwH;{8Tt9}v<9^ZbXXKO z1A`7MwP4L}3=Dg?85r_lYQS1Sms6}k5xK?9!0-e`M z5Zgf^4?4IJb!7v!QYOfD(1?d;G%Q7dZWY45I%0taEJcAX+XLxD#h_lm#57on3c?y@ zpcDmKi%+PG;?sqt7SQe@Ort=lMV1HF!UxS&p}Gac1ErQfM5LBElCaeBg#qG2kZuTu zwY5OkXG2m;P-=31QA%o2Ku#%qe+UD(g?|PbgSg5l(5Uq}m>RJ0pnC8piiijg1A|!y zByB)yMim|ghT~8XNJcj1VPG)tL{{U(!@%$yMZ}+nfx*2Cq6VTXo`-?qLpMYOVsaJ_ z14D2RLJR%g#e}A$LX-tyAm_WLECkpRw2IB3n~vm`&c36 zA?`lxQg{jn?O(yP4wS;R;VB$+6)B2y!5mNumr;hbQgDygO^|}6aL^bv>g*&eg@Z0g zhNN&8w-93^Smg`02ShaSFfbHAQwy#X4qE-VfE{^_B53vF0TdC?>c=H0BE2A!dtvDi zWEW^n=@S$+3wanA!uycbfYw8TW=KFoT#)pc32bK%CAjJaQ1PB9^3wknPxuAs= zbkH|M20?<#aL_&|Lb(96zY>xQFx$K!(?D&}llri79(2A4_FOOxo(r&cwirOUz=nui zU?T&|1u>wjc|lHqV^}T#ojME21&~o|=hU1WoFk z85sUfLl)8IWnjpe4iQ0=y%3W@DQZ1vr88JBj36aNF>pZhAZCEV=Rq2z;3*1b1)PSJ zy%UHidyDH~sZLjjfdS>LS+IGaRCh`bmg+#q<${G#2vDjM$cLpmGt@ygs7g?(1I_&r zN_7IPu#p_lI)12TBnp)3HXFiH9q9C3%s>K_y^G+f4tJkAhKN)*Ll&0mKz)2vufbAX zFEecXFgZUjEi)ZC#etmez{|kU0ZT2I&IKu9@Zx1)Xr2K}Q6QlRUIqraS;!)(AT@9i zSUVG9GAPvvGBYrsj_YBjI#78FG97_ovv0(tIss`|sso*ygD?Ze0+nM6Cc;t_V*mpK zXyqbI7D9tk)N=z^io!nH3`$XM<**b5TK$F@Y@iecI@^y>ikbmWQMhNEHyFcG)MA{o zZ+qb>3UqET#4pGss2r;yB1JjK!BW&4oV}Y<@D!DinUYw5n0A9&Sj@}7FbA3vaFt`t zybKKLvmxmRQo~N+Wnd_Tia@Fl(7YxKth51}y$ZBo8AW6}F9XA36kP{-85nd>)Li9d zU;yo+1*I;CT_1TF7*tTy@bWP*D4>X_@G&sRpop0AF)&D=i1_d^Fo>XtB=a#a2%v~m z^D!{+ponzxF)(nTh%Dk`U?`sp2@QzfH}WwsL@q`aInKwxumVNo8Xp5g_fljv5BL}u zx$rK zV8})hDdlHiIEW(B%g?|dz8YEAYJLWWTojSR{0t1I;Uch-1d^gaC5gEp0|V&PC2*1e z6R?s5v>F8ze%RJyW0oYCEeBYOs0ChZN3B$-1*NunbUD@mrXFfgFbe8B3a_wbSgI^OHy>EamR z3GW}A<7Z&F0!<0nN|N}ZY&}ym3sVD>+yrVzWvqpyF-U#~wVEt9A&cDMXJ8QCiY)RP zlzO2eOz?I%#CA}s+r-JhfH-px6e6%x2l5*zsIa*Zmg?Xx#CEa=bZ7k!8Cd;w8)Q5R zhP9fe5YcM77{Cl2!CNiNzyR7Yhhh{1C}pOZ!%`;bd?{3U5D%0x-!;He=60lW&_J>f z3`&`xd3-`C(}4}vY69(lhUi5mK`GP18kRCEaMp27{IHY>y3`%n1PB|HGWQUXG7l)j zQYLKuG(_L}UQM2Ry9+wjEErBisxNF(fxb;~jMNGNgYxIN}|2sv^W+IOEh5v?_ss z8gtN&1Be>j@oq{)yz?-FF4zW@(XjkJ1(xdI^#wiiJLtqsh`(^>cZ8c^@s8wXXuLb) z@%sRzXA{s#h!B6_j`uaNkjGY^Ldrw)3E-RDL1hAHCod$Q!$??u2OTVqE6v05J7`oE z>>hZ2f58Gv2?G#5Mxc{F!S2D6-w|$x#XFLlq46F+$l@JT^F#cFJKjMHT?wc$KOq2( z9Y#=h5fA8a%sUWQ= z7}U~R+74^!p{{0yDFn6j6qxbP)q+}a8*E{%IMB@^m`xQ>|6)756^DDI;tsqOhq~en z<{r=v^aU!A&}9a%wMI=buvne}kLC2_WGqK52?#JS6u@E-)42@s1$t(t76yj!_yRjX zS%86I0ZbP|d_3gDln-zbkRs4X1w01fwFAU1P}%^U%7j`QVYUWAenNE=tTzES8B6I0 zvK^E*&TWIGjcGoRb~8u@fkA15&jyw@KqrGDbP9 zu(Sa>6%*B8Ak#o;gGB)1Qf5Y^1G+(yPz-9}{~#i5{D7woP+u5SUO){1&(7taGAr8!6jfkAOm0*{N+n1(>pJm?H; zP-%+q+=C=|T&Uw5VbFu8dC(Pr2zS6(p!o8^6JH>8pt>nS72+Fa@cuYZss+hFFf3nu zfX8V{P7dgVTC_NI6<}ac0GB`5TOhDFg{T4LLCmxai&M}VLy#-5l|QgJb%4hy#GU9Q zD84e5!s2V8F9T>w22BwtzU&=gc?Wa_2buzCe1X=c5{j=*H(1_*++c}r5~z%dfyWo_ zGAe_J_^KfyzCgE{L3#@5#qq_Z1qJ!YH3kENzW@V+0iO5*xj$V1c5@^szEJZHEcWUJ z7#KjOq(I^eyP8D;3=9uoc7Y6L*ak{1+|Zd>u*fL^1_pSXf<^8KFfd$^g_hXxvKQiJ zkbBG-(N8ubFZ~$6yaKirM8L+?;kJY8N{|mhvIq=HW1OF1X{97`_4nZdd zz-&O!pmL*yh;+CBo(@6t8>n#)D>u|wVWV^Ld8y^O`6);%q+w-3!4AUh7GlbT23U&1 z)6Q&^WQDd{KxbWGL_K)4`H%}NzHry4AK-C;yWJw<1uGM9*QcO<0mv2D&TWQ;VFWx3 zOLB^fOAFA7UWQMgegQZPvDc@dm}M1YU^oC(!vyLDRHVcwf@iqFwH{QY3cMy8A_CGS zA;`esuoDzJptDRd;|p|J3#e`esfA!t@?Z-*zED?mf=to_*ULUGpgA(Id%$sunx3I* zoI$w(ryA&N#T{5lg3}zAD9{WW!W@t*5Ex>YizBH0j8jcX4tV+kloLRcW6X@8v;pFw zo8uD&>Z9Q_2jX`}P!AcWnv$Gim8hsFkQ#_xsP=$t)B~w;bOcWW;Zg%q2P((ZrC|AD zrXm9aX1^L#j=h2B3o)GKSRuR|1KpvH8ebs0K;;+*3#7+@ul*AY&pV)7Z86OOm1DVr zu>Ke3nav=(K;_sTBFZrxHCX!xRFk2lXK4Sc2%ZO%GxIW0Zw!FtivVy=0o6?)+fgwo z`C1&jD*#`T^az zgBpe)HK6pv=uyPf4Qvs?`pm@K5C*EP@D(Dj!i58&k?=vEQT_yWc0Ut3t5 z3I{VVpq}RdG7%J~{qQ(7!&xSLfR_oN+t)xkQ86gq9pLc}D$OyC0>%3yc)Wvdox)5T zpfX`Myi5R3G@)7qy7i8cf#D0Dv;oop>JzPimkFS8B-HSMrJt4XGQl}0BtEUc&;T_J zl?yU32<(E^o|w*Mh)*jhN-a(;fvbVHav>t1lmKcQfZT+@q?9BxxS?%qEVhG81jVwz zL|7~@hn{>2l0jflEFblRffR8WW2xu6joRR69ObtkY;S@*&mM_2}*993EmY|3{6l7p{up63l!D>L~_s@Z=fz|j9V3R>90d(gU zsB8u+1{0*D1h~nJpt=^U9ZtYXY!P`_zW4^0LuPtY74Q7K<%Q0_Q zUS5S+xIlZO%$=~_s1w#5YM>OgfIx{2+Wm0@zLo}a4L-<0pi=#60IW<1!fF>N)$s|z zT6&;SP>@bk3@SG~h)8uI@Kgs|VSq3Pmg>I4Q(Z+#MG5vEYr;NI+5p8nLO+Z}O1!Ut zr6?>lHOM?roSHeZL3^yAdoM7f3>2pY{;)X3T|R?ueS(w#xLa20A+Wf>-D6F`6V9+O z6l8<-`jd-F;xiKSQgToZ+2j#oV1R@n_Ldbae?ioM!g(F^JScso2_fbQ5t zax9by$`=iI;tQk<)Y|z1&ljMRps?4c#_%{T$tf<$K%N)@8N;9^#K0hM0F*Cqk3zT$ zF)-|a#RXVbm=FWQ1{9H0AqIv9s5uaqGz&2>Y(Y^o9c0%*h+PmhJA@b*7QjVd=?CH- zQ2NPXVqgH>I|a5BOpua(;4TE;_663CLV)sV!ZcVu-Z%X?wzM+|Ek1C_l$h$wqOH~m5O9D(vXk|j_ksO-HJ2Fve|tEHh*a0*oR-h`*I ziEwdb1}KfqAtH_WXuxWG(4C&3{wu;1Sh?YfoW^pKQHHExaoTVQ6z`xoMd*jIFyj=p zWdTwLn?bk$OHo)unE`y3Y2I#FoZ>Efj|Icx6nEJx!3rDk0L2BSg`l|TkATI69mts& z7!=Ms@Psog48!4J2r}Xx3_*K}G2;W2 zFFp_vhM?1AA!R1+FgyznL+txgKw)@=h%l^yhhaf#acVNsTsy>n4?$%VI340H>;8aB zB&Zrl=m-ciFdRS;Q2=#_4};P(Y^=acn1Nveibx1Z%@JfZxxx$#1}Gwp!VC-xP(&sP zGca605!oQjzz}d0W)5abC}&1L^9q)mh)D@oh{#QBdtoWTKN9`yYf!j?Qi4R5!g3`m z&emy`FsyYNi)jdS%;5u`R0q-os)aK&VI?H!reM&FG)M-5VYwT0Cm>|Zs<;rPcw}H; zhzAKVFfbS#gT^vuK?Co@LezjtQPAzmXr(c9tclWihxJ@|;5YkVj`M?j2P!2(#n_>( zTzzJ2H;;hQ#>y~Q+K9s9GsqdgpxLgUkS7P>BQ@e+ISdvCRR2)PT~)A1zqgfW-<(27+N} zV+Xv{0wshrl))%)+DKzyC^$|yZ9vq3(grBhX`41=h)5ePlCZP^y7drq%mw61<_N-R zLwyn~ZD4Q7fYL?>5osfU1GYm1ciMPGMB2DZMB4CBgZ26`*DQfzACxvMv24c zPI0%aR>0#66c?Cz5R^}M#lrF_=(cQBdq6x;9!$X#&anLT3?7E@#U+WTjRLR;0|Nsj z4Dt7BA!%3dBI5lGJl;X`1=!==06E@KvnT^7-a$8h7n~-XPa$eR@eUdVMD-W7 z^Qn~~Z0Q92Yt9nRz9tMR|!idax7v9)tS1c;W)&9#ES9s|^dEN}RKk&*9;N+Ghfp z0m7iPs+0)xJLo(;RKLU9KVbKO;vF-sQZwE`@destjH_IQ)jLV>FifpLU-T89S^+*_ z@BrA&*vql_WYCHx$UUi`SYl>~Pc{Sv2>3)KhzQK@5OY9&zsCqEslf`t1kCTCIUKMq z(9!E)83aL0-2^M^EZ}7wsLh5j1I7ZydzlU_-VIpLPd5dr1Lcd~@OZC6jZlyRXjvBu zFY7?-{h$&^6eund2;?2mSOMrZFG#xuyPH92tQDTdzGJ;<2vi<=z{^A2{lO1JJ z9t5?cK(T`G6fFHz!P8G#Za&gJ29U~lkPrg{!-BJf%R`77P};!kd%@BMC^3Rufp4^s zn0~=B16aJ@V!%}%md3-%!*GySFfgdS`Wqha>KO7M0Z_a*5QukBoYo}4$_>yOGt6WL zDl>W13HQ;az~c*dyJZqee4$og;P^^oU^qZTd_mOEC%zgCVez#CXZ>{s9$%n(2Ne3K z7!+ShQ(`_C>Ay1uJ_4;AJnU?goV#Dh8Fk7RInRZ3W#CfvSLk z0lY@qCjpiRv7a^%ic?p3oZ7HMRHGUNiqiuG@*t?}JpmtY0hM*AW`KC0c=t_)<(HX#-Xxf?NT?u(J0IJZ%(b=AoyJ;>2OB=ZRAZ$sH*k)$L-3Mu$1IzE2Z7opPfYJu&-f=?t-8c;v@3{LQ zCGdF1ZWpLbNFXBKb#!6vUfg|y`XCR8hK*g@+IBK1fVDEUn`1gD`;I1B!Rdv`VeI0OT)F z{!(Da-N%Q8p%4dbETtg79PRA9_;^q)m&srNb~E-q2&{hrQ3LXq5yp5FwfqGu$2#EU z81}Y0C{AC%<| zC>?^@^B|WZFtySl$V5=QClHapKzoxRVVIMG-ph{%3o$Spz!Qcre?ioM{MClh?xm)` zKzV05Jib8ZwqUMU1;v*oJib7EVNi&mVo>|=(>z!k0QDYhm`YF>HsA?EkUCJlSPYN% zbr^mJsR7mRTZl;WH{fX=w2~KlowA1$RvzZ$r=z9${5;S(YYYqlH$iD0G_#YFnG3q4 ziXj3n5)anKz>okI!Cq#9+zbk5b}z#D!XS-sz6i{MP4$RHWjP98E9l9QX8tn~G zoPy3p$5kG}((?>(_<;J=7^xS2P6d2CfdP7Ikof}GSvoKgQ_#uVpxqnHFcFgo=$so| z#B32aD6YVEm84dH_7p83%l0`Kw%1;ssPvoLI5L6+?^Fl+~{GDWe= z1hlRnMZ|0ZhV2{3vV97M?N>1T4!V&L)ppPhP^btr4BK@uY&XHM{Q+6F7hu@F0mF6;4BNFZY=1$P?Kv2>gU$#-N#Q1- z`!rBQ%oH$e|3H@Q85p*&!0xmF;n=2T$8<1tY2Zrq(7`B5JuAsz)*%=JmEy%Ln1;h3h z4BJ8X+oRfk1jBX*vTS$2upP9U62&f)AB^z)1!-@X?ZU9#gDl%^Fl?{E@cS1G+c#j? z9zd4u78tfyVA%cv!}etuwnva+FEDJMgkgII zS+?t7*q(!7`x6Y?J1}f7Aj@_Q4BIm>YzN)zijoV=8Zd0HAj@_Y4BJyMY`=ry_X-T# z8_2R<0mF9C-gXq9nt<+jM-eeAz_7i8EZb!;Y>&b4`xOkoXJFVqfh^l4Fl-0iXo=!e zlM5KO$6?q$gDl%cFl-OO@cS7I+ruzyUqF`apz~Exd}UqP1bJQ#lW z!La=ZhV3pGwr?QIb`A{NJuqws-5!n-K4w-Jw(lUzcF;+xC?=b_VA#F~!|w(dwjUtN zb_NW;gH9tsagPaTbpwisnFfaKC&;q>4?kMV!PExB?^`hZE=MKXe_+^dfnoaw4BN#p zY`;L3-@jnkZh~Pu=$=N@kmsY4?H@2~2dy@X0-+zrSaEhJr#c{eW+ z1_lL~IUpqr`A8y&`wJj;f#y9y>trB$!OB5rr(?`pfz~ylsYxmZ?+1aq2hT|?74Z2u z89&GlK$uMs8Z__e0-uj#L$wH^gaI_~89yI3?+H2u3sV_rjtq2DFs?Z=kWrv{&n@tI zy=>9~&Cq=D z4UgYpbDDJYmq`q491=@I##vP}o3`FGj zEwFY1p4*7{d13iIxiTHJom@A$s3bKHzQbg-2m=G8ti#?0plA4iYL5eO_kijYP(6sc zHVmZZoCpKM40!nis^2ixfa=OO@VZhCqzwhb`~?$4%qoIv8E|a{pH+n4i33}gVx9rZ zaWE0n9#}qwiI}h;@(y&Cp^6W^KS-YKDHyhcPC@|Z6u9l6+cQx_%(AFtdjf{-Ef{|P z11s5J?lB9ZlI<}Vwl`qd{sY5yCo0(d>@7k?mhF zZ1=#h9dr&5)Gnys4XEVz4;Z$)VA#F~!|y6ovi%K)?V$SyQG9B$1H*PHD%t)5!*&}C zzi+{?or_AgKf$ow0>gIDIc+GRVfGDCCQy{>9$?sRf?@j_48OmklI?deYzN&mh2m3_ z6&SW(p_1)4Fl^Vs@H^;CQxx}@?V^(HS1@cxy1yHeyG=l61)gJJs@48McU|3-0-855Ok-+^H}=&no@ zyG$}L{Qd-EH8^?g`7Ic>zrpZ(3Wn`xsAT&F4BL_JZHK0L&>lgQ&@cm?#t#+2S<(`- z4u1lM?H4fo?t$U=DkA(&jO{%bwx7YU-37z;0xH?wfMGl6eg|l%LPOpH!}c&L*?s{w zN(?JoOa(Cf-T@nthN&@|hL}yp8Sn6UJ@`l|d=?L8j=2m*Neepd8P)FxF#MiIL_dxg z+d+3CqS$5Xf>FzW&Rj%MV-`du+eI+^?to$Y4h+A$P|0=y4BKrmY~O-myAhRa=fSYu z0>kzV7`7`=$#xD5+f6WRUxQ)00F`WK!LS{49zIGMGg*OQI}?>`XTY#s2gC16Fl_%q zL=8(!j{AdA)@fkaz5v7a7gVzS2Zrq`7`D&Bu>BU5Z2y8`y8?#oGcasFM4BK-sY`3D4?MpCh2i@_F z63!+W7`AIr$@T>pw!gvfdkTi_JXErM4uBtg;n4$P>h~EKwm-qJJqE+} zS5&fn3Wn_uFl>*&u>BF0Y@dK(`yCA1LojSVLM7XKFl@hpVS50E?c1nidk2Q?S1@e% z!LWT1m27Xpu>Ast?H(AmPok3T4H&kc!LS{4>KID-W7b9`+iNgvKY?Mp1BTzTsAPKu zhV4f%Y`4L%9dzpoG&Cq0Jt)Dj{Q!pT78tg>P|5EF7`E@hupM?IH)0n*XtfwM{GNkh z`wk4-4KVyJLnXgwVA#F|!*bL|9+t*;& zu7Y9vH7eO2gJJs$4BHhjY(GLJ+aoY+UxHyf=uSw~c;7@N+e0vHUw~n|1cu+|P|5ZH z4BO{m*e-%$dk2+l_rb7z28Qhd7`9hX$#xG6+oxdI&Vyll7L{yw!LWS-hV2{}wuey3 zb_WdGdoXNg!LZ$qO19fz*xrF*I|GL8T2!*#0>kze4BP);tbCB6lIw)%H(BthXViC#8d7dj*E=A2325bj~)^JruR9G%##0!La=e zhV3V)VxA}i11#hr=4^(l0r5bXf#DET1mb3pu8X1!3=5#U zejsWdh%zw1_P#MO#K*^1WX2~lfX+Au-Ju6j^GlS00oG?^Vu(*GN(G(!3pr~D=0aXE z1_s#pAw-uN^gwQe?dD<(46v0d5H(?93=FW-03af%AalTb?Lj8T7nc+z=N2$PPE7=f zfP7JoVe(`#1_szEA`o*HVW`<4#=rn;4MNl$!%*`8L*ze(h=4c)!vp9}TZlO_;tUM1 zkz0s}u{Z+*Y8iMF55@%q5jlDxedc;BgMNWsaF+^60 zGcdsREI<$^~f#DfQ1bXr@MAr{-1_oF;1`*+d9?g!3 zK`99a2G~d`M2)@#0|RX36+|Rjf`I|n&jqEZ)S{xidpw;oKGJ~Fff3|e-J+X1=1pb9P+}F3=FWfMi6t1B^elCXP7`l93?^VrGQj!L`yP& zLmgpqxg-OF3;vc2-KmZ6SFAJx18i;!qNWhTu2yLV2H1(d z5H*uA)XbA+V1S)`3-UYYYF-8g$VpHzzpus6bwHYd0d_Vx#N=}rY92{5Ff=G4mlE$W z)PSzS`+?$jZct)I2{9=d1_sy;BZyrV7;3yRL{gw4kPwS6$uBJ^NG$@z03_9cSVd4Z z2$60X1_sz_D2QDPWspk}kgg*bx~_s;2yM4ObiI*bV90^4`hbYA%7XMlM#CT?vLF$Z zGQm`qfk6VLTy+AeK?x0i43T(Q1_s!EPl(BNvJ4ChCO}FGh{$AF1_oFk79z4vmVp5_ zD-97j0n#Ok9AB4Z85m&a8Zj}%=Oh-Fq!kqZL5Z)2vXIj_5IOg~ECU1VOkIe{e^A^U zpIDL)y2l4{Ryiz<3CJ-pz{a&8x-_6$gb}f0CC9)3x~~ReSG<2|iI1yG@q#JHKJ}4f zV1TVOfS8kvVorQ{axth4068TdW_t<9cIYfQL{}?{E>PSpl|$GAQL|l+fdO`(JVfNG z90LRFbW>1G4XJn_Cl$l&dLqZb09%Ox(e)X_E^c`S2G}}Sh#EtA1_oG993tW+j~p5x z7e>i5Fu-oUhNwxCXJCMx@e9h`DLFau@gSv0bxMgm0|V?lSct9$c?Jep&le&xOP+xN z)+d69Y?KEZ12rc;t-L6+B$WYjRwu}(pte?CazQ2JY;ceWNc}MsT_BOm@(c{H*%OG# z-!Rm0DKIb`Kq*N?L6tH}zEA~=I6&P4GT8(yf?Vr4fJAr@vB<#SrNF=dTZaa*JyC&y z0oDtEh!iU@Fu=|dgoxCG%t6VyQ$Zqd_kdD3=nfUgJqR$rFF;WPa^VIA1_lCVL`wAR zVB2AR&#Oud3^FMGdIEAGJk5j5`K-ji@B^ITOGs$)m9}%CHXlFkee)Ews(SThxaey-BU|k zoE<=s11&c|<$OwM0R!a58JMowDhv#;U1K2A85q{6FfhQ*`G<(?Qej|#otFX;xu(Lv z0NZl}5qS;r7fL$(rNY1fn+pJiSW#+X3IhY=tYDb!;;NuG5KuvsC9ny(mYIG|VIL2?1e zJxXc}46w5rAiA6|)C6FNM5{3{z|K;J=*qxQQ;#7sO^ty8cHS36*Ge@82G}{|pj4NU zU!GP_3~EOq((`sT1_s!j6cAlU)gbLm5D$bI8191XVnU8((9O>v{~>(Jpw7SmI|~=0 zi(j1q+|xw#D?#_!!p;zYsIgUNV1Ui+Gcm*$rGldwa_a#smZQ}f7+~j_Lv&@TGcdqz zEP{xXszZ9&%+Qj8fuTvAfdO{Q2}I3Abp{5|@F1exSfCEcwGdy#gBq-$42DwDZdGSs zfSoM{G3Pw=qGpILP$=A2XJCM>ih-#4grSBJ)aizs93Kzr_cAa*PU406R6v7)0d`XZ z#2k4PT_C$$G#D6QdleySqBR&8V7pd9X+FLpIlcO|S3|);FBGWV( z7+@#WKjH zpcV+CY{}JP0H;HcJP0!|RBJIX!0ugwh;)MOLbiP&hRAv?Nbe6(lAO|FU;ypTL)i61 zi-7@l5;zk>d}305Q3(SB{((eL>TYgrNQi-42f_>tD%y~7euOR) zZS)Xx(Pm(Pt&@T1O2tr9tPSZiBFw4PW?+Dv3=DH&r#1rvY_AZ+oJHCU3=gD{Q{4t_ z1_sz^^AI(AwHX*-XS6~@E`dx&Nn<~t?g7bzFav{-4g-S$w7i6fXoI@^@G=VIM@Jn7 z@Te@blmPW6$`}|#P+Eh2It&aCx*;Vg#GFVBb4ozwz{?Gg$!$6i9gxx()LPDruL6(v zLPd)6OF=`)4k)oR4a4NsIt&b;+u0zY3M!HEl5-0nH&wwx^)QOA__UJL9MFxQ@b)vv zJr_{bWR&FR6(hI4Kx*FVFfhPwSb+HSrw#)HY#l5_L{1mEGzRI?*JWT>&=2t~M2)R3 zNE|uM`|2_&DPEQj99y(YopV33^v4Y%x z4`dfgdj6@$zyLeJ8)7oMK1d~UTu5MunCLSwz|O#d=yJzU6R*#}0Nd>aQB$PPzyMpJ z4H0S7XJCNcHV6@!sLufIA%b|ITCb!iCpC`&a?=^iUvn_*T7@C9Q=fqWc0x7CECz=2 z`V0(rP};q(^cfgnw+%wneA8!O=s;1!XTZP!TYbdD5D%VnWnh5Z69IFNmH`6;?DR8; zIS!y=1SOpPL26KH{5%85ECWaf2s1D=8Za=xPM87t9TdL|3K?z zasZ@k0jU=^WMF`uxd$;v*N}k$c2W&Q#MzL6;eafx#Evfp&mmSELGf3hA$nRZHe_Ic zojC(Br`M2y;f^e%-eqElFDwSvXpmd6KrRHiXPF@b18g-o6GMD(PHJiada1Ps#it-$ zCqZuJKrWH)7&0)x&R2)n{>2a?4=wrqU3@Z&OBfcQ^s@h>m<%d=i%W_aAU7n!T*z$% zsZSxLI>>fuBL)W89&m_VT1E^Eu)823A~r@043PUhVdl6Qf%GEh({LjO2H1Wph^_(* zHMK?z46t=g5H+)n7#Lvp6G22)8Zj`yc1kia>@#9u&`U{8Dou}1EK1BvPc4RVGxO5& zVeG`Dq@vU^7%wL?FBQg4D@x3Tb3nlXH4M~yg)*VW#>dBl&Ll05&&(@J%*jj%NCasu zNiFh7%uC5hEnbTLk1xqh z%*=BR3JC@YmKHF?XCxNKCnuNW7cs<#XXg2$$)c&&a}EkoiEwswWPq?dK`cmMfGvP} z0L}OL$uQ5Og&5SMP+iEO1P+)Y(6Q$#RaI3m?U1mGkB?7JPL3~1P0uVYNiB*;5lu-& z7x#A$1t)ukcz<{I)Dp*};{2S_lGKpQ+*F46oPsnxGXp~dBdDxfW)4)w-`%+=HL)Z$ zBm+FI5%2Hrm7kf1;5jGeC8y>f@xiKnOG{EKKxX;mCuhSsq2O6eIM*dLC$%IM&V|?$ zoSK^m(&(OA0%7`<1eT^2Rf0GL8Tm!2Aa|Nrf|P*F1_^`M5Tju{h{+J1v!9z|a7kiG zs$XeN4nsVg8=jfR5bv2+l3J9Pm;*^lL8--=RiMx)c1ldncFHWtO)OxDcLw#0K-wS% zc;;o6Ab4;|uyG!ael9+)zMjqwMg|P=5MHpSpEsBb(+F1S?B@oG1((d+)V$)%{Jdhw zWLAZqnURI5DTGrA=9q!q>>gT>l30=&3@#+YGfOgHuFEM#u);I*Qu50^T$~|VLQ)fp zT=L8FAiUtz5>Pq^S?rvj14`#0W=LXkc5rHXZfaf$L>WjRC^fkxF)uwQ6(Z!ElbTrM z2Fi2{@j1m{o>Nh2aRx*dq#+k{aW90z z%)EGz(#(?5lvIXzh$lg{J(THGT2hh^O%eWxUr6c;3dLa;b9uOu-El)%xA1trjQP*O_C&r40q zEGjN3D$RrBN2m>^1_tKXZ3xcJEGVdChz~B$$V|@2PcBI;O9i`%AwD=IKfWX*vp60i z$`Bu%n4Dai3*|z55sYvZIJ3IAg&_GC>M*z+sP2Ol4^EkR#cugUxOEYw3>;PgrNtQ* zPMIZW*5U{*n5&W!le0?;K;F?aH8eCv4L3tWQ-*k#)a3l!g8brCkIdqd{Pd#4T!wh( z#GGUh*Rg~l-YqkyB(=ybKPM$M1>_y4octt)c#q()l6()>2!?pS{E}3c%;J(_=ltA) z#3E2kIcI>{AAWA|h5;z6gR3EsVz4AKQQAhiVK5ckv) zIM0nCz5v#oDP{o8Wx%C8QMtjOQQwl%qP!${gVY8(dP9 znU~HG@0gO}oS2gXiW!D@m(tt6urYT2unk3sRF4TAUhClnE|hgHluSLCS(a@d3&r#Tj7DL8-aVm2_peR2#GY?#4 z!pcsFZX^kp%;JKa#7f7aqC})}990ye$tN=}HL(cYAuv&>j(|+0avxa?%JxewDbFv; zMwo&w?wwlckyucWnwOfw5bu$npY5Gm=~@Q%Lug(G3O^WB*?{Fxb%4b^^T09;@ep08 zVnM0N`9&$IMFBab>7eFSa7lgvL=2o119B28LFo``0z?MN0XM`UB4D+?2=~Fl7$S=> z9aiU*FvLTm3KE{6Qp4B?oFhsLP|Hw|FhnU#5vZ68232yYsB&)kMJ{e3ATjh34RShs4WB&3r;P{Ow92s%}q)zf)yk%Ip4&* z(zL|nlF}kfIY=%nLD3SNTH=Q9vFD11iH3dZ-s9Y>cEl4aXPEB!1EJ=i_ zb}LFv4Zsi&0J+>bv7i{LDmb;ouQV6j{(!ePL0(PGE6oL$WDMYd0*4q(4BR>aDFV%_ z#up@(WIz;wxDZx3cnJ|$C#d%mUy_-dnh$E>fOLUGAj&}PxV-$lB+y(HIPrp{i$OC* zX%LUc7o`?}MkT-|rKgs}V-ttWz`&K{A_X&O$N+9INPhviv@5|7F9ye3d>%OBFl0eB zVMS^Ria0bW`MA3HmzKb~anQoU!_&nvz!RfPfeAx;<@tG#6c-<#k{_R*lb@8B6Q5F& z4{Gou3xT@U#SHPemGL>r`FUmFM9B~zUz}Q!Sd?A{T9{v)np|3xSyBm>icikZ&&~u5 z5G0l)s({o%CGm^LgBlk(sgUkWJT%zj(~Hv*GjmFdQW@gigX3K*l2Z#nO;bpD0v2=5 z&jan0LK19HOsUL^FUcte`_IA92w4b}r=UV5IYp`IpdbLrLjtKNF|#-| zJ~y!>BekfAA-=dIv^cfMH?btc6~u)Na1^JOloqEJ!IdF2I0uJ^ID6=sGQ`KH6%?g{ zmKepyr=%w5r=-RgKpe;rAD^0sCIAZnXe8$*7G=j5rzV3uA75US32g%BCRPMP1dAEs zOEOYHN$+T_@dOD{NzON2uXQjF*ug=%*+i<%o*b2)ALH>Q(@r> zEqIC?OyB`fl2HUQCq6s15*&ENdIgC^C3*%Z3X+Q%;0oe%K*MP9@$vEHW+ssFACMV| zDJgIzXnMg80*RsOC<3=VFg3-8_ymI%OMr@UhJxbM(v*B%un%=XHtQub#K(t$Mw=2# zQay7M(^H)ii&GJf#*ku&j|Vk016-jYiOzSb1oc5d&VwWf@bCsWBHZ$e98*$2-63qU z&iSRFo(rnst`(^u_kjvbSGeOC;^RGw{qpl*@#>l9Tv}9=npXl=fiN3X`o(AFg32RM zEm4$MR2dJt%MBFc@wvtEWr%ibe0*|#aSo&h37Tb&kB=|T%tID{cm`A=K?mm$%~@C~ z0Hu!964>A!HhG94ph6U%A^7ES>IB6kyxs&4k;Q|GA_nl?K6>CW!O{W-J&;(jo|&ns zF({AaWF{FKfkFqABMTA>GUF5DGeLpG5Feb8Uk({(aj;;B56dhnDNW1?D9SHMO)dd< z_v7P(Lj6KKeO==Nf?Y#h{NsaMef*u{eLRCh;^P_OK|voMU!GW&>R(zC4ys=urAB6M zL3})92n^h_DalOANd+%#ijN149DrN{aTBPBFgA)$WQYe3j0L0?rR5jpf_ll|#F7fh zcM$VHLsyVy5;!x01`^}Jeg-)ORI~bICV^4_ST^1z#6Jk(P6LB0Td#^9sN%j8u=*#FW$` zaEt_}mf*7s5>?>AOGmK!u*_o6SgLDY3M`VL!2ymXuo6hXVRIHDJY2v{IZ&^=C@nEL z)g`qgF*C=}!3b2Ag2M)4F(e7PRyaDCSipP%ZbE~+>YHDd3Q>Th4`i)>X-N>M@&GA{ z2iIiq#1J2!mspZnmI_H8r3H|MH}Rl>vCPCAP(u}*x?p~TxB?{X=wM_4>cWGDfj#rV zCWGA>l2h!SS^{p>A_UR>83Z1@E~*SD$}dPQDyf7R1_>vq)tObP&Y+>XV7?f|~L8HX+`Dq~Ile0lhj@--=umsrSP(QlnmFB`CGc6w}{^KEw z?LcK|RVu<5P_156mI^i}H!&-}D89HfskpMZBsDj_EVT$UNDP*XPcABnugC#eUW8<; zduoY)S!z)ZsE?Ntlv-Sx11XN6(GDKV1O;4tUTS%6K4?4-63QTX&pd=Q*b9(oNi70r zPDijdh_#vM*2X917N#-H-h&p#JlC^l{jZ47D4(3Y57ITsqy6*pf&!Wz5q(DhG>I$%^ln`0F^MH z{0@-;XG!b@XGl?EUU5!hNvdyZadBdLD#-I#y?`TkW77|*;6N?JoRZ>{qWqG0ueE#1)^CU!IwhlAKrsFF?T611OJy=MUUdOMLTFN^?>n1v(^Jz|mD)0ve`dh~Sr(;#INsG|!>4bU8er8Y<^ zhGt?=(g($-e`yJ(kr1yyI`$B=L9vFfB6jt20htJiSV*r2$>|Vb@W2Gbfr!etJTosh z7ttC(OStJNnb33#DwYV6O?m_*!#FFF;sAb?J1RH08>yL+QXoWPo;|r2O=@y=# zAXyO-K*9MrnJM6zAaHQQEC<;NZP9}AHmH?al%I?w0xc&B(905#!*eoI^GZPTPav%j zYmnmsYzL@kU6K!uFKEhvjvXS3ThJst$Wfpvjd;k!Y*Jz|Xs9vX*VE5EJl@kUIKxqnMyDV$kibJ~pnxJYzbHPx z7`ZwD6~vy&`FW6H7#zIlg`-?2xTye5c8Te! z@kxor;EK(&7?C}p#YY4zlmk*zv*GCyG<^#72B=}1gWRxy4mZI1v57gE>3N_IKPW>N z=O<^UmVk>Vkk6p4TW~rD*$1j5pp&1_*aF2ZxWxsj^02o=K&@P;QJ^q@I4ljk`V<-^ zu+5y{a@4=H1Y4y8i4cs!2GkRTEJEX3os1Kh2FH9A1@pye8g-~m*Kn?OO~ zUs?jMq4G;hQlK-&@y;ln9%%WTl$s72zXs_;3PR8@R7redK|y>;WdYn-&;umu>>1whw}fr1z6R776}9Fj<70mKy0SsNKe z4DkqOWv3S9rRIRDY`Dw7TERoHQ2n5e7g{0#s{z$kDAlZI3aG?`L=`BDBKKv2Q*%<2 zOAzq`Nf3yX6p&wB5?GoEYoUQtHK^V#NiE7{h{slKL%bA{T9liamspYts&qkBJt#g< zdO+X>EfB@f(iPssz+2Emw4j$ZSPCm>L5f`Mp>%g32?JXXJ3JV)+M=kWv;b7uBh~5< zyVD>8>^M?5j^KxAjR$qzV8Z|qA?SuvXn74v3b_Rg@wk>s#Di`Hk4LFmFq)U(R1jYZ zUem;YK1h>WTn0*&iLmqy2?clo1aXs3YGN6-&MibX7qV>w>f*!_&}1d759AA4m;_M< zZsUVi9l%DB3qT2nAwC|`iA1gL5lJ8BKv=?umOJ3~0wno?2Bc7$s1QHEyNX~2q%VTd zPz2eT1nw`C7Jx^1piKtQG8F718khw-sQ!cJX4HWuP{{#qJwtpS4<7bS%>&IKfFr~` z6>ISXsul2!K|)N!+Qq_5OOSv7k02m?4jnK-8$<)UDGjy|09$rV%}q*8Nl8rsEt&we z-hyGPRE&+B{6TX~uAq>^GSUH!G1Qs@;t!AmakN5mQ*$A+2N0KmOFCF01&1Z1$U$T; zNP`7ZxWPw0z}*_;5erBY7BnH12pN?KOU+BkFYPEG!AqY~b4n7y zE9XG%V^F3*tp*?-0Trs?aUPH&$6`?30b+rZ7D~GgAhhuV zcPqGo5sWK1z+Oe}ML=S%Ah`fq>LJoCtVT3o0CjxQLCc3TOL9tzi%aui!!Ic9Bj{)c z_TffIM1f|HVF5{Cco?DqX+Q=!n}b$CftJ2P+XJ8$2H0cZ(MXSo-K6Eq)%+=&YZ zO(TGk4N^Zd2sF+MZtjEAQBFQ+U^_l7Covr|h6%P1-vBqn2cXD>H1|MtG(-%xs~@zk z2~@@-SN&Leys*L#ZL9>*_Cjuv!G``|)e^);$WA2C0AogWaY=T3E~pCw_5o<+DQLko zxS0%5j6V7e$~B0L4@$PVpve=Ii7wk|>&(2hQ&BMx>sp0ofNH9#3C2Wx?PHUQRZ zhZqm>9U|Am3q4~aCk7&hDO9_yeB;0G`-}7WB}j0=#jDk^&(` zC`cb@t^?9z1$zRVL_m{&hy@8C8%m2o>xhuU9Xg;_0_!Y7+zHzz4s`=^enTW$P>Mkr f^MmNcGDr-v5G|+UY8gSyfF1w@wH}m{5Hk({tV;d0 delta 25588 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 Charles Lohr under the ColorChord License. +#if defined(WIN32) || defined(USE_WINDOWS) +#include +#include +#endif + #include #include "color.h" #include #include -#include "sound.h" #include "os_generic.h" -#include "DrawFunctions.h" #include "dft.h" #include "filter.h" #include "decompose.h" @@ -18,6 +21,19 @@ #include "hook.h" #include "configs.h" + +#define CNFG_IMPLEMENTATION +#include "CNFG.h" + +#define CNFA_IMPLEMENTATION +#include "CNFA.h" + + + +//Sound driver. +struct CNFADriver * sd; + + #ifdef ANDROID #include #include @@ -25,7 +41,6 @@ #include #include #include - static int pfd[2]; static pthread_t loggingThread; static const char *LOG_TAG = "colorchord"; @@ -45,28 +60,28 @@ static void *loggingFunction(void*v) { return 0; } - #endif - -struct SoundDriver * sd; + + #if defined(WIN32) || defined(USE_WINDOWS) -#include -#include #define ESCAPE_KEY 0x1B -void WindowsTerm() +void HandleDestroy() { - CloseSound( sd ); + CNFAClose( sd ); } + #else #define ESCAPE_KEY 65307 #endif + + float DeltaFrameTime = 0; double Now = 0; @@ -124,10 +139,10 @@ void HandleMotion( int x, int y, int mask ) { } -void SoundCB( float * out, float * in, int samplesr, int * samplesp, struct SoundDriver * sd ) +void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int samplesp ) { int channelin = sd->channelsRec; -// int channelout = sd->channelsPlay; + int channelout = sd->channelsPlay; //*samplesp = 0; // int process_channels = (MAX_CHANNELS < channelin)?MAX_CHANNELS:channelin; @@ -136,60 +151,61 @@ void SoundCB( float * out, float * in, int samplesr, int * samplesp, struct Soun int i; int j; - for( i = 0; i < samplesr; i++ ) + if( in ) { - if( out ) + for( i = 0; i < samplesr; i++ ) { - for( j = 0; j < channelin; j++ ) + if( sample_channel < 0 ) { - out[i*channelin+j] = 0; - } - } + float fo = 0; + for( j = 0; j < channelin; j++ ) + { + float f = in[i*channelin+j] / 32767.; + if( f >= -1 && f <= 1 ) + { + fo += f; + } + else + { + fo += (f>0)?1:-1; + // printf( "Sound fault A %d/%d %d/%d %f\n", j, channelin, i, samplesr, f ); + } + } - if( sample_channel < 0 ) - { - float fo = 0; - for( j = 0; j < channelin; j++ ) + fo /= channelin; + sound[soundhead] = fo*in_amplitude; + soundhead = (soundhead+1)%SOUNDCBSIZE; + } + else { - float f = in[i*channelin+j]; - if( f >= -1 && f <= 1 ) - { - fo += f; - } - else - { - fo += (f>0)?1:-1; -// printf( "Sound fault A %d/%d %d/%d %f\n", j, channelin, i, samplesr, f ); + float f = in[i*channelin+sample_channel] / 32767.; + + if( f > 1 || f < -1 ) + { + f = (f>0)?1:-1; } + + + //printf( "Sound fault B %d/%d\n", i, samplesr ); + sound[soundhead] = f*in_amplitude; + soundhead = (soundhead+1)%SOUNDCBSIZE; + } - - fo /= channelin; - sound[soundhead] = fo*in_amplitude; - soundhead = (soundhead+1)%SOUNDCBSIZE; - } - else - { - float f = in[i*channelin+sample_channel]; - - if( f > 1 || f < -1 ) - { - f = (f>0)?1:-1; - } - - - //printf( "Sound fault B %d/%d\n", i, samplesr ); - sound[soundhead] = f*in_amplitude; - soundhead = (soundhead+1)%SOUNDCBSIZE; - } + SoundEventHappened( samplesr, in, 0, channelin ); } - SoundEventHappened( samplesr, in, 0, channelin ); + if( out ) { + for( j = 0; j < samplesp * channelout; j++ ) + { + out[j] = 0; + } SoundEventHappened( samplesr, out, 1, sd->channelsPlay ); } - *samplesp = samplesr; + + } #ifdef ANDROID @@ -309,7 +325,9 @@ int main(int argc, char ** argv) //Initialize Sound - sd = InitSound( sound_source, &SoundCB ); + sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), + GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), + GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ) ); if( !sd ) { @@ -317,7 +335,7 @@ int main(int argc, char ** argv) return -1; } - nf = CreateNoteFinder( sd->spsRec ); + nf = CreateNoteFinder( sd->sps ); //Once everything was reinitialized, re-read the ini files. SetEnvValues( 1 ); diff --git a/colorchord2/rawdraw b/colorchord2/rawdraw index e5acb75..55fa52d 160000 --- a/colorchord2/rawdraw +++ b/colorchord2/rawdraw @@ -1 +1 @@ -Subproject commit e5acb751f337f3ae9e558e98907be8e3d6f8381f +Subproject commit 55fa52d1eb355baf1456aa55251e722500a32ab8 diff --git a/colorchord2/sound.c b/colorchord2/sound.c deleted file mode 100644 index 9f03707..0000000 --- a/colorchord2/sound.c +++ /dev/null @@ -1,108 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. - -#include "sound.h" -#include -#include -#include - -static SoundInitFn * SoundDrivers[MAX_SOUND_DRIVERS]; -static char * SoundDriverNames[MAX_SOUND_DRIVERS]; //XXX: There's a bug in my compiler, this should be 'static' -static int SoundDriverPriorities[MAX_SOUND_DRIVERS]; -/* -void CleanupSound() __attribute__((destructor)); -void CleanupSound() -{ - int i; - for( i = 0; i < MAX_SOUND_DRIVERS; i++ ) - { - if( SoundDriverNames[i] ) - { - free( SoundDriverNames[i] ); - } - } -} -*/ - -void RegSound( int priority, const char * name, SoundInitFn * fn ) -{ - int j; - - if( priority <= 0 ) - { - return; - } - - for( j = MAX_SOUND_DRIVERS-1; j >= 0; j-- ) - { - //Cruise along, find location to insert - if( j > 0 && ( !SoundDrivers[j-1] || SoundDriverPriorities[j-1] < priority ) ) - { - SoundDrivers[j] = SoundDrivers[j-1]; - SoundDriverNames[j] = SoundDriverNames[j-1]; - SoundDriverPriorities[j] = SoundDriverPriorities[j-1]; - } - else - { - SoundDrivers[j] = fn; - SoundDriverNames[j] = strdup( name ); - SoundDriverPriorities[j] = priority; - break; - } - } -} - -struct SoundDriver * InitSound( const char * driver_name, SoundCBType cb ) -{ - int i; - struct SoundDriver * ret = 0; - if( driver_name == 0 || strlen( driver_name ) == 0 ) - { - //Search for a driver. - for( i = 0; i < MAX_SOUND_DRIVERS; i++ ) - { - if( SoundDrivers[i] == 0 ) - { - return 0; - } - ret = SoundDrivers[i]( cb ); - if( ret ) - { - return ret; - } - } - } - else - { - printf( "Initializing sound. Recommended driver: %s\n", driver_name ); - for( i = 0; i < MAX_SOUND_DRIVERS; i++ ) - { - if( SoundDrivers[i] == 0 ) - { - return 0; - } - if( strcmp( SoundDriverNames[i], driver_name ) == 0 ) - { - return SoundDrivers[i]( cb ); - } - } - } - return 0; -} - -int SoundState( struct SoundDriver * soundobject ) -{ - if( soundobject ) - { - return soundobject->SoundStateFn( soundobject ); - } - return -1; -} - -void CloseSound( struct SoundDriver * soundobject ) -{ - if( soundobject ) - { - soundobject->CloseFn( soundobject ); - } -} - diff --git a/colorchord2/sound.h b/colorchord2/sound.h deleted file mode 100644 index 38a7f19..0000000 --- a/colorchord2/sound.h +++ /dev/null @@ -1,41 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. - -#ifndef _SOUND_H -#define _SOUND_H - -#define MAX_SOUND_DRIVERS 10 - -struct SoundDriver; - -typedef void(*SoundCBType)( float * out, float * in, int samplesr, int * samplesp, struct SoundDriver * sd ); -typedef void*(SoundInitFn)( SoundCBType cb ); - -struct SoundDriver -{ - void (*CloseFn)( void * object ); - int (*SoundStateFn)( struct SoundDriver * object ); - SoundCBType callback; - int channelsPlay; - int spsPlay; - int channelsRec; - int spsRec; - - //More fields may exist on a per-sound-driver basis -}; - -//Accepts: -// samplerate=44100;channels=2;devplay=default;devrecord=default;record=1;play=1;minavailcount=4096;stopthresh=1024;startthresh=4096;buffer=1024 -// buffer is in samples -//If DriverName = 0 or empty, will try to find best driver. -struct SoundDriver * InitSound( const char * driver_name, SoundCBType cb ); -int SoundState( struct SoundDriver * soundobject ); //returns 0 if okay, negative if faulted. -void CloseSound( struct SoundDriver * soundobject ); - -//Called by various sound drivers. Notice priority must be greater than 0. Priority of 0 or less will not register. -void RegSound( int priority, const char * name, SoundInitFn * fn ); - -#define REGISTER_SOUND( sounddriver, priority, name, function ) \ - void __attribute__((constructor)) REGISTER##sounddriver() { RegSound( priority, name, function ); } - -#endif - diff --git a/colorchord2/sound_alsa.c b/colorchord2/sound_alsa.c deleted file mode 100644 index 3771752..0000000 --- a/colorchord2/sound_alsa.c +++ /dev/null @@ -1,364 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. - -#include "sound.h" -#include "os_generic.h" -#include "parameters.h" -#include -#include - -#define BUFFERSETS 4 - -#define BLOCKING - -struct SoundDriverAlsa -{ - void (*CloseFn)( struct SoundDriverAlsa * object ); - int (*SoundStateFn)( struct SoundDriverAlsa * object ); - SoundCBType callback; - int channelsPlay; - int spsPlay; - int channelsRec; - int spsRec; - int alsa_fmt_s16le; - - snd_pcm_uframes_t buffer; - og_thread_t thread; - snd_pcm_t *playback_handle; - snd_pcm_t *record_handle; - - //More fields may exist on a per-sound-driver basis -}; - -static struct SoundDriverAlsa* InitASound( struct SoundDriverAlsa * r ); - -void CloseSoundAlsa( struct SoundDriverAlsa * r ); - -int SoundStateAlsa( struct SoundDriverAlsa * soundobject ) -{ - return ((soundobject->playback_handle)?1:0) | ((soundobject->record_handle)?2:0); -} - -void CloseSoundAlsa( struct SoundDriverAlsa * r ) -{ - if( r ) - { - if( r->playback_handle ) snd_pcm_close (r->playback_handle); - if( r->record_handle ) snd_pcm_close (r->record_handle); -#ifdef BLOCKING - OGUSleep(2000); - OGCancelThread( r->thread ); -#endif - free( r ); - } -} - - -static int SetHWParams( snd_pcm_t * handle, int * samplerate, int * channels, snd_pcm_uframes_t * buffer, struct SoundDriverAlsa * a ) -{ - int err; - snd_pcm_hw_params_t *hw_params; - if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) { - fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n", - snd_strerror (err)); - return -1; - } - - if ((err = snd_pcm_hw_params_any (handle, hw_params)) < 0) { - fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n", - snd_strerror (err)); - goto fail; - } - - if ((err = snd_pcm_hw_params_set_access (handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) { - fprintf (stderr, "cannot set access type (%s)\n", - snd_strerror (err)); - goto fail; - } - - if ((err = snd_pcm_hw_params_set_format (handle, hw_params, SND_PCM_FORMAT_FLOAT )) < 0) { - fprintf (stderr, "cannot set sample format (%s)\n", - snd_strerror (err)); - - printf( "Trying backup: S16LE.\n" ); - if ((err = snd_pcm_hw_params_set_format (handle, hw_params, SND_PCM_FORMAT_S16_LE )) < 0) { - fprintf (stderr, "cannot set sample format (%s)\n", - snd_strerror (err)); - goto fail; - } - - a->alsa_fmt_s16le = 1; - } - - if ((err = snd_pcm_hw_params_set_rate_near (handle, hw_params, (unsigned int*)samplerate, 0)) < 0) { - fprintf (stderr, "cannot set sample rate (%s)\n", - snd_strerror (err)); - goto fail; - } - - if ((err = snd_pcm_hw_params_set_channels (handle, hw_params, *channels)) < 0) { - fprintf (stderr, "cannot set channel count (%s)\n", - snd_strerror (err)); - goto fail; - } - - int dir = 0; - if( (err = snd_pcm_hw_params_set_period_size_near(handle, hw_params, buffer, &dir)) < 0 ) - { - fprintf( stderr, "cannot set period size. (%s)\n", - snd_strerror(err) ); - goto fail; - } - - - if ((err = snd_pcm_hw_params (handle, hw_params)) < 0) { - fprintf (stderr, "cannot set parameters (%s)\n", - snd_strerror (err)); - goto fail; - } - - snd_pcm_hw_params_free (hw_params); - return 0; -fail: - snd_pcm_hw_params_free (hw_params); - return -2; -} - - -static int SetSWParams( snd_pcm_t * handle, int isrec ) -{ - snd_pcm_sw_params_t *sw_params; - int err; - //Time for software parameters: - - if( !isrec ) - { - if ((err = snd_pcm_sw_params_malloc (&sw_params)) < 0) { - fprintf (stderr, "cannot allocate software parameters structure (%s)\n", - snd_strerror (err)); - goto failhard; - } - if ((err = snd_pcm_sw_params_current (handle, sw_params)) < 0) { - fprintf (stderr, "cannot initialize software parameters structure (%s) (%p)\n", - snd_strerror (err), handle); - goto fail; - } - if ((err = snd_pcm_sw_params_set_avail_min (handle, sw_params, GetParameterI( "minavailcount", 2048 ) )) < 0) { - fprintf (stderr, "cannot set minimum available count (%s)\n", - snd_strerror (err)); - goto fail; - } - if ((err = snd_pcm_sw_params_set_stop_threshold(handle, sw_params, GetParameterI( "stopthresh", 512 ))) < 0) { - fprintf (stderr, "cannot set minimum available count (%s)\n", - snd_strerror (err)); - goto fail; - } - if ((err = snd_pcm_sw_params_set_start_threshold(handle, sw_params, GetParameterI( "startthresh", 2048 ))) < 0) { - fprintf (stderr, "cannot set minimum available count (%s)\n", - snd_strerror (err)); - goto fail; - } - if ((err = snd_pcm_sw_params (handle, sw_params)) < 0) { - fprintf (stderr, "cannot set software parameters (%s)\n", - snd_strerror (err)); - goto fail; - } - - } - - - if ((err = snd_pcm_prepare (handle)) < 0) { - fprintf (stderr, "cannot prepare audio interface for use (%s)\n", - snd_strerror (err)); - goto fail; - } - - - return 0; -fail: - if( !isrec ) - { - snd_pcm_sw_params_free (sw_params); - } -failhard: - return -1; -} - -#ifdef BLOCKING -static void * SoundThread( void * v ) -{ - int i; - struct SoundDriverAlsa * a = (struct SoundDriverAlsa*)v; - float * bufr[BUFFERSETS]; - float * bufp[BUFFERSETS]; - - for(i = 0; i < BUFFERSETS; i++ ) - { - bufr[i] = malloc( a->buffer * sizeof(float) * a->channelsRec ); - bufp[i] = malloc( a->buffer * sizeof(float) * a->channelsPlay ); - } - - while( a->record_handle || a->playback_handle ) - { - int err; - - i = (i+1)%BUFFERSETS; - - if( a->record_handle ) - { - if( (err = snd_pcm_readi (a->record_handle, bufr[i], a->buffer)) != a->buffer) - { - fprintf (stderr, "read from audio interface failed (%s)\n", - snd_strerror (err)); - if( a->record_handle ) snd_pcm_close (a->record_handle); - a->record_handle = 0; - } - else - { - //has_rec = 1; - } - } - - if( a->alsa_fmt_s16le ) - { - //Hacky: Turns out data was s16le. - int16_t * dat = (int16_t*)bufr[i]; - float * dot = bufr[i]; - int i; - int len = a->buffer; - for( i = len-1; i >= 0; i-- ) - { - dot[i] = dat[i]/32768.0; - } - } - //Do our callback. - int playbacksamples = 0; - a->callback( bufp[i], bufr[i], a->buffer, &playbacksamples, (struct SoundDriver*)a ); - //playbacksamples *= sizeof(float) * a->channelsPlay; - - if( a->playback_handle ) - { - if ((err = snd_pcm_writei (a->playback_handle, bufp[i], playbacksamples)) != playbacksamples) - { - fprintf (stderr, "write to audio interface failed (%s)\n", - snd_strerror (err)); - if( a->playback_handle ) snd_pcm_close (a->playback_handle); - a->playback_handle = 0; - } - } - } - - //Fault happened, re-initialize? - InitASound( a ); - return 0; -} -#else - -//Handle callback - -static struct SoundDriverAlsa * reccb; -static int record_callback (snd_pcm_sframes_t nframes) -{ - int err; - -// printf ("playback callback called with %u frames\n", nframes); - - /* ... fill buf with data ... */ - - if ((err = snd_pcm_writei (playback_handle, buf, nframes)) < 0) { - fprintf (stderr, "write failed (%s)\n", snd_strerror (err)); - } - - return err; -} - -#endif - -static struct SoundDriverAlsa * InitASound( struct SoundDriverAlsa * r ) -{ - int err; - if( GetParameterI( "play", 0 ) ) - { - if ((err = snd_pcm_open (&r->playback_handle, GetParameterS( "devplay", "default" ), SND_PCM_STREAM_PLAYBACK, 0)) < 0) { - fprintf (stderr, "cannot open output audio device (%s)\n", - snd_strerror (err)); - goto fail; - } - } - - if( GetParameterI( "record", 1 ) ) - { - if ((err = snd_pcm_open (&r->record_handle, GetParameterS( "devrecord", "default" ), SND_PCM_STREAM_CAPTURE, 0)) < 0) { - fprintf (stderr, "cannot open input audio device (%s)\n", - snd_strerror (err)); - goto fail; - } - } - - - - if( r->playback_handle ) - { - if( SetHWParams( r->playback_handle, &r->spsPlay, &r->channelsPlay, &r->buffer, r ) < 0 ) - goto fail; - if( SetSWParams( r->playback_handle, 0 ) < 0 ) - goto fail; - } - - if( r->record_handle ) - { - if( SetHWParams( r->record_handle, &r->spsRec, &r->channelsRec, &r->buffer, r ) < 0 ) - goto fail; - if( SetSWParams( r->record_handle, 1 ) < 0 ) - goto fail; - } - - if( r->playback_handle && r->record_handle ) - { - snd_pcm_link ( r->playback_handle, r->record_handle ); - } - -#ifdef BLOCKING - r->thread = OGCreateThread( SoundThread, r ); -#else - reccb = r; - //handle interrupt -#endif - return r; - -fail: - if( r ) - { - if( r->playback_handle ) snd_pcm_close (r->playback_handle); - if( r->record_handle ) snd_pcm_close (r->record_handle); - free( r ); - } - return 0; -} - - - -void * InitSoundAlsa( SoundCBType cb ) -{ - struct SoundDriverAlsa * r = malloc( sizeof( struct SoundDriverAlsa ) ); - - r->CloseFn = CloseSoundAlsa; - r->SoundStateFn = SoundStateAlsa; - r->callback = cb; - - r->spsPlay = GetParameterI( "samplerate", 44100 ); - r->channelsPlay = GetParameterI( "channels", 2 ); - r->spsRec = r->spsPlay; - r->channelsRec = r->channelsPlay; - - r->playback_handle = 0; - r->record_handle = 0; - r->buffer = GetParameterI( "buffer", 1024 ); - - r->alsa_fmt_s16le = 0; - - - return InitASound(r); -} - -REGISTER_SOUND( AlsaSound, 10, "ALSA", InitSoundAlsa ); - diff --git a/colorchord2/sound_android.c b/colorchord2/sound_android.c deleted file mode 100644 index 6975802..0000000 --- a/colorchord2/sound_android.c +++ /dev/null @@ -1,244 +0,0 @@ -//Copyright 2019-2020 <>< Charles Lohr under the ColorChord License. -// This should be used with rawdrawandroid - -#include "sound.h" -#include "os_generic.h" -#include //Using android threads not os_generic threads. -#include -#include -#include -#include - -#ifndef NO_SOUND_PARAMETERS -#include "parameters.h" -#else -#define GetParameterI( x, y ) (y) -#define GetParameterS( x, y ) (y) -#endif - - -//based on https://github.com/android/ndk-samples/blob/master/native-audio/app/src/main/cpp/native-audio-jni.c - -// for native audio -#include -#include - -#include -#include -#include -#include - -#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, APPNAME, __VA_ARGS__)) -#define printf( x...) LOGI( x ) - -#define RECORDER_FRAMES 1024 - -#define BUFFERSETS 4 - -#define BLOCKING - -//Across all sound systems. -static pthread_mutex_t audioEngineLock = PTHREAD_MUTEX_INITIALIZER; - -struct SoundDriverAndroid -{ - void (*CloseFn)( struct SoundDriverAndroid * object ); - int (*SoundStateFn)( struct SoundDriverAndroid * object ); - SoundCBType callback; - SLObjectItf engineObject; - SLEngineItf engineEngine; - SLRecordItf recorderRecord; - SLObjectItf recorderObject; - SLAndroidSimpleBufferQueueItf recorderBufferQueue; - unsigned recorderSize; - - short recorderBuffer[RECORDER_FRAMES]; -}; - - -void bqRecorderCallback(SLAndroidSimpleBufferQueueItf bq, void *context) -{ - struct SoundDriverAndroid * r = (struct SoundDriverAndroid*)context; - int samplesp = 0; - float buffout[RECORDER_FRAMES]; - int i; - short * rb = r->recorderBuffer; - for( i = 0; i < RECORDER_FRAMES; i++ ) buffout[i] = (rb[i]+0.5)/32767.5; - r->callback( 0, buffout, RECORDER_FRAMES, &samplesp, r ); - (*r->recorderBufferQueue)->Enqueue(r->recorderBufferQueue, r->recorderBuffer, sizeof(r->recorderBuffer)); -} - -static struct SoundDriverAndroid* InitAndroidSound( struct SoundDriverAndroid * r ) -{ - SLresult result; - LOGI( "Starting InitAndroidSound\n" ); - // create engine - result = slCreateEngine(&r->engineObject, 0, NULL, 0, NULL, NULL); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - // realize the engine - result = (*r->engineObject)->Realize(r->engineObject, SL_BOOLEAN_FALSE); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - // get the engine interface, which is needed in order to create other objects - result = (*r->engineObject)->GetInterface(r->engineObject, SL_IID_ENGINE, &r->engineEngine); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - - /////////////////////////////////////////////////////////////////////////////////////////////////////// - - - // configure audio source - SLDataLocator_IODevice loc_dev = {SL_DATALOCATOR_IODEVICE, SL_IODEVICE_AUDIOINPUT, - SL_DEFAULTDEVICEID_AUDIOINPUT, NULL}; - SLDataSource audioSrc = {&loc_dev, NULL}; - - // configure audio sink - SLDataLocator_AndroidSimpleBufferQueue loc_bq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2}; - - SLDataFormat_PCM format_pcm ={ - SL_DATAFORMAT_PCM, - 1, - SL_SAMPLINGRATE_16, - SL_PCMSAMPLEFORMAT_FIXED_16, - SL_PCMSAMPLEFORMAT_FIXED_16, - SL_SPEAKER_FRONT_CENTER, - SL_BYTEORDER_LITTLEENDIAN, - }; - - SLDataSink audioSnk = {&loc_bq, &format_pcm}; - - // create audio recorder - // (requires the RECORD_AUDIO permission) - const SLInterfaceID id[1] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE}; - const SLboolean req[1] = {SL_BOOLEAN_TRUE}; - result = (*r->engineEngine)->CreateAudioRecorder(r->engineEngine, &r->recorderObject, &audioSrc, - &audioSnk, 1, id, req); - if (SL_RESULT_SUCCESS != result) { - LOGI( "CreateAudioRecorder failed\n" ); - return JNI_FALSE; - } - - // realize the audio recorder - result = (*r->recorderObject)->Realize(r->recorderObject, SL_BOOLEAN_FALSE); - if (SL_RESULT_SUCCESS != result) { - LOGI( "AudioRecorder Realize failed: %d\n", result ); - return JNI_FALSE; - } - - // get the record interface - result = (*r->recorderObject)->GetInterface(r->recorderObject, SL_IID_RECORD, &r->recorderRecord); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - // get the buffer queue interface - result = (*r->recorderObject)->GetInterface(r->recorderObject, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, - &r->recorderBufferQueue); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - // register callback on the buffer queue - result = (*r->recorderBufferQueue)->RegisterCallback(r->recorderBufferQueue, bqRecorderCallback, r); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - - assert( !pthread_mutex_trylock(&audioEngineLock)); - // in case already recording, stop recording and clear buffer queue - result = (*r->recorderRecord)->SetRecordState(r->recorderRecord, SL_RECORDSTATE_STOPPED); - assert(SL_RESULT_SUCCESS == result); - (void)result; - result = (*r->recorderBufferQueue)->Clear(r->recorderBufferQueue); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - // the buffer is not valid for playback yet - r->recorderSize = 0; - - // enqueue an empty buffer to be filled by the recorder - // (for streaming recording, we would enqueue at least 2 empty buffers to start things off) - result = (*r->recorderBufferQueue)->Enqueue(r->recorderBufferQueue, r->recorderBuffer, sizeof(r->recorderBuffer)); - // the most likely other result is SL_RESULT_BUFFER_INSUFFICIENT, - // which for this code example would indicate a programming error - assert(SL_RESULT_SUCCESS == result); - (void)result; - - // start recording - result = (*r->recorderRecord)->SetRecordState(r->recorderRecord, SL_RECORDSTATE_RECORDING); - assert(SL_RESULT_SUCCESS == result); - (void)result; - - LOGI( "Complete Init Sound Android\n" ); - return r; -} - -void CloseSoundAndroid( struct SoundDriverAndroid * r ); - -int SoundStateAndroid( struct SoundDriverAndroid * soundobject ) -{ - return ((soundobject->recorderObject)?1:0) | ((soundobject->recorderObject)?2:0); -} - -void CloseSoundAndroid( struct SoundDriverAndroid * r ) -{ - // destroy audio recorder object, and invalidate all associated interfaces - if (r->recorderObject != NULL) { - (*r->recorderObject)->Destroy(r->recorderObject); - r->recorderObject = NULL; - r->recorderRecord = NULL; - r->recorderBufferQueue = NULL; - } - - - // destroy engine object, and invalidate all associated interfaces - if (r->engineObject != NULL) { - (*r->engineObject)->Destroy(r->engineObject); - r->engineObject = NULL; - r->engineEngine = NULL; - } - -} - - -int AndroidHasPermissions(const char* perm_name); -void AndroidRequestAppPermissions(const char * perm); - - -void * InitSoundAndroid( SoundCBType cb ) -{ - int hasperm = AndroidHasPermissions( "RECORD_AUDIO" ); - if( !hasperm ) - { - AndroidRequestAppPermissions( "RECORD_AUDIO" ); - } - - struct SoundDriverAndroid * r = (struct SoundDriverAndroid *)malloc( sizeof( struct SoundDriverAndroid ) ); - memset( r, 0, sizeof( *r) ); - r->CloseFn = CloseSoundAndroid; - r->SoundStateFn = SoundStateAndroid; - r->callback = cb; - r->engineObject = 0; - r->engineEngine = 0; -/* - r->spsPlay = GetParameterI( "samplerate", 44100 ); - r->channelsPlay = GetParameterI( "channels", 2 ); - r->spsRec = r->spsPlay; - r->channelsRec = r->channelsPlay; - - r->playback_handle = 0; - r->record_handle = 0; - r->buffer = GetParameterI( "buffer", 1024 ); - - r->Android_fmt_s16le = 0; - -*/ - return InitAndroidSound(r); -} - -//Tricky: On Android, this can't actually run before main. Have to manually execute it. - -REGISTER_SOUND( AndroidSound, 10, "ANDROID", InitSoundAndroid ); - diff --git a/colorchord2/sound_null.c b/colorchord2/sound_null.c deleted file mode 100644 index d7f8d16..0000000 --- a/colorchord2/sound_null.c +++ /dev/null @@ -1,45 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. - -#include "sound.h" -#include "os_generic.h" -#include -#include "parameters.h" - -struct SoundDriverNull -{ - void (*CloseFn)( struct SoundDriverNull * object ); - int (*SoundStateFn)( struct SoundDriverNull * object ); - SoundCBType soundcb; - int channelsPlay; - int spsPlay; - int channelsRec; - int spsRec; -}; - -void CloseSoundNull( struct SoundDriverNull * object ) -{ - free( object ); -} - -int SoundStateNull( struct SoundDriverNull * object ) -{ - return 0; -} - - -void * InitSoundNull( SoundCBType cb ) -{ - struct SoundDriverNull * r = malloc( sizeof( struct SoundDriverNull ) ); - r->CloseFn = CloseSoundNull; - r->SoundStateFn = SoundStateNull; - r->soundcb = cb; - r->spsPlay = GetParameterI( "samplerate", 44100 ); - r->channelsPlay = GetParameterI( "channels", 2 ); - r->spsRec = r->spsPlay; - r->channelsRec = r->channelsRec; - return r; -} - - -REGISTER_SOUND( NullSound, 1, "NULL", InitSoundNull ); - diff --git a/colorchord2/sound_pulse.c b/colorchord2/sound_pulse.c deleted file mode 100644 index 4664c2e..0000000 --- a/colorchord2/sound_pulse.c +++ /dev/null @@ -1,379 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. - -//This file is really rough. Full duplex doesn't seem to work hardly at all. - - -#include "sound.h" -#include "os_generic.h" -#include "parameters.h" -#include - -#include -#include -#include -#include -#include - -#define BUFFERSETS 3 - - -//from http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/Clients/Samples/AsyncPlayback/ -//also http://maemo.org/api_refs/5.0/5.0-final/pulseaudio/pacat_8c-example.html - - -struct SoundDriverPulse -{ - void (*CloseFn)( struct SoundDriverPulse * object ); - int (*SoundStateFn)( struct SoundDriverPulse * object ); - SoundCBType callback; - int channelsPlay; - int spsPlay; - int channelsRec; - int spsRec; - - const char * sourceName; - og_thread_t thread; - pa_stream * play; - pa_stream * rec; - pa_context * pa_ctx; - pa_mainloop *pa_ml; - int pa_ready; - int buffer; - //More fields may exist on a per-sound-driver basis -}; - - - -void CloseSoundPulse( struct SoundDriverPulse * r ); - -int SoundStatePulse( struct SoundDriverPulse * soundobject ) -{ - return ((soundobject->play)?1:0) | ((soundobject->rec)?2:0); -} - -void CloseSoundPulse( struct SoundDriverPulse * r ) -{ - if( r ) - { - if( r->play ) - { - pa_stream_unref (r->play); - r->play = 0; - } - - if( r->rec ) - { - pa_stream_unref (r->rec); - r->rec = 0; - } - OGUSleep(2000); - OGCancelThread( r->thread ); - free( r ); - } -} - -static void * SoundThread( void * v ) -{ - struct SoundDriverPulse * r = (struct SoundDriverPulse*)v; - while(1) - { - pa_mainloop_iterate( r->pa_ml, 1, NULL ); - } - return 0; -} -/* - int i; - int error; - struct SoundDriverPulse * r = (struct SoundDriverPulse*)v; - - float * bufr[BUFFERSETS]; - float * bufp[BUFFERSETS]; - - for(i = 0; i < BUFFERSETS; i++ ) - { - bufr[i] = malloc( r->buffer * sizeof(float) * r->channelsRec ); - bufp[i] = malloc( r->buffer * sizeof(float) * r->channelsPlay ); - } - - while( r->play || r->rec ) - { - i = (i+1)%BUFFERSETS; - - if( r->rec ) - { - if (pa_stream_read(r->rec, bufr[i], r->buffer * sizeof(float) * r->channelsRec, &error) < 0) { - fprintf(stderr, __FILE__": pa_stream_write() failed: %s\n", pa_strerror(error)); - pa_stream_unref( r->play ); - r->rec = 0; - } - } - - int playbacksamples = 0; - r->callback( bufp[i], bufr[i], r->buffer, &playbacksamples, (struct SoundDriver*)r ); - playbacksamples *= sizeof( float ) * r->channelsPlay; - - if( r->play ) - { - if (pa_stream_write(r->play, bufp[i], playbacksamples, NULL, 0LL, PA_SEEK_RELATIVE) < 0) { - fprintf(stderr, __FILE__": pa_stream_write() failed: %s\n", pa_strerror(error)); - pa_stream_unref( r->play ); - r->play = 0; - } - } - } - -}*/ - -static void stream_request_cb(pa_stream *s, size_t length, void *userdata) { -// pa_usec_t usec; - - struct SoundDriverPulse * r = (struct SoundDriverPulse*)userdata; - if( r->rec ) - { - return; - } - -/* - //Neat: You might want this: - - pa_stream_get_latency(s,&usec,&neg); - - if (sampleoffs*2 + length > sizeof(sampledata)) - { - sampleoffs = 0; - } - - if (length > sizeof(sampledata)) { - length = sizeof(sampledata); - } - -*/ - - -// pa_stream_write(s, &sampledata[sampleoffs], length, NULL, 0LL, PA_SEEK_RELATIVE); - int playbacksamples = 0; - float bufr[r->buffer*r->channelsRec]; - float bufp[r->buffer*r->channelsPlay]; - - r->callback( bufp, bufr, r->buffer, &playbacksamples, (struct SoundDriver*)r ); - //playbacksamples *= sizeof( float ) * r->channelsPlay; - - pa_stream_write(r->play, &bufp, playbacksamples, NULL, 0LL, PA_SEEK_RELATIVE); - -} - - -static void stream_record_cb(pa_stream *s, size_t length, void *userdata) { -// pa_usec_t usec; -// int neg; - - struct SoundDriverPulse * r = (struct SoundDriverPulse*)userdata; - -/* pa_stream_get_latency(s,&usec,&neg); - printf(" latency %8d us\n",(int)usec); - - if (sampleoffs*2 + length > sizeof(sampledata)) - { - sampleoffs = 0; - } - - if (length > sizeof(sampledata)) { - length = sizeof(sampledata); - }*/ - - int playbacksamples = 0; - float * bufr; - - if (pa_stream_peek(r->rec, (void*)&bufr, &length) < 0) { - fprintf(stderr, ("pa_stream_peek() failed: %s\n"), pa_strerror(pa_context_errno(r->pa_ctx))); - return; - } - - float * buffer; - buffer = pa_xmalloc(length); - memcpy(buffer, bufr, length); - pa_stream_drop(r->rec); - - float bufp[length*r->channelsPlay]; - r->callback( bufp, buffer, length/sizeof(float)/r->channelsRec, &playbacksamples, (struct SoundDriver*)r ); - //playbacksamples *= sizeof( float ) * r->channelsPlay; - pa_xfree( buffer ); - if( r->play ) - pa_stream_write(r->play, &bufp, playbacksamples*sizeof(float)*r->channelsPlay, NULL, 0LL, PA_SEEK_RELATIVE); -} - - - -static void stream_underflow_cb(pa_stream *s, void *userdata) { - // We increase the latency by 50% if we get 6 underflows and latency is under 2s - // This is very useful for over the network playback that can't handle low latencies - printf("underflow\n"); -// underflows++; -/* if (underflows >= 6 && latency < 2000000) { - latency = (latency*3)/2; - bufattr.maxlength = pa_usec_to_bytes(latency,&ss); - bufattr.tlength = pa_usec_to_bytes(latency,&ss); - pa_stream_set_buffer_attr(s, &bufattr, NULL, NULL); - underflows = 0; - printf("latency increased to %d\n", latency); - }*/ -} - - -void pa_state_cb(pa_context *c, void *userdata) { - pa_context_state_t state; - int *pa_ready = userdata; - state = pa_context_get_state(c); - switch (state) { - // These are just here for reference - case PA_CONTEXT_UNCONNECTED: - case PA_CONTEXT_CONNECTING: - case PA_CONTEXT_AUTHORIZING: - case PA_CONTEXT_SETTING_NAME: - default: - break; - case PA_CONTEXT_FAILED: - case PA_CONTEXT_TERMINATED: - *pa_ready = 2; - break; - case PA_CONTEXT_READY: - *pa_ready = 1; - break; - } -} - - -void * InitSoundPulse( SoundCBType cb ) -{ - static pa_buffer_attr bufattr; - static pa_sample_spec ss; - int error; - pa_mainloop_api *pa_mlapi; - struct SoundDriverPulse * r = malloc( sizeof( struct SoundDriverPulse ) ); - - r->pa_ml = pa_mainloop_new(); - pa_mlapi = pa_mainloop_get_api(r->pa_ml); - const char * title = GetParameterS( "title", "PA Test" ); - r->pa_ctx = pa_context_new(pa_mlapi, title ); - pa_context_connect(r->pa_ctx, NULL, 0, NULL); - - //TODO: pa_context_set_state_callback - - r->CloseFn = CloseSoundPulse; - r->SoundStateFn = SoundStatePulse; - r->callback = cb; - - r->spsPlay = GetParameterI( "samplerate", 44100 ); - r->channelsPlay = GetParameterI( "channels", 2 ); - r->spsRec = r->spsPlay; - r->channelsRec = r->channelsPlay; - r->sourceName = GetParameterS( "sourcename", NULL ); - - if( strcmp( r->sourceName, "default" ) == 0 ) - { - r->sourceName = 0; - } - - r->play = 0; - r->rec = 0; - r->buffer = GetParameterI( "buffer", 1024 ); - printf ("Pulse: from: %s (%s) / %dx%d (%d)\n", r->sourceName, title, r->spsPlay, r->channelsPlay, r->buffer ); - - memset( &ss, 0, sizeof( ss ) ); - - ss.format = PA_SAMPLE_FLOAT32NE; - ss.rate = r->spsPlay; - ss.channels = r->channelsPlay; - - r->pa_ready = 0; - pa_context_set_state_callback(r->pa_ctx, pa_state_cb, &r->pa_ready); - - while (r->pa_ready == 0) - { - pa_mainloop_iterate(r->pa_ml, 1, NULL); - } - - int bufbytes = r->buffer * sizeof(float) * r->channelsRec; - - if( GetParameterI( "play", 1 ) ) - { - if (!(r->play = pa_stream_new(r->pa_ctx, "Play", &ss, NULL))) { - error = -3; //XXX ??? TODO - fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error)); - goto fail; - } - - pa_stream_set_underflow_callback(r->play, stream_underflow_cb, NULL); - pa_stream_set_write_callback(r->play, stream_request_cb, r ); - - bufattr.fragsize = (uint32_t)-1; - bufattr.maxlength = bufbytes*3; //XXX TODO Consider making this -1 - bufattr.minreq = 0; - bufattr.prebuf = (uint32_t)-1; - bufattr.tlength = bufbytes*3; - int ret = pa_stream_connect_playback(r->play, NULL, &bufattr, - // PA_STREAM_INTERPOLATE_TIMING - // |PA_STREAM_ADJUST_LATENCY //Some servers don't like the adjust_latency flag. - // |PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL); - 0, NULL, NULL ); - printf( "Play stream.\n" ); - if( ret < 0 ) - { - fprintf(stderr, __FILE__": (PLAY) pa_stream_connect_playback() failed: %s\n", pa_strerror(ret)); - goto fail; - } - } - - if( GetParameterI( "rec", 1 ) ) - { - if (!(r->rec = pa_stream_new(r->pa_ctx, "Record", &ss, NULL))) { - error = -3; //XXX ??? TODO - fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error)); - goto fail; - } - - pa_stream_set_read_callback(r->rec, stream_record_cb, r ); - - bufattr.fragsize = bufbytes; - bufattr.maxlength = (uint32_t)-1;//(uint32_t)-1; //XXX: Todo, should this be low? - bufattr.minreq = bufbytes; - bufattr.prebuf = (uint32_t)-1; - bufattr.tlength = bufbytes*3; - printf( "Source: %s\n", r->sourceName ); - int ret = pa_stream_connect_record(r->rec, r->sourceName, &bufattr, 0 -// |PA_STREAM_INTERPOLATE_TIMING - |PA_STREAM_ADJUST_LATENCY //Some servers don't like the adjust_latency flag. -// |PA_STREAM_AUTO_TIMING_UPDATE -// 0 - ); - - printf( "Got handle: %d\n", ret ); - if( ret < 0 ) - { - fprintf(stderr, __FILE__": (REC) pa_stream_connect_playback() failed: %s\n", pa_strerror(ret)); - goto fail; - } - } - - printf( "Pulse initialized.\n" ); - - -// SoundThread( r ); - r->thread = OGCreateThread( SoundThread, r ); - return r; - -fail: - if( r ) - { - if( r->play ) pa_xfree (r->play); - if( r->rec ) pa_xfree (r->rec); - free( r ); - } - return 0; -} - - - -REGISTER_SOUND( PulseSound, 11, "PULSE", InitSoundPulse ); - - diff --git a/colorchord2/sound_win.c b/colorchord2/sound_win.c deleted file mode 100644 index da41efc..0000000 --- a/colorchord2/sound_win.c +++ /dev/null @@ -1,190 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. - -#include -#include "parameters.h" -#include "sound.h" -#include "os_generic.h" -#include -#include -#include -#include - -#if defined(WIN32) && !defined( TCC ) -#pragma comment(lib,"winmm.lib") -#endif - -#define BUFFS 2 - -struct SoundDriverWin -{ - void (*CloseFn)( struct SoundDriverWin * object ); - int (*SoundStateFn)( struct SoundDriverWin * object ); - SoundCBType callback; - int channelsPlay; - int spsPlay; - int channelsRec; - int spsRec; - - - int buffer; - int isEnding; - int GOBUFF; - - int recording; - - HWAVEIN hMyWave; - WAVEHDR WavBuff[BUFFS]; -}; - -static struct SoundDriverWin * w; - -void CloseSoundWin( struct SoundDriverWin * r ) -{ - int i; - - if( r ) - { - waveInStop(r->hMyWave); - waveInReset(r->hMyWave); - - for ( i=0;ihMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR)); - free ((r->WavBuff[i]).lpData); - } - waveInClose(r->hMyWave); - free( r ); - } -} - -int SoundStateWin( struct SoundDriverWin * soundobject ) -{ - return soundobject->recording; -} - -void CALLBACK HANDLEMIC(HWAVEIN hwi,UINT umsg, DWORD dwi, DWORD hdr, DWORD dwparm) -{ - int ctr; - int ob; - long cValue; - unsigned int maxWave=0; - - float buffer[w->buffer*w->channelsRec]; - - if (w->isEnding) return; - - switch (umsg) - { - case MM_WIM_OPEN: - printf( "Mic Open.\n" ); - w->recording = 1; - break; - - case MM_WIM_DATA: -// printf( "Mic Data.\n"); - ob = (w->GOBUFF+(BUFFS))%BUFFS; -// waveInPrepareHeader(w->hMyWave,&(w->WavBuff[w->Cbuff]),sizeof(WAVEHDR)); - - for (ctr=0;ctrbuffer * w->channelsRec;ctr++) { - float cv = (uint16_t)(((uint8_t)w->WavBuff[ob].lpData[ctr*2+1])*256+((uint8_t)w->WavBuff[ob].lpData[ctr*2])+32768)-32768; - cv /= 32768; -// if( ctr < 3 ) cv = -1; -// buffer[(w->buffer * w->channelsRec)-ctr-1] = cv; - buffer[ctr] = cv; - } - - waveInAddBuffer(w->hMyWave,&(w->WavBuff[w->GOBUFF]),sizeof(WAVEHDR)); - w->GOBUFF = ( w->GOBUFF + 1 ) % BUFFS; - - int playbacksamples; //Unused - w->callback( 0, buffer, w->buffer, &playbacksamples, (struct SoundDriver*)w ); - - } -} - - -static struct SoundDriverWin * InitWinSound( struct SoundDriverWin * r ) -{ - int i; - WAVEFORMATEX wfmt; - memset( &wfmt, 0, sizeof(wfmt) ); - printf ("WFMT Size (debugging temp for TCC): %d\n", sizeof(wfmt) ); - if( GetParameterI( "play", 0 ) ) - { - fprintf( stderr, "Error: This Windows Sound Driver does not support playback.\n" ); - exit( -1 ); - } - - w = r; - - - printf( "WFMT: %d %d %d\n", r->channelsRec, r->spsRec, - r->spsRec * r->channelsRec ); - - wfmt.wFormatTag = WAVE_FORMAT_PCM; - wfmt.nChannels = r->channelsRec; - wfmt.nSamplesPerSec = r->spsRec; - wfmt.nAvgBytesPerSec = r->spsRec * r->channelsRec; - wfmt.nBlockAlign = r->channelsRec * 2; - wfmt.wBitsPerSample = 16; - wfmt.cbSize = 0; - - long dwdevice; - dwdevice = GetParameterI( "wininput", WAVE_MAPPER ); - - printf( "Wave Devs: %d; WAVE_MAPPER: %d; Selected Input: %d\n", waveInGetNumDevs(), WAVE_MAPPER, dwdevice ); - - printf( "waveInOpen: %p, %p\n", r->hMyWave, &wfmt ); - - int p = waveInOpen(&r->hMyWave, dwdevice, &wfmt, (void*)(&HANDLEMIC) , 0, CALLBACK_FUNCTION); - - if( p ) - { - fprintf( stderr, "Error performing waveInOpen. Received code: %d\n", p ); - } - - for ( i=0;iWavBuff[i]), 0, sizeof(r->WavBuff[i]) ); - (r->WavBuff[i]).dwBufferLength = r->buffer*2*r->channelsRec; - (r->WavBuff[i]).dwLoops = 1; - (r->WavBuff[i]).lpData=(char*) malloc(r->buffer*r->channelsRec*2); - p = waveInPrepareHeader(r->hMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR)); - printf( "WIP: %d\n", p ); - waveInAddBuffer(r->hMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR)); - printf( "WIA: %d\n", p ); - } -\ - p = waveInStart(r->hMyWave); - if( p ) - { - fprintf( stderr, "Error performing waveInStart. Received code %d\n", p ); - } - - return r; -} - - - -void * InitSoundWin( SoundCBType cb ) -{ - struct SoundDriverWin * r = (struct SoundDriverWin *)malloc( sizeof( struct SoundDriverWin ) ); - - r->CloseFn = CloseSoundWin; - r->SoundStateFn = SoundStateWin; - r->callback = cb; - - r->spsRec = GetParameterI( "samplerate", 44100 ); - r->channelsRec = GetParameterI( "channels", 2 ); - r->buffer = GetParameterI( "buffer", 384 ); - r->recording = 0; - r->isEnding = 0; - printf( "Buffer: %d\n", r->buffer ); - - r->GOBUFF=0; - - return InitWinSound(r); -} - -REGISTER_SOUND( SoundWin, 10, "WIN", InitSoundWin ); - From 79089566a10a431cf2c296a178a99cc8cc29bb57 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 10 May 2020 21:23:04 -0700 Subject: [PATCH 008/162] make ColorChord work on Android. --- .gitmodules | 3 + colorchord2/DisplayPie.c | 13 +- colorchord2/Makefile | 4 +- colorchord2/android/AndroidManifest.xml | 24 ++ colorchord2/android/DisplayTensigralAndroid.c | 125 ++++++ colorchord2/android/Makefile | 16 + colorchord2/android/README.md | 2 + .../android/Sources/res/mipmap/icon.png | Bin 0 -> 82691 bytes .../android/Sources/res/xml/device_filter.xml | 8 + colorchord2/android/rawdrawandroid | 1 + colorchord2/android/test.c | 392 ++++++++++++++++++ colorchord2/cnfa | 2 +- colorchord2/colorchord.exe | Bin 777270 -> 0 bytes colorchord2/configs.c | 15 +- colorchord2/main.c | 143 ++++++- colorchord2/os_generic.c | 343 --------------- colorchord2/os_generic.h | 78 ---- colorchord2/rawdraw | 2 +- 18 files changed, 720 insertions(+), 451 deletions(-) create mode 100644 colorchord2/android/AndroidManifest.xml create mode 100644 colorchord2/android/DisplayTensigralAndroid.c create mode 100644 colorchord2/android/Makefile create mode 100644 colorchord2/android/README.md create mode 100644 colorchord2/android/Sources/res/mipmap/icon.png create mode 100644 colorchord2/android/Sources/res/xml/device_filter.xml create mode 160000 colorchord2/android/rawdrawandroid create mode 100644 colorchord2/android/test.c delete mode 100755 colorchord2/colorchord.exe delete mode 100644 colorchord2/os_generic.c delete mode 100644 colorchord2/os_generic.h diff --git a/.gitmodules b/.gitmodules index 3524c3c..ae541d5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "colorchord2/cnfa"] path = colorchord2/cnfa url = https://github.com/cnlohr/cnfa +[submodule "colorchord2/android/rawdrawandroid"] + path = colorchord2/android/rawdrawandroid + url = https://github.com/cnlohr/rawdrawandroid diff --git a/colorchord2/DisplayPie.c b/colorchord2/DisplayPie.c index 5374842..0c38c50 100644 --- a/colorchord2/DisplayPie.c +++ b/colorchord2/DisplayPie.c @@ -31,7 +31,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) int i; float cw = ((float)(screenx)) / 2.0; float ch = ((float)(screeny)) / 2.0; - RDPoint pts[4]; + RDPoint pts[6]; float sizeA = sqrtf( screenx * screenx + screeny * screeny ) * d->pie_min; float sizeB = sqrtf( screenx * screenx + screeny * screeny ) * d->pie_max; for( i = 0; i < d->leds; i++ ) @@ -44,11 +44,16 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) pts[1].y = ch + sin(angA) * sizeB; pts[2].x = cw + cos(angB) * sizeB; pts[2].y = ch + sin(angB) * sizeB; - pts[3].x = cw + cos(angB) * sizeA; - pts[3].y = ch + sin(angB) * sizeA; + + pts[3].x = cw + cos(angA) * sizeA; + pts[3].y = ch + sin(angA) * sizeA; + pts[4].x = cw + cos(angB) * sizeB; + pts[4].y = ch + sin(angB) * sizeB; + pts[5].x = cw + cos(angB) * sizeA; + pts[5].y = ch + sin(angB) * sizeA; CNFGColor( OutLEDs[i*3+0] | (OutLEDs[i*3+1] <<8)|(OutLEDs[i*3+2] <<16) ); - CNFGTackPoly( pts, 4 ); + CNFGTackPoly( pts, 6 ); } diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 6854d63..c06144a 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -14,13 +14,13 @@ LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= EXTRALIBS:=-lusb-1.0 -OBJS:=os_generic.o main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o +OBJS:=main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o colorchord : $(OBJS) gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) -colorchord.exe : os_generic.c main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c +colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml new file mode 100644 index 0000000..4ec219b --- /dev/null +++ b/colorchord2/android/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/colorchord2/android/DisplayTensigralAndroid.c b/colorchord2/android/DisplayTensigralAndroid.c new file mode 100644 index 0000000..8971054 --- /dev/null +++ b/colorchord2/android/DisplayTensigralAndroid.c @@ -0,0 +1,125 @@ +#include "outdrivers.h" +#include "notefinder.h" +#include +#include "parameters.h" +#include +#include +#include +#include "color.h" +#include "CNFG.h" +#include "rawdrawandroid/android_usb_devices.h" + +#include +#include +#include + + +#define MAX_LEDS_PER_NOTE 512 + +extern short screenx, screeny; + +struct DTADriver +{ + int leds; +}; + +char TensigralDebugStatus[8192]; + +int RequestPermissionOrGetConnectionFD( char * debug_status, uint16_t vid, uint16_t pid ); +void DisconnectUSB(); //Disconnect from USB + +extern jobject deviceConnection; +extern int deviceConnectionFD; + + + +static void DTAUpdate(void * id, struct NoteFinder*nf) +{ + struct DTADriver * d = (struct DTADriver*)id; + int i; + + if( deviceConnectionFD == 0 ) + { + RequestPermissionOrGetConnectionFD( TensigralDebugStatus, 0xabcd, 0xf410 ); + } + + CNFGPenX = 800; + CNFGPenY = 800; + CNFGColor( 0xffffff ); + CNFGDrawText( TensigralDebugStatus, 2 ); + + if( !deviceConnectionFD ) return; + + + uint8_t packet[64]; + + if( deviceConnectionFD ) + { + //This section does the crazy wacky stuff to actually split the LEDs into HID Packets and get them out the door... Carefully. + int byrem = d->leds*4; //OutLEDs[i*3+1] + int offset = 0; + int marker = 0; + for( i = 0; i < 2; i++ ) + { + uint8_t sendbuf[64]; + sendbuf[0] = (byrem > 60)?15:(byrem/4); + sendbuf[1] = offset; + +// memcpy( sendbuf + 2, Colorbuf + offset*4, sendbuf[0]*4 ); + int j; + for( j = 0; j < sendbuf[0]; j++ ) + { + sendbuf[j*4+3] = OutLEDs[marker++]; + sendbuf[j*4+2] = OutLEDs[marker++]; + sendbuf[j*4+4] = OutLEDs[marker++]; + sendbuf[j*4+5] = 0; + } + + offset += sendbuf[0]; + byrem -= sendbuf[0]*4; + + + if( byrem == 0 ) sendbuf[0] |= 0x80; + int tsend = 65; //Size of payload (must be 64+1 always) + + //Ok this looks weird, because Android has a bulkTransfer function, but that has a TON of layers of misdirection before it just calls the ioctl. + struct usbdevfs_bulktransfer ctrl; + memset(&ctrl, 0, sizeof(ctrl)); + ctrl.ep = 0x02; //Endpoint 0x02 is output endpoint. + ctrl.len = 64; + ctrl.data = sendbuf; + ctrl.timeout = 100; + int lastFDWrite = ioctl(deviceConnectionFD, USBDEVFS_BULK, &ctrl); + if( lastFDWrite < 0 ) + { + DisconnectUSB(); + break; + } + usleep(1000); + } + } + + CNFGColor( 0xffffff ); +} + +static void DTAParams(void * id ) +{ + struct DTADriver * d = (struct DTADriver*)id; + + d->leds = 9; RegisterValue( "leds", PAINT, &d->leds, sizeof( d->leds ) ); +} + +static struct DriverInstances * DisplayTensigralAndroid(const char * parameters) +{ + struct DriverInstances * ret = malloc( sizeof( struct DriverInstances ) ); + struct DTADriver * d = ret->id = malloc( sizeof( struct DTADriver ) ); + memset( d, 0, sizeof( struct DTADriver ) ); + ret->Func = DTAUpdate; + ret->Params = DTAParams; + DTAParams( d ); + return ret; +} + +REGISTER_OUT_DRIVER(DisplayTensigralAndroid); + + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile new file mode 100644 index 0000000..0f138ef --- /dev/null +++ b/colorchord2/android/Makefile @@ -0,0 +1,16 @@ + +APPNAME=colorchord +RAWDRAWANDROID=rawdrawandroid +PACKAGENAME?=org.cnlohr.$(APPNAME) + +CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon -ffunction-sections -Os -DPRINTF_NO_OVERRIDDE +LDFLAGS:=-s -lOpenSLES +PACKAGENAME?=org.yourorgexample.$(APPNAME) + +CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../hook.c ../outdrivers.c ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c + +SRC:=rawdrawandroid/android_usb_devices.c DisplayTensigralAndroid.c $(CC_C) + +include rawdrawandroid/Makefile + + diff --git a/colorchord2/android/README.md b/colorchord2/android/README.md new file mode 100644 index 0000000..3c21bd8 --- /dev/null +++ b/colorchord2/android/README.md @@ -0,0 +1,2 @@ +This part of the project is baed on https://github.com/cnlohr/androidusbtest + diff --git a/colorchord2/android/Sources/res/mipmap/icon.png b/colorchord2/android/Sources/res/mipmap/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..db83b40133ae6c9f45eadb9af75e0f0458a1b1b6 GIT binary patch literal 82691 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 literal 0 HcmV?d00001 diff --git a/colorchord2/android/Sources/res/xml/device_filter.xml b/colorchord2/android/Sources/res/xml/device_filter.xml new file mode 100644 index 0000000..2d0d458 --- /dev/null +++ b/colorchord2/android/Sources/res/xml/device_filter.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid new file mode 160000 index 0000000..a124fee --- /dev/null +++ b/colorchord2/android/rawdrawandroid @@ -0,0 +1 @@ +Subproject commit a124feee8d928f2276c00a35c56e15b8d5984a06 diff --git a/colorchord2/android/test.c b/colorchord2/android/test.c new file mode 100644 index 0000000..94f7900 --- /dev/null +++ b/colorchord2/android/test.c @@ -0,0 +1,392 @@ +//Copyright (c) 2011-2020 <>< Charles Lohr - Under the MIT/x11 or NewBSD License you choose. +// NO WARRANTY! NO GUARANTEE OF SUPPORT! USE AT YOUR OWN RISK +// Super basic test - see rawdrawandroid's thing for a more reasonable test. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "android_usb_devices.h" + +#include "os_generic.h" + +#define CNFG_IMPLEMENTATION +#include "CNFG.h" + +#define printf( x...) LOGI( x ) + +unsigned frames = 0; +unsigned long iframeno = 0; + +void AndroidDisplayKeyboard(int pShow); +volatile int suspended; + +short screenx, screeny; +int lastmousex = 0; +int lastmousey = 0; +int lastbid = 0; +int lastmask = 0; +int lastkey, lastkeydown; + +static int keyboard_up; + +int mousedown; +int colormode; +double colormodechangetime; + + +void HandleKey( int keycode, int bDown ) +{ + lastkey = keycode; + lastkeydown = bDown; + if( keycode == 10 && !bDown ) { keyboard_up = 0; AndroidDisplayKeyboard( keyboard_up ); } +} + +void HandleButton( int x, int y, int button, int bDown ) +{ + lastbid = button; + lastmousex = x; + lastmousey = y; + + if( bDown ) { colormode = (colormode+1)%2; } + if( !bDown ) { colormodechangetime = OGGetAbsoluteTime(); } + mousedown = bDown; +// if( bDown ) { keyboard_up = !keyboard_up; AndroidDisplayKeyboard( keyboard_up ); } +} + +void HandleMotion( int x, int y, int mask ) +{ + lastmask = mask; + lastmousex = x; + lastmousey = y; +} + +extern struct android_app * gapp; + +int lastFDWrite = 0; + +void HandleDestroy() +{ + printf( "Destroying\n" ); + exit(10); +} + +void HandleSuspend() +{ + suspended = 1; +} + +void HandleResume() +{ + suspended = 0; +} + + +#define NUM_LEDS 20 +uint8_t Colorbuf[NUM_LEDS*4]; + +char rettext[512]; +char assettext[512]; + +int pixelhueX = -1, pixelhueY = -1; + +unsigned long HSVtoHEX( float hue, float sat, float value ); +unsigned long PixelHue( int x, int y ) +{ + float sat = (pixelhueY-y) / (float)pixelhueY * 2.0; + float hue = x / (float)pixelhueX; + if( sat < 1.0 ) + { + return HSVtoHEX( x * 0.0012, (sat<1)?sat:1, 1.0 ); + } + else + { + return HSVtoHEX( x * 0.0012, (sat<1)?sat:1, 2.0-sat ); + } +} + +int main() +{ + int i, x, y; + double ThisTime; + double LastFPSTime = OGGetAbsoluteTime(); + double LastFrameTime = OGGetAbsoluteTime(); + double SecToWait; + int linesegs = 0; + uint32_t * pixelHueBackdrop = 0; + + CNFGBGColor = 0x400000; + CNFGDialogColor = 0x444444; + CNFGSetup( "Test Bench", 0, 0 ); + + //To make text look boldish + + while(1) + { + int i, pos; + float f; + iframeno++; + RDPoint pto[3]; + + CNFGHandleInput(); + + if( suspended ) { usleep(50000); continue; } + + CNFGClearFrame(); + CNFGGetDimensions( &screenx, &screeny ); + + if( ( screenx != pixelhueX || screeny != pixelhueY ) && screenx > 0 && screeny > 0) + { + pixelhueX = screenx; + pixelhueY = screeny; + pixelHueBackdrop = realloc( pixelHueBackdrop, pixelhueX * pixelhueY * 4 ); + int x, y; + for( y = 0; y < pixelhueY; y++ ) + for( x = 0; x < pixelhueX; x++ ) + { + pixelHueBackdrop[x+y*screenx] = PixelHue( x, y ); + } + } + + //This whole section does cool stuff with LEDs + int allledbytes = NUM_LEDS*4; + for( i = 0; i < allledbytes; i+=4 ) + { + uint32_t rk; + float sat = (OGGetAbsoluteTime() - colormodechangetime)*3.0; + + if( colormode ) + { + rk = PixelHue( lastmousex, lastmousey ); + } + else + { + rk = HSVtoHEX( i * 0.012+ iframeno* .01, (sat<1)?sat:1, 1.0 ); + } + + int white = (int)((1.-sat) * 255); + if( white > 255 ) white = 255; + if( white < 0 ) white = 0; + + Colorbuf[i+0] = rk>>8; + Colorbuf[i+1] = rk; + Colorbuf[i+2] = rk>>16; + Colorbuf[i+3] = white; + } + + + if( pixelHueBackdrop && colormode == 1 && mousedown ) + { + CNFGUpdateScreenWithBitmap( pixelHueBackdrop, pixelhueX, pixelhueY ); + } + else + { + int led = 0; + for( led = 0; led < NUM_LEDS; led++ ) + { + uint32_t col = ( Colorbuf[led*4+0] << 8) | ( Colorbuf[led*4+1] ) | ( Colorbuf[led*4+2] << 16); + CNFGColor( 0xff000000 | col ); + int sx = (led * screenx) / (NUM_LEDS); + CNFGTackRectangle( sx, 850, sx + screenx/(NUM_LEDS)+1, screeny ); + CNFGFlushRender(); + } + } + + if( deviceConnectionFD ) + { + //This section does the crazy wacky stuff to actually split the LEDs into HID Packets and get them out the door... Carefully. + int byrem = allledbytes; + int offset = 0; + for( i = 0; i < 2; i++ ) + { + uint8_t sendbuf[64]; + sendbuf[0] = (byrem > 60)?15:(byrem/4); + sendbuf[1] = offset; + + memcpy( sendbuf + 2, Colorbuf + offset*4, sendbuf[0]*4 ); + + offset += sendbuf[0]; + byrem -= sendbuf[0]*4; + + + if( byrem == 0 ) sendbuf[0] |= 0x80; + int tsend = 65; //Size of payload (must be 64+1 always) + + //Ok this looks weird, because Android has a bulkTransfer function, but that has a TON of layers of misdirection before it just calls the ioctl. + struct usbdevfs_bulktransfer ctrl; + memset(&ctrl, 0, sizeof(ctrl)); + ctrl.ep = 0x02; //Endpoint 0x02 is output endpoint. + ctrl.len = 64; + ctrl.data = sendbuf; + ctrl.timeout = 100; + lastFDWrite = ioctl(deviceConnectionFD, USBDEVFS_BULK, &ctrl); + if( lastFDWrite < 0 ) + { + DisconnectUSB(); + break; + } + usleep(1000); + } + + { + char * rxprintf = rettext; + uint8_t RXbuf[64]; + //Also read-back the properties. + struct usbdevfs_bulktransfer ctrl; + memset(&ctrl, 0, sizeof(ctrl)); + ctrl.ep = 0x81; //Endpoint 0x81 is input endpoint. + ctrl.len = 64; + ctrl.data = RXbuf; + ctrl.timeout = 100; + int lastfdread = ioctl(deviceConnectionFD, USBDEVFS_BULK, &ctrl); + rxprintf += sprintf( rxprintf, "RX: %d\n", lastfdread ); + if( lastfdread == 64 ) + { + int temperature = RXbuf[4] | (RXbuf[5]<<8); + int adc = RXbuf[6] | (RXbuf[7]<<8); + int voltage = RXbuf[8] | (RXbuf[9]<<8); + rxprintf += sprintf( rxprintf, "T: %d ADC: %d V: %d\n", temperature, adc, voltage ); + + int t; + CNFGColor( 0xffffffff ); + for( t = 0; t < 3; t++ ) + { + CNFGTackSegment( t * screenx / 3, RXbuf[20+t] * 50 + 1100, (t+1)*screenx/3, RXbuf[20+t] * 50 + 1100 ); + } + } + } + } + + + if( deviceConnectionFD == 0 ) + { + RequestPermissionOrGetConnectionFD( assettext, 0xabcd, 0xf410 ); + } + + CNFGPenX = 20; CNFGPenY = 200; + char st[2048]; + sprintf( st, "%dx%d %d %d %d %d - %d %d - %d\n%s\n%s", screenx, screeny, lastmousex, lastmousey, lastkey, lastkeydown, lastbid, lastmask, lastFDWrite, assettext, rettext ); + + CNFGColor( 0xff000000 ); + glLineWidth( 20.0f ); + CNFGDrawText( st, 10 ); + CNFGFlushRender(); + + CNFGColor( 0xFFFFFFFF ); + glLineWidth( 2.0f ); + CNFGDrawText( st, 10 ); + CNFGFlushRender(); + + + // Square behind text + + frames++; + CNFGSwapBuffers(); + + ThisTime = OGGetAbsoluteTime(); + if( ThisTime > LastFPSTime + 1 ) + { + printf( "FPS: %d\n", frames ); + frames = 0; + linesegs = 0; + LastFPSTime+=1; + } + } + + return(0); +} + + + + + + + + + + + + + +unsigned long HSVtoHEX( float hue, float sat, float value ) +{ + float pr = 0; + float pg = 0; + float pb = 0; + + short ora = 0; + short og = 0; + short ob = 0; + + float ro = fmod( hue * 6, 6. ); + + float avg = 0; + + ro = fmod( ro + 6 + 1, 6 ); //Hue was 60* off... + + if( ro < 1 ) //yellow->red + { + pr = 1; + pg = 1. - ro; + } else if( ro < 2 ) + { + pr = 1; + pb = ro - 1.; + } else if( ro < 3 ) + { + pr = 3. - ro; + pb = 1; + } else if( ro < 4 ) + { + pb = 1; + pg = ro - 3; + } else if( ro < 5 ) + { + pb = 5 - ro; + pg = 1; + } else + { + pg = 1; + pr = ro - 5; + } + + //Actually, above math is backwards, oops! + pr *= value; + pg *= value; + pb *= value; + + avg += pr; + avg += pg; + avg += pb; + + pr = pr * sat + avg * (1.-sat); + pg = pg * sat + avg * (1.-sat); + pb = pb * sat + avg * (1.-sat); + + ora = pr * 255; + og = pb * 255; + ob = pg * 255; + + if( ora < 0 ) ora = 0; + if( ora > 255 ) ora = 255; + if( og < 0 ) og = 0; + if( og > 255 ) og = 255; + if( ob < 0 ) ob = 0; + if( ob > 255 ) ob = 255; + + return (ob<<16) | (og<<8) | ora; +} + + + diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 22f0e58..c474fb4 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 22f0e58a4df57c6a6b5fa05665a6d454e597e2da +Subproject commit c474fb4c0a81a3d460125ce275c5dc7d96eba0b5 diff --git a/colorchord2/colorchord.exe b/colorchord2/colorchord.exe deleted file mode 100755 index 80f46ba9c29293af9aefc570e204a30832ae88c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777270 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

24hEepD&3}_2>*Yr`3(!$(-0P#W@i~t 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%0AwyRGb8gtaQ;^mTmYeAc>v@Rs0f3?0!C0; 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%0AjvDj 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

P(SU$ChNE=f$z294%0NbSXw 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�W|v;_x~Zo)qkywtp8RpssB04*6?`B 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 PZ^vY2U}E_BpPK;y=Z0-& literal 0 HcmV?d00001 diff --git a/docs/TheoryOfCCDFT/test.py b/docs/TheoryOfCCDFT/test.py new file mode 100644 index 0000000..d0f66e5 --- /dev/null +++ b/docs/TheoryOfCCDFT/test.py @@ -0,0 +1,16 @@ +import struct +import numpy as np +from scipy import signal as sg +import soundfile as sf + +Fs = 44100 +freq = 40 +chop = 200 +samples = 44100 + +x = np.arange(samples) +y = 10000 * np.sin(2 * np.pi * freq * x / Fs) +c = sg.square(2 * np.pi * chop * x / Fs) + +sf.write("chop.wav", (y * c).astype(np.int16), samplerate = Fs) + From 06550941849a5c69c73da5adfa9f6bee2696bb7d Mon Sep 17 00:00:00 2001 From: cnlohr Date: Thu, 14 May 2020 16:06:06 -0700 Subject: [PATCH 030/162] Use more universal android version by default. --- colorchord2/android/AndroidManifest.xml | 4 ++-- colorchord2/android/rawdrawandroid | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 27265e1..bc63801 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,12 +1,12 @@ + android:versionCode="6"> - + diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index 352f6cf..6dd3d68 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit 352f6cf6ea2d341a8c364762d93a79d5af5f028f +Subproject commit 6dd3d68499e8a4d7a05afbb5f9ace2adb51982d9 From b1cbdc65c1062db5aeeb7297a2fa9b3d47afd9b3 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Thu, 14 May 2020 16:11:03 -0700 Subject: [PATCH 031/162] Undo version bump --- colorchord2/android/AndroidManifest.xml | 4 ++-- colorchord2/android/Makefile | 2 ++ colorchord2/android/rawdrawandroid | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index bc63801..27265e1 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,12 +1,12 @@ + android:versionCode="5"> - + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index 999f589..883f7e4 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -7,6 +7,8 @@ CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon \ -ffunction-sections -Os -s -DPRINTF_NO_OVERRIDDE -fvisibility=hidden \ -DRDALOGFNCB=example_log_function +#ANDROIDVERSION=24 + LDFLAGS:=-s -lOpenSLES CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../hook.c ../outdrivers.c ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index 6dd3d68..c9700f4 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit 6dd3d68499e8a4d7a05afbb5f9ace2adb51982d9 +Subproject commit c9700f455e17ff3db9bb509c3f4cb54edfff81b0 From 8cd62f98b2a7e85325a3b398839977f91f65108c Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 14 May 2020 17:04:08 -0700 Subject: [PATCH 032/162] Update TheoryOfCCDFT.md --- docs/TheoryOfCCDFT.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/TheoryOfCCDFT.md b/docs/TheoryOfCCDFT.md index 5a356ae..255a979 100644 --- a/docs/TheoryOfCCDFT.md +++ b/docs/TheoryOfCCDFT.md @@ -73,7 +73,7 @@ Will: (so ultimately, the exact values of the bins don't really matter, but it's CaiB: Sorry, I meant one peak in frequency content at `108hz` would mean bins `90hz` and `120hz` see lower numbers than an input with content at `100hz` and `110hz`, where `90hz` and `120hz` would see larger numbers. -Editorial Note from Charles: The section below is an extremely powerful concept. It's what ultimately took ColorChord from needing a GPU to being able to run on microcontrollers. +Editorial Note from Charles: The section below is an extremely powerful concept. It provides a significant speedup from needing a GPU to being able to run on a CPU. That and realizing we could progressively update. Will: Yeah, the spread of the distribution is important. And if you added more bins, you'd be able to see the distinction between `100hz+110hz` and `108hz` alone the expensive part of adding more resolution is adding more bins within a single octave, but there's a clever thing we can do to get all the octaves we can hear for only 2x the cost of doing a single octave. Effectively all of our base frequency bins are in the highest octave we care about. then by doing the 2x averaging i mentioned earlier, we get one octave lower. And by repeatedly averaging samples, we get additional octaves lower basically, think of it like this: * Every sample we calculate octave 8. @@ -171,7 +171,9 @@ Will: PS: the audio file above is generated using the method you mentioned above CaiB: Not quite, your square wave is -1 to 1, but I get the point. -Will: yeah, I agree that school can be a backwards way of approaching subjects if you can become interested in the subject first, and then learn the formality behind it, it can be a great way of figuring out how to apply things, but if you have to slog through the formality with no idea where you're going it's not exactly gonna instill a love of the subject. Yup, so it is, change the definition of `c` to be all that stuff `+1` and it'll be what you were talking about. Doesn't sound much different though. (see chop2.wav / chop2.png) +Will: yeah, I agree that school can be a backwards way of approaching subjects if you can become interested in the subject first, and then learn the formality behind it, it can be a great way of figuring out how to apply things, but if you have to slog through the formality with no idea where you're going it's not exactly gonna instill a love of the subject. Yup, so it is, change the definition of `c` to be all that stuff `+1` and it'll be what you were talking about. Doesn't sound much different though. (see chop2.wav) + +![chopfast.png](https://raw.githubusercontent.com/cnlohr/colorchord/master/docs/TheoryOfCCDFT/chopfast.png) CaiB: It's more just that the methods taught are often so abstract it feels pointless. An entire class I took was just doing RLC-type circuit analysis using various methods like Laplace transforms. When in the real world, you just plug it into a calculator and will never use that unless you are the 0.1% of people who develop those calculators or other weird applications... 40 and 200 were a bad choice, speeding it up by 4x, you can definitely hear both tones. (See chopfast.wav) @@ -181,7 +183,7 @@ CaiB: Yeah, good enough. Will: Not "this is 40hz, now nothing, now 40hz, now nothing..." -CaiB: I mean, by the time it shows up, 200Hz changes would be completely smoothed to oblivion anyways. It's just steady this. (See cc-screenshot3.png) +CaiB: I mean, by the time it shows up, 200Hz changes would be completely smoothed to oblivion anyways. It's just steady this. ![cc-screenshot3.png](https://raw.githubusercontent.com/cnlohr/colorchord/master/docs/TheoryOfCCDFT/cc-screenshot3.png) Will: Yeah, what's happening in colorchord is that it squashes all the octaves together. From d4e19a6a12e9c265d08c22a49cfec07a91898f21 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:35:57 -0400 Subject: [PATCH 033/162] Added makefile to compile on Windows with clang --- colorchord2/windows/Makefile | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 colorchord2/windows/Makefile diff --git a/colorchord2/windows/Makefile b/colorchord2/windows/Makefile new file mode 100644 index 0000000..23983f7 --- /dev/null +++ b/colorchord2/windows/Makefile @@ -0,0 +1,33 @@ +all : colorchord + +OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o + +SRCS := ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c +SRCS += ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c +SRCS += ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../hook.c ../RecorderPlugin.c +SRCS += ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c ../hidapi.c ../DisplayHIDAPI.c + +WINGCC:= clang -fcolor-diagnostics + +WINGCCFLAGS:= -g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections +WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi + +RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext +LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt + + +CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= +EXTRALIBS:=-lusb-1.0 + +OBJS:=../main.o ../dft.o ../decompose.o ../filter.o ../color.o ../notefinder.o ../util.o ../outdrivers.o $(OUTS) ../parameters.o ../chash.o ../hook.o ../../embeddedcommon/DFT32.o ../configs.o + +colorchord : $(OBJS) + gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) + + +colorchord.exe : $(SRCS) + $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) + + +clean : + rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) From 4a3d06397b810a2d51e50079992948ab2c5dd0c4 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:48:19 -0400 Subject: [PATCH 034/162] Update main.c so that it matches latest code --- colorchord2/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index b80d5e9..81a5de1 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -429,7 +429,7 @@ int main(int argc, char ** argv) Now = OGGetAbsoluteTime(); double Last = Now; - while( !bQuitColorChord ) + while( !headless ) { char stt[1024]; //Handle Rawdraw frame swappign From 84ccaf60e02f43d9c1ce4597682089ded6f289a8 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:49:01 -0400 Subject: [PATCH 035/162] Update Makefile to compile with clang --- colorchord2/windows/Makefile | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/colorchord2/windows/Makefile b/colorchord2/windows/Makefile index 23983f7..0701174 100644 --- a/colorchord2/windows/Makefile +++ b/colorchord2/windows/Makefile @@ -1,4 +1,4 @@ -all : colorchord +all : colorchord.exe OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o @@ -15,19 +15,10 @@ WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt - -CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= -EXTRALIBS:=-lusb-1.0 - OBJS:=../main.o ../dft.o ../decompose.o ../filter.o ../color.o ../notefinder.o ../util.o ../outdrivers.o $(OUTS) ../parameters.o ../chash.o ../hook.o ../../embeddedcommon/DFT32.o ../configs.o -colorchord : $(OBJS) - gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) - - colorchord.exe : $(SRCS) $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) - clean : rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) From ce1c86fa1b3f110f32d8843d4e0bab091c01074d Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:50:50 -0400 Subject: [PATCH 036/162] Make CNFA module point to CaiB's repo --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index ae541d5..0803dc3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = https://github.com/cnlohr/cnfa + url = https://github.com/CaiB/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid From d77eced8c59ff967e08ccfe1b0c5243d648b2c2d Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 22:47:20 -0400 Subject: [PATCH 037/162] Change sleep function --- colorchord2/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 81a5de1..7a16b2d 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -1,6 +1,6 @@ //Copyright 2015 <>< Charles Lohr under the ColorChord License. -#if defined(WIN32) || defined(USE_WINDOWS) +#if defined(WIN32) || defined(USE_WINDOWS) #include #include #endif @@ -417,7 +417,7 @@ int main(int argc, char ** argv) CNFGClearFrame(); CNFGDrawText( "Colorchord must be used with sound. Sound not available.", 10 ); CNFGSwapBuffers(); - sleep(1); + OGSleep(1); } while( 1 ); nf = CreateNoteFinder( sd->sps ); From 5fcc4b0881296e39ec6e7ccacbeaa8bb5ae9d33a Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 22:47:59 -0400 Subject: [PATCH 038/162] Added script to compile with clang on Windows --- colorchord2/windows/compile-clang.bat | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 colorchord2/windows/compile-clang.bat diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat new file mode 100644 index 0000000..6e66b9f --- /dev/null +++ b/colorchord2/windows/compile-clang.bat @@ -0,0 +1,11 @@ +set CC="C:\Program Files\LLVM\bin\clang.exe" +set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -Dstrdup=_strdup +set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 +set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi +set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ +../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ^ +../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../hook.c ../RecorderPlugin.c ^ +../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c ../hidapi.c ../DisplayHIDAPI.c + +@echo on +%CC% %CCFLAGS% %CCIFLAGS% -o colorchord.exe %SOURCES% %CCLFLAGS% From c27b90a1f2c0390e1c4cd23fff74ad4bdfda0963 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 15 May 2020 02:14:39 -0400 Subject: [PATCH 039/162] updated tcc build script --- colorchord2/windows/compile.bat | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index 79c0915..a492683 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -1,12 +1,22 @@ @echo off echo Unzip http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win64-bin.zip to C:\tcc echo Don't worry. It includes the i386 compiler in the win64 build. -set CFLAGS=-v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon -rdynamic -g + +set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g +set INCLUDES=-I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon set LDFLAGS=-lkernel32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 -set SOURCES=..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\DisplayNetwork.c ..\DisplayArray.c ..\DisplayHIDAPI.c ..\DisplayOUTDriver.c ..\DisplayPie.c ..\filter.c ..\hidapi.c ..\hook.c ..\main.c ..\outdrivers.c ..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c ..\parameters.c ..\util.c ..\notefinder.c ..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c -set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll -set CC=C:\tcc\i386-win32-tcc.exe + +rem lots of source files +set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ +..\outdrivers.c ..\hidapi.c ..\hook.c ..\parameters.c ..\util.c ..\notefinder.c ^ +..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c ^ +..\DisplayNetwork.c ..\DisplayArray.c ..\DisplayHIDAPI.c ..\DisplayOUTDriver.c ..\DisplayPie.c ^ +..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c + +set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll -Dstrdup=_strdup -DWIN32_LEAN_AND_MEAN +set CC=C:\tcc\tcc.exe +rem set CC=C:\tcc\i386-win32-tcc.exe rem set CC=C:\tcc\x86_64-win32-tcc.exe @echo on -%CC% %CFLAGS% %ARCH_SPECIFIC% %SOURCES% %LDFLAGS% -o ..\colorchord.exe +%CC% %CFLAGS% %INCLUDES% %ARCH_SPECIFIC% %SOURCES% %LDFLAGS% -o ..\colorchord.exe pause From 457f9797231e2a5fd8386c2d0d84f704d63f4a1e Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 15 May 2020 02:15:21 -0400 Subject: [PATCH 040/162] cnfa points to my repo --- .gitmodules | 2 +- colorchord2/cnfa | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0803dc3..7008f08 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = https://github.com/CaiB/cnfa + url = git@github.com:sellicott/cnfa.git [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 6c9dd09..d3f16d2 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 6c9dd0901ba034577dea72f86756f3ac2f748862 +Subproject commit d3f16d2edbdca273a5bc8fab7df781ed37827f4b From 184dd91a679476e03ad5bd48d2c8055d55445e61 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 15 May 2020 02:15:38 -0400 Subject: [PATCH 041/162] this still needs some cleanup --- colorchord2/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/colorchord2/main.c b/colorchord2/main.c index 7a16b2d..be0f841 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -3,6 +3,7 @@ #if defined(WIN32) || defined(USE_WINDOWS) #include #include +#define strdup _strdup #endif #include From c51221b4fd70a327a1ab7b711d231eaec44d00b9 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 15 May 2020 18:52:57 -0400 Subject: [PATCH 042/162] Added necessary library to build --- colorchord2/windows/compile.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index a492683..c5b3364 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -4,7 +4,7 @@ echo Don't worry. It includes the i386 compiler in the win64 build. set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g set INCLUDES=-I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon -set LDFLAGS=-lkernel32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 +set LDFLAGS=-lkernel32 -lOle32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 rem lots of source files set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ From 328852d9e94cd15280f606052ede5096d4956b3e Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:35:49 -0400 Subject: [PATCH 043/162] fix reversal in fread input arguments --- colorchord2/configs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/colorchord2/configs.c b/colorchord2/configs.c index dadb57f..2c26c03 100644 --- a/colorchord2/configs.c +++ b/colorchord2/configs.c @@ -31,12 +31,12 @@ void LoadFile( const char * filename ) int size = ftell( f ); fseek( f, 0, SEEK_SET ); buffer = malloc( size + 1 ); - r = fread( buffer, size, 1, f ); + r = fread( buffer, 1, size, f); fclose( f ); buffer[size] = 0; - if( r != 1 ) + if( r != size ) { - fprintf( stderr, "Warning: %d bytes read. Expected: %d from file %s\n", r, size, filename ); + fprintf( stderr, "Warning: %d bytes read. Expected: %d from file %s\n", r, size, filename ); } else { From 4c3b7b294a972b731e84244c96386b6d879a420e Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:39:22 -0400 Subject: [PATCH 044/162] Call necessary registration functions --- colorchord2/main.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index be0f841..177a9fa 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -312,6 +312,24 @@ void HandleResume() int main(int argc, char ** argv) { int i; +#if defined(__TINYC__) + // zero out the drivers list + for ( int ii = 0; i< MAX_OUT_DRIVERS; ++i) { + ODList[i].Name = NULL; + ODList[i].Init = NULL; + } + + + REGISTERheadless(); + REGISTERset_screenx(); + REGISTERset_screeny(); + REGISTERsound_source(); + REGISTERcpu_autolimit(); + REGISTERcpu_autolimit_interval(); + REGISTERsample_channel(); + REGISTERshowfps(); +#endif + #ifdef TCC void ManuallyRegisterDevices(); @@ -328,7 +346,8 @@ int main(int argc, char ** argv) WSAStartup(0x202, &wsaData); - strcpy( sound_source, "WIN" ); + REGISTERcnfa_wasapi(); + strcpy( sound_source, "WASAPI" ); #elif defined( ANDROID ) strcpy( sound_source, "ANDROID" ); From 1eb42353bd4adf3af949b4ce4697acae0c2435e1 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:40:17 -0400 Subject: [PATCH 045/162] Added logging output --- colorchord2/parameters.c | 1 + 1 file changed, 1 insertion(+) diff --git a/colorchord2/parameters.c b/colorchord2/parameters.c index 3800694..05ae639 100644 --- a/colorchord2/parameters.c +++ b/colorchord2/parameters.c @@ -137,6 +137,7 @@ static int SetParameter( struct Param * p, const char * str ) void RegisterValue( const char * name, enum ParamType t, void * ptr, int size ) { + printf("[SDE] Registering parameter %s\n", name); Init(); struct Param * p = (struct Param*)HashGetEntry( parameters, name ); From f9ed8625087b6198442e9e2ddce06c664f21d109 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:40:45 -0400 Subject: [PATCH 046/162] Make function prototype match implemented function --- colorchord2/outdrivers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/outdrivers.h b/colorchord2/outdrivers.h index 44db767..0a39d4d 100644 --- a/colorchord2/outdrivers.h +++ b/colorchord2/outdrivers.h @@ -37,7 +37,7 @@ extern struct OutDriverListElem ODList[MAX_OUT_DRIVERS]; extern const char OutDriverParameters[MAX_OUT_DRIVER_STRING]; //Pass setup "name=[driver]" -struct DriverInstances * SetupOutDriver( ); +struct DriverInstances * SetupOutDriver( const char * drivername ); void RegOutDriver( const char * ron, struct DriverInstances * (*Init)( ) ); #define REGISTER_OUT_DRIVER( name ) \ From 3402711e6f485d001b193687405cddc253da8889 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:41:20 -0400 Subject: [PATCH 047/162] Slightly change build scripts --- colorchord2/windows/compile-clang.bat | 2 +- colorchord2/windows/compile.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 6e66b9f..fb87658 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -8,4 +8,4 @@ set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefin ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c ../hidapi.c ../DisplayHIDAPI.c @echo on -%CC% %CCFLAGS% %CCIFLAGS% -o colorchord.exe %SOURCES% %CCLFLAGS% +%CC% %CCFLAGS% %CCIFLAGS% -o ../colorchord.exe %SOURCES% %CCLFLAGS% diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index c5b3364..f8f48cc 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -4,7 +4,7 @@ echo Don't worry. It includes the i386 compiler in the win64 build. set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g set INCLUDES=-I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon -set LDFLAGS=-lkernel32 -lOle32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 +set LDFLAGS=-lkernel32 -lole32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 rem lots of source files set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ From 0288cec7130c126dd57bce31d7e02a90c17a3d60 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:42:46 -0400 Subject: [PATCH 048/162] bump submodule --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index d3f16d2..38a0235 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit d3f16d2edbdca273a5bc8fab7df781ed37827f4b +Subproject commit 38a023556310f0377c6b3d6c2f7a3106ff7e14ef From 4c229fbe279a008703424684e8d67b60f1ebc375 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:50:20 -0400 Subject: [PATCH 049/162] switch submodule to https --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 7008f08..0bc1620 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = git@github.com:sellicott/cnfa.git + url = https://github.com:sellicott/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid From 2bbeb2d7df328f3a2adca94f3ae0f0e553681689 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 02:55:01 -0400 Subject: [PATCH 050/162] fixed bad URL --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 0bc1620..ed613bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = https://github.com:sellicott/cnfa + url = https://github.com/sellicott/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid From c7f058b72b70367ee789a2973c5197a54a0ce14c Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 16 May 2020 03:21:25 -0400 Subject: [PATCH 051/162] bump submodule version --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 38a0235..cdffc38 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 38a023556310f0377c6b3d6c2f7a3106ff7e14ef +Subproject commit cdffc38b0193174f6c416c32189da380b9c84701 From fb212a8d2f2dabf8be36754f48861be9281165a0 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sat, 16 May 2020 22:57:17 -0700 Subject: [PATCH 052/162] Try supporting back to version 26. --- colorchord2/android/AndroidManifest.xml | 7 +++++-- colorchord2/android/Makefile | 2 +- colorchord2/android/rawdrawandroid | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 27265e1..8d08c57 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,12 +1,15 @@ + android:versionCode="6"> + + - + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index 883f7e4..891bb38 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -7,7 +7,7 @@ CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon \ -ffunction-sections -Os -s -DPRINTF_NO_OVERRIDDE -fvisibility=hidden \ -DRDALOGFNCB=example_log_function -#ANDROIDVERSION=24 +ANDROIDVERSION=28 LDFLAGS:=-s -lOpenSLES diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index c9700f4..d2e62b7 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit c9700f455e17ff3db9bb509c3f4cb54edfff81b0 +Subproject commit d2e62b7ff7dcb317f7a298ea788bdbac4c7b81a1 From b6e95238952b4c2ea47a6513137140e01f4a6224 Mon Sep 17 00:00:00 2001 From: CaiB Date: Sun, 17 May 2020 15:14:03 +0900 Subject: [PATCH 053/162] Small tweaks to platform-dependent behaviour --- colorchord2/main.c | 13 ++++++++++--- colorchord2/windows/compile.bat | 3 ++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 177a9fa..4b96829 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -3,7 +3,6 @@ #if defined(WIN32) || defined(USE_WINDOWS) #include #include -#define strdup _strdup #endif #include @@ -346,8 +345,12 @@ int main(int argc, char ** argv) WSAStartup(0x202, &wsaData); + #ifdef TCC + REGISTERWinCNFA(); REGISTERcnfa_wasapi(); - strcpy( sound_source, "WASAPI" ); + #endif + + strcpy( sound_source, "WASAPI" ); // Use either "sound_source=WASAPI" or "sound_source=WIN" in config file. #elif defined( ANDROID ) strcpy( sound_source, "ANDROID" ); @@ -449,7 +452,11 @@ int main(int argc, char ** argv) Now = OGGetAbsoluteTime(); double Last = Now; - while( !headless ) + #ifdef ANDROID + while(!bQuitColorChord) + #else + while(!headless) + #endif { char stt[1024]; //Handle Rawdraw frame swappign diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index f8f48cc..9ab2847 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -19,4 +19,5 @@ rem set CC=C:\tcc\i386-win32-tcc.exe rem set CC=C:\tcc\x86_64-win32-tcc.exe @echo on %CC% %CFLAGS% %INCLUDES% %ARCH_SPECIFIC% %SOURCES% %LDFLAGS% -o ..\colorchord.exe -pause +@echo off +pause \ No newline at end of file From e1896cf8d91a85da6ff3a0dbd898d09c7d24fd0c Mon Sep 17 00:00:00 2001 From: CaiB Date: Sun, 17 May 2020 15:46:51 +0900 Subject: [PATCH 054/162] Updating CNFA --- .gitmodules | 2 +- colorchord2/cnfa | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index ed613bb..0803dc3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = https://github.com/sellicott/cnfa + url = https://github.com/CaiB/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid diff --git a/colorchord2/cnfa b/colorchord2/cnfa index cdffc38..22ace63 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit cdffc38b0193174f6c416c32189da380b9c84701 +Subproject commit 22ace63aab14507daada024767ad0fa10a67894c From 92f765817c7ed93605d6bb9c59f948d21d501a7c Mon Sep 17 00:00:00 2001 From: CaiB Date: Sun, 17 May 2020 17:28:16 +0900 Subject: [PATCH 055/162] Adding new required DLL reference, and updating CNFA --- colorchord2/cnfa | 2 +- colorchord2/windows/compile-clang.bat | 2 +- colorchord2/windows/compile.bat | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 22ace63..465e394 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 22ace63aab14507daada024767ad0fa10a67894c +Subproject commit 465e394f5efa13fc8f9c9fd2c011abd2a4acf0f7 diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index fb87658..0fcb356 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,7 +1,7 @@ set CC="C:\Program Files\LLVM\bin\clang.exe" set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -Dstrdup=_strdup set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 -set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi +set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ^ ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../hook.c ../RecorderPlugin.c ^ diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index 9ab2847..9ee0d80 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -4,7 +4,7 @@ echo Don't worry. It includes the i386 compiler in the win64 build. set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g set INCLUDES=-I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon -set LDFLAGS=-lkernel32 -lole32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 +set LDFLAGS=-lkernel32 -lole32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 -lAvrt rem lots of source files set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ From 13ab20b1fcf35390b5c19557b640565011a8495f Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 17 May 2020 03:06:42 -0700 Subject: [PATCH 056/162] bump submodule --- colorchord2/android/rawdrawandroid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index d2e62b7..64548dc 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit d2e62b7ff7dcb317f7a298ea788bdbac4c7b81a1 +Subproject commit 64548dce184f2888a582cf194116c98cb7d3a964 From 4dfeb870b77d83f31ac8c87d91756b66e8e5eaa2 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 17 May 2020 05:11:32 -0700 Subject: [PATCH 057/162] Allow ColorChord to run down to Android 5.1 (SDK 22) --- colorchord2/android/AndroidManifest.xml | 4 ++-- colorchord2/android/Makefile | 3 ++- colorchord2/android/rawdrawandroid | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 8d08c57..4acec47 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="8"> - diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index 891bb38..b9c3df1 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -7,7 +7,8 @@ CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon \ -ffunction-sections -Os -s -DPRINTF_NO_OVERRIDDE -fvisibility=hidden \ -DRDALOGFNCB=example_log_function -ANDROIDVERSION=28 +ANDROIDVERSION=22 +ANDROIDTARGET=28 LDFLAGS:=-s -lOpenSLES diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index 64548dc..aa42f6f 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit 64548dce184f2888a582cf194116c98cb7d3a964 +Subproject commit aa42f6fcb13e6b3616f671d3164e979cbbf63219 From 9c85dd87f2ec705e4439812fc3dfa76054e08711 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 17 May 2020 05:41:13 -0700 Subject: [PATCH 058/162] TAG FOR RELEASE 8 Fix name of config file. --- .../android/{colorchord-android.conf => colorchord-android.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename colorchord2/android/{colorchord-android.conf => colorchord-android.txt} (100%) diff --git a/colorchord2/android/colorchord-android.conf b/colorchord2/android/colorchord-android.txt similarity index 100% rename from colorchord2/android/colorchord-android.conf rename to colorchord2/android/colorchord-android.txt From ffc4ac5d4189b73db7bf6ff39fc5113536e59426 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sun, 17 May 2020 19:19:21 -0400 Subject: [PATCH 059/162] Force float constants for TCC --- colorchord2/color.c | 70 ++++++++++++++++++++++----------------------- colorchord2/main.c | 3 +- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/colorchord2/color.c b/colorchord2/color.c index cd8a179..286d042 100644 --- a/colorchord2/color.c +++ b/colorchord2/color.c @@ -9,23 +9,23 @@ uint32_t CCtoHEX( float note, float sat, float value ) { float hue = 0.0; note = fmodf( note, 1.0 ); - note *= 12; - if( note < 4 ) + note *= 12.0; + if( note < 4.0 ) { //Needs to be YELLOW->RED - hue = (4 - note) / 24.0; + hue = (4.0 - note) / 24.0; } - else if( note < 8 ) + else if( note < 8.0 ) { // [4] [8] //Needs to be RED->BLUE - hue = ( 4 - note ) / 12.0; + hue = ( 4.0 - note ) / 12.0; } else { // [8] [12] //Needs to be BLUE->YELLOW - hue = ( 12 - note ) / 8.0 + 1./6.; + hue = ( 12.0 - note ) / 8.0 + 1.0/6.0; } return HSVtoHEX( hue, sat, value ); } @@ -41,44 +41,44 @@ uint32_t CCtoHEX( float note, float sat, float value ) uint32_t HSVtoHEX( float hue, float sat, float value ) { - float pr = 0; - float pg = 0; - float pb = 0; + float pr = 0.0; + float pg = 0.0; + float pb = 0.0; - short ora = 0; - short og = 0; - short ob = 0; + short ora = 0.0; + short og = 0.0; + short ob = 0.0; - float ro = fmod( hue * 6, 6. ); + float ro = fmod( hue * 6.0, 6.0 ); - float avg = 0; + float avg = 0.0; - ro = fmod( ro + 6 + 1, 6 ); //Hue was 60* off... + ro = fmod( ro + 6.0 + 1.0, 6.0 ); //Hue was 60* off... - if( ro < 1 ) //yellow->red + if( ro < 1.0 ) //yellow->red { - pr = 1; - pg = 1. - ro; - } else if( ro < 2 ) + pr = 1.0; + pg = 1.0 - ro; + } else if( ro < 2.0 ) { - pr = 1; - pb = ro - 1.; - } else if( ro < 3 ) + pr = 1.0; + pb = ro - 1.0; + } else if( ro < 3.0 ) { - pr = 3. - ro; - pb = 1; - } else if( ro < 4 ) + pr = 3.0 - ro; + pb = 1.0; + } else if( ro < 4.0 ) { - pb = 1; - pg = ro - 3; - } else if( ro < 5 ) + pb = 1.0; + pg = ro - 3.0; + } else if( ro < 5.0 ) { - pb = 5 - ro; - pg = 1; + pb = 5.0 - ro; + pg = 1.0; } else { - pg = 1; - pr = ro - 5; + pg = 1.0; + pr = ro - 5.0; } //Actually, above math is backwards, oops! @@ -90,9 +90,9 @@ uint32_t HSVtoHEX( float hue, float sat, float value ) avg += pg; avg += pb; - pr = pr * sat + avg * (1.-sat); - pg = pg * sat + avg * (1.-sat); - pb = pb * sat + avg * (1.-sat); + pr = pr * sat + avg * (1.0-sat); + pg = pg * sat + avg * (1.0-sat); + pb = pb * sat + avg * (1.0-sat); ora = pr * 255; og = pb * 255; diff --git a/colorchord2/main.c b/colorchord2/main.c index 4b96829..c1869ea 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -533,7 +533,8 @@ int main(int argc, char ** argv) { //printf( "%f %f /", note_positions[i], note_amplitudes[i] ); if( nf->note_amplitudes_out[i] < 0 ) continue; - CNFGDialogColor = CCtoHEX( (nf->note_positions[i] / freqbins), 1.0, 1.0 ); + float note = (float) nf->note_positions[i] / freqbins; + CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( ((float)i / note_peaks) * screenx, 480 - nf->note_amplitudes_out[i] * 100, ((float)(i+1) / note_peaks) * screenx, 480 ); CNFGPenX = ((float)(i+.4) / note_peaks) * screenx; CNFGPenY = screeny - 30; From 9029c87c9684d67becce819eeaf7861af111b022 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sun, 17 May 2020 19:22:57 -0400 Subject: [PATCH 060/162] Make a function to manually register parameters. --- colorchord2/main.c | 62 ++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index c1869ea..53421f4 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -143,9 +143,9 @@ int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); char sound_source[16]; REGISTER_PARAM( sound_source, PABUFFER ); int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); -float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); -int sample_channel = -1;REGISTER_PARAM( sample_channel, PAINT ); -int showfps = 1; REGISTER_PARAM( showfps, PAINT ); +float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); +int sample_channel = -1; REGISTER_PARAM( sample_channel, PAINT ); +int showfps = 1; REGISTER_PARAM( showfps, PAINT ); #if defined(ANDROID) || defined( __android__ ) float in_amplitude = 2; @@ -308,17 +308,11 @@ void HandleResume() } #endif -int main(int argc, char ** argv) -{ - int i; -#if defined(__TINYC__) - // zero out the drivers list - for ( int ii = 0; i< MAX_OUT_DRIVERS; ++i) { - ODList[i].Name = NULL; - ODList[i].Init = NULL; - } +// function for calling initilization functions if we are using TCC +#ifdef TCC +void RegisterConstructorFunctions(){ - + // Basic Window stuff REGISTERheadless(); REGISTERset_screenx(); REGISTERset_screeny(); @@ -327,12 +321,43 @@ int main(int argc, char ** argv) REGISTERcpu_autolimit_interval(); REGISTERsample_channel(); REGISTERshowfps(); + REGISTERin_amplitude(); + + // Audio stuff + REGISTERNullCNFA(); + REGISTERWinCNFA(); + REGISTERcnfa_wasapi(); + + // Video Stuff + REGISTERnull(); + REGISTERDisplayArray(); + //REGISTERDisplayDMX(); + //REGISTERDisplayFileWrite(); + REGISTERDisplayHIDAPI(); + REGISTERDisplayNetwork(); + REGISTERDisplayOutDriver(); + REGISTERDisplayPie(); + //REGISTERDisplaySHM(); + + // Output stuff + //REGISTERDisplayUSB2812(); + REGISTEROutputCells(); + REGISTEROutputLinear(); + REGISTEROutputProminent(); + REGISTEROutputVoronoi(); + //REGISTERRecorderPlugin(); + + //void ManuallyRegisterDevices(); + //ManuallyRegisterDevices(); +} #endif +int main(int argc, char ** argv) +{ + int i; #ifdef TCC - void ManuallyRegisterDevices(); - ManuallyRegisterDevices(); + RegisterConstructorFunctions(); #endif printf( "Output Drivers:\n" ); @@ -345,10 +370,6 @@ int main(int argc, char ** argv) WSAStartup(0x202, &wsaData); - #ifdef TCC - REGISTERWinCNFA(); - REGISTERcnfa_wasapi(); - #endif strcpy( sound_source, "WASAPI" ); // Use either "sound_source=WASAPI" or "sound_source=WIN" in config file. #elif defined( ANDROID ) @@ -657,6 +678,3 @@ int main(int argc, char ** argv) } } - - - From cddec68e5b100b0860cdec6d96bcde611cd8dca4 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sun, 17 May 2020 19:23:35 -0400 Subject: [PATCH 061/162] Remove debugging printf. --- colorchord2/parameters.c | 1 - 1 file changed, 1 deletion(-) diff --git a/colorchord2/parameters.c b/colorchord2/parameters.c index 05ae639..3800694 100644 --- a/colorchord2/parameters.c +++ b/colorchord2/parameters.c @@ -137,7 +137,6 @@ static int SetParameter( struct Param * p, const char * str ) void RegisterValue( const char * name, enum ParamType t, void * ptr, int size ) { - printf("[SDE] Registering parameter %s\n", name); Init(); struct Param * p = (struct Param*)HashGetEntry( parameters, name ); From d10255bb610079ee5d727c84251c28ba025637f8 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sun, 17 May 2020 19:24:43 -0400 Subject: [PATCH 062/162] Make clang not use windows headers --- colorchord2/windows/compile-clang.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 0fcb356..648872f 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,5 +1,5 @@ set CC="C:\Program Files\LLVM\bin\clang.exe" -set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -Dstrdup=_strdup +set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -Dstrdup=_strdup -DNO_WIN_HEADERS set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ From af7afd6af56121ad2aec8069992c438a671bc25b Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sun, 17 May 2020 19:25:17 -0400 Subject: [PATCH 063/162] Make vscode settings file --- colorchord2/.vscode/c_cpp_properties.json | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 colorchord2/.vscode/c_cpp_properties.json diff --git a/colorchord2/.vscode/c_cpp_properties.json b/colorchord2/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..ef9161d --- /dev/null +++ b/colorchord2/.vscode/c_cpp_properties.json @@ -0,0 +1,26 @@ +{ + "configurations": [ + { + "name": "Win32", + "includePath": [ + "${workspaceFolder}/**", + "${workspaceFolder}/../embeddedcommon" + ], + "defines": [ + "_DEBUG", + "UNICODE", + "_UNICODE", + "CNFA_IMPLEMENTATION", + "__TINYC__", + "TCC", + "NO_WIN_HEADERS" + ], + "windowsSdkVersion": "10.0.17763.0", + "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe", + "cStandard": "c11", + "cppStandard": "c++17", + "intelliSenseMode": "msvc-x64" + } + ], + "version": 4 +} \ No newline at end of file From df06ca12d724244d924040ef1d640a67cf68c261 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 18 May 2020 14:05:24 -0700 Subject: [PATCH 064/162] Bump to new CNFA subsystem --- colorchord2/cnfa | 2 +- colorchord2/main.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 6c9dd09..8fed9b6 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 6c9dd0901ba034577dea72f86756f3ac2f748862 +Subproject commit 8fed9b680a217afabd0d9ce4b459499d370a0719 diff --git a/colorchord2/main.c b/colorchord2/main.c index b80d5e9..a5ed20d 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -227,7 +227,7 @@ void HandleMotion( int x, int y, int mask ) { } -void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int samplesp ) +void SoundCB( struct CNFADriver * sd, short * in, short * out, int framesr, int framesp ) { int channelin = sd->channelsRec; int channelout = sd->channelsPlay; @@ -241,7 +241,7 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int if( in ) { - for( i = 0; i < samplesr; i++ ) + for( i = 0; i < framesr; i++ ) { if( sample_channel < 0 ) { @@ -280,17 +280,17 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int } } - SoundEventHappened( samplesr, in, 0, channelin ); + SoundEventHappened( framesr, in, 0, channelin ); } if( out ) { - for( j = 0; j < samplesp * channelout; j++ ) + for( j = 0; j < framesp * channelout; j++ ) { out[j] = 0; } - SoundEventHappened( samplesp, out, 1, channelout ); + SoundEventHappened( framesp, out, 1, channelout ); } @@ -407,7 +407,7 @@ int main(int argc, char ** argv) //Initialize Sound sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), - GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ) ); + GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ), 0 ); if( sd ) break; From 911f60ae560b9eca668efdde265ed99ae704f3ee Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 18 May 2020 15:25:20 -0700 Subject: [PATCH 065/162] Update submodules --- colorchord2/android/rawdrawandroid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index aa42f6f..77d3e69 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit aa42f6fcb13e6b3616f671d3164e979cbbf63219 +Subproject commit 77d3e699fa304462af1a39414deeaac9c24f4131 From 9d11a76f69eaa463155762b9c1b541c530745635 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 18 May 2020 15:29:35 -0700 Subject: [PATCH 066/162] Switch search paths + update CNFA --- colorchord2/cnfa | 2 +- colorchord2/configs.c | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 8fed9b6..f34087c 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 8fed9b680a217afabd0d9ce4b459499d370a0719 +Subproject commit f34087cf216cfa8a885fde616659fef3e862c048 diff --git a/colorchord2/configs.c b/colorchord2/configs.c index dadb57f..419e6b7 100644 --- a/colorchord2/configs.c +++ b/colorchord2/configs.c @@ -48,16 +48,19 @@ void LoadFile( const char * filename ) void SetEnvValues( int force ) { - int i; + static int ifcheck; int hits = 0; - for( i = 0; i < InitialFileCount; i++ ) + + if( InitialFileCount ) { - double ft = OGGetFileTime( InitialFile[i] ); - if( FileTimes[i] != ft ) + //Only check one location per frame. + double ft = OGGetFileTime( InitialFile[ifcheck] ); + if( FileTimes[ifcheck] != ft ) { - FileTimes[i] = ft; + FileTimes[ifcheck] = ft; hits++; } + ifcheck = ( ifcheck + 1 ) % InitialFileCount; } if( !hits && !force ) return; @@ -109,6 +112,7 @@ void SetEnvValues( int force ) printf( "On Android, looking for configuration file in: %s\n", InitialFile[0] ); #endif + int i; for( i = 0; i < InitialFileCount; i++ ) { LoadFile( InitialFile[i] ); @@ -151,8 +155,10 @@ void SetupConfigs() { #ifdef ANDROID InitialFile[0] = "/sdcard/colorchord-android.txt"; - InitialFile[1] = "/sdcard/colorchord-android-overlay.txt"; - InitialFileCount = 2; + InitialFile[1] = "/storage/emulated/0/colorchord-android.txt"; + InitialFile[2] = "/sdcard/colorchord-android-overlay.txt"; + InitialFile[3] = "/storage/emulated/0/colorchord-android-overlay.txt"; + InitialFileCount = 4; #else InitialFile[0] = "default.conf"; #endif From 8449e772a0ef48306f90fc2fce86f17e0d3aa652 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 18 May 2020 15:46:22 -0700 Subject: [PATCH 067/162] Bump submodule --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index f34087c..15c95d4 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit f34087cf216cfa8a885fde616659fef3e862c048 +Subproject commit 15c95d49771c237b90b878b5ced163de575d9406 From 3c2c0d7fc9d87822455909b2ecf1cd31cd19520f Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 18 May 2020 15:47:12 -0700 Subject: [PATCH 068/162] Update .gitignore to ignore object files. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3841a63..6f6ec79 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ colorchord2/windows/colorchord.def -colorchord2/colorchord.def \ No newline at end of file +colorchord2/colorchord.def +*.o From 6fdbe1df893a756b281637937c0db3cfa53c79e6 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Mon, 18 May 2020 22:15:19 -0400 Subject: [PATCH 069/162] Edit the default configuration --- colorchord2/default.conf | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/colorchord2/default.conf b/colorchord2/default.conf index c8d2a9d..a568eae 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -22,15 +22,17 @@ wininput = -1 #Compiled version will default this. #sound_source = ALSA -#-1 indicates left and right, 0 left, 1 right. +#-1 indicates left and right, 0 left, 1 right. sample_channel = -1 -sourcename = default -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -#default +devplay = default +devrecord = default + +# For Linux mostly use the following command to find valid devices to read from: +# pactl list | grep pci- | grep monitor +# alsa_output.pci-0000_00_1f.3.analog-stereo.monitor # alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor << New laptop -#use pactl list | grep pci- | grep monitor +# alsa_output.pci-0000_00_1f.3.analog-stereo.monitor << New laptop ################################## # General ColorChord properties. # @@ -41,7 +43,7 @@ amplify = 2.0 # What is the base note? I.e. the lowest note. # Note that it won't have very much impact until an octave up though! -base_hz = 55 +base_hz = 55 # This is only used when dealing with the slow decompose (now defunct) # decompose_iterations = 1000 @@ -88,8 +90,9 @@ note_out_chop = 0.05000 #Outputs -This is a vornoi thing: +# This is a vornoi thing: outdrivers = OutputVoronoi, DisplayArray +# outdrivers = DisplayPie, DisplayArray lightx = 64 lighty = 32 fromsides = 1 From 80944b289faece2a086f15dfa39335dd535ee44a Mon Sep 17 00:00:00 2001 From: CaiB Date: Tue, 19 May 2020 17:58:24 +0900 Subject: [PATCH 070/162] Update Windows build info in readme --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index a368eb2..30431c0 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,8 @@ make Building with Windows ------------------- +There are 3 options available for building on Windows, MSYS2, clang, or TCC. +### MSYS2 With either 64bit or 32bit [MSYS2](https://msys2.github.io/) installed, run the _MSYS2 MSYS_ launcher and use `pacman` to set up a MinGW32 toolchain, if you don't have one already: ``` pacman -S mingw-w64-i686-toolchain @@ -71,6 +73,26 @@ To make colorchord, navigate to your working copy and type: mingw32-make colorchord.exe ``` +### clang +Start by [downloading](https://clang.llvm.org/) the clang compiler, and installing it. + +Edit the batch script at `colorchord2/windows/compile-clang.bat`: +- Verify that the executable location is correct, on line 1 (`CC`). + +If you have the Windows SDK installed, you should not need to do any additional work. +If you do not, you'll want to either [install it](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk/) to get the official headers, or use the unofficial headers instead by adding `-DNO_WIN_HEADERS` to the `CCFLAGS` line in the batch file above. + +Run the batch script, and it should output to `colorchord2/colorchord.exe`. + +### TCC +Start by [downloading TCC](http://savannah.nongnu.org/projects/tinycc/), and extracting it to a location of your choice. + +Edit the batch script at `colorchord2/windows/compile.bat`: +- Edit line 17 (`CC`) to be the location where you put TCC. If there are spaces in the path, wrap the entire path in quotes. + +Note that TCC is not able to use the Windows SDK, and as such using the unofficial headers is required, and automatically enabled when compiling with TCC. If you encounter issues, try the clang method above instead. + + Using ----- From 64c6c508b0ccada25a0ee6d803e4ad250d7f50cb Mon Sep 17 00:00:00 2001 From: CaiB Date: Tue, 19 May 2020 20:41:20 +0900 Subject: [PATCH 071/162] Updating CNFA and removing excessive console output on compile. --- colorchord2/cnfa | 2 +- colorchord2/windows/compile-clang.bat | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 465e394..c021a3d 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 465e394f5efa13fc8f9c9fd2c011abd2a4acf0f7 +Subproject commit c021a3d8eb2febbd6b9d6285dac884bb828c5f02 diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 0fcb356..047c319 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,3 +1,4 @@ +@echo off set CC="C:\Program Files\LLVM\bin\clang.exe" set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -Dstrdup=_strdup set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 From cbc15a30c02bf3bd95d661fed91138e18e220666 Mon Sep 17 00:00:00 2001 From: CaiB Date: Tue, 19 May 2020 20:45:55 +0900 Subject: [PATCH 072/162] Ignoring clang output --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 6f6ec79..d81e4dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ colorchord2/windows/colorchord.def colorchord2/colorchord.def *.o +**/*.exp +**/*.ilk +**/*.pdb +colorchord2/colorchord.lib From 2b0bb5a78d34933a4c0ab57713371bc3aec252c1 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Tue, 19 May 2020 23:19:58 -0400 Subject: [PATCH 073/162] Redefine strdup to make Windows happy --- colorchord2/chash.c | 9 ++++++++- colorchord2/hidapi.c | 7 +++++++ colorchord2/main.c | 7 ++++++- colorchord2/outdrivers.c | 7 +++++++ colorchord2/parameters.c | 7 +++++++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/colorchord2/chash.c b/colorchord2/chash.c index f4cc84f..a5e7c41 100644 --- a/colorchord2/chash.c +++ b/colorchord2/chash.c @@ -10,6 +10,13 @@ #include #include +#if defined(WINDOWS) || defined(WIN32) || defined(WIN64) \ + || defined(_WIN32) || defined(_WIN64) +#ifndef strdup +#define strdup _strdup +#endif +#endif + #define I_AM_LITTLE (((union { unsigned x; unsigned char c; }){1}).c) static unsigned long GetStrHash( const char * c ) @@ -126,7 +133,7 @@ void ** HashTableInsert( struct chash * hash, const char * key, int dontDupKey ) } else { - thisEntry->key = strdup( key ); + thisEntry->key = _strdup( key ); } thisEntry->hash = thisHash; diff --git a/colorchord2/hidapi.c b/colorchord2/hidapi.c index 225c8a8..d1f9c2f 100644 --- a/colorchord2/hidapi.c +++ b/colorchord2/hidapi.c @@ -58,6 +58,13 @@ typedef LONG NTSTATUS; /*#define HIDAPI_USE_DDK*/ +#if defined(WINDOWS) || defined(WIN32) || defined(WIN64) \ + || defined(_WIN32) || defined(_WIN64) +#ifndef strdup +#define strdup _strdup +#endif +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/colorchord2/main.c b/colorchord2/main.c index 53421f4..bb12d50 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -1,9 +1,14 @@ //Copyright 2015 <>< Charles Lohr under the ColorChord License. -#if defined(WIN32) || defined(USE_WINDOWS) +#if defined(WINDOWS) || defined(USE_WINDOWS)\ + || defined(WIN32) || defined(WIN64) \ + || defined(_WIN32) || defined(_WIN64) #include #include +#ifndef strdup +#define strdup _strdup #endif +#endif #include #include "color.h" diff --git a/colorchord2/outdrivers.c b/colorchord2/outdrivers.c index 6d3591b..5f604f5 100644 --- a/colorchord2/outdrivers.c +++ b/colorchord2/outdrivers.c @@ -7,6 +7,13 @@ #include #include +#if defined(WINDOWS) || defined(WIN32) || defined(WIN64) \ + || defined(_WIN32) || defined(_WIN64) +#ifndef strdup +#define strdup _strdup +#endif +#endif + int force_white = 0; unsigned char OutLEDs[MAX_LEDS*3]; int UsedLEDs; diff --git a/colorchord2/parameters.c b/colorchord2/parameters.c index 3800694..d462b8f 100644 --- a/colorchord2/parameters.c +++ b/colorchord2/parameters.c @@ -6,6 +6,13 @@ #include #include +#if defined(WINDOWS) || defined(WIN32) || defined(WIN64) \ + || defined(_WIN32) || defined(_WIN64) +#ifndef strdup +#define strdup _strdup +#endif +#endif + static struct chash * parameters; //XXX TODO: Make this thread safe. From a2359e1f028dba525d4a905b8279624d9931b54c Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Tue, 19 May 2020 23:39:10 -0400 Subject: [PATCH 074/162] Modify build scripts --- colorchord2/windows/compile-clang.bat | 5 +++-- colorchord2/windows/compile.bat | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 648872f..91a2c56 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,6 +1,7 @@ set CC="C:\Program Files\LLVM\bin\clang.exe" -set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -Dstrdup=_strdup -DNO_WIN_HEADERS -set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 +rem To enable OpenGL rendering use the -DCNFGOGL option +set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS +set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O2 set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ^ diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index 9ee0d80..051b4a1 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -2,7 +2,7 @@ echo Unzip http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win64-bin.zip to C:\tcc echo Don't worry. It includes the i386 compiler in the win64 build. -set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g +set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -O2 -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g set INCLUDES=-I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon set LDFLAGS=-lkernel32 -lole32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 -lAvrt @@ -11,9 +11,9 @@ set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\outdrivers.c ..\hidapi.c ..\hook.c ..\parameters.c ..\util.c ..\notefinder.c ^ ..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c ^ ..\DisplayNetwork.c ..\DisplayArray.c ..\DisplayHIDAPI.c ..\DisplayOUTDriver.c ..\DisplayPie.c ^ -..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c +..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c -set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll -Dstrdup=_strdup -DWIN32_LEAN_AND_MEAN +set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll -DWIN32_LEAN_AND_MEAN set CC=C:\tcc\tcc.exe rem set CC=C:\tcc\i386-win32-tcc.exe rem set CC=C:\tcc\x86_64-win32-tcc.exe From 776a5dc5f57cd63bf8227229030929eff44a77d8 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Tue, 19 May 2020 23:55:16 -0400 Subject: [PATCH 075/162] bump submodule version --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 465e394..314da0d 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 465e394f5efa13fc8f9c9fd2c011abd2a4acf0f7 +Subproject commit 314da0d28f51cc57f13923210f7213a0fd8e8d3c From bb0c7a0dc8f401b1a2ecc5a3be07a5dbbc6e9d2c Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Tue, 19 May 2020 23:59:04 -0400 Subject: [PATCH 076/162] Add in NULL for the opaque object for CNFA. --- colorchord2/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index bb12d50..fb3a9a1 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -456,7 +456,7 @@ int main(int argc, char ** argv) //Initialize Sound sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), - GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ) ); + GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ), NULL ); if( sd ) break; @@ -464,7 +464,7 @@ int main(int argc, char ** argv) CNFGPenX = 10; CNFGPenY = 100; CNFGHandleInput(); CNFGClearFrame(); - CNFGDrawText( "Colorchord must be used with sound. Sound not available.", 10 ); + CNFGDrawText( "Colorchord must be used with sound. Sound not available.", 10 ); CNFGSwapBuffers(); OGSleep(1); } while( 1 ); From 4cc141bff1df1b4dfb1b726dbb9619ae0655e702 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 00:01:30 -0400 Subject: [PATCH 077/162] Add more comments to the default configuration --- colorchord2/default.conf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/colorchord2/default.conf b/colorchord2/default.conf index a568eae..db9363c 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -25,8 +25,12 @@ wininput = -1 #-1 indicates left and right, 0 left, 1 right. sample_channel = -1 +# Sets the playback device for CNFA (what speakers to go to) devplay = default +# Sets the device to get audio from, default searches for a mic devrecord = default +# If speaker loopback is desired use the following line +#devrecord = defaultRender # For Linux mostly use the following command to find valid devices to read from: # pactl list | grep pci- | grep monitor @@ -68,7 +72,7 @@ filter_iter = 2 filter_strength = .5 # How many bins per octave to use? -freqbins = 24 +freqbins = 24 # For the final note information... How much to slack everything? note_attach_amp_iir = 0.3500 From 779651da4b7f530edad4fec7e9aedb2d08043a09 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 00:04:14 -0400 Subject: [PATCH 078/162] Remove VS-Code files --- colorchord2/.vscode/c_cpp_properties.json | 26 ----------------------- 1 file changed, 26 deletions(-) delete mode 100644 colorchord2/.vscode/c_cpp_properties.json diff --git a/colorchord2/.vscode/c_cpp_properties.json b/colorchord2/.vscode/c_cpp_properties.json deleted file mode 100644 index ef9161d..0000000 --- a/colorchord2/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "configurations": [ - { - "name": "Win32", - "includePath": [ - "${workspaceFolder}/**", - "${workspaceFolder}/../embeddedcommon" - ], - "defines": [ - "_DEBUG", - "UNICODE", - "_UNICODE", - "CNFA_IMPLEMENTATION", - "__TINYC__", - "TCC", - "NO_WIN_HEADERS" - ], - "windowsSdkVersion": "10.0.17763.0", - "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe", - "cStandard": "c11", - "cppStandard": "c++17", - "intelliSenseMode": "msvc-x64" - } - ], - "version": 4 -} \ No newline at end of file From 33f33ed9fd3228b36da64a59bdb3545b58ae5534 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 00:10:59 -0400 Subject: [PATCH 079/162] Oops, that could have been embareassing. --- colorchord2/chash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/chash.c b/colorchord2/chash.c index a5e7c41..717ccf9 100644 --- a/colorchord2/chash.c +++ b/colorchord2/chash.c @@ -133,7 +133,7 @@ void ** HashTableInsert( struct chash * hash, const char * key, int dontDupKey ) } else { - thisEntry->key = _strdup( key ); + thisEntry->key = strdup( key ); } thisEntry->hash = thisHash; From 003a1f4f8a34d9ca872c3d2ca6868f30afe5e063 Mon Sep 17 00:00:00 2001 From: CaiB Date: Wed, 20 May 2020 14:38:56 +0900 Subject: [PATCH 080/162] Marging --- .gitignore | 7 +++++- README.md | 22 +++++++++++++++++++ colorchord2/android/AndroidManifest.xml | 7 ++++-- colorchord2/android/Makefile | 3 ++- ...rd-android.conf => colorchord-android.txt} | 0 colorchord2/configs.c | 20 +++++++++++------ colorchord2/main.c | 10 ++++----- colorchord2/windows/compile-clang.bat | 1 + 8 files changed, 54 insertions(+), 16 deletions(-) rename colorchord2/android/{colorchord-android.conf => colorchord-android.txt} (100%) mode change 100755 => 100644 diff --git a/.gitignore b/.gitignore index 3841a63..d81e4dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ colorchord2/windows/colorchord.def -colorchord2/colorchord.def \ No newline at end of file +colorchord2/colorchord.def +*.o +**/*.exp +**/*.ilk +**/*.pdb +colorchord2/colorchord.lib diff --git a/README.md b/README.md index a368eb2..30431c0 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,8 @@ make Building with Windows ------------------- +There are 3 options available for building on Windows, MSYS2, clang, or TCC. +### MSYS2 With either 64bit or 32bit [MSYS2](https://msys2.github.io/) installed, run the _MSYS2 MSYS_ launcher and use `pacman` to set up a MinGW32 toolchain, if you don't have one already: ``` pacman -S mingw-w64-i686-toolchain @@ -71,6 +73,26 @@ To make colorchord, navigate to your working copy and type: mingw32-make colorchord.exe ``` +### clang +Start by [downloading](https://clang.llvm.org/) the clang compiler, and installing it. + +Edit the batch script at `colorchord2/windows/compile-clang.bat`: +- Verify that the executable location is correct, on line 1 (`CC`). + +If you have the Windows SDK installed, you should not need to do any additional work. +If you do not, you'll want to either [install it](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk/) to get the official headers, or use the unofficial headers instead by adding `-DNO_WIN_HEADERS` to the `CCFLAGS` line in the batch file above. + +Run the batch script, and it should output to `colorchord2/colorchord.exe`. + +### TCC +Start by [downloading TCC](http://savannah.nongnu.org/projects/tinycc/), and extracting it to a location of your choice. + +Edit the batch script at `colorchord2/windows/compile.bat`: +- Edit line 17 (`CC`) to be the location where you put TCC. If there are spaces in the path, wrap the entire path in quotes. + +Note that TCC is not able to use the Windows SDK, and as such using the unofficial headers is required, and automatically enabled when compiling with TCC. If you encounter issues, try the clang method above instead. + + Using ----- diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 27265e1..4acec47 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,12 +1,15 @@ + android:versionCode="8"> + + - + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index 883f7e4..b9c3df1 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -7,7 +7,8 @@ CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon \ -ffunction-sections -Os -s -DPRINTF_NO_OVERRIDDE -fvisibility=hidden \ -DRDALOGFNCB=example_log_function -#ANDROIDVERSION=24 +ANDROIDVERSION=22 +ANDROIDTARGET=28 LDFLAGS:=-s -lOpenSLES diff --git a/colorchord2/android/colorchord-android.conf b/colorchord2/android/colorchord-android.txt old mode 100755 new mode 100644 similarity index 100% rename from colorchord2/android/colorchord-android.conf rename to colorchord2/android/colorchord-android.txt diff --git a/colorchord2/configs.c b/colorchord2/configs.c index 2c26c03..b6788cb 100644 --- a/colorchord2/configs.c +++ b/colorchord2/configs.c @@ -48,16 +48,19 @@ void LoadFile( const char * filename ) void SetEnvValues( int force ) { - int i; + static int ifcheck; int hits = 0; - for( i = 0; i < InitialFileCount; i++ ) + + if( InitialFileCount ) { - double ft = OGGetFileTime( InitialFile[i] ); - if( FileTimes[i] != ft ) + //Only check one location per frame. + double ft = OGGetFileTime( InitialFile[ifcheck] ); + if( FileTimes[ifcheck] != ft ) { - FileTimes[i] = ft; + FileTimes[ifcheck] = ft; hits++; } + ifcheck = ( ifcheck + 1 ) % InitialFileCount; } if( !hits && !force ) return; @@ -109,6 +112,7 @@ void SetEnvValues( int force ) printf( "On Android, looking for configuration file in: %s\n", InitialFile[0] ); #endif + int i; for( i = 0; i < InitialFileCount; i++ ) { LoadFile( InitialFile[i] ); @@ -151,8 +155,10 @@ void SetupConfigs() { #ifdef ANDROID InitialFile[0] = "/sdcard/colorchord-android.txt"; - InitialFile[1] = "/sdcard/colorchord-android-overlay.txt"; - InitialFileCount = 2; + InitialFile[1] = "/storage/emulated/0/colorchord-android.txt"; + InitialFile[2] = "/sdcard/colorchord-android-overlay.txt"; + InitialFile[3] = "/storage/emulated/0/colorchord-android-overlay.txt"; + InitialFileCount = 4; #else InitialFile[0] = "default.conf"; #endif diff --git a/colorchord2/main.c b/colorchord2/main.c index fb3a9a1..59adea9 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -232,7 +232,7 @@ void HandleMotion( int x, int y, int mask ) { } -void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int samplesp ) +void SoundCB( struct CNFADriver * sd, short * in, short * out, int framesr, int framesp ) { int channelin = sd->channelsRec; int channelout = sd->channelsPlay; @@ -246,7 +246,7 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int if( in ) { - for( i = 0; i < samplesr; i++ ) + for( i = 0; i < framesr; i++ ) { if( sample_channel < 0 ) { @@ -285,17 +285,17 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int } } - SoundEventHappened( samplesr, in, 0, channelin ); + SoundEventHappened( framesr, in, 0, channelin ); } if( out ) { - for( j = 0; j < samplesp * channelout; j++ ) + for( j = 0; j < framesp * channelout; j++ ) { out[j] = 0; } - SoundEventHappened( samplesp, out, 1, channelout ); + SoundEventHappened( framesp, out, 1, channelout ); } diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 91a2c56..900ea1d 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,3 +1,4 @@ +@echo off set CC="C:\Program Files\LLVM\bin\clang.exe" rem To enable OpenGL rendering use the -DCNFGOGL option set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS From bf95be1226f866f949abf7f5766efd06dea9b179 Mon Sep 17 00:00:00 2001 From: CaiB Date: Wed, 20 May 2020 14:42:39 +0900 Subject: [PATCH 081/162] Clarifying config comments --- colorchord2/default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/default.conf b/colorchord2/default.conf index db9363c..26f39d3 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -27,9 +27,9 @@ wininput = -1 sample_channel = -1 # Sets the playback device for CNFA (what speakers to go to) devplay = default -# Sets the device to get audio from, default searches for a mic +# Sets the device to get audio from, for WASAPI, "default" searches for a mic devrecord = default -# If speaker loopback is desired use the following line +# For WASAPI, if speaker loopback is desired use the following line #devrecord = defaultRender # For Linux mostly use the following command to find valid devices to read from: From 556338cfcbe7c45b79bee7ec515797b333bf8db2 Mon Sep 17 00:00:00 2001 From: nikky Date: Wed, 20 May 2020 21:34:57 +0200 Subject: [PATCH 082/162] add DisplayNetwork support to android --- colorchord2/android/AndroidManifest.xml | 1 + colorchord2/main.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 4acec47..7337d6f 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -8,6 +8,7 @@ + diff --git a/colorchord2/main.c b/colorchord2/main.c index 59adea9..d142ca5 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -385,6 +385,11 @@ int main(int argc, char ** argv) { AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); } + int haspermInternet = AndroidHasPermissions( "INTERNET" ); + if( !haspermInternet ) + { + AndroidRequestAppPermissions( "INTERNET" ); + } #else From d8578fe6d9853f6ccab359331c8494d515ebac0d Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 20:34:37 -0400 Subject: [PATCH 083/162] Fix TCC being dumb --- colorchord2/OutputVoronoi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/colorchord2/OutputVoronoi.c b/colorchord2/OutputVoronoi.c index c43c1af..714b429 100644 --- a/colorchord2/OutputVoronoi.c +++ b/colorchord2/OutputVoronoi.c @@ -126,7 +126,8 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) { float sat = nf->note_amplitudes_out[bestmatch] * d->satamp; if( sat > 1.0 ) sat = 1.0; - color = CCtoHEX( nf->note_positions[bestmatch] / nf->freqbins, 1.0, sat ); + float note_color = nf->note_positions[bestmatch] / nf->freqbins; + color = CCtoHEX( note_color, 1.0, sat ); } OutLEDs[led*3+0] = color & 0xff; From 3274984ebff57353f038684d355a55ffd9b7ce1d Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 22:39:50 -0400 Subject: [PATCH 084/162] bump submodule version --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 314da0d..9153df2 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 314da0d28f51cc57f13923210f7213a0fd8e8d3c +Subproject commit 9153df275e6fadfa0e2de9cdc5b49a1d858c950b From 98623aa29946da8932d4fe7fdba9c10e10c6ae9b Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 22:40:53 -0400 Subject: [PATCH 085/162] Fix CNFA initilization call. --- colorchord2/main.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index d142ca5..4bdaa4d 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -459,8 +459,10 @@ int main(int argc, char ** argv) do { //Initialize Sound - sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), - GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), + sd = CNFAInit( sound_source, "colorchord", &SoundCB, + GetParameterI( "samplerate", 44100 ), GetParameterI( "samplerate", 44100 ), + GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), + GetParameterI( "buffer", 1024 ), GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ), NULL ); if( sd ) break; @@ -474,7 +476,7 @@ int main(int argc, char ** argv) OGSleep(1); } while( 1 ); - nf = CreateNoteFinder( sd->sps ); + nf = CreateNoteFinder( sd->spsRec ); //Once everything was reinitialized, re-read the ini files. SetEnvValues( 1 ); From 4eb0eb8d4a819585acfed05bbc403ff04d187475 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Wed, 20 May 2020 23:59:59 -0400 Subject: [PATCH 086/162] Misc fixes: -Make the submodule match upstream. -Update Windows makefile to work. --- .gitmodules | 2 +- colorchord2/windows/Makefile | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0803dc3..ae541d5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = https://github.com/CaiB/cnfa + url = https://github.com/cnlohr/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid diff --git a/colorchord2/windows/Makefile b/colorchord2/windows/Makefile index 0701174..bba0cb0 100644 --- a/colorchord2/windows/Makefile +++ b/colorchord2/windows/Makefile @@ -1,4 +1,4 @@ -all : colorchord.exe +all : ../colorchord.exe OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o @@ -10,15 +10,15 @@ SRCS += ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c ../hidapi.c . WINGCC:= clang -fcolor-diagnostics WINGCCFLAGS:= -g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections -WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi +WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt OBJS:=../main.o ../dft.o ../decompose.o ../filter.o ../color.o ../notefinder.o ../util.o ../outdrivers.o $(OUTS) ../parameters.o ../chash.o ../hook.o ../../embeddedcommon/DFT32.o ../configs.o -colorchord.exe : $(SRCS) +../colorchord.exe : $(SRCS) $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) clean : - rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) + rm -rf *.o *~ ../colorchord ../colorchord.exe ../embeddedcc $(OBJS) From 69dcc03f391d76e4908824489436e0cf6fa38025 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 21 May 2020 00:03:53 -0400 Subject: [PATCH 087/162] Slightly change default config --- colorchord2/default.conf | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/colorchord2/default.conf b/colorchord2/default.conf index 26f39d3..7acb2a3 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -28,9 +28,9 @@ sample_channel = -1 # Sets the playback device for CNFA (what speakers to go to) devplay = default # Sets the device to get audio from, for WASAPI, "default" searches for a mic -devrecord = default +# devrecord = default # For WASAPI, if speaker loopback is desired use the following line -#devrecord = defaultRender +devrecord = defaultRender # For Linux mostly use the following command to find valid devices to read from: # pactl list | grep pci- | grep monitor @@ -95,8 +95,7 @@ note_out_chop = 0.05000 # This is a vornoi thing: -outdrivers = OutputVoronoi, DisplayArray -# outdrivers = DisplayPie, DisplayArray +# outdrivers = OutputVoronoi, DisplayArray lightx = 64 lighty = 32 fromsides = 1 @@ -105,5 +104,12 @@ satamp = 5.000 amppow = 2.510 distpow = 1.500 +outdrivers = DisplayArray, OutputLinear +# outdrivers = DisplayPie, OutputLinear +leds = 64 +pie_min = 0.18 +pie_max = 0.3 + + From 0d1401cfa67e256154c726335d79dfdf2af6a9ce Mon Sep 17 00:00:00 2001 From: cnlohr Date: Wed, 20 May 2020 22:38:19 -0700 Subject: [PATCH 088/162] Some cleanup from merge. --- colorchord2/DrawFunctions.c | 276 ----------------------------------- colorchord2/DrawFunctions.h | 54 ------- colorchord2/android/Makefile | 3 +- colorchord2/cnfa | 2 +- colorchord2/default.conf | 14 +- colorchord2/main.c | 18 +-- 6 files changed, 18 insertions(+), 349 deletions(-) delete mode 100644 colorchord2/DrawFunctions.c delete mode 100644 colorchord2/DrawFunctions.h diff --git a/colorchord2/DrawFunctions.c b/colorchord2/DrawFunctions.c deleted file mode 100644 index ceb123c..0000000 --- a/colorchord2/DrawFunctions.c +++ /dev/null @@ -1,276 +0,0 @@ -/* -Copyright (c) 2010, 2011, 2015 <>< Charles Lohr - -This file may be licensed under the NewBSD License OR The license found -here: - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. -*/ - -#include "DrawFunctions.h" -#include - -int CNFGPenX, CNFGPenY; -uint32_t CNFGBGColor; -uint32_t CNFGLastColor; -uint32_t CNFGDialogColor; //background for boxes - -const unsigned short FontCharMap[256] = { - 65535, 0, 10, 20, 32, 44, 56, 68, 70, 65535, 65535, 80, 92, 65535, 104, 114, - 126, 132, 138, 148, 156, 166, 180, 188, 200, 206, 212, 218, 224, 228, 238, 244, - 65535, 250, 254, 258, 266, 278, 288, 302, 304, 310, 316, 324, 328, 226, 252, 330, - 332, 342, 348, 358, 366, 372, 382, 392, 400, 410, 420, 424, 428, 262, 432, 436, - 446, 460, 470, 486, 496, 508, 516, 522, 536, 542, 548, 556, 568, 572, 580, 586, - 598, 608, 622, 634, 644, 648, 654, 662, 670, 682, 692, 700, 706, 708, 492, 198, - 714, 716, 726, 734, 742, 750, 760, 768, 782, 790, 794, 802, 204, 810, 820, 384, - 828, 836, 844, 850, 860, 864, 872, 880, 890, 894, 902, 908, 916, 920, 928, 934, - 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, - 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, - 944, 948, 960, 970, 986, 996, 1000, 1016, 1020, 1026, 1034, 1042, 364, 1046, 1056, 1058, - 1066, 1072, 1080, 932, 1092, 1100, 68, 1110, 1114, 1116, 1124, 1132, 1142, 1154, 1170, 1180, - 1192, 1204, 1218, 1234, 1248, 1264, 1276, 1290, 1300, 1310, 1322, 1334, 1342, 1350, 1360, 1370, - 1384, 1396, 1406, 1416, 1428, 1442, 1454, 1458, 1472, 1480, 1488, 1498, 1508, 1520, 1530, 1544, - 1556, 1568, 1582, 1598, 1612, 1628, 1642, 1654, 1666, 1678, 1692, 1706, 1710, 1714, 1720, 1726, - 1738, 1752, 1762, 1772, 1784, 1798, 1810, 1816, 1826, 1836, 1846, 1858, 1870, 1880, 1890, 65535, }; - -const unsigned char FontCharData[1902] = { - 0x00, 0x01, 0x20, 0x21, 0x03, 0x23, 0x23, 0x14, 0x14, 0x83, 0x00, 0x01, 0x20, 0x21, 0x04, 0x24, - 0x24, 0x13, 0x13, 0x84, 0x01, 0x21, 0x21, 0x23, 0x23, 0x14, 0x14, 0x03, 0x03, 0x01, 0x11, 0x92, - 0x11, 0x22, 0x22, 0x23, 0x23, 0x14, 0x14, 0x03, 0x03, 0x02, 0x02, 0x91, 0x01, 0x21, 0x21, 0x23, - 0x23, 0x01, 0x03, 0x21, 0x03, 0x01, 0x12, 0x94, 0x03, 0x23, 0x13, 0x14, 0x23, 0x22, 0x22, 0x11, - 0x11, 0x02, 0x02, 0x83, 0x12, 0x92, 0x12, 0x12, 0x01, 0x21, 0x21, 0x23, 0x23, 0x03, 0x03, 0x81, - 0x03, 0x21, 0x21, 0x22, 0x21, 0x11, 0x03, 0x14, 0x14, 0x23, 0x23, 0x92, 0x01, 0x10, 0x10, 0x21, - 0x21, 0x12, 0x12, 0x01, 0x12, 0x14, 0x03, 0xa3, 0x02, 0x03, 0x03, 0x13, 0x02, 0x12, 0x13, 0x10, - 0x10, 0xa1, 0x01, 0x23, 0x03, 0x21, 0x02, 0x11, 0x11, 0x22, 0x22, 0x13, 0x13, 0x82, 0x00, 0x22, - 0x22, 0x04, 0x04, 0x80, 0x20, 0x02, 0x02, 0x24, 0x24, 0xa0, 0x01, 0x10, 0x10, 0x21, 0x10, 0x14, - 0x14, 0x03, 0x14, 0xa3, 0x00, 0x03, 0x04, 0x04, 0x20, 0x23, 0x24, 0xa4, 0x00, 0x20, 0x00, 0x02, - 0x02, 0x22, 0x10, 0x14, 0x20, 0xa4, 0x01, 0x21, 0x21, 0x23, 0x23, 0x03, 0x03, 0x01, 0x20, 0x10, - 0x10, 0x14, 0x14, 0x84, 0x03, 0x23, 0x23, 0x24, 0x24, 0x04, 0x04, 0x83, 0x01, 0x10, 0x10, 0x21, - 0x10, 0x14, 0x14, 0x03, 0x14, 0x23, 0x04, 0xa4, 0x01, 0x10, 0x21, 0x10, 0x10, 0x94, 0x03, 0x14, - 0x23, 0x14, 0x10, 0x94, 0x02, 0x22, 0x22, 0x11, 0x22, 0x93, 0x02, 0x22, 0x02, 0x11, 0x02, 0x93, - 0x01, 0x02, 0x02, 0xa2, 0x02, 0x22, 0x22, 0x11, 0x11, 0x02, 0x02, 0x13, 0x13, 0xa2, 0x11, 0x22, - 0x22, 0x02, 0x02, 0x91, 0x02, 0x13, 0x13, 0x22, 0x22, 0x82, 0x10, 0x13, 0x14, 0x94, 0x10, 0x01, - 0x20, 0x91, 0x10, 0x14, 0x20, 0x24, 0x01, 0x21, 0x03, 0xa3, 0x21, 0x10, 0x10, 0x01, 0x01, 0x23, - 0x23, 0x14, 0x14, 0x03, 0x10, 0x94, 0x00, 0x01, 0x23, 0x24, 0x04, 0x03, 0x03, 0x21, 0x21, 0xa0, - 0x21, 0x10, 0x10, 0x01, 0x01, 0x12, 0x12, 0x03, 0x03, 0x14, 0x14, 0x23, 0x02, 0xa4, 0x10, 0x91, - 0x10, 0x01, 0x01, 0x03, 0x03, 0x94, 0x10, 0x21, 0x21, 0x23, 0x23, 0x94, 0x01, 0x23, 0x11, 0x13, - 0x21, 0x03, 0x02, 0xa2, 0x02, 0x22, 0x11, 0x93, 0x31, 0xc0, 0x03, 0xa1, 0x00, 0x20, 0x20, 0x24, - 0x24, 0x04, 0x04, 0x00, 0x12, 0x92, 0x01, 0x10, 0x10, 0x14, 0x04, 0xa4, 0x01, 0x10, 0x10, 0x21, - 0x21, 0x22, 0x22, 0x04, 0x04, 0xa4, 0x00, 0x20, 0x20, 0x24, 0x24, 0x04, 0x12, 0xa2, 0x00, 0x02, - 0x02, 0x22, 0x20, 0xa4, 0x20, 0x00, 0x00, 0x02, 0x02, 0x22, 0x22, 0x24, 0x24, 0x84, 0x20, 0x02, - 0x02, 0x22, 0x22, 0x24, 0x24, 0x04, 0x04, 0x82, 0x00, 0x20, 0x20, 0x21, 0x21, 0x12, 0x12, 0x94, - 0x00, 0x04, 0x00, 0x20, 0x20, 0x24, 0x04, 0x24, 0x02, 0xa2, 0x00, 0x02, 0x02, 0x22, 0x22, 0x20, - 0x20, 0x00, 0x22, 0x84, 0x11, 0x11, 0x13, 0x93, 0x11, 0x11, 0x13, 0x84, 0x20, 0x02, 0x02, 0xa4, - 0x00, 0x22, 0x22, 0x84, 0x01, 0x10, 0x10, 0x21, 0x21, 0x12, 0x12, 0x13, 0x14, 0x94, 0x21, 0x01, - 0x01, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x12, 0x12, 0x13, 0x13, 0xa3, 0x04, 0x01, 0x01, 0x10, - 0x10, 0x21, 0x21, 0x24, 0x02, 0xa2, 0x00, 0x04, 0x04, 0x14, 0x14, 0x23, 0x23, 0x12, 0x12, 0x02, - 0x12, 0x21, 0x21, 0x10, 0x10, 0x80, 0x23, 0x14, 0x14, 0x03, 0x03, 0x01, 0x01, 0x10, 0x10, 0xa1, - 0x00, 0x10, 0x10, 0x21, 0x21, 0x23, 0x23, 0x14, 0x14, 0x04, 0x04, 0x80, 0x00, 0x04, 0x04, 0x24, - 0x00, 0x20, 0x02, 0x92, 0x00, 0x04, 0x00, 0x20, 0x02, 0x92, 0x21, 0x10, 0x10, 0x01, 0x01, 0x03, - 0x03, 0x14, 0x14, 0x23, 0x23, 0x22, 0x22, 0x92, 0x00, 0x04, 0x20, 0x24, 0x02, 0xa2, 0x00, 0x20, - 0x10, 0x14, 0x04, 0xa4, 0x00, 0x20, 0x20, 0x23, 0x23, 0x14, 0x14, 0x83, 0x00, 0x04, 0x02, 0x12, - 0x12, 0x21, 0x21, 0x20, 0x12, 0x23, 0x23, 0xa4, 0x00, 0x04, 0x04, 0xa4, 0x04, 0x00, 0x00, 0x11, - 0x11, 0x20, 0x20, 0xa4, 0x04, 0x00, 0x00, 0x22, 0x20, 0xa4, 0x01, 0x10, 0x10, 0x21, 0x21, 0x23, - 0x23, 0x14, 0x14, 0x03, 0x03, 0x81, 0x00, 0x04, 0x00, 0x10, 0x10, 0x21, 0x21, 0x12, 0x12, 0x82, - 0x01, 0x10, 0x10, 0x21, 0x21, 0x23, 0x23, 0x14, 0x14, 0x03, 0x03, 0x01, 0x04, 0x93, 0x00, 0x04, - 0x00, 0x10, 0x10, 0x21, 0x21, 0x12, 0x12, 0x02, 0x02, 0xa4, 0x21, 0x10, 0x10, 0x01, 0x01, 0x23, - 0x23, 0x14, 0x14, 0x83, 0x00, 0x20, 0x10, 0x94, 0x00, 0x04, 0x04, 0x24, 0x24, 0xa0, 0x00, 0x03, - 0x03, 0x14, 0x14, 0x23, 0x23, 0xa0, 0x00, 0x04, 0x04, 0x24, 0x14, 0x13, 0x24, 0xa0, 0x00, 0x01, - 0x01, 0x23, 0x23, 0x24, 0x04, 0x03, 0x03, 0x21, 0x21, 0xa0, 0x00, 0x01, 0x01, 0x12, 0x12, 0x14, - 0x12, 0x21, 0x21, 0xa0, 0x00, 0x20, 0x20, 0x02, 0x02, 0x04, 0x04, 0xa4, 0x10, 0x00, 0x00, 0x04, - 0x04, 0x94, 0x01, 0xa3, 0x10, 0x20, 0x20, 0x24, 0x24, 0x94, 0x00, 0x91, 0x02, 0x04, 0x04, 0x24, - 0x24, 0x22, 0x23, 0x12, 0x12, 0x82, 0x00, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x82, 0x24, 0x04, - 0x04, 0x03, 0x03, 0x12, 0x12, 0xa2, 0x20, 0x24, 0x24, 0x04, 0x04, 0x02, 0x02, 0xa2, 0x24, 0x04, - 0x04, 0x02, 0x02, 0x22, 0x22, 0x23, 0x23, 0x93, 0x04, 0x01, 0x02, 0x12, 0x01, 0x10, 0x10, 0xa1, - 0x23, 0x12, 0x12, 0x03, 0x03, 0x14, 0x14, 0x23, 0x23, 0x24, 0x24, 0x15, 0x15, 0x84, 0x00, 0x04, - 0x03, 0x12, 0x12, 0x23, 0x23, 0xa4, 0x11, 0x11, 0x12, 0x94, 0x22, 0x22, 0x23, 0x24, 0x24, 0x15, - 0x15, 0x84, 0x00, 0x04, 0x03, 0x13, 0x13, 0x22, 0x13, 0xa4, 0x02, 0x04, 0x02, 0x13, 0x12, 0x14, - 0x12, 0x23, 0x23, 0xa4, 0x02, 0x04, 0x03, 0x12, 0x12, 0x23, 0x23, 0xa4, 0x02, 0x05, 0x04, 0x24, - 0x24, 0x22, 0x22, 0x82, 0x02, 0x04, 0x04, 0x24, 0x25, 0x22, 0x22, 0x82, 0x02, 0x04, 0x03, 0x12, - 0x12, 0xa2, 0x22, 0x02, 0x02, 0x03, 0x03, 0x23, 0x23, 0x24, 0x24, 0x84, 0x11, 0x14, 0x02, 0xa2, - 0x02, 0x04, 0x04, 0x14, 0x14, 0x23, 0x24, 0xa2, 0x02, 0x03, 0x03, 0x14, 0x14, 0x23, 0x23, 0xa2, - 0x02, 0x03, 0x03, 0x14, 0x14, 0x12, 0x13, 0x24, 0x24, 0xa2, 0x02, 0x24, 0x04, 0xa2, 0x02, 0x03, - 0x03, 0x14, 0x22, 0x23, 0x23, 0x85, 0x02, 0x22, 0x22, 0x04, 0x04, 0xa4, 0x20, 0x10, 0x10, 0x14, - 0x14, 0x24, 0x12, 0x82, 0x10, 0x11, 0x13, 0x94, 0x00, 0x10, 0x10, 0x14, 0x14, 0x04, 0x12, 0xa2, - 0x01, 0x10, 0x10, 0x11, 0x11, 0xa0, 0x03, 0x04, 0x04, 0x24, 0x24, 0x23, 0x23, 0x12, 0x12, 0x83, - 0x10, 0x10, 0x11, 0x94, 0x21, 0x10, 0x10, 0x01, 0x01, 0x02, 0x02, 0x13, 0x13, 0x22, 0x10, 0x93, - 0x11, 0x00, 0x00, 0x04, 0x04, 0x24, 0x24, 0x23, 0x02, 0x92, 0x01, 0x02, 0x11, 0x21, 0x22, 0x23, - 0x03, 0x13, 0x02, 0x11, 0x11, 0x22, 0x22, 0x13, 0x13, 0x82, 0x00, 0x11, 0x11, 0x20, 0x11, 0x14, - 0x02, 0x22, 0x03, 0xa3, 0x10, 0x12, 0x13, 0x95, 0x20, 0x00, 0x00, 0x02, 0x02, 0x11, 0x11, 0x22, - 0x02, 0x13, 0x13, 0x22, 0x22, 0x24, 0x24, 0x84, 0x00, 0x00, 0x20, 0xa0, 0x20, 0x10, 0x10, 0x11, - 0x11, 0xa1, 0x10, 0x21, 0x20, 0x21, 0x21, 0x11, 0x11, 0x90, 0x11, 0x02, 0x02, 0x13, 0x21, 0x12, - 0x12, 0xa3, 0x01, 0x21, 0x21, 0xa2, 0x10, 0x20, 0x20, 0x21, 0x21, 0x11, 0x12, 0x10, 0x11, 0xa2, - 0x00, 0xa0, 0x01, 0x10, 0x10, 0x21, 0x21, 0x12, 0x12, 0x81, 0x02, 0x22, 0x11, 0x13, 0x03, 0xa3, - 0x01, 0x10, 0x10, 0x21, 0x21, 0x03, 0x03, 0xa3, 0x01, 0x10, 0x10, 0x21, 0x21, 0x12, 0x12, 0x02, - 0x12, 0x23, 0x23, 0x83, 0x02, 0x05, 0x04, 0x14, 0x14, 0x23, 0x22, 0xa4, 0x14, 0x10, 0x10, 0x01, - 0x01, 0x12, 0x10, 0x20, 0x20, 0xa4, 0x14, 0x15, 0x15, 0x85, 0x20, 0xa1, 0x10, 0x20, 0x20, 0x21, - 0x21, 0x11, 0x11, 0x90, 0x01, 0x12, 0x12, 0x03, 0x11, 0x22, 0x22, 0x93, 0x00, 0x01, 0x02, 0x20, - 0x12, 0x13, 0x13, 0x23, 0x22, 0xa4, 0x00, 0x01, 0x02, 0x20, 0x12, 0x22, 0x22, 0x13, 0x13, 0x14, - 0x14, 0xa4, 0x00, 0x10, 0x10, 0x11, 0x11, 0x01, 0x11, 0x02, 0x02, 0x20, 0x12, 0x13, 0x13, 0x23, - 0x22, 0xa4, 0x10, 0x10, 0x11, 0x12, 0x12, 0x03, 0x03, 0x14, 0x14, 0xa3, 0x04, 0x02, 0x02, 0x11, - 0x11, 0x22, 0x22, 0x24, 0x03, 0x23, 0x10, 0xa1, 0x04, 0x02, 0x02, 0x11, 0x11, 0x22, 0x22, 0x24, - 0x03, 0x23, 0x01, 0x90, 0x04, 0x02, 0x02, 0x11, 0x11, 0x22, 0x22, 0x24, 0x03, 0x23, 0x01, 0x10, - 0x10, 0xa1, 0x04, 0x02, 0x02, 0x11, 0x11, 0x22, 0x22, 0x24, 0x03, 0x23, 0x01, 0x10, 0x10, 0x11, - 0x11, 0xa0, 0x04, 0x02, 0x02, 0x11, 0x11, 0x22, 0x22, 0x24, 0x03, 0x23, 0x00, 0x00, 0x20, 0xa0, - 0x04, 0x02, 0x02, 0x11, 0x11, 0x22, 0x22, 0x24, 0x03, 0x23, 0x00, 0x20, 0x20, 0x11, 0x11, 0x80, - 0x00, 0x04, 0x02, 0x22, 0x00, 0x11, 0x10, 0x14, 0x10, 0x20, 0x14, 0xa4, 0x23, 0x14, 0x14, 0x03, - 0x03, 0x01, 0x01, 0x10, 0x10, 0x21, 0x14, 0x15, 0x15, 0x85, 0x02, 0x22, 0x02, 0x04, 0x04, 0x24, - 0x03, 0x13, 0x00, 0x91, 0x02, 0x22, 0x02, 0x04, 0x04, 0x24, 0x03, 0x13, 0x11, 0xa0, 0x02, 0x22, - 0x02, 0x04, 0x04, 0x24, 0x03, 0x13, 0x01, 0x10, 0x10, 0xa1, 0x02, 0x22, 0x02, 0x04, 0x04, 0x24, - 0x03, 0x13, 0x00, 0x00, 0x20, 0xa0, 0x02, 0x22, 0x12, 0x14, 0x04, 0x24, 0x00, 0x91, 0x02, 0x22, - 0x12, 0x14, 0x04, 0x24, 0x11, 0xa0, 0x02, 0x22, 0x12, 0x14, 0x04, 0x24, 0x01, 0x10, 0x10, 0xa1, - 0x02, 0x22, 0x12, 0x14, 0x04, 0x24, 0x20, 0x20, 0x00, 0x80, 0x00, 0x10, 0x10, 0x21, 0x21, 0x23, - 0x23, 0x14, 0x14, 0x04, 0x04, 0x00, 0x02, 0x92, 0x04, 0x02, 0x02, 0x24, 0x24, 0x22, 0x01, 0x10, - 0x10, 0x11, 0x11, 0xa0, 0x02, 0x22, 0x22, 0x24, 0x24, 0x04, 0x04, 0x02, 0x00, 0x91, 0x02, 0x22, - 0x22, 0x24, 0x24, 0x04, 0x04, 0x02, 0x11, 0xa0, 0x02, 0x22, 0x22, 0x24, 0x24, 0x04, 0x04, 0x02, - 0x11, 0x20, 0x00, 0x91, 0x02, 0x22, 0x22, 0x24, 0x24, 0x04, 0x04, 0x02, 0x01, 0x10, 0x10, 0x11, - 0x11, 0xa0, 0x01, 0x21, 0x21, 0x24, 0x24, 0x04, 0x04, 0x01, 0x00, 0x00, 0x20, 0xa0, 0x01, 0x23, - 0x03, 0xa1, 0x01, 0x10, 0x10, 0x21, 0x21, 0x23, 0x23, 0x14, 0x14, 0x03, 0x03, 0x01, 0x03, 0xa1, - 0x01, 0x04, 0x04, 0x24, 0x24, 0x21, 0x11, 0xa0, 0x01, 0x04, 0x04, 0x24, 0x24, 0x21, 0x00, 0x91, - 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x01, 0x10, 0x10, 0xa1, 0x01, 0x04, 0x04, 0x24, 0x24, 0x21, - 0x00, 0x00, 0x20, 0xa0, 0x01, 0x02, 0x02, 0x13, 0x13, 0x14, 0x13, 0x22, 0x22, 0x21, 0x11, 0xa0, - 0x00, 0x04, 0x01, 0x11, 0x11, 0x22, 0x22, 0x13, 0x13, 0x83, 0x00, 0x05, 0x00, 0x10, 0x10, 0x21, - 0x21, 0x12, 0x02, 0x22, 0x22, 0x24, 0x24, 0x84, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x23, 0x12, - 0x12, 0x02, 0x00, 0x91, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x23, 0x12, 0x12, 0x02, 0x11, 0xa0, - 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x23, 0x12, 0x12, 0x02, 0x01, 0x10, 0x10, 0xa1, 0x02, 0x04, - 0x04, 0x24, 0x24, 0x22, 0x23, 0x12, 0x12, 0x02, 0x01, 0x10, 0x10, 0x11, 0x11, 0xa0, 0x02, 0x04, - 0x04, 0x24, 0x24, 0x22, 0x23, 0x12, 0x12, 0x02, 0x01, 0x01, 0x21, 0xa1, 0x02, 0x04, 0x04, 0x24, - 0x24, 0x22, 0x23, 0x12, 0x12, 0x02, 0x01, 0x10, 0x10, 0x21, 0x21, 0x81, 0x02, 0x13, 0x02, 0x04, - 0x04, 0x24, 0x12, 0x14, 0x12, 0x22, 0x13, 0x23, 0x22, 0xa3, 0x03, 0x04, 0x04, 0x24, 0x03, 0x12, - 0x12, 0x22, 0x14, 0x15, 0x15, 0x85, 0x24, 0x04, 0x04, 0x02, 0x02, 0x22, 0x22, 0x23, 0x23, 0x13, - 0x00, 0x91, 0x24, 0x04, 0x04, 0x02, 0x02, 0x22, 0x22, 0x23, 0x23, 0x13, 0x11, 0xa0, 0x24, 0x04, - 0x04, 0x02, 0x02, 0x22, 0x22, 0x23, 0x23, 0x13, 0x01, 0x10, 0x10, 0xa1, 0x24, 0x04, 0x04, 0x02, - 0x02, 0x22, 0x22, 0x23, 0x23, 0x13, 0x01, 0x01, 0x21, 0xa1, 0x12, 0x14, 0x00, 0x91, 0x12, 0x14, - 0x11, 0xa0, 0x12, 0x14, 0x01, 0x10, 0x10, 0xa1, 0x12, 0x14, 0x01, 0x01, 0x21, 0xa1, 0x00, 0x22, - 0x11, 0x20, 0x02, 0x22, 0x22, 0x24, 0x24, 0x04, 0x04, 0x82, 0x02, 0x04, 0x03, 0x12, 0x12, 0x23, - 0x23, 0x24, 0x01, 0x10, 0x10, 0x11, 0x11, 0xa0, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x02, - 0x00, 0x91, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x02, 0x11, 0xa0, 0x02, 0x04, 0x04, 0x24, - 0x24, 0x22, 0x22, 0x02, 0x01, 0x10, 0x10, 0xa1, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x02, - 0x01, 0x10, 0x10, 0x11, 0x11, 0xa0, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x02, 0x01, 0x01, - 0x21, 0xa1, 0x11, 0x11, 0x02, 0x22, 0x13, 0x93, 0x02, 0x04, 0x04, 0x24, 0x24, 0x22, 0x22, 0x02, - 0x04, 0xa2, 0x02, 0x04, 0x04, 0x14, 0x14, 0x23, 0x24, 0x22, 0x00, 0x91, 0x02, 0x04, 0x04, 0x14, - 0x14, 0x23, 0x24, 0x22, 0x11, 0xa0, 0x02, 0x04, 0x04, 0x14, 0x14, 0x23, 0x24, 0x22, 0x01, 0x10, - 0x10, 0xa1, 0x02, 0x04, 0x04, 0x14, 0x14, 0x23, 0x24, 0x22, 0x01, 0x01, 0x21, 0xa1, 0x02, 0x03, - 0x03, 0x14, 0x22, 0x23, 0x23, 0x05, 0x11, 0xa0, 0x00, 0x04, 0x02, 0x11, 0x11, 0x22, 0x22, 0x13, - 0x13, 0x82, 0x02, 0x03, 0x03, 0x14, 0x22, 0x23, 0x23, 0x05, 0x01, 0x01, 0x21, 0xa1, }; - - - -void CNFGDrawText( const char * text, int scale ) -{ - const unsigned char * lmap; - float iox = (float)CNFGPenX; - float ioy = (float)CNFGPenY; - - int place = 0; - unsigned short index; - int bQuit = 0; - while( text[place] ) - { - unsigned char c = text[place]; - - switch( c ) - { - case 9: - iox += 12 * scale; - break; - case 10: - iox = (float)CNFGPenX; - ioy += 6 * scale; - break; - default: - index = FontCharMap[c]; - if( index == 65535 ) - { - iox += 3 * scale; - break; - } - - lmap = &FontCharData[index]; - do - { - int x1 = (int)((((*lmap) & 0x70)>>4)*scale + iox); - int y1 = (int)(((*lmap) & 0x0f)*scale + ioy); - int x2 = (int)((((*(lmap+1)) & 0x70)>>4)*scale + iox); - int y2 = (int)(((*(lmap+1)) & 0x0f)*scale + ioy); - lmap++; - CNFGTackSegment( x1, y1, x2, y2 ); - bQuit = *lmap & 0x80; - lmap++; - } while( !bQuit ); - - iox += 3 * scale; - } - place++; - } -} - - -void CNFGDrawBox( int x1, int y1, int x2, int y2 ) -{ - unsigned lc = CNFGLastColor; - CNFGColor( CNFGDialogColor ); - CNFGTackRectangle( x1, y1, x2, y2 ); - CNFGColor( lc ); - CNFGTackSegment( x1, y1, x2, y1 ); - CNFGTackSegment( x2, y1, x2, y2 ); - CNFGTackSegment( x2, y2, x1, y2 ); - CNFGTackSegment( x1, y2, x1, y1 ); -} - -void CNFGGetTextExtents( const char * text, int * w, int * h, int textsize ) -{ - int charsx = 0; - int charsy = 1; - int charsline = 0; - const char * s; - - for( s = text; *s; s++ ) - { - if( *s == '\n' ) - { - charsline = 0; - if( *(s+1) ) - charsy++; - } - else - { - charsline++; - if( charsline > charsx ) - charsx = charsline; - } - } - - *w = charsx * textsize * 3 + textsize; - *h = charsy * textsize * 6; -} - -void CNFGDrawTextbox( int x, int y, const char * text, int textsize ) -{ - int w; - int h; - - CNFGGetTextExtents( text, &w, &h, textsize ); - - CNFGDrawBox( x, y, x + w, y + h ); - CNFGPenX = x + textsize; - CNFGPenY = y + textsize; - CNFGDrawText( text, textsize ); -} diff --git a/colorchord2/DrawFunctions.h b/colorchord2/DrawFunctions.h deleted file mode 100644 index 8a77ba0..0000000 --- a/colorchord2/DrawFunctions.h +++ /dev/null @@ -1,54 +0,0 @@ -//Copyright (c) 2011 <>< Charles Lohr - Under the MIT/x11 or NewBSD License you choose. - -#ifndef _DRAWFUCNTIONS_H -#define _DRAWFUCNTIONS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct { - short x, y; -} RDPoint; - -extern int CNFGPenX, CNFGPenY; -extern uint32_t CNFGBGColor; -extern uint32_t CNFGLastColor; -extern uint32_t CNFGDialogColor; //background for boxes - -void CNFGDrawText( const char * text, int scale ); -void CNFGDrawBox( int x1, int y1, int x2, int y2 ); -void CNFGGetTextExtents( const char * text, int * w, int * h, int textsize ); -void CNFGDrawTextbox( int x, int y, const char * text, int textsize ); //ignores pen. - -//To be provided by driver. -uint32_t CNFGColor( uint32_t RGB ); -void CNFGUpdateScreenWithBitmap( unsigned long * data, int w, int h ); -void CNFGTackPixel( short x1, short y1 ); -void CNFGTackSegment( short x1, short y1, short x2, short y2 ); -void CNFGTackRectangle( short x1, short y1, short x2, short y2 ); -void CNFGTackPoly( RDPoint * points, int verts ); -void CNFGClearFrame(); -void CNFGSwapBuffers(); - -void CNFGGetDimensions( short * x, short * y ); -void CNFGSetup( const char * WindowName, int w, int h ); -void CNFGSetupFullscreen( const char * WindowName, int screen_number ); -void CNFGHandleInput(); - - -//You must provide: -void HandleKey( int keycode, int bDown ); -void HandleButton( int x, int y, int button, int bDown ); -void HandleMotion( int x, int y, int mask ); - - -#ifdef __cplusplus -}; -#endif - - -#endif - diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index b9c3df1..b77ce8e 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -16,8 +16,9 @@ CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder. SRC:=rawdrawandroid/android_usb_devices.c DisplayTensigralAndroid.c $(CC_C) + #Uncomment to make all targets. -TARGETS:=makecapk/lib/arm64-v8a/lib$(APPNAME).so makecapk/lib/armeabi-v7a/lib$(APPNAME).so makecapk/lib/x86/lib$(APPNAME).so makecapk/lib/x86_64/lib$(APPNAME).so +TARGETS:=makecapk/lib/armeabi-v7a/lib$(APPNAME).so #makecapk/lib/arm64-v8a/lib$(APPNAME).so makecapk/lib/x86/lib$(APPNAME).so makecapk/lib/x86_64/lib$(APPNAME).so include rawdrawandroid/Makefile diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 9153df2..818f782 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 9153df275e6fadfa0e2de9cdc5b49a1d858c950b +Subproject commit 818f7826f05d5ef1fb5c3e275d44359bd0dc01a0 diff --git a/colorchord2/default.conf b/colorchord2/default.conf index 7acb2a3..b11d29f 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -20,8 +20,8 @@ channels = 2 samplerate = 44100 wininput = -1 -#Compiled version will default this. -#sound_source = ALSA +#Compiled version will default to PULSE on Linux, WIN (winmm) on Windows and ANDROID on Android +# sound_source = ALSA #-1 indicates left and right, 0 left, 1 right. sample_channel = -1 @@ -30,7 +30,8 @@ devplay = default # Sets the device to get audio from, for WASAPI, "default" searches for a mic # devrecord = default # For WASAPI, if speaker loopback is desired use the following line -devrecord = defaultRender +devrecord = default +#Render # For Linux mostly use the following command to find valid devices to read from: # pactl list | grep pci- | grep monitor @@ -95,7 +96,7 @@ note_out_chop = 0.05000 # This is a vornoi thing: -# outdrivers = OutputVoronoi, DisplayArray +outdrivers = OutputVoronoi, DisplayArray lightx = 64 lighty = 32 fromsides = 1 @@ -104,9 +105,10 @@ satamp = 5.000 amppow = 2.510 distpow = 1.500 -outdrivers = DisplayArray, OutputLinear +#This is a linear or pie thing +# outdrivers = DisplayArray, OutputLinear # outdrivers = DisplayPie, OutputLinear -leds = 64 +leds = 64 pie_min = 0.18 pie_max = 0.3 diff --git a/colorchord2/main.c b/colorchord2/main.c index 4bdaa4d..459c362 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -1,4 +1,4 @@ -//Copyright 2015 <>< Charles Lohr under the ColorChord License. +//Copyright 2015-2020 <>< Charles Lohr under the ColorChord License. #if defined(WINDOWS) || defined(USE_WINDOWS)\ || defined(WIN32) || defined(WIN64) \ @@ -203,6 +203,7 @@ void HandleKey( int keycode, int bDown ) KeyHappened( keycode, bDown ); } +//On Android we want a really basic GUI void HandleButton( int x, int y, int button, int bDown ) { printf( "Button: %d,%d (%d) -> %d\n", x, y, button, bDown ); @@ -364,22 +365,19 @@ int main(int argc, char ** argv) #ifdef TCC RegisterConstructorFunctions(); #endif - + + printf( "Output Drivers:\n" ); for( i = 0; i < MAX_OUT_DRIVERS; i++ ) { if( ODList[i].Name ) printf( "\t%s\n", ODList[i].Name ); } + #if defined(WIN32) || defined(USE_WINDOWS) + //In case something needs network access. WSADATA wsaData; - WSAStartup(0x202, &wsaData); - - - strcpy( sound_source, "WASAPI" ); // Use either "sound_source=WASAPI" or "sound_source=WIN" in config file. #elif defined( ANDROID ) - strcpy( sound_source, "ANDROID" ); - int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); if( !hasperm ) { @@ -390,10 +388,8 @@ int main(int argc, char ** argv) { AndroidRequestAppPermissions( "INTERNET" ); } - - #else - strcpy( sound_source, "PULSE" ); + //Linux #endif gargc = argc; From 99aefdef878b6672f96f8375eecd7b8c2b5b1a94 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 21 May 2020 06:13:26 -0700 Subject: [PATCH 089/162] Bump ColorChord on Windows --- colorchord2/DisplayArray.c | 2 +- colorchord2/DisplayNetwork.c | 1 - colorchord2/DisplayOUTDriver.c | 2 +- colorchord2/DisplayPie.c | 2 +- colorchord2/WinDriver.c | 236 ----------------------------- colorchord2/XDriver.c | 258 -------------------------------- colorchord2/cnfa | 2 +- colorchord2/colorchord.exe | Bin 0 -> 238592 bytes colorchord2/default.conf | 1 + colorchord2/rawdraw | 2 +- colorchord2/windows/compile.bat | 4 +- 11 files changed, 8 insertions(+), 502 deletions(-) delete mode 100644 colorchord2/WinDriver.c delete mode 100644 colorchord2/XDriver.c create mode 100644 colorchord2/colorchord.exe diff --git a/colorchord2/DisplayArray.c b/colorchord2/DisplayArray.c index 01da7d8..2eed784 100644 --- a/colorchord2/DisplayArray.c +++ b/colorchord2/DisplayArray.c @@ -8,7 +8,7 @@ #include #include #include "color.h" -#include "DrawFunctions.h" +#include "CNFG.h" //Uses: note_amplitudes2[note] for how many lights to use. //Uses: note_amplitudes_out[note] for how bright it should be. diff --git a/colorchord2/DisplayNetwork.c b/colorchord2/DisplayNetwork.c index 9f8cc62..54a128b 100644 --- a/colorchord2/DisplayNetwork.c +++ b/colorchord2/DisplayNetwork.c @@ -8,7 +8,6 @@ #include #include #include "color.h" -#include "DrawFunctions.h" #if defined(WIN32) || defined(WINDOWS) #include diff --git a/colorchord2/DisplayOUTDriver.c b/colorchord2/DisplayOUTDriver.c index f848bdd..722f6a1 100644 --- a/colorchord2/DisplayOUTDriver.c +++ b/colorchord2/DisplayOUTDriver.c @@ -11,7 +11,7 @@ #include #include #include "color.h" -#include "DrawFunctions.h" +#include "CNFG.h" //Uses: note_amplitudes2[note] for how many lights to use. //Uses: note_amplitudes_out[note] for how bright it should be. diff --git a/colorchord2/DisplayPie.c b/colorchord2/DisplayPie.c index 0c38c50..08d377a 100644 --- a/colorchord2/DisplayPie.c +++ b/colorchord2/DisplayPie.c @@ -8,7 +8,7 @@ #include #include #include "color.h" -#include "DrawFunctions.h" +#include "CNFG.h" //Uses: note_amplitudes2[note] for how many lights to use. //Uses: note_amplitudes_out[note] for how bright it should be. diff --git a/colorchord2/WinDriver.c b/colorchord2/WinDriver.c deleted file mode 100644 index b0f41d7..0000000 --- a/colorchord2/WinDriver.c +++ /dev/null @@ -1,236 +0,0 @@ -//Copyright (c) 2011 <>< Charles Lohr - Under the MIT/x11 or NewBSD License you choose. -//Portion from: http://en.wikibooks.org/wiki/Windows_Programming/Window_Creation - - -#include "DrawFunctions.h" -#include -#include -#include -#include //for alloca - -static HINSTANCE lhInstance; -static HWND lsHWND; -static HDC lsHDC; -static HBITMAP lsBackBitmap; -static HDC lsWindowHDC; -static HBRUSH lsHBR; -static HPEN lsHPEN; -static HBRUSH lsClearBrush; -static unsigned int lsLastWidth; -static unsigned int lsLastHeight; - -static void InternalHandleResize() -{ - DeleteObject( lsBackBitmap ); - lsBackBitmap = CreateCompatibleBitmap( lsHDC, lsLastWidth, lsLastHeight ); - SelectObject( lsHDC, lsBackBitmap ); - -} - -uint32_t CNFGColor( uint32_t RGB ) -{ - CNFGLastColor = RGB; - - DeleteObject( lsHBR ); - lsHBR = CreateSolidBrush( RGB ); - SelectObject( lsHDC, lsHBR ); - - DeleteObject( lsHPEN ); - lsHPEN = CreatePen( PS_SOLID, 0, RGB ); - SelectObject( lsHDC, lsHPEN ); - - return RGB; -} - -void CNFGTackSegment( short x1, short y1, short x2, short y2 ) -{ - POINT pt[2] = { {x1, y1}, {x2, y2} }; - Polyline( lsHDC, pt, 2 ); - SetPixel( lsHDC, x1, y1, CNFGLastColor ); - SetPixel( lsHDC, x2, y2, CNFGLastColor ); -} - -void CNFGTackRectangle( short x1, short y1, short x2, short y2 ) -{ - RECT r; - if( x1 < x2 ) { r.left = x1; r.right = x2; } - else { r.left = x2; r.right = x1; } - if( y1 < y2 ) { r.top = y1; r.bottom = y2; } - else { r.top = y2; r.bottom = y1; } - FillRect( lsHDC, &r, lsHBR ); -} - -void CNFGClearFrame() -{ - RECT r = { 0, 0, lsLastWidth, lsLastHeight }; - DeleteObject( lsClearBrush ); - lsClearBrush = CreateSolidBrush( CNFGBGColor ); - SelectObject( lsHDC, lsClearBrush ); - - FillRect( lsHDC, &r, lsClearBrush ); -} - -void CNFGSwapBuffers() -{ - int thisw, thish; - RECT r; - BitBlt( lsWindowHDC, 0, 0, lsLastWidth, lsLastHeight, lsHDC, 0, 0, SRCCOPY ); - UpdateWindow( lsHWND ); - - //Check to see if the window is closed. - if( !IsWindow( lsHWND ) ) - { - exit( 0 ); - } - - GetClientRect( lsHWND, &r ); - thisw = r.right - r.left; - thish = r.bottom - r.top; - if( thisw != lsLastWidth || thish != lsLastHeight ) - { - lsLastWidth = thisw; - lsLastHeight = thish; - InternalHandleResize(); - } -} - -void CNFGTackPoly( RDPoint * points, int verts ) -{ - int i; - POINT * t = (POINT*)alloca( sizeof( POINT ) * verts ); - for( i = 0; i < verts; i++ ) - { - t[i].x = points[i].x; - t[i].y = points[i].y; - } - Polygon( lsHDC, t, verts ); -} - - -void CNFGTackPixel( short x1, short y1 ) -{ - SetPixel( lsHDC, x1, y1, CNFGLastColor ); -} - -void CNFGGetDimensions( short * x, short * y ) -{ - *x = lsLastWidth; - *y = lsLastHeight; -} - -//This was from the article -LRESULT CALLBACK MyWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) - { - case WM_DESTROY: - PostQuitMessage(0); - return 0; - } - return DefWindowProc(hwnd, msg, wParam, lParam); -} - -//This was from the article, too... well, mostly. -void CNFGSetup( const char * name_of_window, int width, int height ) -{ - static LPSTR szClassName = "MyClass"; - RECT client, window; - WNDCLASS wnd; - int w, h, wd, hd; - HINSTANCE hInstance = GetModuleHandle(NULL); - - lsLastWidth = width; - lsLastHeight = height; - - wnd.style = CS_HREDRAW | CS_VREDRAW; //we will explain this later - wnd.lpfnWndProc = MyWndProc; - wnd.cbClsExtra = 0; - wnd.cbWndExtra = 0; - wnd.hInstance = hInstance; - wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION); //default icon - wnd.hCursor = LoadCursor(NULL, IDC_ARROW); //default arrow mouse cursor - wnd.hbrBackground = (HBRUSH)(COLOR_BACKGROUND); - wnd.lpszMenuName = NULL; //no menu - wnd.lpszClassName = szClassName; - - if(!RegisterClass(&wnd)) //register the WNDCLASS - { - MessageBox(NULL, "This Program Requires Windows NT", "Error", MB_OK); - } - - lsHWND = CreateWindow(szClassName, - name_of_window, //name_of_window, - WS_OVERLAPPEDWINDOW, //basic window style - CW_USEDEFAULT, - CW_USEDEFAULT, //set starting point to default value - lsLastWidth, - lsLastHeight, //set all the dimensions to default value - NULL, //no parent window - NULL, //no menu - hInstance, - NULL); //no parameters to pass - - - lsWindowHDC = GetDC( lsHWND ); - lsHDC = CreateCompatibleDC( lsWindowHDC ); - lsBackBitmap = CreateCompatibleBitmap( lsWindowHDC, lsLastWidth, lsLastHeight ); - SelectObject( lsHDC, lsBackBitmap ); - - lsClearBrush = CreateSolidBrush( CNFGBGColor ); - lsHBR = CreateSolidBrush( 0xFFFFFF ); - lsHPEN = CreatePen( PS_SOLID, 0, 0xFFFFFF ); - - ShowWindow(lsHWND, 1); //display the window on the screen - - //Once set up... we have to change the window's borders so we get the client size right. - GetClientRect( lsHWND, &client ); - GetWindowRect( lsHWND, &window ); - w = ( window.right - window.left); - h = ( window.bottom - window.top); - wd = w - client.right; - hd = h - client.bottom; - MoveWindow( lsHWND, window.left, window.top, lsLastWidth + wd, lsLastHeight + hd, 1 ); - - InternalHandleResize(); -} - -void WindowsTerm(); - -void CNFGHandleInput() -{ - int ldown = 0; - - MSG msg; - while( PeekMessage( &msg, lsHWND, 0, 0xFFFF, 1 ) ) - { - TranslateMessage(&msg); - - switch( msg.message ) - { - case WM_QUIT: - case WM_DESTROY: - case WM_CLOSE: - printf( "Close\n" ); - WindowsTerm(); - TerminateProcess( 0, 0 ); - break; - case WM_MOUSEMOVE: - HandleMotion( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, ( (msg.wParam & 0x01)?1:0) | ((msg.wParam & 0x02)?2:0) | ((msg.wParam & 0x10)?4:0) ); - break; - case WM_LBUTTONDOWN: HandleButton( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, 1, 1 ); break; - case WM_RBUTTONDOWN: HandleButton( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, 2, 1 ); break; - case WM_MBUTTONDOWN: HandleButton( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, 3, 1 ); break; - case WM_LBUTTONUP: HandleButton( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, 1, 0 ); break; - case WM_RBUTTONUP: HandleButton( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, 2, 0 ); break; - case WM_MBUTTONUP: HandleButton( (msg.lParam & 0xFFFF), (msg.lParam>>16) & 0xFFFF, 3, 0 ); break; - case WM_KEYDOWN: - case WM_KEYUP: - HandleKey( tolower( msg.wParam ), (msg.message==WM_KEYDOWN) ); - break; - default: - DispatchMessage(&msg); - break; - } - } -} - diff --git a/colorchord2/XDriver.c b/colorchord2/XDriver.c deleted file mode 100644 index 21fe435..0000000 --- a/colorchord2/XDriver.c +++ /dev/null @@ -1,258 +0,0 @@ -//Copyright (c) 2011 <>< Charles Lohr - Under the MIT/x11 or NewBSD License you choose. -//portions from -//http://www.xmission.com/~georgeps/documentation/tutorials/Xlib_Beginner.html - -#define HAS_XINERAMA - -#include "DrawFunctions.h" - -#include -#include -#include -#include -#include -#ifdef HAS_XINERAMA -#include -#include -#endif -#include -#include - -XWindowAttributes CNFGWinAtt; -Display *CNFGDisplay; -Window CNFGWindow; -Pixmap CNFGPixmap; -GC CNFGGC; -GC CNFGWindowGC; -int FullScreen = 0; - -void CNFGGetDimensions( short * x, short * y ) -{ - *x = CNFGWinAtt.width; - *y = CNFGWinAtt.height; -} - -static void InternalLinkScreenAndGo( const char * WindowName ) -{ - XGetWindowAttributes( CNFGDisplay, CNFGWindow, &CNFGWinAtt ); - - XSelectInput (CNFGDisplay, CNFGWindow, KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ExposureMask | PointerMotionMask ); - XSetStandardProperties( CNFGDisplay, CNFGWindow, WindowName, WindowName, None, NULL, 0, NULL ); - - CNFGWindowGC = XCreateGC(CNFGDisplay, CNFGWindow, 0, 0); - - CNFGPixmap = XCreatePixmap( CNFGDisplay, CNFGWindow, CNFGWinAtt.width, CNFGWinAtt.height, CNFGWinAtt.depth ); - CNFGGC = XCreateGC(CNFGDisplay, CNFGPixmap, 0, 0); -} - -void CNFGSetupFullscreen( const char * WindowName, int screen_no ) -{ -#ifdef HAS_XINERAMA - XineramaScreenInfo *screeninfo = NULL; - int screens; - int event_basep, error_basep, a, b; - CNFGDisplay = XOpenDisplay(NULL); - int screen = XDefaultScreen(CNFGDisplay); - int xpos, ypos; - - if (!XShapeQueryExtension(CNFGDisplay, &event_basep, &error_basep)) - { - fprintf( stderr, "X-Server does not support shape extension" ); - exit( 1 ); - } - - Visual * visual = DefaultVisual(CNFGDisplay, screen); - CNFGWinAtt.depth = DefaultDepth(CNFGDisplay, screen); - - if (XineramaQueryExtension(CNFGDisplay, &a, &b ) && - (screeninfo = XineramaQueryScreens(CNFGDisplay, &screens)) && - XineramaIsActive(CNFGDisplay) && screen_no >= 0 && - screen_no < screens ) { - - CNFGWinAtt.width = screeninfo[screen_no].width; - CNFGWinAtt.height = screeninfo[screen_no].height; - xpos = screeninfo[screen_no].x_org; - ypos = screeninfo[screen_no].y_org; - } else - { - CNFGWinAtt.width = XDisplayWidth(CNFGDisplay, screen); - CNFGWinAtt.height = XDisplayHeight(CNFGDisplay, screen); - xpos = 0; - ypos = 0; - } - if (screeninfo) - XFree(screeninfo); - - - XSetWindowAttributes setwinattr; - setwinattr.override_redirect = 1; - setwinattr.save_under = 1; - setwinattr.event_mask = StructureNotifyMask | SubstructureNotifyMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | ButtonPressMask | PointerMotionMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask |KeyPressMask |KeyReleaseMask | SubstructureNotifyMask | FocusChangeMask; - setwinattr.border_pixel = 0; - - CNFGWindow = XCreateWindow(CNFGDisplay, XRootWindow(CNFGDisplay, screen), - xpos, ypos, CNFGWinAtt.width, CNFGWinAtt.height, - 0, CNFGWinAtt.depth, InputOutput, visual, CWBorderPixel | CWEventMask | CWOverrideRedirect | CWSaveUnder, &setwinattr); - - XMapWindow(CNFGDisplay, CNFGWindow); - XSetInputFocus( CNFGDisplay, CNFGWindow, RevertToParent, CurrentTime ); - XFlush(CNFGDisplay); - FullScreen = 1; -//printf( "%d %d %d %d\n", xpos, ypos, CNFGWinAtt.width, CNFGWinAtt.height ); - InternalLinkScreenAndGo( WindowName ); -/* - setwinattr.override_redirect = 1; - XChangeWindowAttributes( - CNFGDisplay, CNFGWindow, - CWBorderPixel | CWEventMask | CWOverrideRedirect, &setwinattr); -*/ -#else - CNFGSetup( WindowName, 640, 480 ); -#endif -} - - -void CNFGSetup( const char * WindowName, int w, int h ) -{ - CNFGDisplay = XOpenDisplay(NULL); - XGetWindowAttributes( CNFGDisplay, RootWindow(CNFGDisplay, 0), &CNFGWinAtt ); - - int depth = CNFGWinAtt.depth; - CNFGWindow = XCreateWindow(CNFGDisplay, RootWindow(CNFGDisplay, 0), 1, 1, w, h, 0, depth, InputOutput, CopyFromParent, 0, 0 ); - XMapWindow(CNFGDisplay, CNFGWindow); - XFlush(CNFGDisplay); - - InternalLinkScreenAndGo( WindowName ); -} - -void CNFGHandleInput() -{ - static int ButtonsDown; - XEvent report; - - int bKeyDirection = 1; - int r; - while( (r=XCheckMaskEvent( CNFGDisplay, KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ExposureMask | PointerMotionMask , &report )) ) - { -// XEvent nev; -// XPeekEvent(CNFGDisplay, &nev); - - //printf( "EVENT %d\n", report.type ); - //XMaskEvent(CNFGDisplay, KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ExposureMask, &report); - - bKeyDirection = 1; - switch (report.type) - { - case NoExpose: - break; - case Expose: - XGetWindowAttributes( CNFGDisplay, CNFGWindow, &CNFGWinAtt ); - if( CNFGPixmap ) XFreePixmap( CNFGDisplay, CNFGPixmap ); - CNFGPixmap = XCreatePixmap( CNFGDisplay, CNFGWindow, CNFGWinAtt.width, CNFGWinAtt.height, CNFGWinAtt.depth ); - if( CNFGGC ) XFreeGC( CNFGDisplay, CNFGGC ); - CNFGGC = XCreateGC(CNFGDisplay, CNFGPixmap, 0, 0); - break; - case KeyRelease: - bKeyDirection = 0; - case KeyPress: - HandleKey( XLookupKeysym(&report.xkey, 0), bKeyDirection ); - break; - case ButtonRelease: - bKeyDirection = 0; - case ButtonPress: - HandleButton( report.xbutton.x, report.xbutton.y, report.xbutton.button, bKeyDirection ); - ButtonsDown = (ButtonsDown & (~(1<>1 ); - break; - default: - printf( "Event: %d\n", report.type ); - } - } -} - - -void CNFGUpdateScreenWithBitmap( unsigned long * data, int w, int h ) -{ - static XImage *xi; - static int depth; - static int lw, lh; - - if( !xi ) - { - int screen = DefaultScreen(CNFGDisplay); -// Visual * visual = DefaultVisual(CNFGDisplay, screen); - depth = DefaultDepth(CNFGDisplay, screen)/8; -// xi = XCreateImage(CNFGDisplay, DefaultVisual( CNFGDisplay, DefaultScreen(CNFGDisplay) ), depth*8, ZPixmap, 0, (char*)data, w, h, 32, w*4 ); -// lw = w; -// lh = h; - } - - if( lw != w || lh != h ) - { - if( xi ) free( xi ); - xi = XCreateImage(CNFGDisplay, DefaultVisual( CNFGDisplay, DefaultScreen(CNFGDisplay) ), depth*8, ZPixmap, 0, (char*)data, w, h, 32, w*4 ); - lw = w; - lh = h; - } - -// ls = lw * lh; - - XPutImage(CNFGDisplay, CNFGWindow, CNFGWindowGC, xi, 0, 0, 0, 0, w, h ); -} - - -#ifndef RASTERIZER - - -uint32_t CNFGColor( uint32_t RGB ) -{ - unsigned char red = RGB & 0xFF; - unsigned char grn = ( RGB >> 8 ) & 0xFF; - unsigned char blu = ( RGB >> 16 ) & 0xFF; - CNFGLastColor = RGB; - unsigned long color = (red<<16)|(grn<<8)|(blu); - XSetForeground(CNFGDisplay, CNFGGC, color); - return color; -} - -void CNFGClearFrame() -{ - XGetWindowAttributes( CNFGDisplay, CNFGWindow, &CNFGWinAtt ); - XSetForeground(CNFGDisplay, CNFGGC, CNFGColor(CNFGBGColor) ); - XFillRectangle(CNFGDisplay, CNFGPixmap, CNFGGC, 0, 0, CNFGWinAtt.width, CNFGWinAtt.height ); -} - -void CNFGSwapBuffers() -{ - XCopyArea(CNFGDisplay, CNFGPixmap, CNFGWindow, CNFGWindowGC, 0,0,CNFGWinAtt.width,CNFGWinAtt.height,0,0); - XFlush(CNFGDisplay); - if( FullScreen ) - XSetInputFocus( CNFGDisplay, CNFGWindow, RevertToParent, CurrentTime ); -} - -void CNFGTackSegment( short x1, short y1, short x2, short y2 ) -{ - XDrawLine( CNFGDisplay, CNFGPixmap, CNFGGC, x1, y1, x2, y2 ); - XDrawPoint( CNFGDisplay, CNFGPixmap, CNFGGC, x2, y2 ); -} - -void CNFGTackPixel( short x1, short y1 ) -{ - XDrawPoint( CNFGDisplay, CNFGPixmap, CNFGGC, x1, y1 ); -} - -void CNFGTackRectangle( short x1, short y1, short x2, short y2 ) -{ - XFillRectangle(CNFGDisplay, CNFGPixmap, CNFGGC, x1, y1, x2-x1, y2-y1 ); -} - -void CNFGTackPoly( RDPoint * points, int verts ) -{ - XFillPolygon(CNFGDisplay, CNFGPixmap, CNFGGC, (XPoint *)points, verts, Convex, CoordModeOrigin ); -} - -#endif - diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 818f782..7964b7d 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 818f7826f05d5ef1fb5c3e275d44359bd0dc01a0 +Subproject commit 7964b7ddd8ec4b36369b82ce1688ca641adde0ed diff --git a/colorchord2/colorchord.exe b/colorchord2/colorchord.exe new file mode 100644 index 0000000000000000000000000000000000000000..47fcdc4b58189aa45ae0a68d35bafb365b0b8f1f GIT binary patch literal 238592 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 Date: Thu, 21 May 2020 06:20:06 -0700 Subject: [PATCH 090/162] Update default.conf Fix default dev recording and explain --- colorchord2/default.conf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/colorchord2/default.conf b/colorchord2/default.conf index db18565..8956acf 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -20,7 +20,7 @@ channels = 2 samplerate = 44100 wininput = -1 -#Compiled version will default to PULSE on Linux, WIN (winmm) on Windows and ANDROID on Android +#Compiled version will default to PULSE (or ALSA) on Linux, WASAPI (winmm) [or WIN for winmm] on Windows and ANDROID on Android # sound_source = ALSA sound_source = WASAPI @@ -28,9 +28,8 @@ sound_source = WASAPI sample_channel = -1 # Sets the playback device for CNFA (what speakers to go to) devplay = default -# Sets the device to get audio from, for WASAPI, "default" searches for a mic +# Sets the device to get audio from, for WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. # devrecord = default -# For WASAPI, if speaker loopback is desired use the following line devrecord = default #Render From 46156fe9e01c3e5982f6654d5c7275ea59b8914c Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 21 May 2020 02:38:22 -0700 Subject: [PATCH 091/162] Update compile.bat --- colorchord2/windows/compile.bat | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index 616c2fc..f69e406 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -1,5 +1,6 @@ @echo off echo Unzip http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win64-bin.zip to C:\tcc +echo Also, if compiling with OpenGL, download http://download.savannah.nongnu.org/releases/tinycc/winapi-full-for-0.9.27.zip and overwrite the include, etc. folders in C:\tcc. echo Don't worry. It includes the i386 compiler in the win64 build. set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -O2 -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g -DCNFGOGL @@ -20,4 +21,4 @@ rem set CC=C:\tcc\x86_64-win32-tcc.exe @echo on %CC% %CFLAGS% %INCLUDES% %ARCH_SPECIFIC% %SOURCES% %LDFLAGS% -o ..\colorchord.exe @echo off -pause \ No newline at end of file +pause From aa4e95681ca0f27baed5fcf1fcf9d38a52852c02 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Thu, 21 May 2020 19:52:10 -0700 Subject: [PATCH 092/162] Update swapped order of ops in CNFA. --- colorchord2/cnfa | 2 +- colorchord2/main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index 818f782..f0f478f 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit 818f7826f05d5ef1fb5c3e275d44359bd0dc01a0 +Subproject commit f0f478f619e5db0ef5b3cb5e7da2b7d5d6f317be diff --git a/colorchord2/main.c b/colorchord2/main.c index 459c362..daba5dd 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -459,7 +459,7 @@ int main(int argc, char ** argv) GetParameterI( "samplerate", 44100 ), GetParameterI( "samplerate", 44100 ), GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), - GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ), NULL ); + GetParameterS( "devplay", 0 ), GetParameterS( "devrecord", 0 ), NULL ); if( sd ) break; From 4626c40991cc1d7c4a51c316f40be0e3ba49f7d8 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Thu, 21 May 2020 19:52:47 -0700 Subject: [PATCH 093/162] Bump submodule --- colorchord2/rawdraw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/rawdraw b/colorchord2/rawdraw index 7681c76..407da6d 160000 --- a/colorchord2/rawdraw +++ b/colorchord2/rawdraw @@ -1 +1 @@ -Subproject commit 7681c766e68cbdd5640e0e342d6529e972902f46 +Subproject commit 407da6d1e7a11e68565c4f8cb35dfc330167e30b From 5a6e342a2361be605656bee82dd98a4cc2cd8036 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 21 May 2020 23:13:20 -0400 Subject: [PATCH 094/162] Fix Linux build issues --- colorchord2/DisplayFileWrite.c | 2 +- colorchord2/DisplaySHM.c | 2 +- colorchord2/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/colorchord2/DisplayFileWrite.c b/colorchord2/DisplayFileWrite.c index e6fa123..f90af8c 100644 --- a/colorchord2/DisplayFileWrite.c +++ b/colorchord2/DisplayFileWrite.c @@ -8,7 +8,7 @@ #include #include #include "color.h" -#include "DrawFunctions.h" +#include "CNFG.h" #include #include /* For mode constants */ #include /* For O_* constants */ diff --git a/colorchord2/DisplaySHM.c b/colorchord2/DisplaySHM.c index e4eb3e1..2c80d14 100644 --- a/colorchord2/DisplaySHM.c +++ b/colorchord2/DisplaySHM.c @@ -8,7 +8,7 @@ #include #include #include "color.h" -#include "DrawFunctions.h" +#include "CNFG.h" #include #include /* For mode constants */ #include /* For O_* constants */ diff --git a/colorchord2/Makefile b/colorchord2/Makefile index c06144a..08fb57c 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -17,7 +17,7 @@ EXTRALIBS:=-lusb-1.0 OBJS:=main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o colorchord : $(OBJS) - gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) + cc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c From d66addd2560ac31345e7bcfc063c33c95daace26 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Fri, 22 May 2020 11:12:27 +0200 Subject: [PATCH 095/162] switch out cc for $(CC) in Makefile --- colorchord2/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 08fb57c..641cf02 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -17,7 +17,7 @@ EXTRALIBS:=-lusb-1.0 OBJS:=main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o colorchord : $(OBJS) - cc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) + $(CC) -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c From 204fa7700419d8da8f7f207a92a92d853feb5d27 Mon Sep 17 00:00:00 2001 From: CaiB Date: Sun, 24 May 2020 15:17:32 +0900 Subject: [PATCH 096/162] Correcting config parameter name. Fixes #108 --- colorchord2/OutputCells.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/OutputCells.c b/colorchord2/OutputCells.c index a95d9cc..979b403 100644 --- a/colorchord2/OutputCells.c +++ b/colorchord2/OutputCells.c @@ -199,7 +199,7 @@ static void LEDParams(void * id ) led->satamp = 2; RegisterValue( "satamp", PAFLOAT, &led->satamp, sizeof( led->satamp ) ); led->total_leds = 300; RegisterValue( "leds", PAINT, &led->total_leds, sizeof( led->total_leds ) ); - led->steady_bright = 1; RegisterValue( "seady_bright", PAINT, &led->steady_bright, sizeof( led->steady_bright ) ); + led->steady_bright = 1; RegisterValue( "steady_bright", PAINT, &led->steady_bright, sizeof( led->steady_bright ) ); led->led_floor = .1; RegisterValue( "led_floor", PAFLOAT, &led->led_floor, sizeof( led->led_floor ) ); led->light_siding = 1.9;RegisterValue( "light_siding", PAFLOAT, &led->light_siding, sizeof( led->light_siding ) ); led->qtyamp = 20; RegisterValue( "qtyamp", PAFLOAT, &led->qtyamp, sizeof( led->qtyamp ) ); From b6be6c14a41bd78b8eb6709ac7b9829c4d4f8a89 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 5 Jul 2020 23:43:26 -0700 Subject: [PATCH 097/162] Fix flipped argument order and update CNFA --- colorchord2/cnfa | 2 +- colorchord2/default.conf | 4 ++-- colorchord2/main.c | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index f0f478f..aa931ed 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit f0f478f619e5db0ef5b3cb5e7da2b7d5d6f317be +Subproject commit aa931ed2db1991381867a1722b0e6a7bac98f467 diff --git a/colorchord2/default.conf b/colorchord2/default.conf index 8956acf..7bb04e2 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -22,7 +22,7 @@ wininput = -1 #Compiled version will default to PULSE (or ALSA) on Linux, WASAPI (winmm) [or WIN for winmm] on Windows and ANDROID on Android # sound_source = ALSA -sound_source = WASAPI +# sound_source = WASAPI #-1 indicates left and right, 0 left, 1 right. sample_channel = -1 @@ -30,7 +30,7 @@ sample_channel = -1 devplay = default # Sets the device to get audio from, for WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. # devrecord = default -devrecord = default + #Render # For Linux mostly use the following command to find valid devices to read from: diff --git a/colorchord2/main.c b/colorchord2/main.c index daba5dd..baaa97f 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -233,7 +233,7 @@ void HandleMotion( int x, int y, int mask ) { } -void SoundCB( struct CNFADriver * sd, short * in, short * out, int framesr, int framesp ) +void SoundCB( struct CNFADriver * sd, short * out, short * in, int framesp, int framesr ) { int channelin = sd->channelsRec; int channelout = sd->channelsPlay; @@ -265,7 +265,6 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int framesr, int // printf( "Sound fault A %d/%d %d/%d %f\n", j, channelin, i, samplesr, f ); } } - fo /= channelin; sound[soundhead] = fo*in_amplitude; soundhead = (soundhead+1)%SOUNDCBSIZE; From fdabac3b0d6dc0a71df2f56d9deef0b97b6630b1 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sat, 1 Aug 2020 20:13:02 -0700 Subject: [PATCH 098/162] Fix inability to operate in headless mode. --- colorchord2/main.c | 2 +- colorchord2/shmtest.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index baaa97f..98bf99b 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -483,7 +483,7 @@ int main(int argc, char ** argv) #ifdef ANDROID while(!bQuitColorChord) #else - while(!headless) + while(!bQuitColorChord) #endif { char stt[1024]; diff --git a/colorchord2/shmtest.conf b/colorchord2/shmtest.conf index eca7cd3..6d1fe59 100644 --- a/colorchord2/shmtest.conf +++ b/colorchord2/shmtest.conf @@ -8,7 +8,7 @@ set_screeny = 480 in_amplitude = 3.0 sample_channel = -1 -sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor +devrecord = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor #sourcename = bluez_sink.40_EF_4C_CA_A4_5D.monitor #alsa_output.pci-0000_00_1f.3.analog-stereo.monitor ## alsa_output.pci-0000_00_1b.0.analog-stereo.monitor From 2146a5c3f54846980f77dc107ce18e8afb288ff4 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Wed, 5 Aug 2020 04:41:18 -0400 Subject: [PATCH 099/162] Make STM32F303x6/x8 vs xB/xC --- embeddedstm32f303/Makefile | 10 ++- embeddedstm32f303/adc.c | 46 ++++++++---- embeddedstm32f303/ccconfig.h | 7 ++ embeddedstm32f303/lib/stm32f303.ld | 8 +- embeddedstm32f303/lib/system_stm32f30x.c | 9 ++- embeddedstm32f303/main.c | 28 ++++++- embeddedstm32f303/spi2812.c | 95 ++++++++++++++++++++++++ 7 files changed, 179 insertions(+), 24 deletions(-) diff --git a/embeddedstm32f303/Makefile b/embeddedstm32f303/Makefile index c471765..461f890 100644 --- a/embeddedstm32f303/Makefile +++ b/embeddedstm32f303/Makefile @@ -14,7 +14,7 @@ OBJCOPYFLAGS = -O binary BIN=$(CP) -O ihex -DEFS = -DSTM32F30X -DHSE_VALUE=25000000 +DEFS = -DSTM32F30X STARTUP = lib/startup_stm32f30x.s MCU = cortex-m4 @@ -29,8 +29,14 @@ CFLAGS = $(MCFLAGS) $(OPTIMIZE) $(DEFS) \ $(STM32_INCLUDES) \ -I../embeddedcommon \ -Wl,-T,lib/stm32f303.ld + CFLAGS+=-DDEBUG -CFLAGS+=-I. + +#If you use a TQFP STM32F303. +CFLAGS+=-I. -DTQFP32 -DHSE_VALUE=8000000 + +#From the nucleos(sp?) +#CFLAGS+=-I. -DHSE_VALUE=25000000 AFLAGS = $(MCFLAGS) diff --git a/embeddedstm32f303/adc.c b/embeddedstm32f303/adc.c index bca4ec5..b4f6f26 100644 --- a/embeddedstm32f303/adc.c +++ b/embeddedstm32f303/adc.c @@ -11,6 +11,24 @@ static int calibration_value; extern RCC_ClocksTypeDef RCC_Clocks; +#ifdef TQFP32 +#define GPIOADCPORT GPIOA +#define GPIOADCNUM GPIO_Pin_0 +#define ADCPLLCLK RCC_ADC12PLLCLK_Div2 +#define ADCPERIPHEN RCC_AHBPeriph_ADC12 +#define ADCPORTAHB RCC_AHBPeriph_GPIOA +#define ADCNUM ADC1 +#define ADCCHAN ADC_Channel_1 +#else +#define GPIOADCPORT GPIOB +#define GPIOADCNUM GPIO_Pin_12 +#define ADCPLLCLK RCC_ADC34PLLCLK_Div2 +#define ADCPERIPHEN RCC_AHBPeriph_ADC34 +#define ADCPORTAHB RCC_AHBPeriph_GPIOB +#define ADCNUM ADC4 +#define ADCCHAN ADC_Channel_3 +#endif + void InitADC() { ADC_InitTypeDef ADC_InitStructure; @@ -19,25 +37,25 @@ void InitADC() TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* Configure the ADC clock */ - RCC_ADCCLKConfig( RCC_ADC34PLLCLK_Div2 ); + RCC_ADCCLKConfig( ADCPLLCLK ); /* Enable ADC1 clock */ - RCC_AHBPeriphClockCmd( RCC_AHBPeriph_ADC34, ENABLE ); + RCC_AHBPeriphClockCmd( ADCPERIPHEN, ENABLE ); /* ADC Channel configuration */ /* GPIOC Periph clock enable */ - RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOB, ENABLE ); + RCC_AHBPeriphClockCmd( ADCPORTAHB, ENABLE ); /* Configure ADC Channel7 as analog input */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; + GPIO_InitStructure.GPIO_Pin = GPIOADCNUM; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; - GPIO_Init( GPIOB, &GPIO_InitStructure ); + GPIO_Init( GPIOADCPORT, &GPIO_InitStructure ); ADC_StructInit( &ADC_InitStructure ); /* Calibration procedure */ - ADC_VoltageRegulatorCmd( ADC4, ENABLE ); + ADC_VoltageRegulatorCmd( ADCNUM, ENABLE ); /* Insert delay equal to 10 µs */ _delay_us( 10 ); @@ -47,7 +65,7 @@ void InitADC() ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_OneShot; ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0; - ADC_CommonInit( ADC4, &ADC_CommonInitStructure ); + ADC_CommonInit( ADCNUM, &ADC_CommonInitStructure ); ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Enable; ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; @@ -57,16 +75,16 @@ void InitADC() ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable; ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable; ADC_InitStructure.ADC_NbrOfRegChannel = 1; - ADC_Init( ADC4, &ADC_InitStructure ); + ADC_Init( ADCNUM, &ADC_InitStructure ); /* ADC4 regular channel3 configuration */ - ADC_RegularChannelConfig( ADC4, ADC_Channel_3, 1, ADC_SampleTime_181Cycles5 ); + ADC_RegularChannelConfig( ADCNUM, ADCCHAN, 1, ADC_SampleTime_181Cycles5 ); /* Enable ADC4 */ - ADC_Cmd( ADC4, ENABLE ); + ADC_Cmd( ADCNUM, ENABLE ); /* wait for ADRDY */ - while( !ADC_GetFlagStatus( ADC4, ADC_FLAG_RDY ) ); + while( !ADC_GetFlagStatus( ADCNUM, ADC_FLAG_RDY ) ); NVIC_InitTypeDef NVIC_InitStructure; @@ -92,7 +110,7 @@ void InitADC() TIM_Cmd (TIM2, ENABLE); /* Start ADC4 Software Conversion */ - ADC_StartConversion( ADC4 ); + ADC_StartConversion( ADCNUM ); } @@ -104,8 +122,8 @@ void TIM2_IRQHandler (void) if (TIM_GetITStatus (TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit (TIM2, TIM_IT_Update); - int16_t value = ADC_GetConversionValue(ADC4); - ADC_StartConversion( ADC4 ); + int16_t value = ADC_GetConversionValue(ADCNUM); + ADC_StartConversion( ADCNUM ); oversampout += value; oversamp++; diff --git a/embeddedstm32f303/ccconfig.h b/embeddedstm32f303/ccconfig.h index 384459d..ae93cd4 100644 --- a/embeddedstm32f303/ccconfig.h +++ b/embeddedstm32f303/ccconfig.h @@ -2,9 +2,16 @@ #define _CCCONFIG_H #define CCEMBEDDED + +#ifdef TQFP32 +#define NUM_LIN_LEDS 20 +#define USE_NUM_LIN_LEDS 20 +#define DFREQ 12500 //XXX Incorrect. +#else #define NUM_LIN_LEDS 24 #define USE_NUM_LIN_LEDS 24 #define DFREQ 12500 +#endif #endif diff --git a/embeddedstm32f303/lib/stm32f303.ld b/embeddedstm32f303/lib/stm32f303.ld index 959adab..215432b 100644 --- a/embeddedstm32f303/lib/stm32f303.ld +++ b/embeddedstm32f303/lib/stm32f303.ld @@ -3,7 +3,7 @@ ENTRY( Reset_Handler ) /* Highest address of the user mode stack .*/ -_estack = 0x2000a000; /* end of 40K RAM */ +_estack = 0x20003000; /* end of 40K RAM */ /* Generate a link error if heap and s tack dont fit int o RAM */ @@ -12,9 +12,9 @@ _Min_Stack_Size = 0x200; /* required amount of stack .*/ MEMORY { - FLASH ( rx ) : ORIGIN = 0x08000000 , LENGTH = 256K - RAM ( xrw) : ORIGIN = 0x20000000 , LENGTH = 40K - CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 8K + FLASH ( rx ) : ORIGIN = 0x08000000 , LENGTH = 32K + RAM ( xrw) : ORIGIN = 0x20000000 , LENGTH = 12K + CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 4K } SECTIONS diff --git a/embeddedstm32f303/lib/system_stm32f30x.c b/embeddedstm32f303/lib/system_stm32f30x.c index 156160d..4000e1f 100644 --- a/embeddedstm32f303/lib/system_stm32f30x.c +++ b/embeddedstm32f303/lib/system_stm32f30x.c @@ -341,8 +341,15 @@ static void SetSysClock(void) /* PLL configuration */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); -// RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL9); + + + //If we're using an 8 MHz crystal. +#ifdef TQFP32 +// RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL9); // 8 * 9 = 72 MHz + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL8); //8 * 8 = 64 MHz +#else RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL2); //25MHz*2 = 50 MHz +#endif /* Enable PLL */ RCC->CR |= RCC_CR_PLLON; diff --git a/embeddedstm32f303/main.c b/embeddedstm32f303/main.c index db8156a..c13f986 100644 --- a/embeddedstm32f303/main.c +++ b/embeddedstm32f303/main.c @@ -25,7 +25,11 @@ volatile int samples; void ADCCallback( uint16_t adcval ) { +#ifdef TQFP32 + sampbuff[last_samp_pos] = adcval*2.0; +#else sampbuff[last_samp_pos] = adcval; +#endif last_samp_pos = ((last_samp_pos+1)%CIRCBUFSIZE); samples++; } @@ -47,14 +51,18 @@ int main(void) { uint32_t i = 0; + send_text( "TEST1\n" ); + RCC_GetClocksFreq( &RCC_Clocks ); - ConfigureLED(); LED_OFF; GPIO_InitTypeDef GPIO_InitStructure; //Turn B10 (TX) on, so we can have something positive to bias the ADC with. +#ifndef TQFP32 + ConfigureLED(); LED_OFF; ConfigureGPIO( GetGPIOFromString( "PB10" ), INOUT_OUT | DEFAULT_ON ); +#endif /* SysTick end of count event each 10ms */ SysTick_Config( RCC_Clocks.HCLK_Frequency/100 ); /// 100); @@ -63,23 +71,30 @@ int main(void) InitSPI2812(); InitADC(); - Init(); //Colorchord + InitColorChord(); //Colorchord // printf( "Operating at %.3fMHz\n", fv ); + +#ifndef TQFP32 freepin = GetGPIOFromString( "PB11" ); ConfigureGPIO( freepin, INOUT_OUT | DEFAULT_ON ); +#endif int this_samp = 0; int wf = 0; +#ifndef TQFP32 LED_ON; +#endif while(1) { if( this_samp != last_samp_pos ) { +#ifndef TQFP32 GPIOOn( freepin ); +#endif PushSample32( sampbuff[this_samp] ); //Can't put in full volume. this_samp = (this_samp+1)%CIRCBUFSIZE; @@ -87,18 +102,25 @@ int main(void) wf++; if( wf == 128 ) { + //uint8_t rdat[20] = { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }; + //static int countup; + //rdat[5] = sampbuff[last_samp_pos] ;//countup++; + //SendSPI2812( rdat, 4 ); NewFrame(); wf = 0; } - +#ifndef TQFP32 GPIOOff( freepin ); +#endif } } } void TimingDelay_Decrement() { +#ifndef TQFP32 LED_TOGGLE; +#endif } diff --git a/embeddedstm32f303/spi2812.c b/embeddedstm32f303/spi2812.c index 32ce0dd..4a1d70e 100644 --- a/embeddedstm32f303/spi2812.c +++ b/embeddedstm32f303/spi2812.c @@ -30,6 +30,30 @@ uint8_t MyBuffer[SPI2812_BUFFSIZE+ZERO_BUFFER]; //Currently, the 30X version does not have configurable ports. +#ifdef TQFP32 + + + +#define SPI_PORT SPI1 +#define SPI_PORT_CLOCK RCC_APB2Periph_SPI1 +#define SPI_PORT_CLOCK_INIT RCC_APB2PeriphClockCmd +#define SPI_MOSI_PIN GPIO_Pin_7 +#define SPI_MOSI_GPIO_PORT GPIOA +#define SPI_MOSI_GPIO_CLK RCC_AHBPeriph_GPIOA +#define SPI_MOSI_SOURCE GPIO_PinSource7 +#define SPI_MOSI_AF GPIO_AF_5 +#define SPI_PORT_DR_ADDRESS SPI_PORT->DR +#define SPI_PORT_DMA DMA1 +#define SPI_PORT_DMAx_CLK RCC_AHBPeriph_DMA1 +#define SPI_PORT_TX_DMA_CHANNEL DMA1_Channel3 +#define SPI_PORT_DMA_TX_IRQn DMA1_Channel3_IRQn + +#define DMA_HANDLER_IRQFN DMA1_Channel3_IRQHandler +#define DMA_FLAG_C DMA1_FLAG_TC3 //XXX May be wrong. +#define DMA_FLAG_E DMA1_FLAG_TE3 //XXX May be wrong + +#else + #define SPI_PORT SPI2 #define SPI_PORT_CLOCK RCC_APB1Periph_SPI2 #define SPI_PORT_CLOCK_INIT RCC_APB1PeriphClockCmd @@ -58,6 +82,8 @@ uint8_t MyBuffer[SPI2812_BUFFSIZE+ZERO_BUFFER]; #define SPI_PORT_DMA_TX_IRQHandler DMA1_Stream4_IRQHandler */ +#endif + #elif defined( STM32F40_41xxx ) #include @@ -135,6 +161,73 @@ void InitSPI2812() #ifdef STM32F30X +#ifdef TQFP32 + + //On SPI1, PORT A.7 + + RCC_AHBPeriphClockCmd(SPI_MOSI_GPIO_CLK, ENABLE); + RCC_AHBPeriphClockCmd(SPI_PORT_DMAx_CLK, ENABLE); + SPI_PORT_CLOCK_INIT(SPI_PORT_CLOCK, ENABLE); + SPI_I2S_DeInit(SPI_PORT); + + /* Configure the GPIO_LED pin */ + GPIO_InitStructure.GPIO_Pin = SPI_MOSI_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; + GPIO_Init(SPI_MOSI_GPIO_PORT, &GPIO_InitStructure); + + GPIO_PinAFConfig(SPI_MOSI_GPIO_PORT, SPI_MOSI_SOURCE, SPI_MOSI_AF); //MOSI //GPIO_AF_5??? GPIO_AF_6??? TODO + + /* SPI Config */ + SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx; + SPI_InitStructure.SPI_Mode = SPI_Mode_Master; + SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; + SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; + SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; + SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; + SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16; + SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; + SPI_InitStructure.SPI_CRCPolynomial = 7; //TODO: Remove this??? + + SPI_CalculateCRC(SPI_PORT, DISABLE); + SPI_Init(SPI_PORT, &SPI_InitStructure); + RCC_I2SCLKConfig( RCC_I2S2CLKSource_SYSCLK); + SPI_Cmd(SPI_PORT, ENABLE); + + //We're on DMA1, channel 5. + + memset( MyBuffer, 0xAA, 128 ); + + DMA_DeInit(SPI_PORT_TX_DMA_CHANNEL); + DMA_StructInit(&dma_init_struct); + dma_init_struct.DMA_PeripheralBaseAddr = (uint32_t) &SPI_PORT->DR; + dma_init_struct.DMA_MemoryBaseAddr = (uint32_t)MyBuffer; //REmove this? somehow? + dma_init_struct.DMA_DIR = DMA_DIR_PeripheralDST; + dma_init_struct.DMA_BufferSize = 128; + dma_init_struct.DMA_PeripheralInc = DMA_PeripheralInc_Disable; + dma_init_struct.DMA_MemoryInc = DMA_MemoryInc_Enable; + dma_init_struct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; + dma_init_struct.DMA_MemoryDataSize = DMA_PeripheralDataSize_Byte; + dma_init_struct.DMA_Mode = DMA_Mode_Normal; + dma_init_struct.DMA_Priority = DMA_Priority_VeryHigh; + dma_init_struct.DMA_M2M = DMA_M2M_Disable; + DMA_Init(SPI_PORT_TX_DMA_CHANNEL, &dma_init_struct); + + /* Configure the Priority Group */ + NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); + + /* Initialize NVIC Struct for DMA */ + nvic_init_struct.NVIC_IRQChannel = SPI_PORT_DMA_TX_IRQn; + nvic_init_struct.NVIC_IRQChannelPreemptionPriority = 1; + nvic_init_struct.NVIC_IRQChannelSubPriority = 0; + nvic_init_struct.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&nvic_init_struct); + + SPI_I2S_DMACmd(SPI_PORT, SPI_I2S_DMAReq_Tx, ENABLE); + +#else + //On SPI2, PORT B.15 RCC_AHBPeriphClockCmd(SPI_MOSI_GPIO_CLK, ENABLE); @@ -198,6 +291,8 @@ void InitSPI2812() SPI_I2S_DMACmd(SPI_PORT, SPI_I2S_DMAReq_Tx, ENABLE); +#endif + #elif defined( STM32F40_41xxx ) // enable the SPI peripheral clock From bb2cb0dd9e8299b506f60eaab83c016507fde60d Mon Sep 17 00:00:00 2001 From: CNLohr Date: Wed, 5 Aug 2020 13:28:14 -0400 Subject: [PATCH 100/162] Update colorchord on the STM32f303 --- embeddedstm32f303/Makefile | 4 ++-- embeddedstm32f303/README.md | 16 ++++++++++++++++ embeddedstm32f303/ccconfig.h | 17 ++++++++--------- embeddedstm32f303/main.c | 16 +++++++++------- 4 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 embeddedstm32f303/README.md diff --git a/embeddedstm32f303/Makefile b/embeddedstm32f303/Makefile index 461f890..b46c39d 100644 --- a/embeddedstm32f303/Makefile +++ b/embeddedstm32f303/Makefile @@ -32,10 +32,10 @@ CFLAGS = $(MCFLAGS) $(OPTIMIZE) $(DEFS) \ CFLAGS+=-DDEBUG -#If you use a TQFP STM32F303. +#If you use a TQFP STM32F303. (x6, x8) CFLAGS+=-I. -DTQFP32 -DHSE_VALUE=8000000 -#From the nucleos(sp?) +#From the nucleos(sp?) (STM32F303xB/xC) #CFLAGS+=-I. -DHSE_VALUE=25000000 AFLAGS = $(MCFLAGS) diff --git a/embeddedstm32f303/README.md b/embeddedstm32f303/README.md new file mode 100644 index 0000000..06ee710 --- /dev/null +++ b/embeddedstm32f303/README.md @@ -0,0 +1,16 @@ +# ColorChord running on an STM32F303 + + +## Step 1: Get the necessiary build enivronment + +``` +sudo apt-get install build-essential gcc-arm-none-eabi libnewlib-arm-none-eabi openocd +``` + +## Step 2: Build + +``` +make +``` + +Note: Step 2 being called "build" is a misnomer. If you have your board plugged in, it will also flash. diff --git a/embeddedstm32f303/ccconfig.h b/embeddedstm32f303/ccconfig.h index ae93cd4..d7bd2d6 100644 --- a/embeddedstm32f303/ccconfig.h +++ b/embeddedstm32f303/ccconfig.h @@ -3,15 +3,14 @@ #define CCEMBEDDED -#ifdef TQFP32 -#define NUM_LIN_LEDS 20 -#define USE_NUM_LIN_LEDS 20 -#define DFREQ 12500 //XXX Incorrect. -#else -#define NUM_LIN_LEDS 24 -#define USE_NUM_LIN_LEDS 24 -#define DFREQ 12500 -#endif +#include + +extern uint8_t RootNoteOffset; //From embeddedout.c +extern int UseNumLinLeds; + +#define NUM_LIN_LEDS 100 +#define USE_NUM_LIN_LEDS UseNumLinLeds +#define DFREQ 12500 //Unsure. #endif diff --git a/embeddedstm32f303/main.c b/embeddedstm32f303/main.c index c13f986..fb174d3 100644 --- a/embeddedstm32f303/main.c +++ b/embeddedstm32f303/main.c @@ -8,7 +8,8 @@ #include #include #include - +#include "spi2812.h" +#include "adc.h" gpio freepin; @@ -23,10 +24,15 @@ int16_t sampbuff[CIRCBUFSIZE]; volatile int samples; -void ADCCallback( uint16_t adcval ) + + +int UseNumLinLeds = 20; +int Gain = 10; + +void ADCCallback( int16_t adcval ) { #ifdef TQFP32 - sampbuff[last_samp_pos] = adcval*2.0; + sampbuff[last_samp_pos] = adcval*Gain; #else sampbuff[last_samp_pos] = adcval; #endif @@ -102,10 +108,6 @@ int main(void) wf++; if( wf == 128 ) { - //uint8_t rdat[20] = { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }; - //static int countup; - //rdat[5] = sampbuff[last_samp_pos] ;//countup++; - //SendSPI2812( rdat, 4 ); NewFrame(); wf = 0; } From 11fe3a9b38dbfa70eef8c229e9e896cd3d8ae10b Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sun, 20 Sep 2020 20:30:55 -0400 Subject: [PATCH 101/162] Update with DMX-512 output. Matching project here: https://github.com/cnlohr/esp8266_dmx_explorer --- colorchord2/DisplayNetwork.c | 11 +++++++++ colorchord2/DisplayPie.c | 4 +++- colorchord2/netlight-dmx.conf | 44 +++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 colorchord2/netlight-dmx.conf diff --git a/colorchord2/DisplayNetwork.c b/colorchord2/DisplayNetwork.c index 54a128b..03ddcef 100644 --- a/colorchord2/DisplayNetwork.c +++ b/colorchord2/DisplayNetwork.c @@ -31,6 +31,7 @@ struct DPODriver int leds; int skipfirst; int fliprg; + int flipgb; int firstval; int port; int is_rgby; @@ -148,6 +149,15 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) lbuff[i++] = OutLEDs[j*3+2]; //BLUE } } + else if( d->flipgb ) + { + for( j = 0; j < d->leds; j++ ) + { + lbuff[i++] = OutLEDs[j*3+0]; //RED + lbuff[i++] = OutLEDs[j*3+1]; //GREEN + lbuff[i++] = OutLEDs[j*3+2]; //BLUE + } + } else { for( j = 0; j < d->leds; j++ ) @@ -210,6 +220,7 @@ static void DPOParams(void * id ) d->firstval = 0; RegisterValue( "firstval", PAINT, &d->firstval, sizeof( d->firstval ) ); RegisterValue( "address", PABUFFER, d->address, sizeof( d->address ) ); d->fliprg = 0; RegisterValue( "fliprg", PAINT, &d->fliprg, sizeof( d->fliprg ) ); + d->flipgb = 0; RegisterValue( "flipgb", PAINT, &d->flipgb, sizeof( d->flipgb ) ); d->is_rgby = 0; RegisterValue( "rgby", PAINT, &d->is_rgby, sizeof( d->is_rgby ) ); d->skittlequantity=0;RegisterValue( "skittlequantity", PAINT, &d->skittlequantity, sizeof( d->skittlequantity ) ); d->socket = -1; diff --git a/colorchord2/DisplayPie.c b/colorchord2/DisplayPie.c index 08d377a..723a986 100644 --- a/colorchord2/DisplayPie.c +++ b/colorchord2/DisplayPie.c @@ -31,6 +31,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) int i; float cw = ((float)(screenx)) / 2.0; float ch = ((float)(screeny)) / 2.0; + RDPoint pts[6]; float sizeA = sqrtf( screenx * screenx + screeny * screeny ) * d->pie_min; float sizeB = sqrtf( screenx * screenx + screeny * screeny ) * d->pie_max; @@ -53,7 +54,8 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) pts[5].y = ch + sin(angB) * sizeA; CNFGColor( OutLEDs[i*3+0] | (OutLEDs[i*3+1] <<8)|(OutLEDs[i*3+2] <<16) ); - CNFGTackPoly( pts, 6 ); + CNFGTackPoly( pts, 3 ); + CNFGTackPoly( pts+3, 3 ); } diff --git a/colorchord2/netlight-dmx.conf b/colorchord2/netlight-dmx.conf new file mode 100644 index 0000000..742d1c9 --- /dev/null +++ b/colorchord2/netlight-dmx.conf @@ -0,0 +1,44 @@ +outdrivers = DisplayPie,DisplayNetwork, OutputLinear +#OutputCells +#OutputLinear + +#cells +qtyamp=50 +timebased=1 +snakey = 0 +steady_bright = 0 + + +leds = 168 +light_siding = 1.0 #Turn this to ~1.9 for more uniformity, ~1.0 for less. +satamp = 1.600 +is_loop=0 +led_floor = .1 #Turn to .25 for more uniformity, .1 for less. +#note_attach_amp_iir = .3 #.3000 +#note_attach_amp_iir2 = .15 #.1500 +#note_attach_freq_iir = .3 #0.3000 +steady_bright = 0 +#dft_iir = 0.0 +#dft_q = 20.0000 +#dft_speedup = 1000.0000 + +sourcename = alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1.monitor +#alsa_output.pci-0000_0a_00.1.hdmi-stereo.monitor +#alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor +# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor +#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor + +skipfirst = 3 +firstval = 0 +flipgb = 1 + +port = 7777 +#address = 192.168.4.1 +address = esp8266dmx.local +slope=.10 +amplify=.3 + + +lightx = 20 +lighty = 20 + From 0121375d6175c5905b26afc3a2f571ab29e74366 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Tue, 22 Sep 2020 18:54:32 -0400 Subject: [PATCH 102/162] Make netlight dmx loop --- colorchord2/netlight-dmx.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/colorchord2/netlight-dmx.conf b/colorchord2/netlight-dmx.conf index 742d1c9..4672b8f 100644 --- a/colorchord2/netlight-dmx.conf +++ b/colorchord2/netlight-dmx.conf @@ -1,3 +1,5 @@ +#For use with https://github.com/cnlohr/esp8266_dmx_explorer + outdrivers = DisplayPie,DisplayNetwork, OutputLinear #OutputCells #OutputLinear @@ -12,7 +14,7 @@ steady_bright = 0 leds = 168 light_siding = 1.0 #Turn this to ~1.9 for more uniformity, ~1.0 for less. satamp = 1.600 -is_loop=0 +is_loop=1 led_floor = .1 #Turn to .25 for more uniformity, .1 for less. #note_attach_amp_iir = .3 #.3000 #note_attach_amp_iir2 = .15 #.1500 From 1b7675ddd75d8536227bc0189f2ee640bf5cdcda Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sat, 26 Sep 2020 14:48:47 -0700 Subject: [PATCH 103/162] Add output gamma --- colorchord2/OutputCells.c | 4 ++- colorchord2/OutputLinear.c | 5 +-- colorchord2/OutputVoronoi.c | 5 +-- colorchord2/netlight-dmx-voronoi.conf | 51 +++++++++++++++++++++++++++ colorchord2/netlight-dmx.conf | 9 +++-- 5 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 colorchord2/netlight-dmx-voronoi.conf diff --git a/colorchord2/OutputCells.c b/colorchord2/OutputCells.c index 979b403..b1abd4a 100644 --- a/colorchord2/OutputCells.c +++ b/colorchord2/OutputCells.c @@ -30,6 +30,7 @@ struct CellsOutDriver float light_siding; float satamp; float qtyamp; + float outgamma; int steady_bright; int timebased; //Useful for pies, turn off for linear systems. int snakey; //Advance head for where to get LEDs around. @@ -184,7 +185,7 @@ static void LEDUpdate(void * id, struct NoteFinder*nf) if( satQ > 1 ) satQ = 1; float sendsat = (led->steady_bright?sat:satQ); if( sendsat > 1 ) sendsat = 1; - int r = CCtoHEX( binpos[ia], 1.0, sendsat ); + int r = CCtoHEX( binpos[ia], 1.0, pow( sendsat, led->outgamma ) ); OutLEDs[i*3+0] = r & 0xff; OutLEDs[i*3+1] = (r>>8) & 0xff; @@ -204,6 +205,7 @@ static void LEDParams(void * id ) led->light_siding = 1.9;RegisterValue( "light_siding", PAFLOAT, &led->light_siding, sizeof( led->light_siding ) ); led->qtyamp = 20; RegisterValue( "qtyamp", PAFLOAT, &led->qtyamp, sizeof( led->qtyamp ) ); led->timebased = 1; RegisterValue( "timebased", PAINT, &led->timebased, sizeof( led->timebased ) ); + led->outgamma = 1.0; RegisterValue( "outgamma", PAFLOAT, &led->outgamma, sizeof( led->outgamma ) ); led->snakey = 0; RegisterValue( "snakey", PAINT, &led->snakey, sizeof( led->snakey ) ); diff --git a/colorchord2/OutputLinear.c b/colorchord2/OutputLinear.c index 5c3d334..2a75db8 100644 --- a/colorchord2/OutputLinear.c +++ b/colorchord2/OutputLinear.c @@ -24,6 +24,7 @@ struct LEDOutDriver float last_led_amp[MAX_LEDS]; int steady_bright; float led_floor; + float outgamma; float led_limit; //Maximum brightness float satamp; int lastadvance; @@ -177,14 +178,13 @@ static void LEDUpdate(void * id, struct NoteFinder*nf) if( sendsat > led->led_limit ) sendsat = led->led_limit; - int r = CCtoHEX( led->last_led_pos[i], 1.0, sendsat ); + int r = CCtoHEX( led->last_led_pos[i], 1.0, pow( sendsat, led->outgamma ) ); OutLEDs[i*3+0] = r & 0xff; OutLEDs[i*3+1] = (r>>8) & 0xff; OutLEDs[i*3+2] = (r>>16) & 0xff; } - if( led->is_loop ) { for( i = 0; i < led->total_leds; i++ ) @@ -206,6 +206,7 @@ static void LEDParams(void * id ) led->is_loop = 0; RegisterValue( "is_loop", PAINT, &led->is_loop, sizeof( led->is_loop ) ); led->steady_bright = 1; RegisterValue( "steady_bright", PAINT, &led->steady_bright, sizeof( led->steady_bright ) ); led->led_limit = 1; RegisterValue( "led_limit", PAFLOAT, &led->led_limit, sizeof( led->led_limit ) ); + led->outgamma = 1.0; RegisterValue( "outgamma", PAFLOAT, &led->outgamma, sizeof( led->outgamma ) ); printf( "Found LEDs for output. leds=%d\n", led->total_leds ); diff --git a/colorchord2/OutputVoronoi.c b/colorchord2/OutputVoronoi.c index 714b429..0940703 100644 --- a/colorchord2/OutputVoronoi.c +++ b/colorchord2/OutputVoronoi.c @@ -25,6 +25,7 @@ struct DPODriver { int xn; int yn; + float outgamma; float cutoff; float satamp; float amppow; //For amplitudes @@ -127,7 +128,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) float sat = nf->note_amplitudes_out[bestmatch] * d->satamp; if( sat > 1.0 ) sat = 1.0; float note_color = nf->note_positions[bestmatch] / nf->freqbins; - color = CCtoHEX( note_color, 1.0, sat ); + color = CCtoHEX( note_color, 1.0, pow( sat, d->outgamma ) ); } OutLEDs[led*3+0] = color & 0xff; @@ -146,7 +147,7 @@ static void DPOParams(void * id ) d->yn = 90; RegisterValue( "lighty", PAINT, &d->yn, sizeof( d->yn ) ); d->cutoff = .01; RegisterValue( "Voronoi_cutoff", PAFLOAT, &d->cutoff, sizeof( d->cutoff ) ); d->satamp = 5; RegisterValue( "satamp", PAFLOAT, &d->satamp, sizeof( d->satamp ) ); - + d->outgamma = 1.0; RegisterValue( "outgamma", PAFLOAT, &d->outgamma, sizeof( d->outgamma ) ); d->amppow = 2.51; RegisterValue( "amppow", PAFLOAT, &d->amppow, sizeof( d->amppow ) ); d->distpow = 1.5; RegisterValue( "distpow", PAFLOAT, &d->distpow, sizeof( d->distpow ) ); diff --git a/colorchord2/netlight-dmx-voronoi.conf b/colorchord2/netlight-dmx-voronoi.conf new file mode 100644 index 0000000..07467bf --- /dev/null +++ b/colorchord2/netlight-dmx-voronoi.conf @@ -0,0 +1,51 @@ +#For use with https://github.com/cnlohr/esp8266_dmx_explorer + +outdrivers = DisplayArray,DisplayNetwork, OutputVoronoi +#OutputLinear +#OutputCells +#OutputLinear + +#vornooi +lightx = 24 +lighty = 7 +fromsides = 1 +outgamma=2.0 + +#cells +qtyamp=50 +timebased=1 +snakey = 1 +steady_bright = 0 +amppow = 1.00 #Higher willcull off not as bight things. + + +leds = 168 +light_siding = 1.0 #Turn this to ~1.9 for more uniformity, ~1.0 for less. +satamp = 1.600 +is_loop=1 +led_floor = .1 #Turn to .25 for more uniformity, .1 for less. +note_attach_amp_iir = .2 #.3000 +note_attach_amp_iir2 = .1 #.1500 +note_attach_freq_iir = .3 #0.3000 +steady_bright = 0 +#dft_iir = 0.0 +#dft_q = 20.0000 +#dft_speedup = 1000.0000 + +sourcename = alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1.monitor +#alsa_output.pci-0000_0a_00.1.hdmi-stereo.monitor +#alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor +# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor +#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor + +skipfirst = 3 +firstval = 0 +flipgb = 1 + +port = 7777 +#address = 192.168.4.1 +address = esp8266dmx.local +slope=.10 +amplify=.1 +led_floor=.1 + diff --git a/colorchord2/netlight-dmx.conf b/colorchord2/netlight-dmx.conf index 4672b8f..e29e3fb 100644 --- a/colorchord2/netlight-dmx.conf +++ b/colorchord2/netlight-dmx.conf @@ -1,14 +1,16 @@ #For use with https://github.com/cnlohr/esp8266_dmx_explorer -outdrivers = DisplayPie,DisplayNetwork, OutputLinear +outdrivers = DisplayPie,DisplayNetwork, OutputCells +#OutputLinear #OutputCells #OutputLinear #cells qtyamp=50 timebased=1 -snakey = 0 +snakey = 1 steady_bright = 0 +outgamma=3 leds = 168 @@ -38,7 +40,8 @@ port = 7777 #address = 192.168.4.1 address = esp8266dmx.local slope=.10 -amplify=.3 +amplify=.1 +led_floor=.1 lightx = 20 From 19b70322ef0dfcaa73153654496bbd209bee3002 Mon Sep 17 00:00:00 2001 From: nia Date: Sat, 26 Sep 2020 12:00:37 +0200 Subject: [PATCH 104/162] Allow building on non-Linux Unix systems. - Use pkg-config to find required libraries and include paths. - Only include extra Linux libraries on Linux. - Add libusb fallback code to hidapi.c --- colorchord2/DisplayDMX.c | 2 +- colorchord2/DisplayUSB2812.c | 2 +- colorchord2/Makefile | 22 +- colorchord2/hidapi.c | 1518 +++++++++++++++++++++++++++++++++- 4 files changed, 1535 insertions(+), 9 deletions(-) diff --git a/colorchord2/DisplayDMX.c b/colorchord2/DisplayDMX.c index c4ccdae..e2499bd 100644 --- a/colorchord2/DisplayDMX.c +++ b/colorchord2/DisplayDMX.c @@ -6,7 +6,7 @@ #include #include "parameters.h" #include -#include +#include #include "color.h" #include #include diff --git a/colorchord2/DisplayUSB2812.c b/colorchord2/DisplayUSB2812.c index 08c09b7..2ada8c9 100644 --- a/colorchord2/DisplayUSB2812.c +++ b/colorchord2/DisplayUSB2812.c @@ -6,7 +6,7 @@ #include #include "parameters.h" #include -#include +#include #include "color.h" #include #include diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 641cf02..98ce35b 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -7,18 +7,28 @@ WINGCC:= i686-w64-mingw32-gcc WINGCCFLAGS:= -g -DICACHE_FLASH_ATTR= -I../embeddedcommon -Icnfa -Irawdraw -I. -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi -RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext -LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt +#CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= +CFLAGS:=-g -O1 -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= +ifneq ($(OS),Windows_NT) +ifneq ($(shell uname),Darwin) +RAWDRAWCFLAGS:=$(shell pkg-config --cflags x11 xinerama xext libusb-1.0) +RAWDRAWLIBS:=-lm -lrt -pthread $(shell pkg-config --libs x11 xinerama xext libusb-1.0) +CFLAGS+=$(RAWDRAWCFLAGS) +endif +endif -CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= -EXTRALIBS:=-lusb-1.0 +ifeq ($(shell uname),Linux) +EXTRALIBS+=-ludev +EXTRALIBS+=$(shell pkg-config --libs alsa) +EXTRALIBS+=$(shell pkg-config --libs libpulse) +EXTRALIBS+=$(shell pkg-config --libs libpulse-simple) +endif OBJS:=main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o colorchord : $(OBJS) - $(CC) -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) - + $(CC) -o $@ $^ $(EXTRALIBS) $(RAWDRAWLIBS) colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) diff --git a/colorchord2/hidapi.c b/colorchord2/hidapi.c index d1f9c2f..c52378e 100644 --- a/colorchord2/hidapi.c +++ b/colorchord2/hidapi.c @@ -2153,7 +2153,7 @@ int main(void) #endif -#else //Linux +#elif defined(__linux__) /******************************************************* HIDAPI - Multi-Platform library for @@ -2953,6 +2953,1522 @@ HID_API_EXPORT const wchar_t * HID_API_CALL hid_error(hid_device *dev) return NULL; } +#else + +/******************************************************* + HIDAPI - Multi-Platform library for + communication with HID devices. + + Alan Ott + Signal 11 Software + + 8/22/2009 + Linux Version - 6/2/2010 + Libusb Version - 8/13/2010 + FreeBSD Version - 11/1/2011 + + Copyright 2009, All Rights Reserved. + + At the discretion of the user of this library, + this software may be licensed under the terms of the + GNU General Public License v3, a BSD-Style license, or the + original HIDAPI license as outlined in the LICENSE.txt, + LICENSE-gpl3.txt, LICENSE-bsd.txt, and LICENSE-orig.txt + files located at the root of the source distribution. + These files may also be found in the public source + code repository located at: + http://github.com/signal11/hidapi . +********************************************************/ + +#define _GNU_SOURCE /* needed for wcsdup() before glibc 2.10 */ + +/* C */ +#include +#include +#include +#include +#include +#include + +/* Unix */ +#include +#include +#include +#include +#include +#include +#include +#include + +/* GNU / LibUSB */ +#include +#ifndef __ANDROID__ +#include +#endif + +#include "hidapi.h" + +#ifdef __ANDROID__ + +/* Barrier implementation because Android/Bionic don't have pthread_barrier. + This implementation came from Brent Priddy and was posted on + StackOverflow. It is used with his permission. */ +typedef int pthread_barrierattr_t; +typedef struct pthread_barrier { + pthread_mutex_t mutex; + pthread_cond_t cond; + int count; + int trip_count; +} pthread_barrier_t; + +static int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count) +{ + if(count == 0) { + errno = EINVAL; + return -1; + } + + if(pthread_mutex_init(&barrier->mutex, 0) < 0) { + return -1; + } + if(pthread_cond_init(&barrier->cond, 0) < 0) { + pthread_mutex_destroy(&barrier->mutex); + return -1; + } + barrier->trip_count = count; + barrier->count = 0; + + return 0; +} + +static int pthread_barrier_destroy(pthread_barrier_t *barrier) +{ + pthread_cond_destroy(&barrier->cond); + pthread_mutex_destroy(&barrier->mutex); + return 0; +} + +static int pthread_barrier_wait(pthread_barrier_t *barrier) +{ + pthread_mutex_lock(&barrier->mutex); + ++(barrier->count); + if(barrier->count >= barrier->trip_count) + { + barrier->count = 0; + pthread_cond_broadcast(&barrier->cond); + pthread_mutex_unlock(&barrier->mutex); + return 1; + } + else + { + pthread_cond_wait(&barrier->cond, &(barrier->mutex)); + pthread_mutex_unlock(&barrier->mutex); + return 0; + } +} + +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef DEBUG_PRINTF +#define LOG(...) fprintf(stderr, __VA_ARGS__) +#else +#define LOG(...) do {} while (0) +#endif + +#ifndef __FreeBSD__ +#define DETACH_KERNEL_DRIVER +#endif + +/* Uncomment to enable the retrieval of Usage and Usage Page in +hid_enumerate(). Warning, on platforms different from FreeBSD +this is very invasive as it requires the detach +and re-attach of the kernel driver. See comments inside hid_enumerate(). +libusb HIDAPI programs are encouraged to use the interface number +instead to differentiate between interfaces on a composite HID device. */ +/*#define INVASIVE_GET_USAGE*/ + +/* Linked List of input reports received from the device. */ +struct input_report { + uint8_t *data; + size_t len; + struct input_report *next; +}; + + +struct hid_device_ { + /* Handle to the actual device. */ + libusb_device_handle *device_handle; + + /* Endpoint information */ + int input_endpoint; + int output_endpoint; + int input_ep_max_packet_size; + + /* The interface number of the HID */ + int interface; + + /* Indexes of Strings */ + int manufacturer_index; + int product_index; + int serial_index; + + /* Whether blocking reads are used */ + int blocking; /* boolean */ + + /* Read thread objects */ + pthread_t thread; + pthread_mutex_t mutex; /* Protects input_reports */ + pthread_cond_t condition; + pthread_barrier_t barrier; /* Ensures correct startup sequence */ + int shutdown_thread; + int cancelled; + struct libusb_transfer *transfer; + + /* List of received input reports. */ + struct input_report *input_reports; +}; + +static libusb_context *usb_context = NULL; + +uint16_t get_usb_code_for_current_locale(void); +static int return_data(hid_device *dev, unsigned char *data, size_t length); + +static hid_device *new_hid_device(void) +{ + hid_device *dev = calloc(1, sizeof(hid_device)); + dev->blocking = 1; + + pthread_mutex_init(&dev->mutex, NULL); + pthread_cond_init(&dev->condition, NULL); + pthread_barrier_init(&dev->barrier, NULL, 2); + + return dev; +} + +static void free_hid_device(hid_device *dev) +{ + /* Clean up the thread objects */ + pthread_barrier_destroy(&dev->barrier); + pthread_cond_destroy(&dev->condition); + pthread_mutex_destroy(&dev->mutex); + + /* Free the device itself */ + free(dev); +} + +#if 0 +/*TODO: Implement this funciton on hidapi/libusb.. */ +static void register_error(hid_device *device, const char *op) +{ + +} +#endif + +#ifdef INVASIVE_GET_USAGE +/* Get bytes from a HID Report Descriptor. + Only call with a num_bytes of 0, 1, 2, or 4. */ +static uint32_t get_bytes(uint8_t *rpt, size_t len, size_t num_bytes, size_t cur) +{ + /* Return if there aren't enough bytes. */ + if (cur + num_bytes >= len) + return 0; + + if (num_bytes == 0) + return 0; + else if (num_bytes == 1) { + return rpt[cur+1]; + } + else if (num_bytes == 2) { + return (rpt[cur+2] * 256 + rpt[cur+1]); + } + else if (num_bytes == 4) { + return (rpt[cur+4] * 0x01000000 + + rpt[cur+3] * 0x00010000 + + rpt[cur+2] * 0x00000100 + + rpt[cur+1] * 0x00000001); + } + else + return 0; +} + +/* Retrieves the device's Usage Page and Usage from the report + descriptor. The algorithm is simple, as it just returns the first + Usage and Usage Page that it finds in the descriptor. + The return value is 0 on success and -1 on failure. */ +static int get_usage(uint8_t *report_descriptor, size_t size, + unsigned short *usage_page, unsigned short *usage) +{ + unsigned int i = 0; + int size_code; + int data_len, key_size; + int usage_found = 0, usage_page_found = 0; + + while (i < size) { + int key = report_descriptor[i]; + int key_cmd = key & 0xfc; + + //printf("key: %02hhx\n", key); + + if ((key & 0xf0) == 0xf0) { + /* This is a Long Item. The next byte contains the + length of the data section (value) for this key. + See the HID specification, version 1.11, section + 6.2.2.3, titled "Long Items." */ + if (i+1 < size) + data_len = report_descriptor[i+1]; + else + data_len = 0; /* malformed report */ + key_size = 3; + } + else { + /* This is a Short Item. The bottom two bits of the + key contain the size code for the data section + (value) for this key. Refer to the HID + specification, version 1.11, section 6.2.2.2, + titled "Short Items." */ + size_code = key & 0x3; + switch (size_code) { + case 0: + case 1: + case 2: + data_len = size_code; + break; + case 3: + data_len = 4; + break; + default: + /* Can't ever happen since size_code is & 0x3 */ + data_len = 0; + break; + }; + key_size = 1; + } + + if (key_cmd == 0x4) { + *usage_page = get_bytes(report_descriptor, size, data_len, i); + usage_page_found = 1; + //printf("Usage Page: %x\n", (uint32_t)*usage_page); + } + if (key_cmd == 0x8) { + *usage = get_bytes(report_descriptor, size, data_len, i); + usage_found = 1; + //printf("Usage: %x\n", (uint32_t)*usage); + } + + if (usage_page_found && usage_found) + return 0; /* success */ + + /* Skip over this key and it's associated data */ + i += data_len + key_size; + } + + return -1; /* failure */ +} +#endif /* INVASIVE_GET_USAGE */ + +#if defined(__FreeBSD__) && __FreeBSD__ < 10 +/* The libusb version included in FreeBSD < 10 doesn't have this function. In + mainline libusb, it's inlined in libusb.h. This function will bear a striking + resemblance to that one, because there's about one way to code it. + + Note that the data parameter is Unicode in UTF-16LE encoding. + Return value is the number of bytes in data, or LIBUSB_ERROR_*. + */ +static inline int libusb_get_string_descriptor(libusb_device_handle *dev, + uint8_t descriptor_index, uint16_t lang_id, + unsigned char *data, int length) +{ + return libusb_control_transfer(dev, + LIBUSB_ENDPOINT_IN | 0x0, /* Endpoint 0 IN */ + LIBUSB_REQUEST_GET_DESCRIPTOR, + (LIBUSB_DT_STRING << 8) | descriptor_index, + lang_id, data, (uint16_t) length, 1000); +} + +#endif + + +/* Get the first language the device says it reports. This comes from + USB string #0. */ +static uint16_t get_first_language(libusb_device_handle *dev) +{ + uint16_t buf[32]; + int len; + + /* Get the string from libusb. */ + len = libusb_get_string_descriptor(dev, + 0x0, /* String ID */ + 0x0, /* Language */ + (unsigned char*)buf, + sizeof(buf)); + if (len < 4) + return 0x0; + + return buf[1]; /* First two bytes are len and descriptor type. */ +} + +static int is_language_supported(libusb_device_handle *dev, uint16_t lang) +{ + uint16_t buf[32]; + int len; + int i; + + /* Get the string from libusb. */ + len = libusb_get_string_descriptor(dev, + 0x0, /* String ID */ + 0x0, /* Language */ + (unsigned char*)buf, + sizeof(buf)); + if (len < 4) + return 0x0; + + + len /= 2; /* language IDs are two-bytes each. */ + /* Start at index 1 because there are two bytes of protocol data. */ + for (i = 1; i < len; i++) { + if (buf[i] == lang) + return 1; + } + + return 0; +} + + +/* This function returns a newly allocated wide string containing the USB + device string numbered by the index. The returned string must be freed + by using free(). */ +static wchar_t *get_usb_string(libusb_device_handle *dev, uint8_t idx) +{ + char buf[512]; + int len; + wchar_t *str = NULL; + +#ifndef __ANDROID__ /* we don't use iconv on Android */ + wchar_t wbuf[256]; + /* iconv variables */ + iconv_t ic; + size_t inbytes; + size_t outbytes; + size_t res; +#ifdef __FreeBSD__ + const char *inptr; +#else + char *inptr; +#endif + char *outptr; +#endif + + /* Determine which language to use. */ + uint16_t lang; + lang = get_usb_code_for_current_locale(); + if (!is_language_supported(dev, lang)) + lang = get_first_language(dev); + + /* Get the string from libusb. */ + len = libusb_get_string_descriptor(dev, + idx, + lang, + (unsigned char*)buf, + sizeof(buf)); + if (len < 0) + return NULL; + +#ifdef __ANDROID__ + + /* Bionic does not have iconv support nor wcsdup() function, so it + has to be done manually. The following code will only work for + code points that can be represented as a single UTF-16 character, + and will incorrectly convert any code points which require more + than one UTF-16 character. + + Skip over the first character (2-bytes). */ + len -= 2; + str = malloc((len / 2 + 1) * sizeof(wchar_t)); + int i; + for (i = 0; i < len / 2; i++) { + str[i] = buf[i * 2 + 2] | (buf[i * 2 + 3] << 8); + } + str[len / 2] = 0x00000000; + +#else + + /* buf does not need to be explicitly NULL-terminated because + it is only passed into iconv() which does not need it. */ + + /* Initialize iconv. */ + ic = iconv_open("WCHAR_T", "UTF-16LE"); + if (ic == (iconv_t)-1) { + LOG("iconv_open() failed\n"); + return NULL; + } + + /* Convert to native wchar_t (UTF-32 on glibc/BSD systems). + Skip the first character (2-bytes). */ + inptr = buf+2; + inbytes = len-2; + outptr = (char*) wbuf; + outbytes = sizeof(wbuf); + res = iconv(ic, &inptr, &inbytes, &outptr, &outbytes); + if (res == (size_t)-1) { + LOG("iconv() failed\n"); + goto err; + } + + /* Write the terminating NULL. */ + wbuf[sizeof(wbuf)/sizeof(wbuf[0])-1] = 0x00000000; + if (outbytes >= sizeof(wbuf[0])) + *((wchar_t*)outptr) = 0x00000000; + + /* Allocate and copy the string. */ + str = wcsdup(wbuf); + +err: + iconv_close(ic); + +#endif + + return str; +} + +static char *make_path(libusb_device *dev, int interface_number) +{ + char str[64]; + snprintf(str, sizeof(str), "%04x:%04x:%02x", + libusb_get_bus_number(dev), + libusb_get_device_address(dev), + interface_number); + str[sizeof(str)-1] = '\0'; + + return strdup(str); +} + + +int HID_API_EXPORT hid_init(void) +{ + if (!usb_context) { + const char *locale; + + /* Init Libusb */ + if (libusb_init(&usb_context)) + return -1; + + /* Set the locale if it's not set. */ + locale = setlocale(LC_CTYPE, NULL); + if (!locale) + setlocale(LC_CTYPE, ""); + } + + return 0; +} + +int HID_API_EXPORT hid_exit(void) +{ + if (usb_context) { + libusb_exit(usb_context); + usb_context = NULL; + } + + return 0; +} + +struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id, unsigned short product_id) +{ + libusb_device **devs; + libusb_device *dev; + libusb_device_handle *handle; + ssize_t num_devs; + int i = 0; + + struct hid_device_info *root = NULL; /* return object */ + struct hid_device_info *cur_dev = NULL; + + if(hid_init() < 0) + return NULL; + + num_devs = libusb_get_device_list(usb_context, &devs); + if (num_devs < 0) + return NULL; + while ((dev = devs[i++]) != NULL) { + struct libusb_device_descriptor desc; + struct libusb_config_descriptor *conf_desc = NULL; + int j, k; + int interface_num = 0; + + int res = libusb_get_device_descriptor(dev, &desc); + unsigned short dev_vid = desc.idVendor; + unsigned short dev_pid = desc.idProduct; + + res = libusb_get_active_config_descriptor(dev, &conf_desc); + if (res < 0) + libusb_get_config_descriptor(dev, 0, &conf_desc); + if (conf_desc) { + for (j = 0; j < conf_desc->bNumInterfaces; j++) { + const struct libusb_interface *intf = &conf_desc->interface[j]; + for (k = 0; k < intf->num_altsetting; k++) { + const struct libusb_interface_descriptor *intf_desc; + intf_desc = &intf->altsetting[k]; + if (intf_desc->bInterfaceClass == LIBUSB_CLASS_HID) { + interface_num = intf_desc->bInterfaceNumber; + + /* Check the VID/PID against the arguments */ + if ((vendor_id == 0x0 || vendor_id == dev_vid) && + (product_id == 0x0 || product_id == dev_pid)) { + struct hid_device_info *tmp; + + /* VID/PID match. Create the record. */ + tmp = calloc(1, sizeof(struct hid_device_info)); + if (cur_dev) { + cur_dev->next = tmp; + } + else { + root = tmp; + } + cur_dev = tmp; + + /* Fill out the record */ + cur_dev->next = NULL; + cur_dev->path = make_path(dev, interface_num); + + res = libusb_open(dev, &handle); + + if (res >= 0) { + /* Serial Number */ + if (desc.iSerialNumber > 0) + cur_dev->serial_number = + get_usb_string(handle, desc.iSerialNumber); + + /* Manufacturer and Product strings */ + if (desc.iManufacturer > 0) + cur_dev->manufacturer_string = + get_usb_string(handle, desc.iManufacturer); + if (desc.iProduct > 0) + cur_dev->product_string = + get_usb_string(handle, desc.iProduct); + +#ifdef INVASIVE_GET_USAGE +{ + /* + This section is removed because it is too + invasive on the system. Getting a Usage Page + and Usage requires parsing the HID Report + descriptor. Getting a HID Report descriptor + involves claiming the interface. Claiming the + interface involves detaching the kernel driver. + Detaching the kernel driver is hard on the system + because it will unclaim interfaces (if another + app has them claimed) and the re-attachment of + the driver will sometimes change /dev entry names. + It is for these reasons that this section is + #if 0. For composite devices, use the interface + field in the hid_device_info struct to distinguish + between interfaces. */ + unsigned char data[256]; +#ifdef DETACH_KERNEL_DRIVER + int detached = 0; + /* Usage Page and Usage */ + res = libusb_kernel_driver_active(handle, interface_num); + if (res == 1) { + res = libusb_detach_kernel_driver(handle, interface_num); + if (res < 0) + LOG("Couldn't detach kernel driver, even though a kernel driver was attached."); + else + detached = 1; + } +#endif + res = libusb_claim_interface(handle, interface_num); + if (res >= 0) { + /* Get the HID Report Descriptor. */ + res = libusb_control_transfer(handle, LIBUSB_ENDPOINT_IN|LIBUSB_RECIPIENT_INTERFACE, LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_REPORT << 8)|interface_num, 0, data, sizeof(data), 5000); + if (res >= 0) { + unsigned short page=0, usage=0; + /* Parse the usage and usage page + out of the report descriptor. */ + get_usage(data, res, &page, &usage); + cur_dev->usage_page = page; + cur_dev->usage = usage; + } + else + LOG("libusb_control_transfer() for getting the HID report failed with %d\n", res); + + /* Release the interface */ + res = libusb_release_interface(handle, interface_num); + if (res < 0) + LOG("Can't release the interface.\n"); + } + else + LOG("Can't claim interface %d\n", res); +#ifdef DETACH_KERNEL_DRIVER + /* Re-attach kernel driver if necessary. */ + if (detached) { + res = libusb_attach_kernel_driver(handle, interface_num); + if (res < 0) + LOG("Couldn't re-attach kernel driver.\n"); + } +#endif +} +#endif /* INVASIVE_GET_USAGE */ + + libusb_close(handle); + } + /* VID/PID */ + cur_dev->vendor_id = dev_vid; + cur_dev->product_id = dev_pid; + + /* Release Number */ + cur_dev->release_number = desc.bcdDevice; + + /* Interface Number */ + cur_dev->interface_number = interface_num; + } + } + } /* altsettings */ + } /* interfaces */ + libusb_free_config_descriptor(conf_desc); + } + } + + libusb_free_device_list(devs, 1); + + return root; +} + +void HID_API_EXPORT hid_free_enumeration(struct hid_device_info *devs) +{ + struct hid_device_info *d = devs; + while (d) { + struct hid_device_info *next = d->next; + free(d->path); + free(d->serial_number); + free(d->manufacturer_string); + free(d->product_string); + free(d); + d = next; + } +} + +hid_device * hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number) +{ + struct hid_device_info *devs, *cur_dev; + const char *path_to_open = NULL; + hid_device *handle = NULL; + + devs = hid_enumerate(vendor_id, product_id); + cur_dev = devs; + while (cur_dev) { + if (cur_dev->vendor_id == vendor_id && + cur_dev->product_id == product_id) { + if (serial_number) { + if (cur_dev->serial_number && + wcscmp(serial_number, cur_dev->serial_number) == 0) { + path_to_open = cur_dev->path; + break; + } + } + else { + path_to_open = cur_dev->path; + break; + } + } + cur_dev = cur_dev->next; + } + + if (path_to_open) { + /* Open the device */ + handle = hid_open_path(path_to_open); + } + + hid_free_enumeration(devs); + + return handle; +} + +static void read_callback(struct libusb_transfer *transfer) +{ + hid_device *dev = transfer->user_data; + int res; + + if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { + + struct input_report *rpt = malloc(sizeof(*rpt)); + rpt->data = malloc(transfer->actual_length); + memcpy(rpt->data, transfer->buffer, transfer->actual_length); + rpt->len = transfer->actual_length; + rpt->next = NULL; + + pthread_mutex_lock(&dev->mutex); + + /* Attach the new report object to the end of the list. */ + if (dev->input_reports == NULL) { + /* The list is empty. Put it at the root. */ + dev->input_reports = rpt; + pthread_cond_signal(&dev->condition); + } + else { + /* Find the end of the list and attach. */ + struct input_report *cur = dev->input_reports; + int num_queued = 0; + while (cur->next != NULL) { + cur = cur->next; + num_queued++; + } + cur->next = rpt; + + /* Pop one off if we've reached 30 in the queue. This + way we don't grow forever if the user never reads + anything from the device. */ + if (num_queued > 30) { + return_data(dev, NULL, 0); + } + } + pthread_mutex_unlock(&dev->mutex); + } + else if (transfer->status == LIBUSB_TRANSFER_CANCELLED) { + dev->shutdown_thread = 1; + dev->cancelled = 1; + return; + } + else if (transfer->status == LIBUSB_TRANSFER_NO_DEVICE) { + dev->shutdown_thread = 1; + dev->cancelled = 1; + return; + } + else if (transfer->status == LIBUSB_TRANSFER_TIMED_OUT) { + //LOG("Timeout (normal)\n"); + } + else { + LOG("Unknown transfer code: %d\n", transfer->status); + } + + /* Re-submit the transfer object. */ + res = libusb_submit_transfer(transfer); + if (res != 0) { + LOG("Unable to submit URB. libusb error code: %d\n", res); + dev->shutdown_thread = 1; + dev->cancelled = 1; + } +} + + +static void *read_thread(void *param) +{ + hid_device *dev = param; + unsigned char *buf; + const size_t length = dev->input_ep_max_packet_size; + + /* Set up the transfer object. */ + buf = malloc(length); + dev->transfer = libusb_alloc_transfer(0); + libusb_fill_interrupt_transfer(dev->transfer, + dev->device_handle, + dev->input_endpoint, + buf, + length, + read_callback, + dev, + 5000/*timeout*/); + + /* Make the first submission. Further submissions are made + from inside read_callback() */ + libusb_submit_transfer(dev->transfer); + + /* Notify the main thread that the read thread is up and running. */ + pthread_barrier_wait(&dev->barrier); + + /* Handle all the events. */ + while (!dev->shutdown_thread) { + int res; + res = libusb_handle_events(usb_context); + if (res < 0) { + /* There was an error. */ + LOG("read_thread(): libusb reports error # %d\n", res); + + /* Break out of this loop only on fatal error.*/ + if (res != LIBUSB_ERROR_BUSY && + res != LIBUSB_ERROR_TIMEOUT && + res != LIBUSB_ERROR_OVERFLOW && + res != LIBUSB_ERROR_INTERRUPTED) { + break; + } + } + } + + /* Cancel any transfer that may be pending. This call will fail + if no transfers are pending, but that's OK. */ + libusb_cancel_transfer(dev->transfer); + + while (!dev->cancelled) + libusb_handle_events_completed(usb_context, &dev->cancelled); + + /* Now that the read thread is stopping, Wake any threads which are + waiting on data (in hid_read_timeout()). Do this under a mutex to + make sure that a thread which is about to go to sleep waiting on + the condition actually will go to sleep before the condition is + signaled. */ + pthread_mutex_lock(&dev->mutex); + pthread_cond_broadcast(&dev->condition); + pthread_mutex_unlock(&dev->mutex); + + /* The dev->transfer->buffer and dev->transfer objects are cleaned up + in hid_close(). They are not cleaned up here because this thread + could end either due to a disconnect or due to a user + call to hid_close(). In both cases the objects can be safely + cleaned up after the call to pthread_join() (in hid_close()), but + since hid_close() calls libusb_cancel_transfer(), on these objects, + they can not be cleaned up here. */ + + return NULL; +} + + +hid_device * HID_API_EXPORT hid_open_path(const char *path) +{ + hid_device *dev = NULL; + + libusb_device **devs; + libusb_device *usb_dev; + int res; + int d = 0; + int good_open = 0; + + if(hid_init() < 0) + return NULL; + + dev = new_hid_device(); + + libusb_get_device_list(usb_context, &devs); + while ((usb_dev = devs[d++]) != NULL) { + struct libusb_device_descriptor desc; + struct libusb_config_descriptor *conf_desc = NULL; + int i,j,k; + libusb_get_device_descriptor(usb_dev, &desc); + + if (libusb_get_active_config_descriptor(usb_dev, &conf_desc) < 0) + continue; + for (j = 0; j < conf_desc->bNumInterfaces; j++) { + const struct libusb_interface *intf = &conf_desc->interface[j]; + for (k = 0; k < intf->num_altsetting; k++) { + const struct libusb_interface_descriptor *intf_desc; + intf_desc = &intf->altsetting[k]; + if (intf_desc->bInterfaceClass == LIBUSB_CLASS_HID) { + char *dev_path = make_path(usb_dev, intf_desc->bInterfaceNumber); + if (!strcmp(dev_path, path)) { + /* Matched Paths. Open this device */ + + /* OPEN HERE */ + res = libusb_open(usb_dev, &dev->device_handle); + if (res < 0) { + LOG("can't open device\n"); + free(dev_path); + break; + } + good_open = 1; +#ifdef DETACH_KERNEL_DRIVER + /* Detach the kernel driver, but only if the + device is managed by the kernel */ + if (libusb_kernel_driver_active(dev->device_handle, intf_desc->bInterfaceNumber) == 1) { + res = libusb_detach_kernel_driver(dev->device_handle, intf_desc->bInterfaceNumber); + if (res < 0) { + libusb_close(dev->device_handle); + LOG("Unable to detach Kernel Driver\n"); + free(dev_path); + good_open = 0; + break; + } + } +#endif + res = libusb_claim_interface(dev->device_handle, intf_desc->bInterfaceNumber); + if (res < 0) { + LOG("can't claim interface %d: %d\n", intf_desc->bInterfaceNumber, res); + free(dev_path); + libusb_close(dev->device_handle); + good_open = 0; + break; + } + + /* Store off the string descriptor indexes */ + dev->manufacturer_index = desc.iManufacturer; + dev->product_index = desc.iProduct; + dev->serial_index = desc.iSerialNumber; + + /* Store off the interface number */ + dev->interface = intf_desc->bInterfaceNumber; + + /* Find the INPUT and OUTPUT endpoints. An + OUTPUT endpoint is not required. */ + for (i = 0; i < intf_desc->bNumEndpoints; i++) { + const struct libusb_endpoint_descriptor *ep + = &intf_desc->endpoint[i]; + + /* Determine the type and direction of this + endpoint. */ + int is_interrupt = + (ep->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) + == LIBUSB_TRANSFER_TYPE_INTERRUPT; + int is_output = + (ep->bEndpointAddress & LIBUSB_ENDPOINT_DIR_MASK) + == LIBUSB_ENDPOINT_OUT; + int is_input = + (ep->bEndpointAddress & LIBUSB_ENDPOINT_DIR_MASK) + == LIBUSB_ENDPOINT_IN; + + /* Decide whether to use it for input or output. */ + if (dev->input_endpoint == 0 && + is_interrupt && is_input) { + /* Use this endpoint for INPUT */ + dev->input_endpoint = ep->bEndpointAddress; + dev->input_ep_max_packet_size = ep->wMaxPacketSize; + } + if (dev->output_endpoint == 0 && + is_interrupt && is_output) { + /* Use this endpoint for OUTPUT */ + dev->output_endpoint = ep->bEndpointAddress; + } + } + + pthread_create(&dev->thread, NULL, read_thread, dev); + + /* Wait here for the read thread to be initialized. */ + pthread_barrier_wait(&dev->barrier); + + } + free(dev_path); + } + } + } + libusb_free_config_descriptor(conf_desc); + + } + + libusb_free_device_list(devs, 1); + + /* If we have a good handle, return it. */ + if (good_open) { + return dev; + } + else { + /* Unable to open any devices. */ + free_hid_device(dev); + return NULL; + } +} + + +int HID_API_EXPORT hid_write(hid_device *dev, const unsigned char *data, size_t length) +{ + int res; + int report_number = data[0]; + int skipped_report_id = 0; + + if (report_number == 0x0) { + data++; + length--; + skipped_report_id = 1; + } + + + if (dev->output_endpoint <= 0) { + /* No interrupt out endpoint. Use the Control Endpoint */ + res = libusb_control_transfer(dev->device_handle, + LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE|LIBUSB_ENDPOINT_OUT, + 0x09/*HID Set_Report*/, + (2/*HID output*/ << 8) | report_number, + dev->interface, + (unsigned char *)data, length, + 1000/*timeout millis*/); + + if (res < 0) + return -1; + + if (skipped_report_id) + length++; + + return length; + } + else { + /* Use the interrupt out endpoint */ + int actual_length; + res = libusb_interrupt_transfer(dev->device_handle, + dev->output_endpoint, + (unsigned char*)data, + length, + &actual_length, 1000); + + if (res < 0) + return -1; + + if (skipped_report_id) + actual_length++; + + return actual_length; + } +} + +/* Helper function, to simplify hid_read(). + This should be called with dev->mutex locked. */ +static int return_data(hid_device *dev, unsigned char *data, size_t length) +{ + /* Copy the data out of the linked list item (rpt) into the + return buffer (data), and delete the liked list item. */ + struct input_report *rpt = dev->input_reports; + size_t len = (length < rpt->len)? length: rpt->len; + if (len > 0) + memcpy(data, rpt->data, len); + dev->input_reports = rpt->next; + free(rpt->data); + free(rpt); + return len; +} + +static void cleanup_mutex(void *param) +{ + hid_device *dev = param; + pthread_mutex_unlock(&dev->mutex); +} + + +int HID_API_EXPORT hid_read_timeout(hid_device *dev, unsigned char *data, size_t length, int milliseconds) +{ + int bytes_read = -1; + +#if 0 + int transferred; + int res = libusb_interrupt_transfer(dev->device_handle, dev->input_endpoint, data, length, &transferred, 5000); + LOG("transferred: %d\n", transferred); + return transferred; +#endif + + pthread_mutex_lock(&dev->mutex); + pthread_cleanup_push(&cleanup_mutex, dev); + + /* There's an input report queued up. Return it. */ + if (dev->input_reports) { + /* Return the first one */ + bytes_read = return_data(dev, data, length); + goto ret; + } + + if (dev->shutdown_thread) { + /* This means the device has been disconnected. + An error code of -1 should be returned. */ + bytes_read = -1; + goto ret; + } + + if (milliseconds == -1) { + /* Blocking */ + while (!dev->input_reports && !dev->shutdown_thread) { + pthread_cond_wait(&dev->condition, &dev->mutex); + } + if (dev->input_reports) { + bytes_read = return_data(dev, data, length); + } + } + else if (milliseconds > 0) { + /* Non-blocking, but called with timeout. */ + int res; + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += milliseconds / 1000; + ts.tv_nsec += (milliseconds % 1000) * 1000000; + if (ts.tv_nsec >= 1000000000L) { + ts.tv_sec++; + ts.tv_nsec -= 1000000000L; + } + + while (!dev->input_reports && !dev->shutdown_thread) { + res = pthread_cond_timedwait(&dev->condition, &dev->mutex, &ts); + if (res == 0) { + if (dev->input_reports) { + bytes_read = return_data(dev, data, length); + break; + } + + /* If we're here, there was a spurious wake up + or the read thread was shutdown. Run the + loop again (ie: don't break). */ + } + else if (res == ETIMEDOUT) { + /* Timed out. */ + bytes_read = 0; + break; + } + else { + /* Error. */ + bytes_read = -1; + break; + } + } + } + else { + /* Purely non-blocking */ + bytes_read = 0; + } + +ret: + pthread_mutex_unlock(&dev->mutex); + pthread_cleanup_pop(0); + + return bytes_read; +} + +int HID_API_EXPORT hid_read(hid_device *dev, unsigned char *data, size_t length) +{ + return hid_read_timeout(dev, data, length, dev->blocking ? -1 : 0); +} + +int HID_API_EXPORT hid_set_nonblocking(hid_device *dev, int nonblock) +{ + dev->blocking = !nonblock; + + return 0; +} + + +int HID_API_EXPORT hid_send_feature_report(hid_device *dev, const unsigned char *data, size_t length) +{ + int res = -1; + int skipped_report_id = 0; + int report_number = data[0]; + + if (report_number == 0x0) { + data++; + length--; + skipped_report_id = 1; + } + + res = libusb_control_transfer(dev->device_handle, + LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE|LIBUSB_ENDPOINT_OUT, + 0x09/*HID set_report*/, + (3/*HID feature*/ << 8) | report_number, + dev->interface, + (unsigned char *)data, length, + 1000/*timeout millis*/); + + if (res < 0) + return -1; + + /* Account for the report ID */ + if (skipped_report_id) + length++; + + return length; +} + +int HID_API_EXPORT hid_get_feature_report(hid_device *dev, unsigned char *data, size_t length) +{ + int res = -1; + int skipped_report_id = 0; + int report_number = data[0]; + + if (report_number == 0x0) { + /* Offset the return buffer by 1, so that the report ID + will remain in byte 0. */ + data++; + length--; + skipped_report_id = 1; + } + res = libusb_control_transfer(dev->device_handle, + LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE|LIBUSB_ENDPOINT_IN, + 0x01/*HID get_report*/, + (3/*HID feature*/ << 8) | report_number, + dev->interface, + (unsigned char *)data, length, + 1000/*timeout millis*/); + + if (res < 0) + return -1; + + if (skipped_report_id) + res++; + + return res; +} + + +void HID_API_EXPORT hid_close(hid_device *dev) +{ + if (!dev) + return; + + /* Cause read_thread() to stop. */ + dev->shutdown_thread = 1; + libusb_cancel_transfer(dev->transfer); + + /* Wait for read_thread() to end. */ + pthread_join(dev->thread, NULL); + + /* Clean up the Transfer objects allocated in read_thread(). */ + free(dev->transfer->buffer); + libusb_free_transfer(dev->transfer); + + /* release the interface */ + libusb_release_interface(dev->device_handle, dev->interface); + + /* Close the handle */ + libusb_close(dev->device_handle); + + /* Clear out the queue of received reports. */ + pthread_mutex_lock(&dev->mutex); + while (dev->input_reports) { + return_data(dev, NULL, 0); + } + pthread_mutex_unlock(&dev->mutex); + + free_hid_device(dev); +} + + +int HID_API_EXPORT_CALL hid_get_manufacturer_string(hid_device *dev, wchar_t *string, size_t maxlen) +{ + return hid_get_indexed_string(dev, dev->manufacturer_index, string, maxlen); +} + +int HID_API_EXPORT_CALL hid_get_product_string(hid_device *dev, wchar_t *string, size_t maxlen) +{ + return hid_get_indexed_string(dev, dev->product_index, string, maxlen); +} + +int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *string, size_t maxlen) +{ + return hid_get_indexed_string(dev, dev->serial_index, string, maxlen); +} + +int HID_API_EXPORT_CALL hid_get_indexed_string(hid_device *dev, int string_index, wchar_t *string, size_t maxlen) +{ + wchar_t *str; + + str = get_usb_string(dev->device_handle, string_index); + if (str) { + wcsncpy(string, str, maxlen); + string[maxlen-1] = L'\0'; + free(str); + return 0; + } + else + return -1; +} + + +HID_API_EXPORT const wchar_t * HID_API_CALL hid_error(hid_device *dev) +{ + return NULL; +} + + +struct lang_map_entry { + const char *name; + const char *string_code; + uint16_t usb_code; +}; + +#define LANG(name,code,usb_code) { name, code, usb_code } +static struct lang_map_entry lang_map[] = { + LANG("Afrikaans", "af", 0x0436), + LANG("Albanian", "sq", 0x041C), + LANG("Arabic - United Arab Emirates", "ar_ae", 0x3801), + LANG("Arabic - Bahrain", "ar_bh", 0x3C01), + LANG("Arabic - Algeria", "ar_dz", 0x1401), + LANG("Arabic - Egypt", "ar_eg", 0x0C01), + LANG("Arabic - Iraq", "ar_iq", 0x0801), + LANG("Arabic - Jordan", "ar_jo", 0x2C01), + LANG("Arabic - Kuwait", "ar_kw", 0x3401), + LANG("Arabic - Lebanon", "ar_lb", 0x3001), + LANG("Arabic - Libya", "ar_ly", 0x1001), + LANG("Arabic - Morocco", "ar_ma", 0x1801), + LANG("Arabic - Oman", "ar_om", 0x2001), + LANG("Arabic - Qatar", "ar_qa", 0x4001), + LANG("Arabic - Saudi Arabia", "ar_sa", 0x0401), + LANG("Arabic - Syria", "ar_sy", 0x2801), + LANG("Arabic - Tunisia", "ar_tn", 0x1C01), + LANG("Arabic - Yemen", "ar_ye", 0x2401), + LANG("Armenian", "hy", 0x042B), + LANG("Azeri - Latin", "az_az", 0x042C), + LANG("Azeri - Cyrillic", "az_az", 0x082C), + LANG("Basque", "eu", 0x042D), + LANG("Belarusian", "be", 0x0423), + LANG("Bulgarian", "bg", 0x0402), + LANG("Catalan", "ca", 0x0403), + LANG("Chinese - China", "zh_cn", 0x0804), + LANG("Chinese - Hong Kong SAR", "zh_hk", 0x0C04), + LANG("Chinese - Macau SAR", "zh_mo", 0x1404), + LANG("Chinese - Singapore", "zh_sg", 0x1004), + LANG("Chinese - Taiwan", "zh_tw", 0x0404), + LANG("Croatian", "hr", 0x041A), + LANG("Czech", "cs", 0x0405), + LANG("Danish", "da", 0x0406), + LANG("Dutch - Netherlands", "nl_nl", 0x0413), + LANG("Dutch - Belgium", "nl_be", 0x0813), + LANG("English - Australia", "en_au", 0x0C09), + LANG("English - Belize", "en_bz", 0x2809), + LANG("English - Canada", "en_ca", 0x1009), + LANG("English - Caribbean", "en_cb", 0x2409), + LANG("English - Ireland", "en_ie", 0x1809), + LANG("English - Jamaica", "en_jm", 0x2009), + LANG("English - New Zealand", "en_nz", 0x1409), + LANG("English - Phillippines", "en_ph", 0x3409), + LANG("English - Southern Africa", "en_za", 0x1C09), + LANG("English - Trinidad", "en_tt", 0x2C09), + LANG("English - Great Britain", "en_gb", 0x0809), + LANG("English - United States", "en_us", 0x0409), + LANG("Estonian", "et", 0x0425), + LANG("Farsi", "fa", 0x0429), + LANG("Finnish", "fi", 0x040B), + LANG("Faroese", "fo", 0x0438), + LANG("French - France", "fr_fr", 0x040C), + LANG("French - Belgium", "fr_be", 0x080C), + LANG("French - Canada", "fr_ca", 0x0C0C), + LANG("French - Luxembourg", "fr_lu", 0x140C), + LANG("French - Switzerland", "fr_ch", 0x100C), + LANG("Gaelic - Ireland", "gd_ie", 0x083C), + LANG("Gaelic - Scotland", "gd", 0x043C), + LANG("German - Germany", "de_de", 0x0407), + LANG("German - Austria", "de_at", 0x0C07), + LANG("German - Liechtenstein", "de_li", 0x1407), + LANG("German - Luxembourg", "de_lu", 0x1007), + LANG("German - Switzerland", "de_ch", 0x0807), + LANG("Greek", "el", 0x0408), + LANG("Hebrew", "he", 0x040D), + LANG("Hindi", "hi", 0x0439), + LANG("Hungarian", "hu", 0x040E), + LANG("Icelandic", "is", 0x040F), + LANG("Indonesian", "id", 0x0421), + LANG("Italian - Italy", "it_it", 0x0410), + LANG("Italian - Switzerland", "it_ch", 0x0810), + LANG("Japanese", "ja", 0x0411), + LANG("Korean", "ko", 0x0412), + LANG("Latvian", "lv", 0x0426), + LANG("Lithuanian", "lt", 0x0427), + LANG("F.Y.R.O. Macedonia", "mk", 0x042F), + LANG("Malay - Malaysia", "ms_my", 0x043E), + LANG("Malay – Brunei", "ms_bn", 0x083E), + LANG("Maltese", "mt", 0x043A), + LANG("Marathi", "mr", 0x044E), + LANG("Norwegian - Bokml", "no_no", 0x0414), + LANG("Norwegian - Nynorsk", "no_no", 0x0814), + LANG("Polish", "pl", 0x0415), + LANG("Portuguese - Portugal", "pt_pt", 0x0816), + LANG("Portuguese - Brazil", "pt_br", 0x0416), + LANG("Raeto-Romance", "rm", 0x0417), + LANG("Romanian - Romania", "ro", 0x0418), + LANG("Romanian - Republic of Moldova", "ro_mo", 0x0818), + LANG("Russian", "ru", 0x0419), + LANG("Russian - Republic of Moldova", "ru_mo", 0x0819), + LANG("Sanskrit", "sa", 0x044F), + LANG("Serbian - Cyrillic", "sr_sp", 0x0C1A), + LANG("Serbian - Latin", "sr_sp", 0x081A), + LANG("Setsuana", "tn", 0x0432), + LANG("Slovenian", "sl", 0x0424), + LANG("Slovak", "sk", 0x041B), + LANG("Sorbian", "sb", 0x042E), + LANG("Spanish - Spain (Traditional)", "es_es", 0x040A), + LANG("Spanish - Argentina", "es_ar", 0x2C0A), + LANG("Spanish - Bolivia", "es_bo", 0x400A), + LANG("Spanish - Chile", "es_cl", 0x340A), + LANG("Spanish - Colombia", "es_co", 0x240A), + LANG("Spanish - Costa Rica", "es_cr", 0x140A), + LANG("Spanish - Dominican Republic", "es_do", 0x1C0A), + LANG("Spanish - Ecuador", "es_ec", 0x300A), + LANG("Spanish - Guatemala", "es_gt", 0x100A), + LANG("Spanish - Honduras", "es_hn", 0x480A), + LANG("Spanish - Mexico", "es_mx", 0x080A), + LANG("Spanish - Nicaragua", "es_ni", 0x4C0A), + LANG("Spanish - Panama", "es_pa", 0x180A), + LANG("Spanish - Peru", "es_pe", 0x280A), + LANG("Spanish - Puerto Rico", "es_pr", 0x500A), + LANG("Spanish - Paraguay", "es_py", 0x3C0A), + LANG("Spanish - El Salvador", "es_sv", 0x440A), + LANG("Spanish - Uruguay", "es_uy", 0x380A), + LANG("Spanish - Venezuela", "es_ve", 0x200A), + LANG("Southern Sotho", "st", 0x0430), + LANG("Swahili", "sw", 0x0441), + LANG("Swedish - Sweden", "sv_se", 0x041D), + LANG("Swedish - Finland", "sv_fi", 0x081D), + LANG("Tamil", "ta", 0x0449), + LANG("Tatar", "tt", 0X0444), + LANG("Thai", "th", 0x041E), + LANG("Turkish", "tr", 0x041F), + LANG("Tsonga", "ts", 0x0431), + LANG("Ukrainian", "uk", 0x0422), + LANG("Urdu", "ur", 0x0420), + LANG("Uzbek - Cyrillic", "uz_uz", 0x0843), + LANG("Uzbek – Latin", "uz_uz", 0x0443), + LANG("Vietnamese", "vi", 0x042A), + LANG("Xhosa", "xh", 0x0434), + LANG("Yiddish", "yi", 0x043D), + LANG("Zulu", "zu", 0x0435), + LANG(NULL, NULL, 0x0), +}; + +uint16_t get_usb_code_for_current_locale(void) +{ + char *locale; + char search_string[64]; + char *ptr; + struct lang_map_entry *lang; + + /* Get the current locale. */ + locale = setlocale(0, NULL); + if (!locale) + return 0x0; + + /* Make a copy of the current locale string. */ + strncpy(search_string, locale, sizeof(search_string)); + search_string[sizeof(search_string)-1] = '\0'; + + /* Chop off the encoding part, and make it lower case. */ + ptr = search_string; + while (*ptr) { + *ptr = tolower(*ptr); + if (*ptr == '.') { + *ptr = '\0'; + break; + } + ptr++; + } + + /* Find the entry which matches the string code of our locale. */ + lang = lang_map; + while (lang->string_code) { + if (!strcmp(lang->string_code, search_string)) { + return lang->usb_code; + } + lang++; + } + + /* There was no match. Find with just the language only. */ + /* Chop off the variant. Chop it off at the '_'. */ + ptr = search_string; + while (*ptr) { + *ptr = tolower(*ptr); + if (*ptr == '_') { + *ptr = '\0'; + break; + } + ptr++; + } + +#if 0 /* TODO: Do we need this? */ + /* Find the entry which matches the string code of our language. */ + lang = lang_map; + while (lang->string_code) { + if (!strcmp(lang->string_code, search_string)) { + return lang->usb_code; + } + lang++; + } +#endif + + /* Found nothing. */ + return 0x0; +} + +#ifdef __cplusplus +} +#endif #endif From 4e7f80e895d44a56346a8bc23c08378c43012c2d Mon Sep 17 00:00:00 2001 From: CNLohr Date: Mon, 5 Oct 2020 12:46:32 -0400 Subject: [PATCH 105/162] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 30431c0..8f8305d 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,12 @@ Use `apt-get` to install the following packages for Debian/Ubuntu/Mint: apt-get install libpulse-dev libasound2-dev libx11-dev libxext-dev libxinerama-dev libusb-1.0-0-dev libudev-dev ``` +To get colorchord, type: + +``` +git clone --recurse-submodules https://github.com/cnlohr/colorchord +``` + To make colorchord, type: ``` From a3eabc33eb293ae27cf155720d1de90fd99a8127 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Mon, 5 Oct 2020 12:47:22 -0400 Subject: [PATCH 106/162] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f8305d..d9c0d8b 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Building with Linux ----------------- Use `apt-get` to install the following packages for Debian/Ubuntu/Mint: ``` -apt-get install libpulse-dev libasound2-dev libx11-dev libxext-dev libxinerama-dev libusb-1.0-0-dev libudev-dev +apt-get install build-essential libpulse-dev libasound2-dev libx11-dev libxext-dev libxinerama-dev libusb-1.0-0-dev libudev-dev ``` To get colorchord, type: From b065da7474ec2cc28a9306458664493469885ec5 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 25 Oct 2020 21:50:54 -0700 Subject: [PATCH 107/162] Add radial display mode. --- colorchord2/DisplayRadialPoles.c | 153 +++++++++++++++++++++++++++++++ colorchord2/Makefile | 2 +- colorchord2/radial.conf | 37 ++++++++ 3 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 colorchord2/DisplayRadialPoles.c create mode 100644 colorchord2/radial.conf diff --git a/colorchord2/DisplayRadialPoles.c b/colorchord2/DisplayRadialPoles.c new file mode 100644 index 0000000..d61bf5a --- /dev/null +++ b/colorchord2/DisplayRadialPoles.c @@ -0,0 +1,153 @@ +//Copyright 2015 <>< Charles Lohr under the ColorChord License. + +#include "outdrivers.h" +#include "notefinder.h" +#include +#include "parameters.h" +#include +#include +#include +#include "color.h" +#include "CNFG.h" + +//Uses: note_amplitudes2[note] for how many lights to use. +//Uses: note_amplitudes_out[note] for how bright it should be. + +extern short screenx, screeny; + +struct DPRDriver +{ + float centeroffset; + float radialscale; + float polewidth; + int radialmode; +}; + + +static void DPRUpdate(void * id, struct NoteFinder*nf) +{ + struct DPRDriver * d = (struct DPRDriver*)id; + if( d->radialmode == 0 ) + { + int pole = 0; + int freqbins = nf->freqbins; + for( pole = 0; pole < freqbins; pole++ ) + { + float angle = pole / (float)freqbins * 3.14159 * 2; + float cx = screenx/2; + float cy = screeny/2; + cx += cos( angle ) * d->centeroffset; + cy += sin( angle ) * d->centeroffset; + float extentx = cx + cos(angle) * d->radialscale * nf->folded_bins[pole]; + float extenty = cy + sin(angle) * d->radialscale * nf->folded_bins[pole]; + float orthox = sin(angle) * d->polewidth; + float orthoy = -cos(angle) * d->polewidth; + + float p1x = cx + orthox; + float p1y = cy + orthoy; + float p2x = cx - orthox; + float p2y = cy - orthoy; + float p3x = extentx + orthox; + float p3y = extenty + orthoy; + float p4x = extentx - orthox; + float p4y = extenty - orthoy; + + CNFGColor( CCtoHEX( pole / (float)freqbins, 1.0, 1.0 ) ); + RDPoint pts[6] = { + { p1x, p1y }, + { p2x, p2y }, + { p3x, p3y }, + { p4x, p4y }, + { p3x, p3y }, + { p2x, p2y }, + }; + CNFGTackPoly( pts, 3 ); + CNFGTackPoly( pts+3, 3 ); + + + CNFGColor( 0x00000000 ); + CNFGTackSegment( p1x, p1y, p2x, p2y); + CNFGTackSegment( p2x, p2y, p4x, p4y); + CNFGTackSegment( p3x, p3y, p1x, p1y); + CNFGTackSegment( p4x, p4y, p3x, p3y); + + } + } + else if( d->radialmode == 1 ) + { + int pole = 0; + int polen = 0; + int freqbins = nf->freqbins; + for( pole = 0; pole < freqbins; pole++ ) + { + polen = (pole+1)%freqbins; + + float angleT = pole / (float)freqbins * 3.14159 * 2; + float angleN = polen / (float)freqbins * 3.14159 * 2; + float cx = screenx/2; + float cy = screeny/2; + + float p1x = cx + cos( angleT ) * d->centeroffset; + float p1y = cy + sin( angleT ) * d->centeroffset; + + float p2x = cx + cos( angleN ) * d->centeroffset; + float p2y = cy + sin( angleN ) * d->centeroffset; + + float binval = nf->folded_bins[pole]; + float binvalN = nf->folded_bins[polen]; + + float p3x = cx + cos( angleT ) * (d->radialscale * binval + d->centeroffset); + float p3y = cy + sin( angleT ) * (d->radialscale * binval + d->centeroffset); + + float p4x = cx + cos( angleN ) * (d->radialscale * binvalN + d->centeroffset); + float p4y = cy + sin( angleN ) * (d->radialscale * binvalN + d->centeroffset); + + CNFGColor( CCtoHEX( pole / (float)freqbins, 1.0, 1.0 ) ); + RDPoint pts[6] = { + { p1x, p1y }, + { p2x, p2y }, + { p3x, p3y }, + { p4x, p4y }, + { p3x, p3y }, + { p2x, p2y }, + }; + CNFGTackPoly( pts, 3 ); + CNFGTackPoly( pts+3, 3 ); + + CNFGColor( 0x00000000 ); + CNFGTackSegment( p1x, p1y, p2x, p2y); + CNFGTackSegment( p2x, p2y, p4x, p4y); + CNFGTackSegment( p3x, p3y, p1x, p1y); + CNFGTackSegment( p4x, p4y, p3x, p3y); + } + } + + + + CNFGColor( 0xffffff ); +} + +static void DPRParams(void * id ) +{ + struct DPRDriver * d = (struct DPRDriver*)id; + + d->centeroffset = 160; RegisterValue( "centeroffset", PAFLOAT, &d->centeroffset, sizeof( d->centeroffset ) ); + d->radialscale = 1000; RegisterValue( "radialscale", PAFLOAT, &d->radialscale, sizeof( d->radialscale ) ); + d->polewidth = 20; RegisterValue( "polewidth", PAFLOAT, &d->polewidth, sizeof( d->polewidth ) ); + d->radialmode = 0; RegisterValue( "radialmode", PAINT, &d->radialmode, sizeof( d->radialmode ) ); +} + +static struct DriverInstances * DisplayRadialPoles(const char * parameters) +{ + struct DriverInstances * ret = malloc( sizeof( struct DriverInstances ) ); + struct DPRDriver * d = ret->id = malloc( sizeof( struct DPRDriver ) ); + memset( d, 0, sizeof( struct DPRDriver ) ); + ret->Func = DPRUpdate; + ret->Params = DPRParams; + DPRParams( d ); + return ret; +} + +REGISTER_OUT_DRIVER(DisplayRadialPoles); + + diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 641cf02..4bc9cb2 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -1,6 +1,6 @@ all : colorchord -OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o +OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o DisplayRadialPoles.o WINGCC:= i686-w64-mingw32-gcc diff --git a/colorchord2/radial.conf b/colorchord2/radial.conf new file mode 100644 index 0000000..1f698ec --- /dev/null +++ b/colorchord2/radial.conf @@ -0,0 +1,37 @@ +# This is the configuration file for colorchord. +# Most values are already defaulted in the software. +# This file is constantly checked for new versions. +# \r, and ; are used as terminators, so you can put +# multiple entries on the same line. + +#Whether to limit the control loop to ~60ish FPS. +cpu_autolimit = 1 + +#General GUI properties. +title = PA Test +set_screenx = 1280 +set_screeny = 720 + +#Sound properties. +buffer = 384 +play = 0 +rec = 1 +channels = 2 +samplerate = 44100 +wininput = -1 + +#Compiled version will default to PULSE (or ALSA) on Linux, WASAPI (winmm) [or WIN for winmm] on Windows and ANDROID on Android +# sound_source = ALSA +# sound_source = WASAPI + +#-1 indicates left and right, 0 left, 1 right. +sample_channel = -1 +# Sets the playback device for CNFA (what speakers to go to) +devplay = default +# Sets the device to get audio from, for WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. + +devrecord = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor + +outdrivers = DisplayRadialPoles +radialscale = 3000 +radialmode = 1 From f368da416a278b5e25f9be3a5daf2bb5564ba781 Mon Sep 17 00:00:00 2001 From: hazcoper Date: Sun, 1 Nov 2020 23:33:42 +0000 Subject: [PATCH 108/162] Fix bug(?) if dft.c --- colorchord2/dft.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/colorchord2/dft.c b/colorchord2/dft.c index a28a758..90c3511 100644 --- a/colorchord2/dft.c +++ b/colorchord2/dft.c @@ -420,9 +420,12 @@ uint16_t Sdatspace[FIXBINS*4]; //(advances,places,isses,icses) static uint8_t Sdo_this_octave[BINCYCLE]; static int16_t Saccum_octavebins[OCTAVES]; static uint8_t Swhichoctaveplace; -#ifndef INCLUDING_EMBEDDED -uint16_t embeddedbins[FIXBINS]; //This is updated every time the DFT hits the octavecount, or 1/32 updates. -#endif + +//multiple definition of `embeddedbins'; dft.o (symbol from plugin):(.text+0x0): first defined here +//Had this issue when trying to build, commenting this lines out made the build successful +//#ifndef INCLUDING_EMBEDDED +//uint16_t embeddedbins[FIXBINS]; //This is updated every time the DFT hits the octavecount, or 1/32 updates. +//#endif //From: http://stackoverflow.com/questions/1100090/looking-for-an-efficient-integer-square-root-algorithm-for-arm-thumb2 /** From 51eafab39dc37559419c4af8ecf9c1e4a5928162 Mon Sep 17 00:00:00 2001 From: Tim Gates Date: Fri, 18 Dec 2020 06:41:30 +1100 Subject: [PATCH 109/162] docs: fix simple typo, thurroughly -> thoroughly There is a small typo in embedded8266/README.md. Should read `thoroughly` rather than `thurroughly`. --- embedded8266/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embedded8266/README.md b/embedded8266/README.md index 6ff06ba..7c24b10 100644 --- a/embedded8266/README.md +++ b/embedded8266/README.md @@ -18,7 +18,7 @@ Unfortunately the I2S Out (WS2812 in) pin is the same as RX1 (pin 25), which mea The audio data is taken from TOUT, but must be kept between 0 and 1V. -An option that has been thurroughly tested is for use with the 2019 MAGFest Swadge. https://github.com/cnlohr/swadge2019 +An option that has been thoroughly tested is for use with the 2019 MAGFest Swadge. https://github.com/cnlohr/swadge2019 Audio portion: ![Audio portion of schematic](https://raw.githubusercontent.com/cnlohr/swadge2019/master/hardware/swadge2019_schematic_audio.png) From 6e5e659047b68b84a55ee110c02c2de08897bc62 Mon Sep 17 00:00:00 2001 From: Cai Biesinger Date: Thu, 31 Dec 2020 20:35:13 -0800 Subject: [PATCH 110/162] Fixing rare out-of-bounds crash --- colorchord2/decompose.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/decompose.c b/colorchord2/decompose.c index 5746263..566a4dd 100644 --- a/colorchord2/decompose.c +++ b/colorchord2/decompose.c @@ -24,7 +24,7 @@ int DecomposeHistogram( float * histogram, int bins, struct NoteDists * out_dist float this = histogram[i]; float next = histogram[(i+1)%bins]; - if( prev > this || next > this ) continue; + if( prev >= this || next > this ) continue; if( prev == this && next == this ) continue; //i is at a peak... From cae295d9898411e79dc6aee22e61355e33d4078a Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Feb 2021 11:23:31 -0500 Subject: [PATCH 111/162] Updated README files for Colorchord Embedded --- README.md | 38 +++++++++++++++++++++++- embedded8266/README.md | 67 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d9c0d8b..9587b81 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,25 @@ ColorChord ========== +Table of Contents +----------------- + +- [ColorChord](#colorchord) + - [Table of Contents](#table-of-contents) + - [What is ColorChord?](#what-is-colorchord) + - [Background](#background) + - [Current State of Affairs](#current-state-of-affairs) + - [ColorChord: Embedded](#colorchord-embedded) +- [Build Instructions](#build-instructions) + - [Building ColorChord Embedded](#building-colorchord-embedded) + - [Building with Linux](#building-with-linux) + - [Building with Windows](#building-with-windows) + - [MSYS2](#msys2) + - [clang](#clang) + - [TCC](#tcc) + - [Using](#using) + - [Additional Videos](#additional-videos) + What is ColorChord? ------------------- @@ -42,10 +61,21 @@ ColorChord: Embedded There is work on an embedded version of ColorChord, which avoids floating point operations anywhere in the output pipeline. Though I have made efforts to port it to AVRs, it doesn't seem feasable to operate on AVRs without some shifty tricks which I'd like to avoid, so I have retargeted my efforts to 32-bit systems, such as the STM32F303, STM32F407, and (somehow) the ESP8266. ColorChord Embedded uses a different codebase, located in the [embeddedcommon](/embeddedcommon) and distributed among the various embedded* folders. +Build Instructions +================== + +Building ColorChord Embedded +---------------------------- + +The embedded version of Colorchord has a different build system than the desktop versions of Colorchord. See the build instructions for each of the supported embedded architectures in their respective folders + +- [esp8266](embedded8266/README.md#build-instructions) +- [stm32f303](embeddedstm32f303/README.md) +- [stm32f407](embeddedstm32f407/) - TODO Add readme Building with Linux ----------------- -Use `apt-get` to install the following packages for Debian/Ubuntu/Mint: +From the linux terminal use `apt-get` to install the following packages for Debian/Ubuntu/Mint: ``` apt-get install build-essential libpulse-dev libasound2-dev libx11-dev libxext-dev libxinerama-dev libusb-1.0-0-dev libudev-dev ``` @@ -55,7 +85,12 @@ To get colorchord, type: ``` git clone --recurse-submodules https://github.com/cnlohr/colorchord ``` +This will download the colorchord source code into the colorchord directory +You really want to be using colorchord2, so we need to move to it's build directory to compile the source code. +``` +cd colorchord/colorchord2 +``` To make colorchord, type: ``` @@ -110,6 +145,7 @@ To run colorchord, use the following syntax: If you edit default.conf while the program is running and resave it, it will use the settings in the newly saved file. +Note that the colorchord executable file is located in the colorchord2 directory in the colorchord repository. Additional Videos ----------------- diff --git a/embedded8266/README.md b/embedded8266/README.md index 7c24b10..038204c 100644 --- a/embedded8266/README.md +++ b/embedded8266/README.md @@ -36,3 +36,70 @@ If you have problems with burning the firmware or transfering page data over net in `makeconf.inc`. This way the esp checks if the flash is written correctly. Especially with some ESP-01 modules there has been a problem with the flash not being written correctly. + +## Build Instructions + +To build colorchord for the esp8266, you first must install the development tools for the esp8266 so that you can compile the code and flash it to the device. + +### Setup Toolchain +Follow the instructions in Charles' getting started video to install the toolchain (up until about 3:30 into the video). + +[![Toolchain installation video](https://img.youtube.com/vi/LiKNRBIcGII/0.jpg)](https://www.youtube.com/watch?v=LiKNRBIcGII) + +The instructions shown in the video are from the [esp82xx repo](https://github.com/cnlohr/esp82xx) on github. + +TLDR version: You should really watch the video and look at the other instructions though. +1. if you are on Windows you need to install WSL1 (Windows Subsystem for Linux version 1). +2. Install Python2 and Make +3. Install pip (for Python 2) +4. Install pyserial (for Python 2) +5. Install Charles' prepackaged toolchain to the `~/esp8266` directory (`esp8266` directory in your home folder). +6. Set the `ESP_ROOT` environment variable in your `.profile` or `.bashrc` file. Check to see if one of these files exist (they are hidden by default), if one of them does exist, edit it adding the following line to the file. +``` +export ESP_ROOT=$(HOME)/esp8266/esp-open-sdk +``` + +### Build Colorchord Embedded +At this point you should have your development toolchain set up, now we will download and install colorchord. + +Start by cloning this git repository, in a terminal window use the command +``` +git clone https://github.com/cnlohr/colorchord.git --recurse-submodules +``` +This will download the source code for colorchord and all of its dependencies. + +Next, move to the `embedded8266` directory so that we can compile the version of colorchord for the esp8266. +``` +cd colorchord/embedded8266 +``` + +Now we will need to build colorchord, this step will need to be done if you make any changes to the colorchord code. +``` +make all +``` +Hopefully the previous command completed without errors, if it did not, please refer to the [common problems](#common-problems) section. If all went well, there should be three binary files in your build directory `image.elf`, `image.elf-0x00000.bin`, and `image.elf-0x10000.bin`. You can check this with the command +``` +ls -l image.elf* +``` + +### Flash to the ESP8266 +Before flashing the program to the esp8266 it must be connected to the computer over a usb-to-serial connection and the correct port on the computer must be known. If using Windows (WSL) this will be the COM port shown by Windows Device Manager. For example, `COM4` in Windows will refer to `/dev/ttyS4` in WSL (See [2:35](https://youtu.be/LiKNRBIcGII?t=155) from the previously mentioned video). On a Linux machine it will most likely be `/dev/ttyUSB0`. The file determined here will specify the `PORT` value in later commands, so if you had `COM4`, then `PORT` would be `/dev/ttyS4`. + +If this is your first time using the esp8266 module with colorchord run the following command. +``` +PORT= make erase +PORT= make burnitall +``` +These two commands erase the contents of esp8266 memory and flash the program (and some base files) to it. + +If you have made some changes to colorchord and you want to test them use the command +``` +PORT= make burn +``` +### Connect to the ESP8266 +If all went well, the esp module should be broadcasting a wifi access point that you can connect to. Once that is done, you should be able to see the colorchord webpage dashboard at the ip address [192.168.4.1](http://192.168.4.1). That should be it! Enjoy using colorchord, and don't hesitate to reach out if you have any issues. + +## Common Problems +**Under Construction** + +If you experience any issues building colorchord embedded, please open an issue and we will try and work through it. I will try and keep this section up to date with relevant information. From 892771700f0264381826f92562c4e660be5e69b0 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Feb 2021 11:24:21 -0500 Subject: [PATCH 112/162] Set default ESP_ROOT -ESP_ROOT=~/esp8266/esp-open-sdk --- embedded8266/user.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embedded8266/user.cfg b/embedded8266/user.cfg index 9463bb5..96df125 100644 --- a/embedded8266/user.cfg +++ b/embedded8266/user.cfg @@ -10,7 +10,7 @@ COM_PORT = 7777 BACKEND_PORT = 7878 MFS_PAGE_OFFSET = 532480 # 0x82000 -#SDK_DEFAULT = $(HOME)/esp8266/esp-open-sdk +SDK_DEFAULT = $(HOME)/esp8266/esp-open-sdk ESP_GCC_VERS = 4.8.5 #SDK = $(HOME)/esp8266/esp_iot_sdk_v1.5.2 PAGE_SCRIPTS = main.js From b28c4d2c40ce4725fdb513cbf36305f6a229b45f Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 10:54:50 -0500 Subject: [PATCH 113/162] Add .clang-format file --- .clang-format | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..4b41897 --- /dev/null +++ b/.clang-format @@ -0,0 +1,24 @@ +BasedOnStyle: Microsoft +AccessModifierOffset: -4 +AlwaysBreakTemplateDeclarations: 'Yes' +AlignAfterOpenBracket: DontAlign +AlignTrailingComments: 'true' +AllowAllParametersOfDeclarationOnNextLine: 'false' +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Allman +BreakConstructorInitializers: BeforeComma +ColumnLimit: '120' +ExperimentalAutoDetectBinPacking: 'false' +NamespaceIndentation: None +MaxEmptyLinesToKeep: 2 +PointerAlignment: Right +SpaceInEmptyParentheses: 'false' +SpacesInAngles: 'true' +SpacesInCStyleCastParentheses: 'true' +SpacesInContainerLiterals: 'true' +SpacesInParentheses: 'true' +SpacesInSquareBrackets: 'true' +TabWidth: '4' +UseTab: Always +FixNamespaceComments: 'true' +IndentCaseLabels: 'true' \ No newline at end of file From 472615bbf71acded9ebbf8a89e3b38e7cb629ee5 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 13:58:17 -0500 Subject: [PATCH 114/162] Update .clang-format with more rules --- .clang-format | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.clang-format b/.clang-format index 4b41897..ecaad8c 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,4 @@ +# Basic style rules by Charles Lohr BasedOnStyle: Microsoft AccessModifierOffset: -4 AlwaysBreakTemplateDeclarations: 'Yes' @@ -21,4 +22,16 @@ SpacesInSquareBrackets: 'true' TabWidth: '4' UseTab: Always FixNamespaceComments: 'true' -IndentCaseLabels: 'true' \ No newline at end of file +IndentCaseLabels: 'true' + +# Additions by Sam Ellicott +ColumnLimit: 100 +AlignConsecutiveAssignments: true +AlignConsecutiveMacros: true +AlignTrailingComments: true +AlignEscapedNewlines: Left +AlignOperands: AlignAfterOperator +AllowShortBlocksOnASingleLine: Always +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortCaseLabelsOnASingleLine: true +AllowShortLoopsOnASingleLine: true \ No newline at end of file From 2f89063b6a3052a5152c8f5584019f021195a44b Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 13:58:40 -0500 Subject: [PATCH 115/162] Clean up main.c --- colorchord2/main.c | 528 ++++++++++++++++++++------------------------- 1 file changed, 236 insertions(+), 292 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 98bf99b..ef0fb86 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -1,30 +1,29 @@ -//Copyright 2015-2020 <>< Charles Lohr under the ColorChord License. +// Copyright 2015-2020 <>< Charles Lohr under the ColorChord License. -#if defined(WINDOWS) || defined(USE_WINDOWS)\ - || defined(WIN32) || defined(WIN64) \ - || defined(_WIN32) || defined(_WIN64) -#include +#if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ + defined( _WIN32 ) || defined( _WIN64 ) #include +#include #ifndef strdup #define strdup _strdup #endif #endif -#include #include "color.h" -#include -#include -#include "os_generic.h" +#include "configs.h" +#include "decompose.h" #include "dft.h" #include "filter.h" -#include "decompose.h" -#include -#include +#include "hook.h" #include "notefinder.h" +#include "os_generic.h" #include "outdrivers.h" #include "parameters.h" -#include "hook.h" -#include "configs.h" +#include +#include +#include +#include +#include #define CNFG_IMPLEMENTATION @@ -34,20 +33,19 @@ #include "CNFA.h" - -//Sound driver. -struct CNFADriver * sd; +// Sound driver. +struct CNFADriver *sd; int bQuitColorChord = 0; #ifdef ANDROID -#include -#include -#include -#include #include +#include #include +#include +#include +#include void HandleDestroy() { @@ -60,115 +58,103 @@ void HandleDestroy() #define GENLINEWIDTH 89 -#define GENLINES 67 +#define GENLINES 67 -int genlinelen = 0; -char genlog[(GENLINEWIDTH+1)*(GENLINES+1)+2] = "log"; +char genlog[ ( GENLINEWIDTH + 1 ) * ( GENLINES + 1 ) + 2 ] = "log"; int genloglen; int genloglines; +int genlinelen = 0; int firstnewline = -1; -void example_log_function( int readSize, char * buf ) +void example_log_function( int readSize, char *buf ) { - static og_mutex_t * mt; - if( !mt ) mt = OGCreateMutex(); + static og_mutex_t *mt; + if ( !mt ) mt = OGCreateMutex(); OGLockMutex( mt ); - int i; - for( i = 0; (readSize>=0)?(i <= readSize):buf[i]; i++ ) + for ( int i = 0; readSize && i <= readSize && buf[ i ]; i++ ) { - char c = buf[i]; - if( c == '\0' ) c = '\n'; - if( ( c != '\n' && genlinelen >= GENLINEWIDTH ) || c == '\n' ) + char c = buf[ i ]; + if ( c == '\0' ) c = '\n'; + if ( ( c != '\n' && genlinelen >= GENLINEWIDTH ) || c == '\n' ) { - int k; genloglines++; - if( genloglines >= GENLINES ) + if ( genloglines >= GENLINES ) { - genloglen -= firstnewline+1; - int offset = firstnewline; + genloglen -= firstnewline + 1; + int offset = firstnewline; firstnewline = -1; - - for( k = 0; k < genloglen; k++ ) + int k; + for ( k = 0; k < genloglen; k++ ) { - if( ( genlog[k] = genlog[k+offset+1] ) == '\n' && firstnewline < 0) - { + if ( ( genlog[ k ] = genlog[ k + offset + 1 ] ) == '\n' && firstnewline < 0 ) firstnewline = k; } - } - genlog[k] = 0; + genlog[ k ] = 0; genloglines--; } genlinelen = 0; - if( c != '\n' ) + if ( c != '\n' ) { - genlog[genloglen+1] = 0; - genlog[genloglen++] = '\n'; + genlog[ genloglen + 1 ] = 0; + genlog[ genloglen++ ] = '\n'; } - if( firstnewline < 0 ) firstnewline = genloglen; + if ( firstnewline < 0 ) firstnewline = genloglen; } - genlog[genloglen+1] = 0; - genlog[genloglen++] = c; - if( c != '\n' ) genlinelen++; + genlog[ genloglen + 1 ] = 0; + genlog[ genloglen++ ] = c; + if ( c != '\n' ) genlinelen++; } OGUnlockMutex( mt ); } - - -#if defined(WIN32) || defined(USE_WINDOWS) - +#if defined( WIN32 ) || defined( USE_WINDOWS ) #define ESCAPE_KEY 0x1B void HandleDestroy() { CNFAClose( sd ); } - - #else #define ESCAPE_KEY 65307 #endif -int is_suspended = 0; - float DeltaFrameTime = 0; -double Now = 0; - +double Now = 0; +int is_suspended = 0; int lastfps; short screenx, screeny; -struct DriverInstances * outdriver[MAX_OUT_DRIVERS]; - -int headless = 0; REGISTER_PARAM( headless, PAINT ); -int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); -int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); -char sound_source[16]; REGISTER_PARAM( sound_source, PABUFFER ); -int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); +struct DriverInstances *outdriver[ MAX_OUT_DRIVERS ]; +int headless = 0; REGISTER_PARAM( headless, PAINT ); +int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); +int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); +char sound_source[ 16 ]; REGISTER_PARAM( sound_source, PABUFFER ); +int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); int sample_channel = -1; REGISTER_PARAM( sample_channel, PAINT ); int showfps = 1; REGISTER_PARAM( showfps, PAINT ); -#if defined(ANDROID) || defined( __android__ ) +#if defined( ANDROID ) || defined( __android__ ) float in_amplitude = 2; #else float in_amplitude = 1; #endif REGISTER_PARAM( in_amplitude, PAFLOAT ); -struct NoteFinder * nf; +struct NoteFinder *nf; -//Sound circular buffer +// Sound circular buffer #define SOUNDCBSIZE 8096 #define MAX_CHANNELS 2 double VisTimeEnd, VisTimeStart; -int soundhead = 0; -float sound[SOUNDCBSIZE]; -int show_debug = 0; +float sound[ SOUNDCBSIZE ]; +int soundhead = 0; +int show_debug = 0; int show_debug_basic = 1; int gKey = 0; @@ -176,53 +162,48 @@ extern int force_white; void RecalcBaseHz() { - nf->base_hz = 55 * pow( 2, gKey / 12.0 ); ChangeNFParameters( nf ); + nf->base_hz = 55 * pow( 2, gKey / 12.0 ); + ChangeNFParameters( nf ); } void HandleKey( int keycode, int bDown ) { char c = toupper( keycode ); #ifdef ANDROID - if( keycode == 4 && bDown ) + if ( keycode == 4 && bDown ) { - //Back button. + // Back button. printf( "Back button pressed\n" ); AndroidSendToBack( 0 ); return; } #endif - if( c == 'D' && bDown ) show_debug = !show_debug; - if( c == 'W' ) force_white = bDown; - if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } - if( c == '-' && bDown ) { gKey++; RecalcBaseHz(); } - if( c == '0' && bDown ) { gKey = 0; RecalcBaseHz(); } - if( c == 'E' && bDown ) show_debug_basic = !show_debug_basic; - if( c == 'K' && bDown ) DumpParameters(); if( keycode == ESCAPE_KEY ) exit( 0 ); + if( c == 'W' ) force_white = bDown; + if( c == 'D' && bDown ) show_debug = !show_debug; + if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } + if( c == '-' && bDown ) { gKey++; RecalcBaseHz(); } + if( c == '0' && bDown ) { gKey = 0; RecalcBaseHz(); } + if( c == 'E' && bDown ) show_debug_basic = !show_debug_basic; + if( c == 'K' && bDown ) DumpParameters(); printf( "Key: %d -> %d\n", keycode, bDown ); KeyHappened( keycode, bDown ); } -//On Android we want a really basic GUI +// On Android we want a really basic GUI void HandleButton( int x, int y, int button, int bDown ) { printf( "Button: %d,%d (%d) -> %d\n", x, y, button, bDown ); - if( bDown ) + if ( bDown ) { - if( y < 800 ) + if ( y < 800 ) { - if( x < screenx/3 ) - { - gKey --; - } - else if( x < (screenx*2/3) ) - { + if ( x < screenx / 3 ) + gKey--; + else if ( x < ( screenx * 2 / 3 ) ) gKey = 0; - } else - { gKey++; - } printf( "KEY: %d\n", gKey ); RecalcBaseHz(); } @@ -233,72 +214,48 @@ void HandleMotion( int x, int y, int mask ) { } -void SoundCB( struct CNFADriver * sd, short * out, short * in, int framesp, int framesr ) +void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int framesr ) { - int channelin = sd->channelsRec; + int channelin = sd->channelsRec; int channelout = sd->channelsPlay; - //*samplesp = 0; -// int process_channels = (MAX_CHANNELS < channelin)?MAX_CHANNELS:channelin; - //Load the samples into a ring buffer. Split the channels from interleved to one per buffer. - - int i; - int j; - - if( in ) + // Load the samples into a ring buffer. Split the channels from interleved to one per buffer. + if ( in ) { - for( i = 0; i < framesr; i++ ) + for ( int i = 0; i < framesr; i++ ) { - if( sample_channel < 0 ) + if ( sample_channel < 0 ) { float fo = 0; - for( j = 0; j < channelin; j++ ) + for ( int j = 0; j < channelin; j++ ) { - float f = in[i*channelin+j] / 32767.; - if( f >= -1 && f <= 1 ) - { + float f = in[ i * channelin + j ] / 32767.; + if ( f >= -1 && f <= 1 ) fo += f; - } else - { - fo += (f>0)?1:-1; - // printf( "Sound fault A %d/%d %d/%d %f\n", j, channelin, i, samplesr, f ); + fo += ( f > 0 ) ? 1 : -1; } - } fo /= channelin; - sound[soundhead] = fo*in_amplitude; - soundhead = (soundhead+1)%SOUNDCBSIZE; + sound[ soundhead ] = fo * in_amplitude; + soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; } else { - float f = in[i*channelin+sample_channel] / 32767.; - - if( f > 1 || f < -1 ) - { - f = (f>0)?1:-1; + float f = in[ i * channelin + sample_channel ] / 32767.; + if ( f > 1 || f < -1 ) f = ( f > 0 ) ? 1 : -1; + sound[ soundhead ] = f * in_amplitude; + soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; } - - - //printf( "Sound fault B %d/%d\n", i, samplesr ); - sound[soundhead] = f*in_amplitude; - soundhead = (soundhead+1)%SOUNDCBSIZE; - - } } SoundEventHappened( framesr, in, 0, channelin ); } - if( out ) + if ( out ) { - for( j = 0; j < framesp * channelout; j++ ) - { - out[j] = 0; - } + memset(out, 0, framesp * channelout); SoundEventHappened( framesp, out, 1, channelout ); } - - } #ifdef ANDROID @@ -315,7 +272,8 @@ void HandleResume() // function for calling initilization functions if we are using TCC #ifdef TCC -void RegisterConstructorFunctions(){ +void RegisterConstructorFunctions() +{ // Basic Window stuff REGISTERheadless(); @@ -336,59 +294,53 @@ void RegisterConstructorFunctions(){ // Video Stuff REGISTERnull(); REGISTERDisplayArray(); - //REGISTERDisplayDMX(); - //REGISTERDisplayFileWrite(); + // REGISTERDisplayDMX(); + // REGISTERDisplayFileWrite(); REGISTERDisplayHIDAPI(); REGISTERDisplayNetwork(); REGISTERDisplayOutDriver(); REGISTERDisplayPie(); - //REGISTERDisplaySHM(); + // REGISTERDisplaySHM(); // Output stuff - //REGISTERDisplayUSB2812(); + // REGISTERDisplayUSB2812(); REGISTEROutputCells(); REGISTEROutputLinear(); REGISTEROutputProminent(); REGISTEROutputVoronoi(); - //REGISTERRecorderPlugin(); - - //void ManuallyRegisterDevices(); - //ManuallyRegisterDevices(); } #endif -int main(int argc, char ** argv) +int main( int argc, char **argv ) { - int i; - #ifdef TCC RegisterConstructorFunctions(); #endif printf( "Output Drivers:\n" ); - for( i = 0; i < MAX_OUT_DRIVERS; i++ ) + for ( int i = 0; i < MAX_OUT_DRIVERS; i++ ) { - if( ODList[i].Name ) printf( "\t%s\n", ODList[i].Name ); + if ( ODList[ i ].Name ) printf( "\t%s\n", ODList[ i ].Name ); } -#if defined(WIN32) || defined(USE_WINDOWS) - //In case something needs network access. +#if defined( WIN32 ) || defined( USE_WINDOWS ) + // In case something needs network access. WSADATA wsaData; - WSAStartup(0x202, &wsaData); + WSAStartup( 0x202, &wsaData ); #elif defined( ANDROID ) int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); - if( !hasperm ) + if ( !hasperm ) { AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); } int haspermInternet = AndroidHasPermissions( "INTERNET" ); - if( !haspermInternet ) + if ( !haspermInternet ) { AndroidRequestAppPermissions( "INTERNET" ); } #else - //Linux + // Linux #endif gargc = argc; @@ -396,103 +348,91 @@ int main(int argc, char ** argv) SetupConfigs(); - //Initialize Rawdraw + // Initialize Rawdraw int frames = 0; double ThisTime; - double LastFPSTime = OGGetAbsoluteTime(); + double LastFPSTime = OGGetAbsoluteTime(); double LastFrameTime = OGGetAbsoluteTime(); double SecToWait; - CNFGBGColor = 0x800000; + CNFGBGColor = 0x800000; CNFGDialogColor = 0x444444; - char title[1024]; - char * tp = title; - - memcpy( tp, "ColorChord ", strlen( "ColorChord " ) ); - tp += strlen( "ColorChord " ); - - for( i = 1; i < argc; i++ ) + // Generate the window title + char title[ 1024 ]; + strcpy( title, "Colorchord " ); + for ( int i = 1; i < argc; i++ ) { - memcpy( tp, argv[i], strlen( argv[i] ) ); - tp += strlen( argv[i] ); - *tp = ' '; - tp++; + strcat( title, argv[ i ] ); + strcat( title, " " ); } - *tp = 0; - if( !headless ) - CNFGSetup( title, set_screenx, set_screeny ); + if ( !headless ) CNFGSetup( title, set_screenx, set_screeny ); - char * OutDriverNames = strdup( GetParameterS( "outdrivers", "null" ) ); - char * ThisDriver = OutDriverNames; - char * TDStart; - for( i = 0; i < MAX_OUT_DRIVERS; i++ ) + char *OutDriverNames = strdup( GetParameterS( "outdrivers", "null" ) ); + char *ThisDriver = OutDriverNames; + char *TDStart; + for ( int i = 0; i < MAX_OUT_DRIVERS; i++ ) { - while( *ThisDriver == ' ' || *ThisDriver == '\t' ) ThisDriver++; - if( !*ThisDriver ) break; + while ( *ThisDriver == ' ' || *ThisDriver == '\t' ) ThisDriver++; + if ( !*ThisDriver ) break; TDStart = ThisDriver; - while( *ThisDriver != 0 && *ThisDriver != ',' ) + while ( *ThisDriver != 0 && *ThisDriver != ',' ) { - if( *ThisDriver == '\t' || *ThisDriver == ' ' ) *ThisDriver = 0; + if ( *ThisDriver == '\t' || *ThisDriver == ' ' ) *ThisDriver = 0; ThisDriver++; } - if( *ThisDriver ) + if ( *ThisDriver ) { *ThisDriver = 0; ThisDriver++; } printf( "Loading: %s\n", TDStart ); - outdriver[i] = SetupOutDriver( TDStart ); + outdriver[ i ] = SetupOutDriver( TDStart ); } - free(OutDriverNames); + free( OutDriverNames ); do { - //Initialize Sound - sd = CNFAInit( sound_source, "colorchord", &SoundCB, - GetParameterI( "samplerate", 44100 ), GetParameterI( "samplerate", 44100 ), - GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), - GetParameterI( "buffer", 1024 ), + // Initialize Sound + sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), + GetParameterI( "samplerate", 44100 ), GetParameterI( "channels", 2 ), + GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), GetParameterS( "devplay", 0 ), GetParameterS( "devrecord", 0 ), NULL ); - if( sd ) break; + if ( sd ) break; CNFGColor( 0xffffff ); - CNFGPenX = 10; CNFGPenY = 100; + CNFGPenX = 10; + CNFGPenY = 100; CNFGHandleInput(); CNFGClearFrame(); CNFGDrawText( "Colorchord must be used with sound. Sound not available.", 10 ); CNFGSwapBuffers(); - OGSleep(1); - } while( 1 ); - + OGSleep( 1 ); + } while ( 1 ); nf = CreateNoteFinder( sd->spsRec ); - //Once everything was reinitialized, re-read the ini files. + // Once everything was reinitialized, re-read the ini files. SetEnvValues( 1 ); printf( "================================================= Set Up\n" ); Now = OGGetAbsoluteTime(); double Last = Now; - #ifdef ANDROID - while(!bQuitColorChord) - #else - while(!bQuitColorChord) - #endif + while ( !bQuitColorChord ) { - char stt[1024]; - //Handle Rawdraw frame swappign + char stt[ 1024 ]; + // Handle Rawdraw frame swappign Now = OGGetAbsoluteTime(); DeltaFrameTime = Now - Last; - if( !headless ) + if ( !headless ) { CNFGHandleInput(); CNFGClearFrame(); @@ -500,188 +440,192 @@ int main(int argc, char ** argv) CNFGGetDimensions( &screenx, &screeny ); } - RunNoteFinder( nf, sound, (soundhead-1+SOUNDCBSIZE)%SOUNDCBSIZE, SOUNDCBSIZE ); - //Done all ColorChord work. + RunNoteFinder( nf, sound, ( soundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE, SOUNDCBSIZE ); + // Done all ColorChord work. VisTimeStart = OGGetAbsoluteTime(); - for( i = 0; i < MAX_OUT_DRIVERS; i++ ) + // call the output drivers with the updated note finder data + for ( int i = 0; i < MAX_OUT_DRIVERS; i++ ) { - - if( force_white ) - { - memset( OutLEDs, 0x7f, MAX_LEDS*3 ); - } - - if( outdriver[i] ) - outdriver[i]->Func( outdriver[i]->id, nf ); + if ( force_white ) memset( OutLEDs, 0x7f, MAX_LEDS * 3 ); + if ( outdriver[ i ] ) outdriver[ i ]->Func( outdriver[ i ]->id, nf ); } VisTimeEnd = OGGetAbsoluteTime(); - if( !headless ) + if ( !headless ) { - //Handle outputs. + // Handle outputs. int freqbins = nf->freqbins; - int note_peaks = freqbins/2; + int note_peaks = freqbins / 2; int freqs = freqbins * nf->octaves; - //int maxdists = freqbins/2; - //Do a bunch of debugging. - if( show_debug_basic && !is_suspended ) + // Do a bunch of debugging. + if ( show_debug_basic && !is_suspended ) { - //char sttdebug[1024]; - //char * sttend = sttdebug; - - for( i = 0; i < nf->dists_count; i++ ) + for ( int i = 0; i < nf->dists_count; i++ ) { - CNFGPenX = (nf->dists[i].mean + 0.5) / freqbins * screenx; //Move over 0.5 for visual purposes. The means is correct. - CNFGPenY = 400-nf->dists[i].amp * 150.0 / nf->dists[i].sigma; - //printf( "%f %f\n", dists[i].mean, dists[i].amp ); - sprintf( stt, "%f\n%f\n", nf->dists[i].mean, nf->dists[i].amp ); -// sttend += sprintf( sttend, "%f/%f ",nf->dists[i].mean, nf->dists[i].amp ); + // Move over 0.5 for visual purposes. The means is correct. + CNFGPenX = ( nf->dists[ i ].mean + 0.5 ) / freqbins * screenx; + CNFGPenY = 400 - nf->dists[ i ].amp * 150.0 / nf->dists[ i ].sigma; + sprintf( stt, "%f\n%f\n", nf->dists[ i ].mean, nf->dists[ i ].amp ); CNFGDrawText( stt, 2 ); } CNFGColor( 0xffffff ); - //Draw the folded bins - for( i = 0; i < freqbins; i++ ) + // Draw the folded bins + for ( int bin = 0; bin < freqbins; bin++ ) { - float x0 = i / (float)freqbins * (float)screenx; - float x1 = (i+1) / (float)freqbins * (float)screenx; - float amp = nf->folded_bins[i] * 250.0; - CNFGDialogColor = CCtoHEX( ((float)(i+0.5) / freqbins), 1.0, 1.0 ); - CNFGDrawBox( x0, 400-amp, x1, 400 ); + const float x0 = bin / ( float )freqbins * ( float )screenx; + const float x1 = ( bin + 1 ) / ( float )freqbins * ( float )screenx; + const float amp = nf->folded_bins[ bin ] * 250.0; + const float note = ( float )( bin + 0.5 ) / freqbins; + CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); + CNFGDrawBox( x0, 400 - amp, x1, 400 ); } CNFGDialogColor = 0xf0f000; - for( i = 0; i < note_peaks; i++ ) + // Draw the note peaks + for ( int peak = 0; peak < note_peaks; peak++ ) { - //printf( "%f %f /", note_positions[i], note_amplitudes[i] ); - if( nf->note_amplitudes_out[i] < 0 ) continue; - float note = (float) nf->note_positions[i] / freqbins; + if ( nf->note_amplitudes_out[ peak ] < 0 ) continue; + float note = ( float )nf->note_positions[ peak ] / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); - CNFGDrawBox( ((float)i / note_peaks) * screenx, 480 - nf->note_amplitudes_out[i] * 100, ((float)(i+1) / note_peaks) * screenx, 480 ); - CNFGPenX = ((float)(i+.4) / note_peaks) * screenx; + const int x1 = ( ( float )peak / note_peaks ) * screenx; + const int x2 = ( ( float )( peak + 1 ) / note_peaks ) * screenx; + const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; + const int y2 = 480; + CNFGDrawBox( x1, y1, x2, y2 ); + + CNFGPenX = ( ( float )( i + .4 ) / note_peaks ) * screenx; CNFGPenY = screeny - 30; - sprintf( stt, "%d\n%0.0f", nf->enduring_note_id[i], nf->note_amplitudes2[i]*1000.0 ); - //sttend += sprintf( sttend, "%5d/%5.0f ", nf->enduring_note_id[i], nf->note_amplitudes2[i]*1000.0 ); + sprintf( stt, "%d\n%0.0f", nf->enduring_note_id[ i ], + nf->note_amplitudes2[ i ] * 1000.0 ); CNFGDrawText( stt, 2 ); - } - //Let's draw the o-scope. + // Let's draw the o-scope. int thissoundhead = soundhead; - thissoundhead = (thissoundhead-1+SOUNDCBSIZE)%SOUNDCBSIZE; - int lasty = sound[thissoundhead] * 128 + 128; thissoundhead = (thissoundhead-1+SOUNDCBSIZE)%SOUNDCBSIZE; - int thisy = sound[thissoundhead] * 128 + 128; thissoundhead = (thissoundhead-1+SOUNDCBSIZE)%SOUNDCBSIZE; - for( i = 0; i < screenx; i++ ) + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int lasty = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int thisy = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + for ( int i = 0; i < screenx; i++ ) { - CNFGTackSegment( i, lasty, i+1, thisy ); + CNFGTackSegment( i, lasty, i + 1, thisy ); lasty = thisy; - thisy = sound[thissoundhead] * 128 + 128; thissoundhead = (thissoundhead-1+SOUNDCBSIZE)%SOUNDCBSIZE; + thisy = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; } - //puts( sttdebug ); } - //Extra debugging? - if( show_debug && !is_suspended ) + // Extra debugging? + if ( show_debug && !is_suspended ) { - //Draw the histogram + // Draw the histogram float lasthistval; CNFGColor( 0xffffff ); - for( i = -1; i < screenx; i++ ) + for ( int x_val = -1; x_val < screenx; x_val++ ) { - float thishistval = CalcHistAt( (float)i/(float)screenx*freqbins-0.5, nf->freqbins, nf->dists, nf->dists_count ); - if( i >= 0 ) - CNFGTackSegment( i, 400-lasthistval * 250.0, i+1, 400-thishistval * 250.0 ); + // Calculate the value of the histogram at the current screen position + float hist_point = ( float )x_val / ( float )screenx * freqbins - 0.5; + float thishistval = + CalcHistAt( hist_point, nf->freqbins, nf->dists, nf->dists_count ); + + // Display the value on the screen + const short y = 400 - lasthistval * 250.0; + if ( x_val >= 0 ) CNFGTackSegment( x_val, y, x_val + 1, y ); lasthistval = thishistval; } CNFGColor( 0xffffff ); - //Draw the bins - for( i = 0; i < freqs; i++ ) + // Draw the bins + for ( int bin = 0; bin < freqs; i++ ) { - float x0 = i / (float)freqs * (float)screenx; - float x1 = (i+1) / (float)freqs * (float)screenx; - float amp = nf->outbins[i] * 250.0; - CNFGDialogColor = CCtoHEX( ((float)i / freqbins), 1.0, 1.0 ); + float x0 = bin / ( float )freqs * ( float )screenx; + float x1 = ( bin + 1 ) / ( float )freqs * ( float )screenx; + float amp = nf->outbins[ bin ] * 250.0; + float note = ( float )bin / freqbins; + CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 0, x1, amp ); } CNFGDialogColor = 0x0f0f0f; - char stdebug[1024]; + char stdebug[ 1024 ]; sprintf( stdebug, "DFT:%8.2fms\nFLT:%8.2f\nDEC:%8.2f\nFNL:%8.2f\nDPY:%8.2f", - (nf->DFTTime - nf->StartTime)*1000, - (nf->FilterTime - nf->DFTTime)*1000, - (nf->DecomposeTime - nf->FilterTime)*1000, - (nf->FinalizeTime - nf->DecomposeTime)*1000, - (VisTimeEnd - VisTimeStart)*1000 ); + ( nf->DFTTime - nf->StartTime ) * 1000, ( nf->FilterTime - nf->DFTTime ) * 1000, + ( nf->DecomposeTime - nf->FilterTime ) * 1000, + ( nf->FinalizeTime - nf->DecomposeTime ) * 1000, + ( VisTimeEnd - VisTimeStart ) * 1000 ); CNFGPenX = 50; CNFGPenY = 50; CNFGDrawText( stdebug, 2 ); } - if( !is_suspended ) + if ( !is_suspended ) { - CNFGColor( show_debug?0xffffff:0x000000 ); - CNFGPenX = 0; CNFGPenY = screeny-10; + CNFGColor( show_debug ? 0xffffff : 0x000000 ); + CNFGPenX = 0; + CNFGPenY = screeny - 10; CNFGDrawText( "Extra Debug (D)", 2 ); - CNFGColor( show_debug_basic?0xffffff:0x000000 ); - CNFGPenX = 120; CNFGPenY = screeny-10; + CNFGColor( show_debug_basic ? 0xffffff : 0x000000 ); + CNFGPenX = 120; + CNFGPenY = screeny - 10; CNFGDrawText( "Basic Debug (E)", 2 ); - CNFGColor( show_debug_basic?0xffffff:0x000000 ); - CNFGPenX = 240; CNFGPenY = screeny-10; + CNFGColor( show_debug_basic ? 0xffffff : 0x000000 ); + CNFGPenX = 240; + CNFGPenY = screeny - 10; sprintf( stt, "[9] Key: %d [0] (%3.1f) [-]", gKey, nf->base_hz ); CNFGDrawText( stt, 2 ); CNFGColor( 0xffffff ); - CNFGPenX = 440; CNFGPenY = screeny-10; + CNFGPenX = 440; + CNFGPenY = screeny - 10; sprintf( stt, "FPS: %d", lastfps ); CNFGDrawText( stt, 2 ); #ifdef ANDROID CNFGColor( 0xffffff ); - CNFGPenX = 10; CNFGPenY = 600; + CNFGPenX = 10; + CNFGPenY = 600; CNFGDrawText( genlog, 3 ); #endif CNFGSwapBuffers(); } } - //Finish Rawdraw with FPS counter, and a nice delay loop. + // Finish Rawdraw with FPS counter, and a nice delay loop. frames++; ThisTime = OGGetAbsoluteTime(); - if( ThisTime > LastFPSTime + 1 && showfps ) + if ( ThisTime > LastFPSTime + 1 && showfps ) { #ifndef ANDROID printf( "FPS: %d\n", frames ); #endif lastfps = frames; - frames = 0; - LastFPSTime+=1; + frames = 0; + LastFPSTime += 1; } - if( cpu_autolimit ) + if ( cpu_autolimit ) { SecToWait = cpu_autolimit_interval - ( ThisTime - LastFrameTime ); LastFrameTime += cpu_autolimit_interval; - if( SecToWait < -.1 ) LastFrameTime = ThisTime - .1; - if( SecToWait > 0 ) - OGUSleep( (int)( SecToWait * 1000000 ) ); + if ( SecToWait < -.1 ) LastFrameTime = ThisTime - .1; + if ( SecToWait > 0 ) OGUSleep( ( int )( SecToWait * 1000000 ) ); } - if( !is_suspended ) - SetEnvValues( 0 ); + if ( !is_suspended ) SetEnvValues( 0 ); Last = Now; } - } From 793e72df42257b01b8e73e9c790a3fb2e679e6cd Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 14:02:53 -0500 Subject: [PATCH 116/162] Fix some missed updated variable names --- colorchord2/main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index ef0fb86..cbf1988 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -500,10 +500,10 @@ int main( int argc, char **argv ) const int y2 = 480; CNFGDrawBox( x1, y1, x2, y2 ); - CNFGPenX = ( ( float )( i + .4 ) / note_peaks ) * screenx; + CNFGPenX = ( ( float )( peak + .4 ) / note_peaks ) * screenx; CNFGPenY = screeny - 30; - sprintf( stt, "%d\n%0.0f", nf->enduring_note_id[ i ], - nf->note_amplitudes2[ i ] * 1000.0 ); + sprintf( stt, "%d\n%0.0f", nf->enduring_note_id[ peak ], + nf->note_amplitudes2[ peak ] * 1000.0 ); CNFGDrawText( stt, 2 ); } @@ -546,7 +546,7 @@ int main( int argc, char **argv ) CNFGColor( 0xffffff ); // Draw the bins - for ( int bin = 0; bin < freqs; i++ ) + for ( int bin = 0; bin < freqs; bin++ ) { float x0 = bin / ( float )freqs * ( float )screenx; float x1 = ( bin + 1 ) / ( float )freqs * ( float )screenx; From ad2306697624c7ba776440e4ede930d8ec78cfbc Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 14:12:19 -0500 Subject: [PATCH 117/162] Fix some allignment issues noticed in github --- colorchord2/main.c | 52 ++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index cbf1988..b409b09 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -129,14 +129,14 @@ int lastfps; short screenx, screeny; struct DriverInstances *outdriver[ MAX_OUT_DRIVERS ]; -int headless = 0; REGISTER_PARAM( headless, PAINT ); -int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); -int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); -char sound_source[ 16 ]; REGISTER_PARAM( sound_source, PABUFFER ); -int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); -float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); -int sample_channel = -1; REGISTER_PARAM( sample_channel, PAINT ); -int showfps = 1; REGISTER_PARAM( showfps, PAINT ); +int headless = 0; REGISTER_PARAM( headless, PAINT ); +int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); +int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); +char sound_source[ 16 ]; REGISTER_PARAM( sound_source, PABUFFER ); +int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); +float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); +int sample_channel = -1; REGISTER_PARAM( sample_channel, PAINT ); +int showfps = 1; REGISTER_PARAM( showfps, PAINT ); #if defined( ANDROID ) || defined( __android__ ) float in_amplitude = 2; @@ -178,7 +178,7 @@ void HandleKey( int keycode, int bDown ) return; } #endif - if( keycode == ESCAPE_KEY ) exit( 0 ); + if( keycode == ESCAPE_KEY ) exit( 0 ); if( c == 'W' ) force_white = bDown; if( c == 'D' && bDown ) show_debug = !show_debug; if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } @@ -234,7 +234,7 @@ void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int fra fo += f; else fo += ( f > 0 ) ? 1 : -1; - } + } fo /= channelin; sound[ soundhead ] = fo * in_amplitude; soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; @@ -245,7 +245,7 @@ void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int fra if ( f > 1 || f < -1 ) f = ( f > 0 ) ? 1 : -1; sound[ soundhead ] = f * in_amplitude; soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; - } + } } SoundEventHappened( framesr, in, 0, channelin ); } @@ -279,11 +279,11 @@ void RegisterConstructorFunctions() REGISTERheadless(); REGISTERset_screenx(); REGISTERset_screeny(); - REGISTERsound_source(); - REGISTERcpu_autolimit(); - REGISTERcpu_autolimit_interval(); + REGISTERsound_source(); + REGISTERcpu_autolimit(); + REGISTERcpu_autolimit_interval(); REGISTERsample_channel(); - REGISTERshowfps(); + REGISTERshowfps(); REGISTERin_amplitude(); // Audio stuff @@ -326,19 +326,13 @@ int main( int argc, char **argv ) #if defined( WIN32 ) || defined( USE_WINDOWS ) // In case something needs network access. - WSADATA wsaData; + WSADATA wsaData; WSAStartup( 0x202, &wsaData ); #elif defined( ANDROID ) - int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); - if ( !hasperm ) - { - AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); - } + int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); int haspermInternet = AndroidHasPermissions( "INTERNET" ); - if ( !haspermInternet ) - { - AndroidRequestAppPermissions( "INTERNET" ); - } + if ( !hasperm ) AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); + if ( !haspermInternet ) AndroidRequestAppPermissions( "INTERNET" ); #else // Linux #endif @@ -351,11 +345,11 @@ int main( int argc, char **argv ) // Initialize Rawdraw int frames = 0; double ThisTime; - double LastFPSTime = OGGetAbsoluteTime(); - double LastFrameTime = OGGetAbsoluteTime(); double SecToWait; - CNFGBGColor = 0x800000; - CNFGDialogColor = 0x444444; + double LastFPSTime = OGGetAbsoluteTime(); + double LastFrameTime = OGGetAbsoluteTime(); + CNFGBGColor = 0x800000; + CNFGDialogColor = 0x444444; // Generate the window title char title[ 1024 ]; From cb9b6bc569b9082d697e6d9fe16f052c394315b2 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 14:23:52 -0500 Subject: [PATCH 118/162] Use spaces for allignment instead of tabs --- .clang-format | 2 +- colorchord2/main.c | 114 ++++++++++++++++++++++----------------------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/.clang-format b/.clang-format index ecaad8c..d72017b 100644 --- a/.clang-format +++ b/.clang-format @@ -20,7 +20,7 @@ SpacesInContainerLiterals: 'true' SpacesInParentheses: 'true' SpacesInSquareBrackets: 'true' TabWidth: '4' -UseTab: Always +UseTab: AlignWithSpaces FixNamespaceComments: 'true' IndentCaseLabels: 'true' diff --git a/colorchord2/main.c b/colorchord2/main.c index b409b09..d0def45 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -58,18 +58,18 @@ void HandleDestroy() #define GENLINEWIDTH 89 -#define GENLINES 67 +#define GENLINES 67 char genlog[ ( GENLINEWIDTH + 1 ) * ( GENLINES + 1 ) + 2 ] = "log"; int genloglen; int genloglines; -int genlinelen = 0; +int genlinelen = 0; int firstnewline = -1; void example_log_function( int readSize, char *buf ) { static og_mutex_t *mt; - if ( !mt ) mt = OGCreateMutex(); + if ( !mt ) mt = OGCreateMutex(); OGLockMutex( mt ); for ( int i = 0; readSize && i <= readSize && buf[ i ]; i++ ) { @@ -80,15 +80,15 @@ void example_log_function( int readSize, char *buf ) genloglines++; if ( genloglines >= GENLINES ) { - genloglen -= firstnewline + 1; - int offset = firstnewline; + genloglen -= firstnewline + 1; + int offset = firstnewline; firstnewline = -1; int k; for ( k = 0; k < genloglen; k++ ) { if ( ( genlog[ k ] = genlog[ k + offset + 1 ] ) == '\n' && firstnewline < 0 ) firstnewline = k; - } + } genlog[ k ] = 0; genloglines--; } @@ -96,12 +96,12 @@ void example_log_function( int readSize, char *buf ) if ( c != '\n' ) { genlog[ genloglen + 1 ] = 0; - genlog[ genloglen++ ] = '\n'; + genlog[ genloglen++ ] = '\n'; } if ( firstnewline < 0 ) firstnewline = genloglen; } genlog[ genloglen + 1 ] = 0; - genlog[ genloglen++ ] = c; + genlog[ genloglen++ ] = c; if ( c != '\n' ) genlinelen++; } @@ -129,14 +129,14 @@ int lastfps; short screenx, screeny; struct DriverInstances *outdriver[ MAX_OUT_DRIVERS ]; -int headless = 0; REGISTER_PARAM( headless, PAINT ); -int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); -int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); -char sound_source[ 16 ]; REGISTER_PARAM( sound_source, PABUFFER ); -int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); -float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); -int sample_channel = -1; REGISTER_PARAM( sample_channel, PAINT ); -int showfps = 1; REGISTER_PARAM( showfps, PAINT ); +int headless = 0; REGISTER_PARAM( headless, PAINT ); +int set_screenx = 640; REGISTER_PARAM( set_screenx, PAINT ); +int set_screeny = 480; REGISTER_PARAM( set_screeny, PAINT ); +char sound_source[ 16 ]; REGISTER_PARAM( sound_source, PABUFFER ); +int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); +float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); +int sample_channel = -1; REGISTER_PARAM( sample_channel, PAINT ); +int showfps = 1; REGISTER_PARAM( showfps, PAINT ); #if defined( ANDROID ) || defined( __android__ ) float in_amplitude = 2; @@ -148,13 +148,13 @@ REGISTER_PARAM( in_amplitude, PAFLOAT ); struct NoteFinder *nf; // Sound circular buffer -#define SOUNDCBSIZE 8096 +#define SOUNDCBSIZE 8096 #define MAX_CHANNELS 2 double VisTimeEnd, VisTimeStart; float sound[ SOUNDCBSIZE ]; -int soundhead = 0; -int show_debug = 0; +int soundhead = 0; +int show_debug = 0; int show_debug_basic = 1; int gKey = 0; @@ -178,14 +178,14 @@ void HandleKey( int keycode, int bDown ) return; } #endif - if( keycode == ESCAPE_KEY ) exit( 0 ); - if( c == 'W' ) force_white = bDown; - if( c == 'D' && bDown ) show_debug = !show_debug; - if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } - if( c == '-' && bDown ) { gKey++; RecalcBaseHz(); } - if( c == '0' && bDown ) { gKey = 0; RecalcBaseHz(); } - if( c == 'E' && bDown ) show_debug_basic = !show_debug_basic; - if( c == 'K' && bDown ) DumpParameters(); + if( keycode == ESCAPE_KEY ) exit( 0 ); + if( c == 'W' ) force_white = bDown; + if( c == 'D' && bDown ) show_debug = !show_debug; + if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } + if( c == '-' && bDown ) { gKey++; RecalcBaseHz(); } + if( c == '0' && bDown ) { gKey = 0; RecalcBaseHz(); } + if( c == 'E' && bDown ) show_debug_basic = !show_debug_basic; + if( c == 'K' && bDown ) DumpParameters(); printf( "Key: %d -> %d\n", keycode, bDown ); KeyHappened( keycode, bDown ); } @@ -237,14 +237,14 @@ void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int fra } fo /= channelin; sound[ soundhead ] = fo * in_amplitude; - soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; + soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; } else { float f = in[ i * channelin + sample_channel ] / 32767.; if ( f > 1 || f < -1 ) f = ( f > 0 ) ? 1 : -1; sound[ soundhead ] = f * in_amplitude; - soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; + soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; } } SoundEventHappened( framesr, in, 0, channelin ); @@ -329,7 +329,7 @@ int main( int argc, char **argv ) WSADATA wsaData; WSAStartup( 0x202, &wsaData ); #elif defined( ANDROID ) - int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); + int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); int haspermInternet = AndroidHasPermissions( "INTERNET" ); if ( !hasperm ) AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); if ( !haspermInternet ) AndroidRequestAppPermissions( "INTERNET" ); @@ -346,10 +346,10 @@ int main( int argc, char **argv ) int frames = 0; double ThisTime; double SecToWait; - double LastFPSTime = OGGetAbsoluteTime(); - double LastFrameTime = OGGetAbsoluteTime(); - CNFGBGColor = 0x800000; - CNFGDialogColor = 0x444444; + double LastFPSTime = OGGetAbsoluteTime(); + double LastFrameTime = OGGetAbsoluteTime(); + CNFGBGColor = 0x800000; + CNFGDialogColor = 0x444444; // Generate the window title char title[ 1024 ]; @@ -453,9 +453,9 @@ int main( int argc, char **argv ) if ( !headless ) { // Handle outputs. - int freqbins = nf->freqbins; + int freqbins = nf->freqbins; int note_peaks = freqbins / 2; - int freqs = freqbins * nf->octaves; + int freqs = freqbins * nf->octaves; // Do a bunch of debugging. if ( show_debug_basic && !is_suspended ) @@ -473,11 +473,11 @@ int main( int argc, char **argv ) // Draw the folded bins for ( int bin = 0; bin < freqbins; bin++ ) { - const float x0 = bin / ( float )freqbins * ( float )screenx; - const float x1 = ( bin + 1 ) / ( float )freqbins * ( float )screenx; - const float amp = nf->folded_bins[ bin ] * 250.0; + const float x0 = bin / ( float )freqbins * ( float )screenx; + const float x1 = ( bin + 1 ) / ( float )freqbins * ( float )screenx; + const float amp = nf->folded_bins[ bin ] * 250.0; const float note = ( float )( bin + 0.5 ) / freqbins; - CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); + CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 400 - amp, x1, 400 ); } CNFGDialogColor = 0xf0f000; @@ -486,12 +486,12 @@ int main( int argc, char **argv ) for ( int peak = 0; peak < note_peaks; peak++ ) { if ( nf->note_amplitudes_out[ peak ] < 0 ) continue; - float note = ( float )nf->note_positions[ peak ] / freqbins; + float note = ( float )nf->note_positions[ peak ] / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); - const int x1 = ( ( float )peak / note_peaks ) * screenx; - const int x2 = ( ( float )( peak + 1 ) / note_peaks ) * screenx; - const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; - const int y2 = 480; + const int x1 = ( ( float )peak / note_peaks ) * screenx; + const int x2 = ( ( float )( peak + 1 ) / note_peaks ) * screenx; + const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; + const int y2 = 480; CNFGDrawBox( x1, y1, x2, y2 ); CNFGPenX = ( ( float )( peak + .4 ) / note_peaks ) * screenx; @@ -503,16 +503,16 @@ int main( int argc, char **argv ) // Let's draw the o-scope. int thissoundhead = soundhead; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - int lasty = sound[ thissoundhead ] * 128 + 128; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - int thisy = sound[ thissoundhead ] * 128 + 128; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int lasty = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int thisy = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; for ( int i = 0; i < screenx; i++ ) { CNFGTackSegment( i, lasty, i + 1, thisy ); - lasty = thisy; - thisy = sound[ thissoundhead ] * 128 + 128; + lasty = thisy; + thisy = sound[ thissoundhead ] * 128 + 128; thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; } } @@ -542,10 +542,10 @@ int main( int argc, char **argv ) // Draw the bins for ( int bin = 0; bin < freqs; bin++ ) { - float x0 = bin / ( float )freqs * ( float )screenx; - float x1 = ( bin + 1 ) / ( float )freqs * ( float )screenx; - float amp = nf->outbins[ bin ] * 250.0; - float note = ( float )bin / freqbins; + float x0 = bin / ( float )freqs * ( float )screenx; + float x1 = ( bin + 1 ) / ( float )freqs * ( float )screenx; + float amp = nf->outbins[ bin ] * 250.0; + float note = ( float )bin / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 0, x1, amp ); } @@ -606,7 +606,7 @@ int main( int argc, char **argv ) printf( "FPS: %d\n", frames ); #endif lastfps = frames; - frames = 0; + frames = 0; LastFPSTime += 1; } From b6b30394591817814f94bfa556633522cad34c08 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 13 Mar 2021 15:55:43 -0500 Subject: [PATCH 119/162] Fix allignment issue --- colorchord2/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index d0def45..b6a01e4 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -123,8 +123,8 @@ void HandleDestroy() #endif float DeltaFrameTime = 0; -double Now = 0; -int is_suspended = 0; +double Now = 0; +int is_suspended = 0; int lastfps; short screenx, screeny; From 2fbc9104155565c9a1a4593e2f39306017d1c40a Mon Sep 17 00:00:00 2001 From: wesleygas Date: Sun, 4 Apr 2021 23:49:59 -0300 Subject: [PATCH 120/162] WLED Integration and example config --- colorchord2/DisplayNetwork.c | 17 ++++++++++++++++- colorchord2/wled.conf | 23 +++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 colorchord2/wled.conf diff --git a/colorchord2/DisplayNetwork.c b/colorchord2/DisplayNetwork.c index 03ddcef..67d21bc 100644 --- a/colorchord2/DisplayNetwork.c +++ b/colorchord2/DisplayNetwork.c @@ -30,6 +30,8 @@ struct DPODriver { int leds; int skipfirst; + int wled_realtime; + int wled_timeout; int fliprg; int flipgb; int firstval; @@ -100,6 +102,17 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) d->firstval = 0; i = 0; + + if(d->wled_realtime) + { + //Packet byte 0 is 2 (DRGB mode) or 3 (DRGBW mode) if is_rgby + buffer[i] = 2 + d->is_rgby; + lbuff[i++] = 2 + d->is_rgby; + //Packet byte 1 is the time in seconds the controller will wait to take control after it stops receiving data + buffer[i] = d->wled_timeout; + lbuff[i++] = d->wled_timeout; + } + while( i < d->skipfirst ) { lbuff[i] = d->firstval; @@ -216,11 +229,13 @@ static void DPOParams(void * id ) d->leds = 10; RegisterValue( "leds", PAINT, &d->leds, sizeof( d->leds ) ); d->skipfirst = 1; RegisterValue( "skipfirst", PAINT, &d->skipfirst, sizeof( d->skipfirst ) ); + d->wled_realtime = 0;RegisterValue( "wled_realtime", PAINT, &d->wled_realtime, sizeof( d->wled_realtime ) ); + d->wled_timeout = 2;RegisterValue( "wled_timeout", PAINT, &d->wled_timeout, sizeof( d->wled_timeout ) ); d->port = 7777; RegisterValue( "port", PAINT, &d->port, sizeof( d->port ) ); d->firstval = 0; RegisterValue( "firstval", PAINT, &d->firstval, sizeof( d->firstval ) ); RegisterValue( "address", PABUFFER, d->address, sizeof( d->address ) ); d->fliprg = 0; RegisterValue( "fliprg", PAINT, &d->fliprg, sizeof( d->fliprg ) ); - d->flipgb = 0; RegisterValue( "flipgb", PAINT, &d->flipgb, sizeof( d->flipgb ) ); + d->flipgb = 0; RegisterValue( "flipgb", PAINT, &d->flipgb, sizeof( d->flipgb ) ); d->is_rgby = 0; RegisterValue( "rgby", PAINT, &d->is_rgby, sizeof( d->is_rgby ) ); d->skittlequantity=0;RegisterValue( "skittlequantity", PAINT, &d->skittlequantity, sizeof( d->skittlequantity ) ); d->socket = -1; diff --git a/colorchord2/wled.conf b/colorchord2/wled.conf new file mode 100644 index 0000000..b7a5d81 --- /dev/null +++ b/colorchord2/wled.conf @@ -0,0 +1,23 @@ +# Normal Colorchord stuff +outdrivers = DisplayNetwork, OutputLinear +headless = 1 +leds = 30 +light_siding = 1.5 #Turn this to ~1.9 for more uniformity, ~1.0 for less. +cpu_autolimit_interval=.014 +cpu_autolimit = 1 +satamp = 1.600 +is_loop=0 +led_floor = .18 +steady_bright = 0 +devplay = default +fliprg=0 +slope=.5 +amplify=1 +base_hz = 51.5000 + +#WLED Integration stuff +wled_realtime=1 #Enable WLED Interfacing params +port = 19446 #Default port for UDP Realtime +address = 192.168.0.24 #WLED Node IP +wled_timeout=2 + From e853558f7ba96685ff17e25be495b5a000c9c96e Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 29 Apr 2021 05:33:53 -0400 Subject: [PATCH 121/162] bump CNFA submodule Fix CNFA driver not being loaded with clang on Windows [Issue 121](https://github.com/cnlohr/colorchord/issues/121) This was caused by improper #ifdef guards on driver initilization code in CNFA. --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index aa931ed..a3677bd 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit aa931ed2db1991381867a1722b0e6a7bac98f467 +Subproject commit a3677bd33d63e051dac7f2437ba7ebf95b12abae From 36ef604bafda5ea80443a76fb71cd973869e60a4 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 22 May 2021 14:44:59 -0400 Subject: [PATCH 122/162] Update clang-format --- .clang-format | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.clang-format b/.clang-format index d72017b..7ca072d 100644 --- a/.clang-format +++ b/.clang-format @@ -15,7 +15,8 @@ MaxEmptyLinesToKeep: 2 PointerAlignment: Right SpaceInEmptyParentheses: 'false' SpacesInAngles: 'true' -SpacesInCStyleCastParentheses: 'true' +# this is just atrocious +#SpacesInCStyleCastParentheses: 'true' SpacesInContainerLiterals: 'true' SpacesInParentheses: 'true' SpacesInSquareBrackets: 'true' @@ -26,9 +27,15 @@ IndentCaseLabels: 'true' # Additions by Sam Ellicott ColumnLimit: 100 -AlignConsecutiveAssignments: true -AlignConsecutiveMacros: true -AlignTrailingComments: true +# From general dislike from Charles and Cai, I am turning these off +#AlignConsecutiveAssignments: true +#AlignConsecutiveMacros: true +#AlignTrailingComments: true +#AlignOperands: AlignAfterOperator +# Turn off alignment +AlignConsecutiveAssignments: false +AlignConsecutiveMacros: false +AlignTrailingComments: false AlignEscapedNewlines: Left AlignOperands: AlignAfterOperator AllowShortBlocksOnASingleLine: Always From 08eb40a900c0c7c0509d3bd9b80f0ff81a6e969e Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 22 May 2021 14:45:23 -0400 Subject: [PATCH 123/162] Fix formatting issues --- colorchord2/dft.c | 253 ++++++++++++++++++++++----------------------- colorchord2/main.c | 77 +++++++------- 2 files changed, 161 insertions(+), 169 deletions(-) diff --git a/colorchord2/dft.c b/colorchord2/dft.c index 90c3511..c5209a4 100644 --- a/colorchord2/dft.c +++ b/colorchord2/dft.c @@ -10,24 +10,25 @@ #ifndef CCEMBEDDED -void DoDFT( float * outbins, float * frequencies, int bins, float * databuffer, int place_in_data_buffer, int size_of_data_buffer, float q ) +void DoDFT( float *outbins, float *frequencies, int bins, float *databuffer, + int place_in_data_buffer, int size_of_data_buffer, float q ) { int i, j; - for( i = 0; i < bins; i++ ) + for ( i = 0; i < bins; i++ ) { - float freq = frequencies[i]; + float freq = frequencies[ i ]; float phi = 0; int sampleplace = place_in_data_buffer; - float advance = 3.14159*2.0/freq; + float advance = 3.14159 * 2.0 / freq; float binqtys = 0; float binqtyc = 0; - for( j = 0; j <= freq * q; j++ ) + for ( j = 0; j <= freq * q; j++ ) { - float sample = databuffer[sampleplace]; - sampleplace = (sampleplace-1+size_of_data_buffer)%size_of_data_buffer; -//printf( "%d\n", sampleplace ); + float sample = databuffer[ sampleplace ]; + sampleplace = ( sampleplace - 1 + size_of_data_buffer ) % size_of_data_buffer; + // printf( "%d\n", sampleplace ); float sv = sin( phi ) * sample; float cv = cos( phi ) * sample; @@ -38,36 +39,37 @@ void DoDFT( float * outbins, float * frequencies, int bins, float * databuffer, } float amp = sqrtf( binqtys * binqtys + binqtyc * binqtyc ); - outbins[i] = amp / freq / q; + outbins[ i ] = amp / freq / q; } } -void DoDFTQuick( float * outbins, float * frequencies, int bins, const float * databuffer, int place_in_data_buffer, int size_of_data_buffer, float q, float speedup ) +void DoDFTQuick( float *outbins, float *frequencies, int bins, const float *databuffer, + int place_in_data_buffer, int size_of_data_buffer, float q, float speedup ) { int i, j; - for( i = 0; i < bins; i++ ) + for ( i = 0; i < bins; i++ ) { int flirts = 0; - float freq = frequencies[i]; + float freq = frequencies[ i ]; float phi = 0; - int ftq = freq * q; + int ftq = freq * q; int sampleplace = place_in_data_buffer; - float advance = 3.14159*2.0/freq; + float advance = 3.14159 * 2.0 / freq; float binqtys = 0; float binqtyc = 0; int skip = floor( ftq / speedup ); - if( skip == 0 ) skip = 1; + if ( skip == 0 ) skip = 1; advance *= skip; - for( j = 0; j <= ftq; j += skip ) + for ( j = 0; j <= ftq; j += skip ) { - float sample = databuffer[sampleplace]; - sampleplace = (sampleplace-skip+size_of_data_buffer)%size_of_data_buffer; -//printf( "%d\n", sampleplace ); + float sample = databuffer[ sampleplace ]; + sampleplace = ( sampleplace - skip + size_of_data_buffer ) % size_of_data_buffer; + // printf( "%d\n", sampleplace ); float sv = sinf( phi ) * sample; float cv = cosf( phi ) * sample; @@ -79,25 +81,24 @@ void DoDFTQuick( float * outbins, float * frequencies, int bins, const float * d } float amp = sqrtf( binqtys * binqtys + binqtyc * binqtyc ); - outbins[i] = amp / freq / q * skip; + outbins[ i ] = amp / freq / q * skip; } } - ////////////////////////////DFT Progressive is for embedded systems, primarily. -static float * gbinqtys; -static float * gbinqtyc; -static float * phis; -static float * gfrequencies; -static float * lastbins; -static float * advances; -static float * goutbins; -static int gbins; -static float gq; -static float gspeedup; +static float *gbinqtys; +static float *gbinqtyc; +static float *phis; +static float *gfrequencies; +static float *lastbins; +static float *advances; +static float *goutbins; +static int gbins; +static float gq; +static float gspeedup; #define PROGIIR .005 @@ -105,53 +106,53 @@ void HandleProgressive( float sample ) { int i; - for( i = 0; i < gbins; i++ ) + for ( i = 0; i < gbins; i++ ) { - float thiss = sinf( phis[i] ) * sample; - float thisc = cosf( phis[i] ) * sample; + float thiss = sinf( phis[ i ] ) * sample; + float thisc = cosf( phis[ i ] ) * sample; - float s = gbinqtys[i] = gbinqtys[i] * (1.-PROGIIR) + thiss * PROGIIR; - float c = gbinqtyc[i] = gbinqtyc[i] * (1.-PROGIIR) + thisc * PROGIIR; + float s = gbinqtys[ i ] = gbinqtys[ i ] * ( 1. - PROGIIR ) + thiss * PROGIIR; + float c = gbinqtyc[ i ] = gbinqtyc[ i ] * ( 1. - PROGIIR ) + thisc * PROGIIR; - phis[i] += advances[i]; - if( phis[i] > 6.283 ) phis[i]-=6.283; + phis[ i ] += advances[ i ]; + if ( phis[ i ] > 6.283 ) phis[ i ] -= 6.283; - goutbins[i] = sqrtf( s * s + c * c ); + goutbins[ i ] = sqrtf( s * s + c * c ); } } -void DoDFTProgressive( float * outbins, float * frequencies, int bins, const float * databuffer, int place_in_data_buffer, int size_of_data_buffer, float q, float speedup ) +void DoDFTProgressive( float *outbins, float *frequencies, int bins, const float *databuffer, + int place_in_data_buffer, int size_of_data_buffer, float q, float speedup ) { int i; static int last_place; - if( gbins != bins ) + if ( gbins != bins ) { - if( gbinqtys ) free( gbinqtys ); - if( gbinqtyc ) free( gbinqtyc ); - if( phis ) free( phis ); - if( lastbins ) free( lastbins ); - if( advances ) free( advances ); + if ( gbinqtys ) free( gbinqtys ); + if ( gbinqtyc ) free( gbinqtyc ); + if ( phis ) free( phis ); + if ( lastbins ) free( lastbins ); + if ( advances ) free( advances ); - gbinqtys = malloc( sizeof(float)*bins ); - gbinqtyc = malloc( sizeof(float)*bins ); - phis = malloc( sizeof(float)*bins ); - lastbins = malloc( sizeof(float)*bins ); - advances = malloc( sizeof(float)*bins ); - - memset( gbinqtys, 0, sizeof(float)*bins ); - memset( gbinqtyc, 0, sizeof(float)*bins ); - memset( phis, 0, sizeof(float)*bins ); - memset( lastbins, 0, sizeof(float)*bins ); + gbinqtys = malloc( sizeof( float ) * bins ); + gbinqtyc = malloc( sizeof( float ) * bins ); + phis = malloc( sizeof( float ) * bins ); + lastbins = malloc( sizeof( float ) * bins ); + advances = malloc( sizeof( float ) * bins ); + memset( gbinqtys, 0, sizeof( float ) * bins ); + memset( gbinqtyc, 0, sizeof( float ) * bins ); + memset( phis, 0, sizeof( float ) * bins ); + memset( lastbins, 0, sizeof( float ) * bins ); } - memcpy( outbins, lastbins, sizeof(float)*bins ); + memcpy( outbins, lastbins, sizeof( float ) * bins ); - for( i = 0; i < bins; i++ ) + for ( i = 0; i < bins; i++ ) { - float freq = frequencies[i]; - advances[i] = 3.14159*2.0/freq; + float freq = frequencies[ i ]; + advances[ i ] = 3.14159 * 2.0 / freq; } gbins = bins; @@ -160,36 +161,28 @@ void DoDFTProgressive( float * outbins, float * frequencies, int bins, const flo gspeedup = speedup; gq = q; - place_in_data_buffer = (place_in_data_buffer+1)%size_of_data_buffer; + place_in_data_buffer = ( place_in_data_buffer + 1 ) % size_of_data_buffer; int didrun = 0; - for( i = last_place; i != place_in_data_buffer; i = (i+1)%size_of_data_buffer ) + for ( i = last_place; i != place_in_data_buffer; i = ( i + 1 ) % size_of_data_buffer ) { - float fin = ((float)((int)(databuffer[i] * 127))) / 127.0; //simulate 8-bit input (it looks FINE!) + float fin = ( (float)( (int)( databuffer[ i ] * 127 ) ) ) / + 127.0; // simulate 8-bit input (it looks FINE!) HandleProgressive( fin ); didrun = 1; } last_place = place_in_data_buffer; - if( didrun ) - { - memcpy( lastbins, outbins, sizeof(float)*bins ); - } - -/* for( i = 0; i < bins; i++ ) - { - printf( "%0.2f ", outbins[i]*100 ); - } - printf( "\n" );*/ + if ( didrun ) { memcpy( lastbins, outbins, sizeof( float ) * bins ); } + /* for( i = 0; i < bins; i++ ) + { + printf( "%0.2f ", outbins[i]*100 ); + } + printf( "\n" );*/ } - - - - - /////////////////////////////INTEGER DFT @@ -223,111 +216,111 @@ void HandleProgressiveInt( int8_t sample1, int8_t sample2 ) //Estimated 78 minimum instructions... So for two pairs each... just over 4ksps, theoretical. //Running overall at ~2kHz. With GCC: YUCK! 102 cycles!!! - for( i = 0; i < gbins; i++ ) //Loop, fixed size = 3 + 2 cycles N/A + for( i = 0; i < gbins; i++ ) //Loop, fixed size = 3 + 2 cycles N/A { //12 cycles MIN - adv = *(ds++); //Read, indirect from RAM (and increment) 2+2 cycles 4 - ipl = *(ds++); //Read, indirect from RAM (and increment) 2+2 cycles 4 + adv = *(ds++); //Read, indirect from RAM (and increment) 2+2 cycles 4 + ipl = *(ds++); //Read, indirect from RAM (and increment) 2+2 cycles 4 //13 cycles MIN - ipl += adv; //Advance, 16bit += 16bit, 1 + 1 cycles 2 - localipl = (ipl>>8)<<1; //Select upper 8 bits 1 cycles 1 *** AS/IS: 4 + ipl += adv; //Advance, 16bit += 16bit, 1 + 1 cycles 2 + localipl = (ipl>>8)<<1; //Select upper 8 bits, 1 cycle 1 *** AS/IS: 4 st = &sintable[localipl]; - s1 = *(st++); //Read s1 component out of table. 2+2 cycles 2 - c1 = *st; //Read c1 component out of table. 2 cycles 2 *** AS/IS: 4 + s1 = *(st++); //Read s1 component out of table. 2+2 cycles 2 + c1 = *st; //Read c1 component out of table. 2 cycles 2 *** AS/IS: 4 - ts = (s1 * sample1); // 8 x 8 multiply signed + copy R1 out. zero MSB ts 2 ->Deferred - tc = (c1 * sample1); // 8 x 8 multiply signed + copy R1 out. zero MSB tc 2 ->Deferred + ts = (s1 * sample1); // 8 x 8 multiply signed + copy R1 out. zero MSB ts 2 ->Deferred + tc = (c1 * sample1); // 8 x 8 multiply signed + copy R1 out. zero MSB tc 2 ->Deferred //15 cycles MIN - ipl += adv; //Advance, 16bit += 16bit, 1 + 1 cycles 2 - localipl = (ipl>>8)<<1; //Select upper 8 bits 1 cycles 1 *** AS/IS: 4 + ipl += adv; //Advance, 16bit += 16bit, 1 + 1 cycles 2 + localipl = (ipl>>8)<<1; //Select upper 8 bits 1 cycles 1 *** AS/IS: 4 - // need to load Z with 'sintable' and add localipl 2 + // need to load Z with 'sintable' and add localipl 2 st = &sintable[localipl]; - s1 = *(st++); //Read s1 component out of table. 2 cycles 2 - c1 = *st; //Read c1 component out of table. 2 cycles 2 *** AS/IS: 4 + s1 = *(st++); //Read s1 component out of table. 2 cycles 2 + c1 = *st; //Read c1 component out of table. 2 cycles 2 *** AS/IS: 4 - ts += (s1 * sample2); // 8 x 8 multiply signed + add R1 out. 3 ->Deferred - tc += (c1 * sample2); // 8 x 8 multiply signed + add R1 out. 3 ->Deferred + ts += ( s1 * sample2 ); // 8 x 8 multiply signed + add R1 out. 3 ->Deferred + tc += ( c1 * sample2 ); // 8 x 8 multiply signed + add R1 out. 3 ->Deferred - //Add TS and TC to the datspace stuff. (24 instructions) - tmp1 = (*ds); //Read out, sin component. 4 Accurate. - tmp1 -= tmp1>>7; //Subtract from the MSB (with carry) 2 -> 6 AS/IS: 7+7 = 14 - tmp1 += ts>>7; //Add MSBs with carry 2 -> 6 AS/IS: 6 + // Add TS and TC to the datspace stuff. (24 instructions) + tmp1 = ( *ds ); // Read out, sin component. 4 Accurate + tmp1 -= tmp1 >> 7; // Subtract from the MSB (with carry) 2 -> 6 AS/IS: 7+7 = 14 + tmp1 += ts >> 7; // Add MSBs with carry 2 -> 6 AS/IS: 6 - *(ds++) = tmp1; //Store values back 4 + *( ds++ ) = tmp1; // Store values back 4 - tmp1 = *ds; //Read out, sin component. 4 - tmp1 -= tmp1>>7; //Subtract from the MSB (with carry) 2 -> 6 AS/IS: 7+7 = 14 - tmp1 += tc>>7; //Add MSBs with carry 2 -> 6 AS/IS: 6 + tmp1 = *ds; // Read out, sin component. 4 + tmp1 -= tmp1 >> 7; // Subtract from the MSB (with carry) 2 -> 6 AS/IS: 7+7 = 14 + tmp1 += tc >> 7; // Add MSBs with carry 2 -> 6 AS/IS: 6 - *ds++ = tmp1; //Store values back 4 + *ds++ = tmp1; // Store values back 4 - *(ds-3) = ipl; //Store values back 4 AS/IS: 6 + *( ds - 3 ) = ipl; // Store values back 4 AS/IS: 6 //AS-IS: 8 loop overhead. } } -void DoDFTProgressiveInteger( float * outbins, float * frequencies, int bins, const float * databuffer, int place_in_data_buffer, int size_of_data_buffer, float q, float speedup ) +void DoDFTProgressiveInteger( float *outbins, float *frequencies, int bins, const float *databuffer, + int place_in_data_buffer, int size_of_data_buffer, float q, float speedup ) { int i; static int last_place; - if( !donefirstrun ) + if ( !donefirstrun ) { donefirstrun = 1; - for( i = 0; i < 256; i++ ) + for ( i = 0; i < 256; i++ ) { - sintable[i*2+0] = (int8_t)((sinf( i / 256.0 * 6.283 ) * 127.0)); - sintable[i*2+1] = (int8_t)((cosf( i / 256.0 * 6.283 ) * 127.0)); + sintable[ i * 2 + 0 ] = ( int8_t )( ( sinf( i / 256.0 * 6.283 ) * 127.0 ) ); + sintable[ i * 2 + 1 ] = ( int8_t )( ( cosf( i / 256.0 * 6.283 ) * 127.0 ) ); } } - if( gbins != bins ) + if ( gbins != bins ) { gbins = bins; - if( datspace ) free( datspace ); + if ( datspace ) free( datspace ); datspace = malloc( bins * 2 * 4 ); } - - for( i = 0; i < bins; i++ ) + + for ( i = 0; i < bins; i++ ) { - float freq = frequencies[i]; - datspace[i*4] = 65536.0/freq; + float freq = frequencies[ i ]; + datspace[ i * 4 ] = 65536.0 / freq; } - for( i = last_place; i != ( place_in_data_buffer&0xffffe ); i = (i+2)%size_of_data_buffer ) + for ( i = last_place; i != ( place_in_data_buffer & 0xffffe ); + i = ( i + 2 ) % size_of_data_buffer ) { - int8_t ifr1 = (int8_t)( ((databuffer[i+0]) ) * 127 ); - int8_t ifr2 = (int8_t)( ((databuffer[i+1]) ) * 127 ); -// printf( "%d %d\n", i, place_in_data_buffer&0xffffe ); + int8_t ifr1 = ( int8_t )( ( ( databuffer[ i + 0 ] ) ) * 127 ); + int8_t ifr2 = ( int8_t )( ( ( databuffer[ i + 1 ] ) ) * 127 ); + // printf( "%d %d\n", i, place_in_data_buffer&0xffffe ); HandleProgressiveInt( ifr1, ifr2 ); } - last_place = place_in_data_buffer&0xfffe; + last_place = place_in_data_buffer & 0xfffe; - //Extract bins. - for( i = 0; i < bins; i++ ) + // Extract bins. + for ( i = 0; i < bins; i++ ) { - int16_t isps = datspace[i*4+2]; - int16_t ispc = datspace[i*4+3]; - int16_t mux = ( (isps/256) * (isps/256)) + ((ispc/256) * (ispc/256)); -// printf( "%d (%d %d)\n", mux, isps, ispc ); - outbins[i] = sqrt( mux )/100.0; + int16_t isps = datspace[ i * 4 + 2 ]; + int16_t ispc = datspace[ i * 4 + 3 ]; + int16_t mux = ( ( isps / 256 ) * ( isps / 256 ) ) + ( ( ispc / 256 ) * ( ispc / 256 ) ); + // printf( "%d (%d %d)\n", mux, isps, ispc ); + outbins[ i ] = sqrt( mux ) / 100.0; } -// printf( "\n"); + // printf( "\n"); } - - #endif diff --git a/colorchord2/main.c b/colorchord2/main.c index b6a01e4..57a41e2 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -216,7 +216,7 @@ void HandleMotion( int x, int y, int mask ) void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int framesr ) { - int channelin = sd->channelsRec; + int channelin = sd->channelsRec; int channelout = sd->channelsPlay; // Load the samples into a ring buffer. Split the channels from interleved to one per buffer. @@ -237,14 +237,14 @@ void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int fra } fo /= channelin; sound[ soundhead ] = fo * in_amplitude; - soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; + soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; } else { float f = in[ i * channelin + sample_channel ] / 32767.; if ( f > 1 || f < -1 ) f = ( f > 0 ) ? 1 : -1; sound[ soundhead ] = f * in_amplitude; - soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; + soundhead = ( soundhead + 1 ) % SOUNDCBSIZE; } } SoundEventHappened( framesr, in, 0, channelin ); @@ -253,7 +253,7 @@ void SoundCB( struct CNFADriver *sd, short *out, short *in, int framesp, int fra if ( out ) { - memset(out, 0, framesp * channelout); + memset( out, 0, framesp * channelout ); SoundEventHappened( framesp, out, 1, channelout ); } } @@ -329,7 +329,7 @@ int main( int argc, char **argv ) WSADATA wsaData; WSAStartup( 0x202, &wsaData ); #elif defined( ANDROID ) - int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); + int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); int haspermInternet = AndroidHasPermissions( "INTERNET" ); if ( !hasperm ) AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); if ( !haspermInternet ) AndroidRequestAppPermissions( "INTERNET" ); @@ -346,10 +346,10 @@ int main( int argc, char **argv ) int frames = 0; double ThisTime; double SecToWait; - double LastFPSTime = OGGetAbsoluteTime(); + double LastFPSTime = OGGetAbsoluteTime(); double LastFrameTime = OGGetAbsoluteTime(); - CNFGBGColor = 0x800000; - CNFGDialogColor = 0x444444; + CNFGBGColor = 0x800000; + CNFGDialogColor = 0x444444; // Generate the window title char title[ 1024 ]; @@ -383,15 +383,14 @@ int main( int argc, char **argv ) *ThisDriver = 0; ThisDriver++; } - + printf( "Loading: %s\n", TDStart ); outdriver[ i ] = SetupOutDriver( TDStart ); } free( OutDriverNames ); - do - { + do { // Initialize Sound sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), GetParameterI( "samplerate", 44100 ), GetParameterI( "channels", 2 ), @@ -399,7 +398,7 @@ int main( int argc, char **argv ) GetParameterS( "devplay", 0 ), GetParameterS( "devrecord", 0 ), NULL ); if ( sd ) break; - + CNFGColor( 0xffffff ); CNFGPenX = 10; CNFGPenY = 100; @@ -453,9 +452,9 @@ int main( int argc, char **argv ) if ( !headless ) { // Handle outputs. - int freqbins = nf->freqbins; + int freqbins = nf->freqbins; int note_peaks = freqbins / 2; - int freqs = freqbins * nf->octaves; + int freqs = freqbins * nf->octaves; // Do a bunch of debugging. if ( show_debug_basic && !is_suspended ) @@ -473,11 +472,11 @@ int main( int argc, char **argv ) // Draw the folded bins for ( int bin = 0; bin < freqbins; bin++ ) { - const float x0 = bin / ( float )freqbins * ( float )screenx; - const float x1 = ( bin + 1 ) / ( float )freqbins * ( float )screenx; - const float amp = nf->folded_bins[ bin ] * 250.0; - const float note = ( float )( bin + 0.5 ) / freqbins; - CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); + const float x0 = bin / (float)freqbins * (float)screenx; + const float x1 = ( bin + 1 ) / (float)freqbins * (float)screenx; + const float amp = nf->folded_bins[ bin ] * 250.0; + const float note = (float)( bin + 0.5 ) / freqbins; + CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 400 - amp, x1, 400 ); } CNFGDialogColor = 0xf0f000; @@ -486,15 +485,15 @@ int main( int argc, char **argv ) for ( int peak = 0; peak < note_peaks; peak++ ) { if ( nf->note_amplitudes_out[ peak ] < 0 ) continue; - float note = ( float )nf->note_positions[ peak ] / freqbins; + float note = (float)nf->note_positions[ peak ] / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); - const int x1 = ( ( float )peak / note_peaks ) * screenx; - const int x2 = ( ( float )( peak + 1 ) / note_peaks ) * screenx; - const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; - const int y2 = 480; + const int x1 = ( (float)peak / note_peaks ) * screenx; + const int x2 = ( (float)( peak + 1 ) / note_peaks ) * screenx; + const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; + const int y2 = 480; CNFGDrawBox( x1, y1, x2, y2 ); - CNFGPenX = ( ( float )( peak + .4 ) / note_peaks ) * screenx; + CNFGPenX = ( (float)( peak + .4 ) / note_peaks ) * screenx; CNFGPenY = screeny - 30; sprintf( stt, "%d\n%0.0f", nf->enduring_note_id[ peak ], nf->note_amplitudes2[ peak ] * 1000.0 ); @@ -503,16 +502,16 @@ int main( int argc, char **argv ) // Let's draw the o-scope. int thissoundhead = soundhead; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - int lasty = sound[ thissoundhead ] * 128 + 128; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - int thisy = sound[ thissoundhead ] * 128 + 128; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int lasty = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int thisy = sound[ thissoundhead ] * 128 + 128; + thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; for ( int i = 0; i < screenx; i++ ) { CNFGTackSegment( i, lasty, i + 1, thisy ); - lasty = thisy; - thisy = sound[ thissoundhead ] * 128 + 128; + lasty = thisy; + thisy = sound[ thissoundhead ] * 128 + 128; thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; } } @@ -527,7 +526,7 @@ int main( int argc, char **argv ) for ( int x_val = -1; x_val < screenx; x_val++ ) { // Calculate the value of the histogram at the current screen position - float hist_point = ( float )x_val / ( float )screenx * freqbins - 0.5; + float hist_point = (float)x_val / (float)screenx * freqbins - 0.5; float thishistval = CalcHistAt( hist_point, nf->freqbins, nf->dists, nf->dists_count ); @@ -542,10 +541,10 @@ int main( int argc, char **argv ) // Draw the bins for ( int bin = 0; bin < freqs; bin++ ) { - float x0 = bin / ( float )freqs * ( float )screenx; - float x1 = ( bin + 1 ) / ( float )freqs * ( float )screenx; - float amp = nf->outbins[ bin ] * 250.0; - float note = ( float )bin / freqbins; + float x0 = bin / (float)freqs * (float)screenx; + float x1 = ( bin + 1 ) / (float)freqs * (float)screenx; + float amp = nf->outbins[ bin ] * 250.0; + float note = (float)bin / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 0, x1, amp ); } @@ -606,7 +605,7 @@ int main( int argc, char **argv ) printf( "FPS: %d\n", frames ); #endif lastfps = frames; - frames = 0; + frames = 0; LastFPSTime += 1; } @@ -615,7 +614,7 @@ int main( int argc, char **argv ) SecToWait = cpu_autolimit_interval - ( ThisTime - LastFrameTime ); LastFrameTime += cpu_autolimit_interval; if ( SecToWait < -.1 ) LastFrameTime = ThisTime - .1; - if ( SecToWait > 0 ) OGUSleep( ( int )( SecToWait * 1000000 ) ); + if ( SecToWait > 0 ) OGUSleep( (int)( SecToWait * 1000000 ) ); } if ( !is_suspended ) SetEnvValues( 0 ); From e87d16e90586eaee0d98bc29be110e64c5ebd444 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 22 May 2021 15:47:42 -0400 Subject: [PATCH 124/162] Update Makefile with an opengl option --- colorchord2/Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 76dee80..f0dab15 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -8,7 +8,7 @@ WINGCCFLAGS:= -g -DICACHE_FLASH_ATTR= -I../embeddedcommon -Icnfa -Irawdraw -I. - WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi #CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= -CFLAGS:=-g -O1 -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= +CFLAGS:=-g -O2 -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= ifneq ($(OS),Windows_NT) ifneq ($(shell uname),Darwin) @@ -23,6 +23,7 @@ EXTRALIBS+=-ludev EXTRALIBS+=$(shell pkg-config --libs alsa) EXTRALIBS+=$(shell pkg-config --libs libpulse) EXTRALIBS+=$(shell pkg-config --libs libpulse-simple) +OPENGLLIBS=$(shell pkg-config --cflags --libs glut) endif OBJS:=main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers.o $(OUTS) parameters.o chash.o hook.o ../embeddedcommon/DFT32.o configs.o @@ -30,6 +31,9 @@ OBJS:=main.o dft.o decompose.o filter.o color.o notefinder.o util.o outdrivers. colorchord : $(OBJS) $(CC) -o $@ $^ $(EXTRALIBS) $(RAWDRAWLIBS) +colorchord-opengl : $(OBJS) + $(CC) -o $@ $^ -DCNFGOGL $(EXTRALIBS) $(OPENGLLIBS) $(RAWDRAWLIBS) + colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) From deeec1b716acdfda0f11a5d06e4722aea9c4cf5f Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 3 Jun 2021 00:08:49 -0400 Subject: [PATCH 125/162] Fix Windows build --- colorchord2/DisplayNetwork.c | 2 +- colorchord2/main.c | 2 -- colorchord2/windows/compile-clang.bat | 2 +- colorchord2/windows/compile.bat | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/colorchord2/DisplayNetwork.c b/colorchord2/DisplayNetwork.c index 67d21bc..798f77c 100644 --- a/colorchord2/DisplayNetwork.c +++ b/colorchord2/DisplayNetwork.c @@ -211,7 +211,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) } } - int r = sendto( d->socket, buffer, i, MSG_NOSIGNAL,(const struct sockaddr *) &d->servaddr, sizeof( d->servaddr ) ); + int r = sendto( d->socket, (const char*) buffer, i, MSG_NOSIGNAL,(const struct sockaddr *) &d->servaddr, sizeof( d->servaddr ) ); if( r < 0 ) { fprintf( stderr, "Send fault.\n" ); diff --git a/colorchord2/main.c b/colorchord2/main.c index 57a41e2..66a0f9a 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -2,8 +2,6 @@ #if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ defined( _WIN32 ) || defined( _WIN64 ) -#include -#include #ifndef strdup #define strdup _strdup #endif diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 900ea1d..ca9c46a 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -3,7 +3,7 @@ set CC="C:\Program Files\LLVM\bin\clang.exe" rem To enable OpenGL rendering use the -DCNFGOGL option set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O2 -set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt +set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt -lopengl32 set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ^ ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../hook.c ../RecorderPlugin.c ^ diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index f69e406..d9912be 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -3,7 +3,7 @@ echo Unzip http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win64-bin echo Also, if compiling with OpenGL, download http://download.savannah.nongnu.org/releases/tinycc/winapi-full-for-0.9.27.zip and overwrite the include, etc. folders in C:\tcc. echo Don't worry. It includes the i386 compiler in the win64 build. -set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -O2 -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g -DCNFGOGL +set CFLAGS= -v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -O2 -Itccinc -DINCLUDING_EMBEDDED -rdynamic -g set INCLUDES=-I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon set LDFLAGS=-lkernel32 -lole32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 -lAvrt -lopengl32 From 737ae717bbd9b5bf724e0766b08aee4f895f258b Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 3 Jun 2021 08:28:59 -0400 Subject: [PATCH 126/162] Fix tcc build on Windows --- colorchord2/main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/colorchord2/main.c b/colorchord2/main.c index 66a0f9a..ba24e41 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -2,6 +2,9 @@ #if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ defined( _WIN32 ) || defined( _WIN64 ) +#ifdef TCC +#include +#endif #ifndef strdup #define strdup _strdup #endif From 56007d28eb3caf287b02d0bb5511d8015cf13cec Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 4 Jun 2021 21:57:34 -0400 Subject: [PATCH 127/162] Updated devrecord - Made windows loopback device the default - Added instructions on how to do the same on Linux --- colorchord2/default.conf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/colorchord2/default.conf b/colorchord2/default.conf index 7bb04e2..d4f3765 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -29,7 +29,11 @@ sample_channel = -1 # Sets the playback device for CNFA (what speakers to go to) devplay = default # Sets the device to get audio from, for WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. -# devrecord = default +devrecord = defaultRender +# On linux for PulseAudio @DEFAULT_SOURCE@ selects the default input (typically a microphone) +# @DEFAULT_MONITOR@ selects the default loopback device +# devrecord = @DEFAULT_MONITOR@ + #Render From 65a5a33c22ca6b68c7b500cbe3829a8dacb4f6df Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 4 Jun 2021 22:14:13 -0400 Subject: [PATCH 128/162] Slight update to the build instructions --- README.md | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 9587b81..35636b5 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ Table of Contents - [Building ColorChord Embedded](#building-colorchord-embedded) - [Building with Linux](#building-with-linux) - [Building with Windows](#building-with-windows) - - [MSYS2](#msys2) - [clang](#clang) - [TCC](#tcc) + - [MSYS2](#msys2) - [Using](#using) - [Additional Videos](#additional-videos) @@ -99,7 +99,28 @@ make Building with Windows ------------------- -There are 3 options available for building on Windows, MSYS2, clang, or TCC. +There are 3 options available for building on Windows, clang, or TCC, MSYS2. +### clang +Start by [downloading](https://clang.llvm.org/) the clang compiler, and installing it. + +Edit the batch script at `colorchord1/windows/compile-clang.bat`: +- Verify that the executable location is correct, on line 0 (`CC`). + +If you have the Windows SDK installed, you should not need to do any additional work. +If you do not, you'll want to either [install it](https://developer.microsoft.com/en-US/windows/downloads/windows-11-sdk/) to get the official headers, or use the unofficial headers instead by adding `-DNO_WIN_HEADERS` to the `CCFLAGS` line in the batch file above. + +Run the batch script, and it should output to `colorchord2/colorchord.exe`. + +### TCC +Start by [downloading TCC](http://savannah.nongnu.org/projects/tinycc/), and extracting it to `C:\tcc`. +You can put it anywhere you like, but the compile script defaults to this location. If you install +to the default location, you can skip the next step. + +Edit the batch script at `colorchord2/windows/compile.bat`: +- Edit line 17 (`CC`) to be the location where you put TCC. If there are spaces in the path, wrap the entire path in quotes. + +Note that TCC is not able to use the Windows SDK, and as such using the unofficial headers is required, and automatically enabled when compiling with TCC. If you encounter issues, try the clang method above instead. + ### MSYS2 With either 64bit or 32bit [MSYS2](https://msys2.github.io/) installed, run the _MSYS2 MSYS_ launcher and use `pacman` to set up a MinGW32 toolchain, if you don't have one already: ``` @@ -114,26 +135,6 @@ To make colorchord, navigate to your working copy and type: mingw32-make colorchord.exe ``` -### clang -Start by [downloading](https://clang.llvm.org/) the clang compiler, and installing it. - -Edit the batch script at `colorchord2/windows/compile-clang.bat`: -- Verify that the executable location is correct, on line 1 (`CC`). - -If you have the Windows SDK installed, you should not need to do any additional work. -If you do not, you'll want to either [install it](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk/) to get the official headers, or use the unofficial headers instead by adding `-DNO_WIN_HEADERS` to the `CCFLAGS` line in the batch file above. - -Run the batch script, and it should output to `colorchord2/colorchord.exe`. - -### TCC -Start by [downloading TCC](http://savannah.nongnu.org/projects/tinycc/), and extracting it to a location of your choice. - -Edit the batch script at `colorchord2/windows/compile.bat`: -- Edit line 17 (`CC`) to be the location where you put TCC. If there are spaces in the path, wrap the entire path in quotes. - -Note that TCC is not able to use the Windows SDK, and as such using the unofficial headers is required, and automatically enabled when compiling with TCC. If you encounter issues, try the clang method above instead. - - Using ----- From 28612cadd8d13d7ad618c7a09fa74629209573ea Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 4 Jun 2021 22:42:50 -0400 Subject: [PATCH 129/162] Update to master branch of rawdraw - Add HandleDestroy stub function - Update HSVtoHEX function to RGBA - Start moving over to CNFGColor() --- colorchord2/color.c | 3 ++- colorchord2/main.c | 20 +++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/colorchord2/color.c b/colorchord2/color.c index 286d042..acacda2 100644 --- a/colorchord2/color.c +++ b/colorchord2/color.c @@ -105,5 +105,6 @@ uint32_t HSVtoHEX( float hue, float sat, float value ) if( ob < 0 ) ob = 0; if( ob > 255 ) ob = 255; - return (ob<<16) | (og<<8) | ora; + // Pack bits in RGBA format + return (ora << 24) | (og << 16) | (ob << 8) | 0xFF; } diff --git a/colorchord2/main.c b/colorchord2/main.c index ba24e41..10d68cc 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -118,8 +118,11 @@ void HandleDestroy() CNFAClose( sd ); } #else - #define ESCAPE_KEY 65307 +// Stub function for Linux +void HandleDestroy() +{ +} #endif @@ -349,8 +352,9 @@ int main( int argc, char **argv ) double SecToWait; double LastFPSTime = OGGetAbsoluteTime(); double LastFrameTime = OGGetAbsoluteTime(); - CNFGBGColor = 0x800000; - CNFGDialogColor = 0x444444; + CNFGBGColor = 0x800000FF; + //CNFGColor( 0x444444FF ); + CNFGDialogColor = 0x444444FF; // Generate the window title char title[ 1024 ]; @@ -477,10 +481,13 @@ int main( int argc, char **argv ) const float x1 = ( bin + 1 ) / (float)freqbins * (float)screenx; const float amp = nf->folded_bins[ bin ] * 250.0; const float note = (float)( bin + 0.5 ) / freqbins; + // CNFGColor( CCtoHEX( note, 1.0, 1.0 ) ); CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 400 - amp, x1, 400 ); } - CNFGDialogColor = 0xf0f000; + CNFGDialogColor = 0xf0f000FF; + // CNFGColor(0xf0f000FF); + // Draw the note peaks for ( int peak = 0; peak < note_peaks; peak++ ) @@ -488,6 +495,7 @@ int main( int argc, char **argv ) if ( nf->note_amplitudes_out[ peak ] < 0 ) continue; float note = (float)nf->note_positions[ peak ] / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); + //CNFGColor( CCtoHEX( note, 1.0, 1.0 ) ); const int x1 = ( (float)peak / note_peaks ) * screenx; const int x2 = ( (float)( peak + 1 ) / note_peaks ) * screenx; const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; @@ -547,9 +555,11 @@ int main( int argc, char **argv ) float amp = nf->outbins[ bin ] * 250.0; float note = (float)bin / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); + //CNFGColor( CCtoHEX( note, 1.0, 1.0 ) ); CNFGDrawBox( x0, 0, x1, amp ); } - CNFGDialogColor = 0x0f0f0f; + CNFGDialogColor = 0x0f0f0fff; + //CNFGColor(0xf0f000FF); char stdebug[ 1024 ]; sprintf( stdebug, "DFT:%8.2fms\nFLT:%8.2f\nDEC:%8.2f\nFNL:%8.2f\nDPY:%8.2f", From 9210cca20e071114721e3cded986e9e81847e19c Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 5 Jun 2021 00:10:13 -0400 Subject: [PATCH 130/162] Remove old, dead, code --- colorchord2/DisplayOUTDriver.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/colorchord2/DisplayOUTDriver.c b/colorchord2/DisplayOUTDriver.c index 722f6a1..aa17c04 100644 --- a/colorchord2/DisplayOUTDriver.c +++ b/colorchord2/DisplayOUTDriver.c @@ -121,26 +121,6 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) } } -/* float cw = ((float)screenx) / d->xn; - float ch = ((float)screeny) / d->yn; - - for( i = 0; i < d->note_peaks; i++ ) - { - struct LINote * l = &d->notes[i]; - int j; - float sat = nf->note_amplitudes_out[i] * d->satamp; - if( sat > 1 ) sat = 1; - CNFGDialogColor = CCtoHEX( nf->note_positions[i] / nf->freqbins, 1.0, sat ); - for( j = 0; j < l->nrleds; j++ ) - { - int id = l->ledids[j]; - float x = (id % d->xn) * cw; - float y = (id / d->xn) * ch; - - CNFGDrawBox( x, y, x+cw, y+ch ); - } - }*/ - int led = 0; for( i = 0; i < d->note_peaks; i++ ) { From ffe467c2ddc77ca9de5ea8617c77b03ef959db8f Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 5 Jun 2021 00:12:38 -0400 Subject: [PATCH 131/162] Define constants for various application colors --- colorchord2/main.c | 50 ++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 10d68cc..ec7a997 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -67,6 +67,15 @@ int genloglines; int genlinelen = 0; int firstnewline = -1; + +// Define application colors RGBA format +#define BACKGROUND_COLOR 0x000080ff +#define LINE_COLOR 0xffffffff +#define TEXT_COLOR 0xffffffff +// Text colors for the debug options at the bottom of the screen +#define ENABLED_COLOR 0xffffffff +#define DISABLED_COLOR 0x800000ff + void example_log_function( int readSize, char *buf ) { static og_mutex_t *mt; @@ -352,9 +361,7 @@ int main( int argc, char **argv ) double SecToWait; double LastFPSTime = OGGetAbsoluteTime(); double LastFrameTime = OGGetAbsoluteTime(); - CNFGBGColor = 0x800000FF; - //CNFGColor( 0x444444FF ); - CNFGDialogColor = 0x444444FF; + CNFGBGColor = BACKGROUND_COLOR; // Generate the window title char title[ 1024 ]; @@ -366,7 +373,6 @@ int main( int argc, char **argv ) } if ( !headless ) CNFGSetup( title, set_screenx, set_screeny ); - char *OutDriverNames = strdup( GetParameterS( "outdrivers", "null" ) ); char *ThisDriver = OutDriverNames; char *TDStart; @@ -404,7 +410,7 @@ int main( int argc, char **argv ) if ( sd ) break; - CNFGColor( 0xffffff ); + CNFGColor( LINE_COLOR ); CNFGPenX = 10; CNFGPenY = 100; CNFGHandleInput(); @@ -434,7 +440,7 @@ int main( int argc, char **argv ) { CNFGHandleInput(); CNFGClearFrame(); - CNFGColor( 0xFFFFFF ); + CNFGColor( LINE_COLOR ); CNFGGetDimensions( &screenx, &screeny ); } @@ -464,6 +470,7 @@ int main( int argc, char **argv ) // Do a bunch of debugging. if ( show_debug_basic && !is_suspended ) { + CNFGColor( TEXT_COLOR ); for ( int i = 0; i < nf->dists_count; i++ ) { // Move over 0.5 for visual purposes. The means is correct. @@ -472,8 +479,8 @@ int main( int argc, char **argv ) sprintf( stt, "%f\n%f\n", nf->dists[ i ].mean, nf->dists[ i ].amp ); CNFGDrawText( stt, 2 ); } - CNFGColor( 0xffffff ); + CNFGColor( LINE_COLOR ); // Draw the folded bins for ( int bin = 0; bin < freqbins; bin++ ) { @@ -481,13 +488,9 @@ int main( int argc, char **argv ) const float x1 = ( bin + 1 ) / (float)freqbins * (float)screenx; const float amp = nf->folded_bins[ bin ] * 250.0; const float note = (float)( bin + 0.5 ) / freqbins; - // CNFGColor( CCtoHEX( note, 1.0, 1.0 ) ); CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); CNFGDrawBox( x0, 400 - amp, x1, 400 ); } - CNFGDialogColor = 0xf0f000FF; - // CNFGColor(0xf0f000FF); - // Draw the note peaks for ( int peak = 0; peak < note_peaks; peak++ ) @@ -495,20 +498,23 @@ int main( int argc, char **argv ) if ( nf->note_amplitudes_out[ peak ] < 0 ) continue; float note = (float)nf->note_positions[ peak ] / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); - //CNFGColor( CCtoHEX( note, 1.0, 1.0 ) ); const int x1 = ( (float)peak / note_peaks ) * screenx; const int x2 = ( (float)( peak + 1 ) / note_peaks ) * screenx; const int y1 = 480 - nf->note_amplitudes_out[ peak ] * 100; const int y2 = 480; + CNFGColor( LINE_COLOR ); CNFGDrawBox( x1, y1, x2, y2 ); CNFGPenX = ( (float)( peak + .4 ) / note_peaks ) * screenx; CNFGPenY = screeny - 30; sprintf( stt, "%d\n%0.0f", nf->enduring_note_id[ peak ], nf->note_amplitudes2[ peak ] * 1000.0 ); + + CNFGColor( TEXT_COLOR ); CNFGDrawText( stt, 2 ); } + CNFGColor( LINE_COLOR ); // Let's draw the o-scope. int thissoundhead = soundhead; thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; @@ -530,8 +536,7 @@ int main( int argc, char **argv ) { // Draw the histogram float lasthistval; - CNFGColor( 0xffffff ); - + CNFGColor( LINE_COLOR ); for ( int x_val = -1; x_val < screenx; x_val++ ) { // Calculate the value of the histogram at the current screen position @@ -545,8 +550,7 @@ int main( int argc, char **argv ) lasthistval = thishistval; } - CNFGColor( 0xffffff ); - + CNFGColor( LINE_COLOR ); // Draw the bins for ( int bin = 0; bin < freqs; bin++ ) { @@ -555,12 +559,10 @@ int main( int argc, char **argv ) float amp = nf->outbins[ bin ] * 250.0; float note = (float)bin / freqbins; CNFGDialogColor = CCtoHEX( note, 1.0, 1.0 ); - //CNFGColor( CCtoHEX( note, 1.0, 1.0 ) ); CNFGDrawBox( x0, 0, x1, amp ); } - CNFGDialogColor = 0x0f0f0fff; - //CNFGColor(0xf0f000FF); + CNFGColor( TEXT_COLOR ); char stdebug[ 1024 ]; sprintf( stdebug, "DFT:%8.2fms\nFLT:%8.2f\nDEC:%8.2f\nFNL:%8.2f\nDPY:%8.2f", ( nf->DFTTime - nf->StartTime ) * 1000, ( nf->FilterTime - nf->DFTTime ) * 1000, @@ -574,30 +576,30 @@ int main( int argc, char **argv ) if ( !is_suspended ) { - CNFGColor( show_debug ? 0xffffff : 0x000000 ); + CNFGColor( show_debug ? ENABLED_COLOR : DISABLED_COLOR ); CNFGPenX = 0; CNFGPenY = screeny - 10; CNFGDrawText( "Extra Debug (D)", 2 ); - CNFGColor( show_debug_basic ? 0xffffff : 0x000000 ); + CNFGColor( show_debug_basic ? ENABLED_COLOR : DISABLED_COLOR ); CNFGPenX = 120; CNFGPenY = screeny - 10; CNFGDrawText( "Basic Debug (E)", 2 ); - CNFGColor( show_debug_basic ? 0xffffff : 0x000000 ); + CNFGColor( show_debug_basic ? ENABLED_COLOR : DISABLED_COLOR ); CNFGPenX = 240; CNFGPenY = screeny - 10; sprintf( stt, "[9] Key: %d [0] (%3.1f) [-]", gKey, nf->base_hz ); CNFGDrawText( stt, 2 ); - CNFGColor( 0xffffff ); + CNFGColor( TEXT_COLOR ); CNFGPenX = 440; CNFGPenY = screeny - 10; sprintf( stt, "FPS: %d", lastfps ); CNFGDrawText( stt, 2 ); #ifdef ANDROID - CNFGColor( 0xffffff ); + CNFGColor( TEXT_COLOR ); CNFGPenX = 10; CNFGPenY = 600; CNFGDrawText( genlog, 3 ); From 2feb2e94324c53fd5cd01c26bcbce7db57dddd9d Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Sat, 5 Jun 2021 00:12:57 -0400 Subject: [PATCH 132/162] Bump rawdraw version --- colorchord2/rawdraw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/rawdraw b/colorchord2/rawdraw index 407da6d..9165804 160000 --- a/colorchord2/rawdraw +++ b/colorchord2/rawdraw @@ -1 +1 @@ -Subproject commit 407da6d1e7a11e68565c4f8cb35dfc330167e30b +Subproject commit 9165804ebf9bf61a8f3ba0152a5b918daee9240c From 0fa56bb434db5ebf448a741cf735cbd7c57b504c Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Mon, 7 Jun 2021 20:18:26 -0400 Subject: [PATCH 133/162] Bump rawdraw version --- colorchord2/rawdraw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/rawdraw b/colorchord2/rawdraw index 9165804..0f29047 160000 --- a/colorchord2/rawdraw +++ b/colorchord2/rawdraw @@ -1 +1 @@ -Subproject commit 9165804ebf9bf61a8f3ba0152a5b918daee9240c +Subproject commit 0f29047f6bfe287cf032e3ef845939f5d796a70e From da7190f0fab5ee2c2db1f4dc1a7eeb3b8ccacd6e Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Mon, 7 Jun 2021 20:39:35 -0400 Subject: [PATCH 134/162] Make default to compile with openGL support --- colorchord2/windows/compile-clang.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index ca9c46a..a669412 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,7 +1,7 @@ @echo off set CC="C:\Program Files\LLVM\bin\clang.exe" rem To enable OpenGL rendering use the -DCNFGOGL option -set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS +set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -DCNFGOGL set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O2 set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt -lopengl32 set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ From c800b70640a84928a9c8d87c47f4f01996fa7e6b Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Mon, 7 Jun 2021 20:42:36 -0400 Subject: [PATCH 135/162] Update colorchord binary --- colorchord2/colorchord.exe | Bin 238592 -> 847872 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/colorchord2/colorchord.exe b/colorchord2/colorchord.exe index 47fcdc4b58189aa45ae0a68d35bafb365b0b8f1f..aa189bee1eb8306cd5169c6f3c7426925629a2bf 100644 GIT binary patch literal 847872 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

_+Fvp_~EpYq{%y}{oKx(^iOx9$@@-J%8{8E)Q6 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 literal 238592 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 Date: Fri, 5 Nov 2021 23:26:14 +0300 Subject: [PATCH 136/162] Add files via upload --- colorchord2/DisplayArray.c | 4 ++-- colorchord2/DisplayOUTDriver.c | 6 +++--- colorchord2/DisplayPie.c | 4 ++-- colorchord2/DisplayRadialPoles.c | 6 +++--- colorchord2/OutputCells.c | 6 +++--- colorchord2/OutputLinear.c | 6 +++--- colorchord2/OutputProminent.c | 14 ++++++-------- colorchord2/OutputVoronoi.c | 6 +++--- 8 files changed, 25 insertions(+), 27 deletions(-) diff --git a/colorchord2/DisplayArray.c b/colorchord2/DisplayArray.c index 2eed784..de1d25a 100644 --- a/colorchord2/DisplayArray.c +++ b/colorchord2/DisplayArray.c @@ -54,7 +54,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) { index = x+y*d->xn; } - CNFGColor( OutLEDs[index*3+0] | (OutLEDs[index*3+1] <<8)|(OutLEDs[index*3+2] <<16) ); + CNFGColor( (OutLEDs[index*3+0] <<24) | (OutLEDs[index*3+1] <<16) | (OutLEDs[index*3+2] <<8) | 0xff ); float dx = (x) * cw; float dy = (y) * ch; @@ -63,7 +63,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) else CNFGTackRectangle( dx, dy, dx+cw+.5, dy+ch+.5 ); } - CNFGColor( 0xffffff ); + CNFGColor( 0xffffffff ); } static void DPOParams(void * id ) diff --git a/colorchord2/DisplayOUTDriver.c b/colorchord2/DisplayOUTDriver.c index aa17c04..9e01890 100644 --- a/colorchord2/DisplayOUTDriver.c +++ b/colorchord2/DisplayOUTDriver.c @@ -130,9 +130,9 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) if( sat > 1 ) sat = 1; uint32_t color = CCtoHEX( nf->note_positions[i] / nf->freqbins, 1.0, sat ); - OutLEDs[led*3+0] = color & 0xff; - OutLEDs[led*3+1] = ( color >> 8 ) & 0xff; - OutLEDs[led*3+2] = ( color >> 16 ) & 0xff; + OutLEDs[led*3+0] = ( color >> 24 ) & 0xff; + OutLEDs[led*3+1] = ( color >> 16 ) & 0xff; + OutLEDs[led*3+2] = ( color >> 8 ) & 0xff; led++; } diff --git a/colorchord2/DisplayPie.c b/colorchord2/DisplayPie.c index 723a986..e1d97fc 100644 --- a/colorchord2/DisplayPie.c +++ b/colorchord2/DisplayPie.c @@ -53,13 +53,13 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) pts[5].x = cw + cos(angB) * sizeA; pts[5].y = ch + sin(angB) * sizeA; - CNFGColor( OutLEDs[i*3+0] | (OutLEDs[i*3+1] <<8)|(OutLEDs[i*3+2] <<16) ); + CNFGColor( ( OutLEDs[i*3+0] <<24) | (OutLEDs[i*3+1] <<16) | (OutLEDs[i*3+2] <<8) | 0xff ); CNFGTackPoly( pts, 3 ); CNFGTackPoly( pts+3, 3 ); } - CNFGColor( 0xffffff ); + CNFGColor( 0xffffffff ); } static void DPOParams(void * id ) diff --git a/colorchord2/DisplayRadialPoles.c b/colorchord2/DisplayRadialPoles.c index d61bf5a..4765c99 100644 --- a/colorchord2/DisplayRadialPoles.c +++ b/colorchord2/DisplayRadialPoles.c @@ -65,7 +65,7 @@ static void DPRUpdate(void * id, struct NoteFinder*nf) CNFGTackPoly( pts+3, 3 ); - CNFGColor( 0x00000000 ); + CNFGColor( 0x000000ff ); CNFGTackSegment( p1x, p1y, p2x, p2y); CNFGTackSegment( p2x, p2y, p4x, p4y); CNFGTackSegment( p3x, p3y, p1x, p1y); @@ -114,7 +114,7 @@ static void DPRUpdate(void * id, struct NoteFinder*nf) CNFGTackPoly( pts, 3 ); CNFGTackPoly( pts+3, 3 ); - CNFGColor( 0x00000000 ); + CNFGColor( 0x000000ff ); CNFGTackSegment( p1x, p1y, p2x, p2y); CNFGTackSegment( p2x, p2y, p4x, p4y); CNFGTackSegment( p3x, p3y, p1x, p1y); @@ -124,7 +124,7 @@ static void DPRUpdate(void * id, struct NoteFinder*nf) - CNFGColor( 0xffffff ); + CNFGColor( 0xffffffff ); } static void DPRParams(void * id ) diff --git a/colorchord2/OutputCells.c b/colorchord2/OutputCells.c index b1abd4a..67fc0ba 100644 --- a/colorchord2/OutputCells.c +++ b/colorchord2/OutputCells.c @@ -187,9 +187,9 @@ static void LEDUpdate(void * id, struct NoteFinder*nf) if( sendsat > 1 ) sendsat = 1; int r = CCtoHEX( binpos[ia], 1.0, pow( sendsat, led->outgamma ) ); - OutLEDs[i*3+0] = r & 0xff; - OutLEDs[i*3+1] = (r>>8) & 0xff; - OutLEDs[i*3+2] = (r>>16) & 0xff; + OutLEDs[i*3+0] = (r>>24) & 0xff; + OutLEDs[i*3+1] = (r>>16) & 0xff; + OutLEDs[i*3+2] = (r>>8) & 0xff; } } diff --git a/colorchord2/OutputLinear.c b/colorchord2/OutputLinear.c index 2a75db8..e0d78f3 100644 --- a/colorchord2/OutputLinear.c +++ b/colorchord2/OutputLinear.c @@ -180,9 +180,9 @@ static void LEDUpdate(void * id, struct NoteFinder*nf) int r = CCtoHEX( led->last_led_pos[i], 1.0, pow( sendsat, led->outgamma ) ); - OutLEDs[i*3+0] = r & 0xff; - OutLEDs[i*3+1] = (r>>8) & 0xff; - OutLEDs[i*3+2] = (r>>16) & 0xff; + OutLEDs[i*3+0] = (r>>24) & 0xff; + OutLEDs[i*3+1] = (r>>16) & 0xff; + OutLEDs[i*3+2] = (r>>8) & 0xff; } if( led->is_loop ) diff --git a/colorchord2/OutputProminent.c b/colorchord2/OutputProminent.c index c9f1792..b67c7dc 100644 --- a/colorchord2/OutputProminent.c +++ b/colorchord2/OutputProminent.c @@ -43,18 +43,16 @@ static void LEDUpdate(void * id, struct NoteFinder*nf) } } - + float sendsat = selected_amp; + if( sendsat > 1 ) sendsat = 1; + int r = CCtoHEX( selected_note, 1.0, sendsat ); //Advance the LEDs to this position when outputting the values. for( i = 0; i < led->total_leds; i++ ) { - float sendsat = selected_amp; - if( sendsat > 1 ) sendsat = 1; - int r = CCtoHEX( selected_note, 1.0, sendsat ); - - OutLEDs[i*3+0] = r & 0xff; - OutLEDs[i*3+1] = (r>>8) & 0xff; - OutLEDs[i*3+2] = (r>>16) & 0xff; + OutLEDs[i*3+0] = (r>>24) & 0xff; + OutLEDs[i*3+1] = (r>>16) & 0xff; + OutLEDs[i*3+2] = (r>>8) & 0xff; } } diff --git a/colorchord2/OutputVoronoi.c b/colorchord2/OutputVoronoi.c index 0940703..9745781 100644 --- a/colorchord2/OutputVoronoi.c +++ b/colorchord2/OutputVoronoi.c @@ -131,9 +131,9 @@ static void DPOUpdate(void * id, struct NoteFinder*nf) color = CCtoHEX( note_color, 1.0, pow( sat, d->outgamma ) ); } - OutLEDs[led*3+0] = color & 0xff; - OutLEDs[led*3+1] = ( color >> 8 ) & 0xff; - OutLEDs[led*3+2] = ( color >> 16 ) & 0xff; + OutLEDs[led*3+0] = ( color >> 24 ) & 0xff; + OutLEDs[led*3+1] = ( color >> 16 ) & 0xff; + OutLEDs[led*3+2] = ( color >> 8 ) & 0xff; led++; } } From 0a44c600243636ef8fbaf11c728c49412e8ad8d4 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 11 Nov 2021 20:17:28 -0500 Subject: [PATCH 137/162] Update README.md Fix path in Windows compile instructions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 35636b5..ea45090 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ There are 3 options available for building on Windows, clang, or TCC, MSYS2. ### clang Start by [downloading](https://clang.llvm.org/) the clang compiler, and installing it. -Edit the batch script at `colorchord1/windows/compile-clang.bat`: +Edit the batch script at `colorchord2/windows/compile-clang.bat`: - Verify that the executable location is correct, on line 0 (`CC`). If you have the Windows SDK installed, you should not need to do any additional work. From 6dd569540385ba9ea814a5d534404a41987aed84 Mon Sep 17 00:00:00 2001 From: Eugene8388608 Date: Wed, 24 Nov 2021 00:29:42 +0300 Subject: [PATCH 138/162] Add files via upload --- colorchord2/main.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index ec7a997..af1244f 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -516,18 +516,15 @@ int main( int argc, char **argv ) CNFGColor( LINE_COLOR ); // Let's draw the o-scope. - int thissoundhead = soundhead; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - int lasty = sound[ thissoundhead ] * 128 + 128; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - int thisy = sound[ thissoundhead ] * 128 + 128; - thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; - for ( int i = 0; i < screenx; i++ ) + int thissoundhead = ( soundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + int lasty; + int thisy = sound[ thissoundhead ] * -128 + 128; + for ( int i = screenx - 1; i > 0; i-- ) { - CNFGTackSegment( i, lasty, i + 1, thisy ); lasty = thisy; - thisy = sound[ thissoundhead ] * 128 + 128; + thisy = sound[ thissoundhead ] * -128 + 128; thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + CNFGTackSegment( i, lasty, i - 1, thisy ); } } From ce4325850553eef080be7ede373a4faef7c6a87f Mon Sep 17 00:00:00 2001 From: Eugene8388608 Date: Wed, 24 Nov 2021 00:53:59 +0300 Subject: [PATCH 139/162] Add files via upload --- colorchord2/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index af1244f..9c23423 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -516,14 +516,14 @@ int main( int argc, char **argv ) CNFGColor( LINE_COLOR ); // Let's draw the o-scope. - int thissoundhead = ( soundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; int lasty; + int thissoundhead = ( soundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; int thisy = sound[ thissoundhead ] * -128 + 128; for ( int i = screenx - 1; i > 0; i-- ) { lasty = thisy; - thisy = sound[ thissoundhead ] * -128 + 128; thissoundhead = ( thissoundhead - 1 + SOUNDCBSIZE ) % SOUNDCBSIZE; + thisy = sound[ thissoundhead ] * -128 + 128; CNFGTackSegment( i, lasty, i - 1, thisy ); } } From 0883886fa2bdafb3e106e625d454737bc938d127 Mon Sep 17 00:00:00 2001 From: Eugene8388608 Date: Sun, 12 Dec 2021 02:24:35 +0300 Subject: [PATCH 140/162] Add files via upload --- colorchord2/DisplayRadialPoles.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/DisplayRadialPoles.c b/colorchord2/DisplayRadialPoles.c index 4765c99..1cb1a6d 100644 --- a/colorchord2/DisplayRadialPoles.c +++ b/colorchord2/DisplayRadialPoles.c @@ -52,7 +52,7 @@ static void DPRUpdate(void * id, struct NoteFinder*nf) float p4x = extentx - orthox; float p4y = extenty - orthoy; - CNFGColor( CCtoHEX( pole / (float)freqbins, 1.0, 1.0 ) ); + CNFGColor( CCtoHEX( (float)pole / (float)freqbins, 1.0, 1.0 ) ); RDPoint pts[6] = { { p1x, p1y }, { p2x, p2y }, @@ -102,7 +102,7 @@ static void DPRUpdate(void * id, struct NoteFinder*nf) float p4x = cx + cos( angleN ) * (d->radialscale * binvalN + d->centeroffset); float p4y = cy + sin( angleN ) * (d->radialscale * binvalN + d->centeroffset); - CNFGColor( CCtoHEX( pole / (float)freqbins, 1.0, 1.0 ) ); + CNFGColor( CCtoHEX( (float)pole / (float)freqbins, 1.0, 1.0 ) ); RDPoint pts[6] = { { p1x, p1y }, { p2x, p2y }, From b349438aa7c58d4ccaa8edbfa217ab2f4f17463e Mon Sep 17 00:00:00 2001 From: CNLohr Date: Tue, 6 Sep 2022 21:16:01 -0700 Subject: [PATCH 141/162] Update LICENSE --- LICENSE | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 242bf4e..19a997e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,14 @@ -Copyright (c) 2015, Charles Lohr (CNLohr) +Copyright (c) 2012-2022, Charles Lohr (CNLohr), et. al. + +This license covers the core of ColorChord, but not the ESP8266 or STM32 +embedded builds, for them, they have a separate license. + +All major contributors have agreed to allowing ColorChord to be distributed +in either CC0, MIT-x11 or NewBSD license terms as of September, 2022. +Depending on the user's preferences and needs. You may feel free to copy +and use ColorChord in your project under ther terms listed below (NewBSD +license) or any of the afore-mentioned licenses. + All rights reserved. Redistribution and use in source and binary forms, with or without From 66a577ef82970ac5cbf4139760d7827d9121f6f7 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 21 Oct 2022 22:51:41 -0400 Subject: [PATCH 142/162] Edit default configurations - Better documentation of settings - Default settings work on Windows and Linux - Move all configurations other than default to example_configs directory - Modify main.c to handle config updates --- colorchord2/default.conf | 110 ++++++++---------- .../{ => example_configs}/cells_output.conf | 2 - colorchord2/{ => example_configs}/dmx.conf | 0 .../{ => example_configs}/dodecahedron.conf | 6 - .../{ => example_configs}/double_pie.conf | 2 - .../double_pie_voice.conf | 6 - .../{ => example_configs}/esp32shirt.conf | 4 - colorchord2/{ => example_configs}/hidapi.conf | 3 - .../{ => example_configs}/impulse.conf | 3 - colorchord2/example_configs/integerprog.conf | 4 + .../keyboard_rgb_test.conf | 13 --- .../{ => example_configs}/linearpie.conf | 0 .../netlight-dmx-voronoi.conf | 6 - .../{ => example_configs}/netlight-dmx.conf | 6 - .../netlight-irxmit.conf | 3 - .../{ => example_configs}/netlight.conf | 3 - .../netlight_esp8266.conf | 5 - .../{ => example_configs}/prominance.conf | 1 - .../{ => example_configs}/quickwash.conf | 3 - colorchord2/example_configs/radial.conf | 100 ++++++++++++++++ .../{ => example_configs}/recordtest.conf | 0 .../{ => example_configs}/shmtest.conf | 13 --- colorchord2/{ => example_configs}/usb.conf | 0 .../{ => example_configs}/usb_line.conf | 3 - colorchord2/{ => example_configs}/wled.conf | 3 +- colorchord2/integerprog.conf | 5 - colorchord2/main.c | 26 ++++- colorchord2/radial.conf | 37 ------ 28 files changed, 176 insertions(+), 191 deletions(-) rename colorchord2/{ => example_configs}/cells_output.conf (89%) rename colorchord2/{ => example_configs}/dmx.conf (100%) rename colorchord2/{ => example_configs}/dodecahedron.conf (67%) rename colorchord2/{ => example_configs}/double_pie.conf (88%) rename colorchord2/{ => example_configs}/double_pie_voice.conf (85%) rename colorchord2/{ => example_configs}/esp32shirt.conf (77%) rename colorchord2/{ => example_configs}/hidapi.conf (87%) rename colorchord2/{ => example_configs}/impulse.conf (84%) create mode 100644 colorchord2/example_configs/integerprog.conf rename colorchord2/{ => example_configs}/keyboard_rgb_test.conf (70%) rename colorchord2/{ => example_configs}/linearpie.conf (100%) rename colorchord2/{ => example_configs}/netlight-dmx-voronoi.conf (74%) rename colorchord2/{ => example_configs}/netlight-dmx.conf (72%) rename colorchord2/{ => example_configs}/netlight-irxmit.conf (83%) rename colorchord2/{ => example_configs}/netlight.conf (75%) rename colorchord2/{ => example_configs}/netlight_esp8266.conf (73%) rename colorchord2/{ => example_configs}/prominance.conf (99%) rename colorchord2/{ => example_configs}/quickwash.conf (83%) create mode 100644 colorchord2/example_configs/radial.conf rename colorchord2/{ => example_configs}/recordtest.conf (100%) rename colorchord2/{ => example_configs}/shmtest.conf (60%) rename colorchord2/{ => example_configs}/usb.conf (100%) rename colorchord2/{ => example_configs}/usb_line.conf (73%) rename colorchord2/{ => example_configs}/wled.conf (91%) delete mode 100644 colorchord2/integerprog.conf delete mode 100644 colorchord2/radial.conf diff --git a/colorchord2/default.conf b/colorchord2/default.conf index d4f3765..38b9d08 100644 --- a/colorchord2/default.conf +++ b/colorchord2/default.conf @@ -8,76 +8,79 @@ cpu_autolimit = 1 #General GUI properties. -title = PA Test +title = ColorChord Default Configuration (Vornoi) set_screenx = 720 set_screeny = 480 -#Sound properties. +####################################### +# ColorChord audio driver properties. # +####################################### + +# Colorchord now automatically picks most of the important audio driver settings automatically +# and will default to PULSE with ALSA as a fallback on Linux, +# On Windows it will default to WASAPI with winmm (WIN) as a fallback +# To force a specific driver use the "sound_source" property, the following values are valid +# sound_source: +# Linux: PULSE, ALSA +# Windows: WASAPI, WIN +# Android: ANDROID +# sound_source = + +# The "devplay" property sets the playback device for CNFA (what speakers to go to) most uses for +# colorchord don't use audio output so this can be almost universally ignored +# devplay = + +# The "devrecord" Sets the device to get audio from. This will default to monitoring your speaker +# output. For WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. +# For PulseAudio @DEFAULT_SOURCE@ selects the default input (typically a microphone) and +# @DEFAULT_MONITOR@ selects the default loopback device. +# devrecord = + +# For Linux you can use the following command to find valid devices to read from: +# pactl list | grep pci- | grep monitor + + +#-1 indicates left and right, 0 left, 1 right. +sample_channel = -1 + +# Other properties buffer = 384 play = 0 rec = 1 channels = 2 samplerate = 44100 -wininput = -1 - -#Compiled version will default to PULSE (or ALSA) on Linux, WASAPI (winmm) [or WIN for winmm] on Windows and ANDROID on Android -# sound_source = ALSA -# sound_source = WASAPI - -#-1 indicates left and right, 0 left, 1 right. -sample_channel = -1 -# Sets the playback device for CNFA (what speakers to go to) -devplay = default -# Sets the device to get audio from, for WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. -devrecord = defaultRender -# On linux for PulseAudio @DEFAULT_SOURCE@ selects the default input (typically a microphone) -# @DEFAULT_MONITOR@ selects the default loopback device -# devrecord = @DEFAULT_MONITOR@ - - -#Render - -# For Linux mostly use the following command to find valid devices to read from: -# pactl list | grep pci- | grep monitor -# alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -# alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -# alsa_output.pci-0000_00_1f.3.analog-stereo.monitor << New laptop ################################## # General ColorChord properties. # ################################## # How much to amplify the incoming signal. -amplify = 2.0 +amplify = 10 # What is the base note? I.e. the lowest note. # Note that it won't have very much impact until an octave up though! base_hz = 55 -# This is only used when dealing with the slow decompose (now defunct) -# decompose_iterations = 1000 -# default_sigma = 1.4000 - -# DFT properties for the DFT up top. +# DFT properties for the DFT when Extra Debug is being shown. dft_iir = 0.6 -dft_q = 20.0000 +dft_q = 60.0000 dft_speedup = 1000.0000 -octaves = 5 +octaves = 6 -# Should we use a progressive DFT? +# What DFT method should we use? # 0 = DFT Quick # 1 = DFT Progressive # 2 = DFT Progressive Integer # 3 = DFT Progressive Integer Skippy # 4 = Integer, 32-Bit, Progressive, Skippy. -do_progressive_dft = 4 - - -filter_iter = 2 -filter_strength = .5 +do_progressive_dft = 0 # How many bins per octave to use? -freqbins = 24 +freqbins = 64 + +# DFT Output IIR filter (Probably don't change these) +filter_iter = 2 +filter_strength = .5 # For the final note information... How much to slack everything? note_attach_amp_iir = 0.3500 @@ -91,31 +94,16 @@ note_jumpability = 1.8000 note_minimum_new_distribution_value = 0.0200 note_out_chop = 0.05000 -#compress_coefficient = 4.0 -#compress_exponent = .5 - - -#======================================================================= -#Outputs - +########################################## +# Colorchord Display and Output Settings # +########################################## # This is a vornoi thing: outdrivers = OutputVoronoi, DisplayArray -lightx = 64 -lighty = 32 +lightx = 128 +lighty = 64 fromsides = 1 shape_cutoff = 0.03 satamp = 5.000 amppow = 2.510 distpow = 1.500 - -#This is a linear or pie thing -# outdrivers = DisplayArray, OutputLinear -# outdrivers = DisplayPie, OutputLinear -leds = 64 -pie_min = 0.18 -pie_max = 0.3 - - - - diff --git a/colorchord2/cells_output.conf b/colorchord2/example_configs/cells_output.conf similarity index 89% rename from colorchord2/cells_output.conf rename to colorchord2/example_configs/cells_output.conf index ca6c5d5..1cca1c8 100644 --- a/colorchord2/cells_output.conf +++ b/colorchord2/example_configs/cells_output.conf @@ -21,8 +21,6 @@ amplify=.4 compress_coefficient = 4.0 compress_exponent = .5 -sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - fliprg = 1 skittlequantity = 24 timebased = 1 diff --git a/colorchord2/dmx.conf b/colorchord2/example_configs/dmx.conf similarity index 100% rename from colorchord2/dmx.conf rename to colorchord2/example_configs/dmx.conf diff --git a/colorchord2/dodecahedron.conf b/colorchord2/example_configs/dodecahedron.conf similarity index 67% rename from colorchord2/dodecahedron.conf rename to colorchord2/example_configs/dodecahedron.conf index ba955ea..abb219f 100644 --- a/colorchord2/dodecahedron.conf +++ b/colorchord2/example_configs/dodecahedron.conf @@ -8,13 +8,7 @@ led_floor = .1 #Turn to .25 for more uniformity, .1 for less. steady_bright = 0 rgby = 1 -sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -#sourcename = default - -#alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor skipfirst = 0 firstval = 0 port = 7777 diff --git a/colorchord2/double_pie.conf b/colorchord2/example_configs/double_pie.conf similarity index 88% rename from colorchord2/double_pie.conf rename to colorchord2/example_configs/double_pie.conf index ad9110e..e78448f 100644 --- a/colorchord2/double_pie.conf +++ b/colorchord2/example_configs/double_pie.conf @@ -21,8 +21,6 @@ amplify=.5 lightx = 20 lighty = 20 -sourcename = #alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - fliprg = 1 skittlequantity = 24 diff --git a/colorchord2/double_pie_voice.conf b/colorchord2/example_configs/double_pie_voice.conf similarity index 85% rename from colorchord2/double_pie_voice.conf rename to colorchord2/example_configs/double_pie_voice.conf index df7eb1c..87f65a5 100644 --- a/colorchord2/double_pie_voice.conf +++ b/colorchord2/example_configs/double_pie_voice.conf @@ -33,12 +33,6 @@ amplify=.35 lightx = 20 lighty = 20 -sourcename = -# alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - -#alsa_input.pci-0000_00_1f.3.analog-stereo -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - fliprg = 1 skittlequantity = 24 diff --git a/colorchord2/esp32shirt.conf b/colorchord2/example_configs/esp32shirt.conf similarity index 77% rename from colorchord2/esp32shirt.conf rename to colorchord2/example_configs/esp32shirt.conf index dd6001c..9d155f8 100644 --- a/colorchord2/esp32shirt.conf +++ b/colorchord2/example_configs/esp32shirt.conf @@ -13,10 +13,6 @@ steady_bright = 0 #dft_q = 20.0000 #dft_speedup = 1000.0000 -sourcename = default -# alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor skipfirst = 0 firstval = 0 port = 7000 diff --git a/colorchord2/hidapi.conf b/colorchord2/example_configs/hidapi.conf similarity index 87% rename from colorchord2/hidapi.conf rename to colorchord2/example_configs/hidapi.conf index f4155e3..5a8e4a2 100644 --- a/colorchord2/hidapi.conf +++ b/colorchord2/example_configs/hidapi.conf @@ -16,9 +16,6 @@ lighty=1 ledoutamp = 1 -sourcename = alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor - - bank1_size = 40 bank1_id = 8 bank2_size = 27 diff --git a/colorchord2/impulse.conf b/colorchord2/example_configs/impulse.conf similarity index 84% rename from colorchord2/impulse.conf rename to colorchord2/example_configs/impulse.conf index a6d989b..f65849e 100644 --- a/colorchord2/impulse.conf +++ b/colorchord2/example_configs/impulse.conf @@ -15,9 +15,6 @@ light_siding = 1.9 samplerate = 11025 buffer = 64 -#sourcename = default -sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - #default do_write_method = 2 amplify = 2.5 diff --git a/colorchord2/example_configs/integerprog.conf b/colorchord2/example_configs/integerprog.conf new file mode 100644 index 0000000..cf92cb7 --- /dev/null +++ b/colorchord2/example_configs/integerprog.conf @@ -0,0 +1,4 @@ +do_progressive_dft = 3 +samplerate = 8000 +buffer = 64 + diff --git a/colorchord2/keyboard_rgb_test.conf b/colorchord2/example_configs/keyboard_rgb_test.conf similarity index 70% rename from colorchord2/keyboard_rgb_test.conf rename to colorchord2/example_configs/keyboard_rgb_test.conf index 4d48d5d..b56a65a 100644 --- a/colorchord2/keyboard_rgb_test.conf +++ b/colorchord2/example_configs/keyboard_rgb_test.conf @@ -15,19 +15,6 @@ set_screeny = 480 in_amplitude = 1.0 sample_channel = -1 -sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -#bluez_sink.40_EF_4C_CA_A4_5D.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -## alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2.monitor (On desktop) - - -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -#default -# alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor << New laptop -#use pactl list | grep pci- | grep monitor - #How many bins a note can jump from frame to frame to be considered a slide. #this is used to prevent notes from popping in and out a lot. diff --git a/colorchord2/linearpie.conf b/colorchord2/example_configs/linearpie.conf similarity index 100% rename from colorchord2/linearpie.conf rename to colorchord2/example_configs/linearpie.conf diff --git a/colorchord2/netlight-dmx-voronoi.conf b/colorchord2/example_configs/netlight-dmx-voronoi.conf similarity index 74% rename from colorchord2/netlight-dmx-voronoi.conf rename to colorchord2/example_configs/netlight-dmx-voronoi.conf index 07467bf..415a37e 100644 --- a/colorchord2/netlight-dmx-voronoi.conf +++ b/colorchord2/example_configs/netlight-dmx-voronoi.conf @@ -32,12 +32,6 @@ steady_bright = 0 #dft_q = 20.0000 #dft_speedup = 1000.0000 -sourcename = alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_0a_00.1.hdmi-stereo.monitor -#alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - skipfirst = 3 firstval = 0 flipgb = 1 diff --git a/colorchord2/netlight-dmx.conf b/colorchord2/example_configs/netlight-dmx.conf similarity index 72% rename from colorchord2/netlight-dmx.conf rename to colorchord2/example_configs/netlight-dmx.conf index e29e3fb..5115fbd 100644 --- a/colorchord2/netlight-dmx.conf +++ b/colorchord2/example_configs/netlight-dmx.conf @@ -26,12 +26,6 @@ steady_bright = 0 #dft_q = 20.0000 #dft_speedup = 1000.0000 -sourcename = alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_0a_00.1.hdmi-stereo.monitor -#alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - skipfirst = 3 firstval = 0 flipgb = 1 diff --git a/colorchord2/netlight-irxmit.conf b/colorchord2/example_configs/netlight-irxmit.conf similarity index 83% rename from colorchord2/netlight-irxmit.conf rename to colorchord2/example_configs/netlight-irxmit.conf index 78fdadd..1a74711 100644 --- a/colorchord2/netlight-irxmit.conf +++ b/colorchord2/example_configs/netlight-irxmit.conf @@ -13,9 +13,6 @@ steady_bright = 0 #dft_q = 20.0000 #dft_speedup = 1000.0000 -sourcename = -#alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -# home: alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor skipfirst = 1 firstval = 0 port = 7777 diff --git a/colorchord2/netlight.conf b/colorchord2/example_configs/netlight.conf similarity index 75% rename from colorchord2/netlight.conf rename to colorchord2/example_configs/netlight.conf index edc1ce1..4191a50 100644 --- a/colorchord2/netlight.conf +++ b/colorchord2/example_configs/netlight.conf @@ -12,9 +12,6 @@ steady_bright = 0 #dft_q = 20.0000 #dft_speedup = 1000.0000 -sourcename = alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor skipfirst = 1 firstval = 0 port = 7777 diff --git a/colorchord2/netlight_esp8266.conf b/colorchord2/example_configs/netlight_esp8266.conf similarity index 73% rename from colorchord2/netlight_esp8266.conf rename to colorchord2/example_configs/netlight_esp8266.conf index e48f8eb..915b9f8 100644 --- a/colorchord2/netlight_esp8266.conf +++ b/colorchord2/example_configs/netlight_esp8266.conf @@ -12,11 +12,6 @@ steady_bright = 0 #dft_q = 20.0000 #dft_speedup = 1000.0000 - -sourcename = alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#sourcename = alsa_output.pci-0000_00_1b.0.analog-stereo.monitor - -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor skipfirst = 1 firstval = 1 port = 7777 diff --git a/colorchord2/prominance.conf b/colorchord2/example_configs/prominance.conf similarity index 99% rename from colorchord2/prominance.conf rename to colorchord2/example_configs/prominance.conf index 69383e0..43bddbd 100644 --- a/colorchord2/prominance.conf +++ b/colorchord2/example_configs/prominance.conf @@ -7,7 +7,6 @@ lightx = 2 lighty = 1 light_siding = 1.6 - note_attach_amp_iir = .3000 note_attach_amp_iir2 = .1500 note_attach_freq_iir = 0.3000 diff --git a/colorchord2/quickwash.conf b/colorchord2/example_configs/quickwash.conf similarity index 83% rename from colorchord2/quickwash.conf rename to colorchord2/example_configs/quickwash.conf index e83d38f..58b9196 100644 --- a/colorchord2/quickwash.conf +++ b/colorchord2/example_configs/quickwash.conf @@ -13,9 +13,6 @@ distpow = 1.500 samplerate = 11025 buffer = 64 -sourcename = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - #default - amplify = 2.5 note_attach_amp_iir = 0.9000 note_attach_amp_iir2 = 0.550 diff --git a/colorchord2/example_configs/radial.conf b/colorchord2/example_configs/radial.conf new file mode 100644 index 0000000..a01326e --- /dev/null +++ b/colorchord2/example_configs/radial.conf @@ -0,0 +1,100 @@ +# This is the configuration file for colorchord. +# Most values are already defaulted in the software. +# This file is constantly checked for new versions. +# \r, and ; are used as terminators, so you can put +# multiple entries on the same line. + +#Whether to limit the control loop to ~60ish FPS. +cpu_autolimit = 1 + +#General GUI properties. +title = ColorChord RadialPole Output +set_screenx = 480 +set_screeny = 480 + +#Sound properties. +buffer = 1024 +play = 0 +rec = 1 +channels = 2 +samplerate = 44100 + +####################################### +# ColorChord audio driver properties. # +####################################### + +# Colorchord now automatically picks most of the important audio driver settings automatically +# and will default to PULSE with ALSA as a fallback on Linux, +# On Windows it will default to WASAPI with winmm (WIN) as a fallback +# To force a specific driver use the "sound_source" property, the following values are valid +# sound_source: +# Linux: PULSE, ALSA +# Windows: WASAPI, WIN +# Android: ANDROID +# sound_source = + +# The "devplay" property sets the playback device for CNFA (what speakers to go to) most uses for +# colorchord don't use audio output so this can be almost universally ignored +# devplay = + +# The "devrecord" Sets the device to get audio from. This will default to monitoring your speaker +# output. For WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. +# For PulseAudio @DEFAULT_SOURCE@ selects the default input (typically a microphone) and +# @DEFAULT_MONITOR@ selects the default loopback device. +# devrecord = + +#-1 indicates left and right, 0 left, 1 right. +sample_channel = -1 + +################################## +# General ColorChord properties. # +################################## + +# How much to amplify the incoming signal. +amplify = 2 +#amplify = 10 + +# What is the base note? I.e. the lowest note. +# Note that it won't have very much impact until an octave up though! +base_hz = 55 + +# DFT properties for the DFT up top. +dft_iir = 0.6 +dft_q = 60.0000 +dft_speedup = 1000.0000 +octaves = 6 + +# Should we use a progressive DFT? +# 0 = DFT Quick +# 1 = DFT Progressive +# 2 = DFT Progressive Integer +# 3 = DFT Progressive Integer Skippy +# 4 = Integer, 32-Bit, Progressive, Skippy. +do_progressive_dft = 0 + +filter_iter = 2 +filter_strength = .5 + +# How many bins per octave to use? +freqbins = 64 + +# For the final note information... How much to slack everything? +note_attach_amp_iir = 0.3500 +note_attach_amp_iir2 = 0.250 +note_attach_freq_iir = 0.3000 + +#How many bins a note can jump from frame to frame to be considered a slide. +#this is used to prevent notes from popping in and out a lot. +note_combine_distance = 0.5000 +note_jumpability = 1.8000 +note_minimum_new_distribution_value = 0.0200 +note_out_chop = 0.05000 + +########################################## +# Colorchord Display and Output Settings # +########################################## + +# RadialPole Output driver +outdrivers = DisplayRadialPoles +radialscale = 2000 +radialmode = 1 diff --git a/colorchord2/recordtest.conf b/colorchord2/example_configs/recordtest.conf similarity index 100% rename from colorchord2/recordtest.conf rename to colorchord2/example_configs/recordtest.conf diff --git a/colorchord2/shmtest.conf b/colorchord2/example_configs/shmtest.conf similarity index 60% rename from colorchord2/shmtest.conf rename to colorchord2/example_configs/shmtest.conf index 6d1fe59..86fd611 100644 --- a/colorchord2/shmtest.conf +++ b/colorchord2/example_configs/shmtest.conf @@ -8,19 +8,6 @@ set_screeny = 480 in_amplitude = 3.0 sample_channel = -1 -devrecord = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -#sourcename = bluez_sink.40_EF_4C_CA_A4_5D.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -## alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -# alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2.monitor (On desktop) - - -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -#default -# alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor << New laptop -#use pactl list | grep pci- | grep monitor - #How many bins a note can jump from frame to frame to be considered a slide. #this is used to prevent notes from popping in and out a lot. diff --git a/colorchord2/usb.conf b/colorchord2/example_configs/usb.conf similarity index 100% rename from colorchord2/usb.conf rename to colorchord2/example_configs/usb.conf diff --git a/colorchord2/usb_line.conf b/colorchord2/example_configs/usb_line.conf similarity index 73% rename from colorchord2/usb_line.conf rename to colorchord2/example_configs/usb_line.conf index 603a3a5..5a3c122 100644 --- a/colorchord2/usb_line.conf +++ b/colorchord2/example_configs/usb_line.conf @@ -9,9 +9,6 @@ amppow = 3.5 distpow = 1.500 ledoutamp = 1 -sourcename = alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor -#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - note_attach_amp_iir = .3000 note_attach_amp_iir2 = .1500 note_attach_freq_iir = 0.3000 diff --git a/colorchord2/wled.conf b/colorchord2/example_configs/wled.conf similarity index 91% rename from colorchord2/wled.conf rename to colorchord2/example_configs/wled.conf index b7a5d81..5ae6e65 100644 --- a/colorchord2/wled.conf +++ b/colorchord2/example_configs/wled.conf @@ -9,13 +9,12 @@ satamp = 1.600 is_loop=0 led_floor = .18 steady_bright = 0 -devplay = default fliprg=0 slope=.5 amplify=1 base_hz = 51.5000 -#WLED Integration stuff +# WLED Integration stuff wled_realtime=1 #Enable WLED Interfacing params port = 19446 #Default port for UDP Realtime address = 192.168.0.24 #WLED Node IP diff --git a/colorchord2/integerprog.conf b/colorchord2/integerprog.conf deleted file mode 100644 index 62f5ad6..0000000 --- a/colorchord2/integerprog.conf +++ /dev/null @@ -1,5 +0,0 @@ -do_progressive_dft = 3 -samplerate = 8000 -buffer = 64 -sourcename = alsa_output.pci-0000_00_1b.0.analog-stereo.monitor - diff --git a/colorchord2/main.c b/colorchord2/main.c index 9c23423..d4723c2 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -3,12 +3,17 @@ #if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ defined( _WIN32 ) || defined( _WIN64 ) #ifdef TCC -#include +#include #endif #ifndef strdup #define strdup _strdup #endif -#endif +// define convenient macro to detect windows +#define IS_WINDOWS 1 +#else +// this isn't windows +#define IS_WINDOWS 0 +#endif #include "color.h" #include "configs.h" @@ -313,7 +318,14 @@ void RegisterConstructorFunctions() REGISTERDisplayNetwork(); REGISTERDisplayOutDriver(); REGISTERDisplayPie(); - // REGISTERDisplaySHM(); + REGISTERDisplayRadialPoles(); + // block trying to load linux specific displays +#if not IS_WINDOWS + REGISTERDisplayDMX(); + REGISTERDisplayFileWrite(); + REGISTERDisplaySHM(); + REGISTERDisplayUSB2812(); +#endif // Output stuff // REGISTERDisplayUSB2812(); @@ -402,11 +414,17 @@ int main( int argc, char **argv ) do { +#if IS_WINDOWS + const char *record_dev_name = "defaultRender"; +#else + const char *record_dev_name = "@DEFAULT_MONITOR@"; +#endif // Initialize Sound sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), GetParameterI( "samplerate", 44100 ), GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), - GetParameterS( "devplay", 0 ), GetParameterS( "devrecord", 0 ), NULL ); + GetParameterS( "devplay", "default" ), GetParameterS( "devrecord", record_dev_name ), + NULL ); if ( sd ) break; diff --git a/colorchord2/radial.conf b/colorchord2/radial.conf deleted file mode 100644 index 1f698ec..0000000 --- a/colorchord2/radial.conf +++ /dev/null @@ -1,37 +0,0 @@ -# This is the configuration file for colorchord. -# Most values are already defaulted in the software. -# This file is constantly checked for new versions. -# \r, and ; are used as terminators, so you can put -# multiple entries on the same line. - -#Whether to limit the control loop to ~60ish FPS. -cpu_autolimit = 1 - -#General GUI properties. -title = PA Test -set_screenx = 1280 -set_screeny = 720 - -#Sound properties. -buffer = 384 -play = 0 -rec = 1 -channels = 2 -samplerate = 44100 -wininput = -1 - -#Compiled version will default to PULSE (or ALSA) on Linux, WASAPI (winmm) [or WIN for winmm] on Windows and ANDROID on Android -# sound_source = ALSA -# sound_source = WASAPI - -#-1 indicates left and right, 0 left, 1 right. -sample_channel = -1 -# Sets the playback device for CNFA (what speakers to go to) -devplay = default -# Sets the device to get audio from, for WASAPI, "default" searches for a mic, and "defaultRender" searches for your loopback. - -devrecord = alsa_output.pci-0000_00_1f.3.analog-stereo.monitor - -outdrivers = DisplayRadialPoles -radialscale = 3000 -radialmode = 1 From 744f65defbc8c675e102e2d7b39300a472e29fc2 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 21 Oct 2022 22:57:12 -0400 Subject: [PATCH 143/162] All files included in Windows build - Displays that only work on linux have a compile guard --- colorchord2/DisplayDMX.c | 8 ++++++-- colorchord2/DisplayFileWrite.c | 8 ++++++-- colorchord2/DisplaySHM.c | 8 ++++++-- colorchord2/DisplayUSB2812.c | 8 ++++++-- colorchord2/windows/compile-clang.bat | 10 ++++++---- colorchord2/windows/compile.bat | 5 +++-- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/colorchord2/DisplayDMX.c b/colorchord2/DisplayDMX.c index e2499bd..f287b16 100644 --- a/colorchord2/DisplayDMX.c +++ b/colorchord2/DisplayDMX.c @@ -1,5 +1,10 @@ //Copyright 2015 <>< Charles Lohr under the ColorChord License. +// only compile file if we are one a unix system +#if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ + defined( _WIN32 ) || defined( _WIN64 ) +#warning Windows does not support the DisplayDMX module +#else #include "outdrivers.h" #include "notefinder.h" #include @@ -123,5 +128,4 @@ static struct DriverInstances * DisplayDMX() } REGISTER_OUT_DRIVER(DisplayDMX); - - +#endif \ No newline at end of file diff --git a/colorchord2/DisplayFileWrite.c b/colorchord2/DisplayFileWrite.c index f90af8c..a72ea0c 100644 --- a/colorchord2/DisplayFileWrite.c +++ b/colorchord2/DisplayFileWrite.c @@ -1,5 +1,10 @@ //Copyright 2015 <>< Charles Lohr under the ColorChord License. +// only compile file if we are one a unix system +#if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ + defined( _WIN32 ) || defined( _WIN64 ) +#warning Windows does not support the DisplayFileWrite module +#else #include "outdrivers.h" #include "notefinder.h" #include @@ -116,5 +121,4 @@ static struct DriverInstances * DisplayFileWrite(const char * parameters) } REGISTER_OUT_DRIVER(DisplayFileWrite); - - +#endif diff --git a/colorchord2/DisplaySHM.c b/colorchord2/DisplaySHM.c index 2c80d14..6c7b912 100644 --- a/colorchord2/DisplaySHM.c +++ b/colorchord2/DisplaySHM.c @@ -1,5 +1,10 @@ //Copyright 2015 <>< Charles Lohr under the ColorChord License. +// only compile file if we are one a unix system +#if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ + defined( _WIN32 ) || defined( _WIN64 ) +#warning Windows does not support the DisplaySHM module +#else #include "outdrivers.h" #include "notefinder.h" #include @@ -117,5 +122,4 @@ static struct DriverInstances * DisplaySHM(const char * parameters) } REGISTER_OUT_DRIVER(DisplaySHM); - - +#endif diff --git a/colorchord2/DisplayUSB2812.c b/colorchord2/DisplayUSB2812.c index 2ada8c9..78be9bd 100644 --- a/colorchord2/DisplayUSB2812.c +++ b/colorchord2/DisplayUSB2812.c @@ -1,5 +1,10 @@ //Copyright 2015 <>< Charles Lohr under the ColorChord License. +// only compile file if we are one a unix system +#if defined( WINDOWS ) || defined( USE_WINDOWS ) || defined( WIN32 ) || defined( WIN64 ) || \ + defined( _WIN32 ) || defined( _WIN64 ) +#warning Windows does not support the DisplayUSB2812 module +#else #include "outdrivers.h" #include "notefinder.h" #include @@ -166,5 +171,4 @@ static struct DriverInstances * DisplayUSB2812() } REGISTER_OUT_DRIVER(DisplayUSB2812); - - +#endif diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index a669412..d3d7e04 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -4,10 +4,12 @@ rem To enable OpenGL rendering use the -DCNFGOGL option set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -DCNFGOGL set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O2 set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt -lopengl32 -set SOURCES=../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c ^ -../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ^ -../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../hook.c ../RecorderPlugin.c ^ -../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c ../hidapi.c ../DisplayHIDAPI.c +set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ +..\outdrivers.c ..\hidapi.c ..\hook.c ..\parameters.c ..\util.c ..\notefinder.c ^ +..\..\embeddedcommon\DFT32.c symbol_enumerator.c ^ +..\DisplayArray.c ..\DisplayDMX.c ..\DisplayFileWrite.c ..\DisplayHIDAPI.c ..\DisplayNetwork.c ^ +..\DisplayOUTDriver.c ..\DisplayPie.c ..\DisplayRadialPoles.c ..\DisplaySHM.c ..\DisplayUSB2812.c ^ +..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c . @echo on %CC% %CCFLAGS% %CCIFLAGS% -o ../colorchord.exe %SOURCES% %CCLFLAGS% diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index d9912be..c84d7c9 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -11,8 +11,9 @@ rem lots of source files set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ ..\outdrivers.c ..\hidapi.c ..\hook.c ..\parameters.c ..\util.c ..\notefinder.c ^ ..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c ^ -..\DisplayNetwork.c ..\DisplayArray.c ..\DisplayHIDAPI.c ..\DisplayOUTDriver.c ..\DisplayPie.c ^ -..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c +..\DisplayArray.c ..\DisplayDMX.c ..\DisplayFileWrite.c ..\DisplayHIDAPI.c ..\DisplayNetwork.c ^ +..\DisplayOUTDriver.c ..\DisplayPie.c ..\DisplayRadialPoles.c ..\DisplaySHM.c ..\DisplayUSB2812.c ^ +..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c . set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll -DWIN32_LEAN_AND_MEAN set CC=C:\tcc\tcc.exe From ba996232a440217050a02eb69b6458598cc39f2b Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 21 Oct 2022 22:57:59 -0400 Subject: [PATCH 144/162] Default background is black --- colorchord2/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index d4723c2..11d5340 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -74,7 +74,7 @@ int firstnewline = -1; // Define application colors RGBA format -#define BACKGROUND_COLOR 0x000080ff +#define BACKGROUND_COLOR 0x000000ff #define LINE_COLOR 0xffffffff #define TEXT_COLOR 0xffffffff // Text colors for the debug options at the bottom of the screen From 9dc4b12708b3725a0b17d7d1b1ef8c7981cb0c4c Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 21 Oct 2022 23:02:24 -0400 Subject: [PATCH 145/162] Remove FPS counter on command line - Don't show debug info by default - Other minor formatting changes --- colorchord2/main.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 11d5340..560c13f 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -64,12 +64,12 @@ void HandleDestroy() #define GENLINEWIDTH 89 -#define GENLINES 67 +#define GENLINES 67 char genlog[ ( GENLINEWIDTH + 1 ) * ( GENLINES + 1 ) + 2 ] = "log"; int genloglen; int genloglines; -int genlinelen = 0; +int genlinelen = 0; int firstnewline = -1; @@ -95,8 +95,8 @@ void example_log_function( int readSize, char *buf ) genloglines++; if ( genloglines >= GENLINES ) { - genloglen -= firstnewline + 1; - int offset = firstnewline; + genloglen -= firstnewline + 1; + int offset = firstnewline; firstnewline = -1; int k; for ( k = 0; k < genloglen; k++ ) @@ -111,12 +111,12 @@ void example_log_function( int readSize, char *buf ) if ( c != '\n' ) { genlog[ genloglen + 1 ] = 0; - genlog[ genloglen++ ] = '\n'; + genlog[ genloglen++ ] = '\n'; } if ( firstnewline < 0 ) firstnewline = genloglen; } genlog[ genloglen + 1 ] = 0; - genlog[ genloglen++ ] = c; + genlog[ genloglen++ ] = c; if ( c != '\n' ) genlinelen++; } @@ -173,7 +173,7 @@ double VisTimeEnd, VisTimeStart; float sound[ SOUNDCBSIZE ]; int soundhead = 0; int show_debug = 0; -int show_debug_basic = 1; +int show_debug_basic = 0; int gKey = 0; extern int force_white; @@ -312,8 +312,6 @@ void RegisterConstructorFunctions() // Video Stuff REGISTERnull(); REGISTERDisplayArray(); - // REGISTERDisplayDMX(); - // REGISTERDisplayFileWrite(); REGISTERDisplayHIDAPI(); REGISTERDisplayNetwork(); REGISTERDisplayOutDriver(); @@ -328,7 +326,6 @@ void RegisterConstructorFunctions() #endif // Output stuff - // REGISTERDisplayUSB2812(); REGISTEROutputCells(); REGISTEROutputLinear(); REGISTEROutputProminent(); @@ -629,9 +626,6 @@ int main( int argc, char **argv ) ThisTime = OGGetAbsoluteTime(); if ( ThisTime > LastFPSTime + 1 && showfps ) { -#ifndef ANDROID - printf( "FPS: %d\n", frames ); -#endif lastfps = frames; frames = 0; LastFPSTime += 1; From 300e50c33f2531126f774765e7d609e2d4f1cbb6 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Fri, 21 Oct 2022 23:04:18 -0400 Subject: [PATCH 146/162] Build and cleanup colorchord-opengl by default. - Remove binary from tracked files --- colorchord2/Makefile | 4 ++-- colorchord2/colorchord.exe | Bin 847872 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 colorchord2/colorchord.exe diff --git a/colorchord2/Makefile b/colorchord2/Makefile index f0dab15..08ef806 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -1,4 +1,4 @@ -all : colorchord +all : colorchord colorchord-opengl OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o DisplayRadialPoles.o @@ -39,4 +39,4 @@ colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c clean : - rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) + rm -rf *.o *~ colorchord colorchord-opengl colorchord.exe embeddedcc $(OBJS) diff --git a/colorchord2/colorchord.exe b/colorchord2/colorchord.exe deleted file mode 100644 index aa189bee1eb8306cd5169c6f3c7426925629a2bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847872 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

_+Fvp_~EpYq{%y}{oKx(^iOx9$@@-J%8{8E)Q6 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 From 72c880f701ec53fce377f2c0f1ff4055590d63d4 Mon Sep 17 00:00:00 2001 From: Samuel Ellicott Date: Sat, 22 Oct 2022 01:21:21 -0400 Subject: [PATCH 147/162] Fix Windows build and build instructions --- README.md | 16 ++++++++++------ colorchord2/windows/compile-clang.bat | 4 ++-- colorchord2/windows/compile.bat | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ea45090..e930d70 100644 --- a/README.md +++ b/README.md @@ -102,14 +102,18 @@ Building with Windows There are 3 options available for building on Windows, clang, or TCC, MSYS2. ### clang Start by [downloading](https://clang.llvm.org/) the clang compiler, and installing it. - -Edit the batch script at `colorchord2/windows/compile-clang.bat`: -- Verify that the executable location is correct, on line 0 (`CC`). +You can also install using `winget` using the following command in PowerShell +``` +winget install -e --id LLVM.LLVM +``` If you have the Windows SDK installed, you should not need to do any additional work. -If you do not, you'll want to either [install it](https://developer.microsoft.com/en-US/windows/downloads/windows-11-sdk/) to get the official headers, or use the unofficial headers instead by adding `-DNO_WIN_HEADERS` to the `CCFLAGS` line in the batch file above. +If you do not, you'll want to either [install it](https://developer.microsoft.com/en-US/windows/downloads/windows-11-sdk/) to get the official headers. Realistically, it's easyist to get the headers by installing Visual Studio Communitiy and selecting the C/C++ Desktop Application devlopment package and installing it from there [Visual Studio](https://visualstudio.microsoft.com/). -Run the batch script, and it should output to `colorchord2/colorchord.exe`. +Once the Windows headers are installed run the clang batch script, and it should output to `colorchord2/colorchord.exe`. +``` +./compile-clang.bat +``` ### TCC Start by [downloading TCC](http://savannah.nongnu.org/projects/tinycc/), and extracting it to `C:\tcc`. @@ -119,7 +123,7 @@ to the default location, you can skip the next step. Edit the batch script at `colorchord2/windows/compile.bat`: - Edit line 17 (`CC`) to be the location where you put TCC. If there are spaces in the path, wrap the entire path in quotes. -Note that TCC is not able to use the Windows SDK, and as such using the unofficial headers is required, and automatically enabled when compiling with TCC. If you encounter issues, try the clang method above instead. +Note that TCC is not able to use the Windows SDK, and as such using the unofficial headers is required, and automatically enabled when compiling with TCC. If you encounter issues, try the clang method above instead. TCC does not support open-gl rendering and is limited to software rendering. ### MSYS2 With either 64bit or 32bit [MSYS2](https://msys2.github.io/) installed, run the _MSYS2 MSYS_ launcher and use `pacman` to set up a MinGW32 toolchain, if you don't have one already: diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index d3d7e04..1afaba0 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,7 +1,7 @@ @echo off set CC="C:\Program Files\LLVM\bin\clang.exe" rem To enable OpenGL rendering use the -DCNFGOGL option -set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -DCNFGOGL +set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -DCNFGOGL set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O2 set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt -lopengl32 set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ @@ -9,7 +9,7 @@ set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\..\embeddedcommon\DFT32.c symbol_enumerator.c ^ ..\DisplayArray.c ..\DisplayDMX.c ..\DisplayFileWrite.c ..\DisplayHIDAPI.c ..\DisplayNetwork.c ^ ..\DisplayOUTDriver.c ..\DisplayPie.c ..\DisplayRadialPoles.c ..\DisplaySHM.c ..\DisplayUSB2812.c ^ -..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c . +..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c @echo on %CC% %CCFLAGS% %CCIFLAGS% -o ../colorchord.exe %SOURCES% %CCLFLAGS% diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index c84d7c9..e9b4424 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -13,7 +13,7 @@ set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c ^ ..\DisplayArray.c ..\DisplayDMX.c ..\DisplayFileWrite.c ..\DisplayHIDAPI.c ..\DisplayNetwork.c ^ ..\DisplayOUTDriver.c ..\DisplayPie.c ..\DisplayRadialPoles.c ..\DisplaySHM.c ..\DisplayUSB2812.c ^ -..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c . +..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll -DWIN32_LEAN_AND_MEAN set CC=C:\tcc\tcc.exe From 6dab01fb355870e12ef38db479fa01cc0127c30d Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sat, 12 Nov 2022 13:57:47 -0800 Subject: [PATCH 148/162] Fix build on unusual version of mingw. --- colorchord2/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/colorchord2/Makefile b/colorchord2/Makefile index 08ef806..d2f3487 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -2,10 +2,10 @@ all : colorchord colorchord-opengl OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o DisplayRadialPoles.o -WINGCC:= i686-w64-mingw32-gcc +WINGCC?=i686-w64-mingw32-gcc WINGCCFLAGS:= -g -DICACHE_FLASH_ATTR= -I../embeddedcommon -Icnfa -Irawdraw -I. -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections -WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi +WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lole32 -lavrt #CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= CFLAGS:=-g -O2 -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= @@ -35,7 +35,7 @@ colorchord-opengl : $(OBJS) $(CC) -o $@ $^ -DCNFGOGL $(EXTRALIBS) $(OPENGLLIBS) $(RAWDRAWLIBS) colorchord.exe : main.c dft.c decompose.c filter.c color.c notefinder.c util.c outdrivers.c parameters.c chash.c OutputVoronoi.c OutputProminent.c DisplayArray.c OutputLinear.c DisplayPie.c DisplayNetwork.c hook.c RecorderPlugin.c ../embeddedcommon/DFT32.c OutputCells.c configs.c hidapi.c DisplayHIDAPI.c - $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) + $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(o) $(WINLDFLAGS) clean : From 34093a0ead8df4a1ed0c03a5a74df6a92b6bb412 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sat, 12 Nov 2022 14:07:53 -0800 Subject: [PATCH 149/162] Update CNFA --- colorchord2/cnfa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/cnfa b/colorchord2/cnfa index a3677bd..dcca8a3 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit a3677bd33d63e051dac7f2437ba7ebf95b12abae +Subproject commit dcca8a38fe03ac19e28ef510583d8dc89a691cb4 From 45b483b96d60f4ff9be29839ce302ee3a2d59edc Mon Sep 17 00:00:00 2001 From: Cai Biesinger Date: Tue, 6 Dec 2022 16:31:53 -0700 Subject: [PATCH 150/162] Fixing cnfa module referencing nonexistant commit --- .gitmodules | 6 +++--- colorchord2/cnfa | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index ae541d5..94e20d1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,9 @@ [submodule "colorchord2/rawdraw"] path = colorchord2/rawdraw url = https://github.com/cntools/rawdraw -[submodule "colorchord2/cnfa"] - path = colorchord2/cnfa - url = https://github.com/cnlohr/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid +[submodule "colorchord2/cnfa"] + path = colorchord2/cnfa + url = https://github.com/cntools/cnfa.git diff --git a/colorchord2/cnfa b/colorchord2/cnfa index dcca8a3..d271e01 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit dcca8a38fe03ac19e28ef510583d8dc89a691cb4 +Subproject commit d271e0196d81412032eeffa634a94a1aaf0060a7 From 0e78f44265d96a04b4da949480893ab592469051 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Fri, 20 Jan 2023 02:14:22 -0500 Subject: [PATCH 151/162] Add some mega lospec tests. --- attic/Makefile | 14 + .../test_using_square_wave_octave_approach.c | 301 ++++++++++++++ ...sing_square_wave_octave_approach_stipple.c | 328 ++++++++++++++++ attic/test_using_work_selection_heap.c | 367 ++++++++++++++++++ attic/test_using_work_selection_table.c | 321 +++++++++++++++ 5 files changed, 1331 insertions(+) create mode 100644 attic/Makefile create mode 100644 attic/test_using_square_wave_octave_approach.c create mode 100644 attic/test_using_square_wave_octave_approach_stipple.c create mode 100644 attic/test_using_work_selection_heap.c create mode 100644 attic/test_using_work_selection_table.c diff --git a/attic/Makefile b/attic/Makefile new file mode 100644 index 0000000..14a3ad6 --- /dev/null +++ b/attic/Makefile @@ -0,0 +1,14 @@ +PROJS:=test_using_square_wave_octave_approach test_using_work_selection_heap test_using_work_selection_table test_using_square_wave_octave_approach_stipple + +all : $(PROJS) + +CFLAGS:=-I../colorchord2/rawdraw -g +LDFLAGS:=-lGL -lm -lpthread -lX11 + +$(PROJS): %: %.c + gcc -o $@ $^ $(CFLAGS) $(LDFLAGS) + +clean : + rm -rf $(PROJS) + + diff --git a/attic/test_using_square_wave_octave_approach.c b/attic/test_using_square_wave_octave_approach.c new file mode 100644 index 0000000..f632bda --- /dev/null +++ b/attic/test_using_square_wave_octave_approach.c @@ -0,0 +1,301 @@ +/* + An experiment in very, very low-spec ColorChord. This technique foregoes + multiplies. + + Approach 1B --- This variant locks the number of updates for any given + integration to exactly the quadrature size. It was to test theory 1. + + Approach 1 is square_wave_octave_approac_stipple. +*/ + +#include +#include + +#define CNFG_IMPLEMENTATION +#define CNFGOGL +#include "rawdraw_sf.h" + +#include "os_generic.h" + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ); + +int lastx = 200; +int lasty = 1000; + +int main() +{ + #define FSPS 16000 + #define OCTAVES 6 + #define BPERO 24 + #define BASE_FREQ 22.5 + #define QUADRATURE_STEP_DENOMINATOR 16384 + + // Careful: It makes a lot of sense to explore these relationships. + #define SAMPLE_Q 4 + #define MAG_IIR 0 + #define RUNNING_IIR 31 + #define COMPLEX_IIR 2 + + #define TEST_SAMPLES 256 + + + int16_t samples[TEST_SAMPLES]; + int i; + + + CNFGSetup( "Example App", 1024, 768 ); + + // Precomputed Tables + int8_t whichoctave[2< 2048, then perform a quadrature step. + int32_t flipdistance[BPERO]; + int binstothis[BPERO*OCTAVES] = { 0 }; + int nextloopbins[BPERO*OCTAVES] = { 0 }; + for( i = 0; i < BPERO; i++ ) + { + double freq = pow( 2, (double)i / (double)BPERO ) * (BASE_FREQ/2.0); + double pfreq = pow( 2, OCTAVES ) * freq; + double spacing = (FSPS / 2) / pfreq / 4; + + flipdistance[i] = QUADRATURE_STEP_DENOMINATOR * spacing; + // Spacing = "quadrature every X samples" + //printf( "%f %d\n", spacing, flipdistance[i] ); + //flipdistance[i] = QUADRATURE_STEP_DENOMINATOR * (int)(spacing+0.5); + binstothis[i] = (int)(spacing+0.5); + nextloopbins[i] = binstothis[i]; + } + + // This is for timing. Not accumulated data. + int32_t quadrature_timing_last[BPERO*OCTAVES] = { 0 }; + + + uint8_t quadrature_state[BPERO*OCTAVES] = { 0 }; + + uint32_t last_accumulated_value[BPERO*OCTAVES*2] = { 0 }; + + uint32_t octave_timing[OCTAVES] = { 0 }; + + int32_t real_imaginary_running[BPERO*OCTAVES*2] = { 0 }; + + uint32_t sample_accumulator = 0; + + int32_t qcount[BPERO*OCTAVES] = { 0 }; + int32_t magsum[BPERO*OCTAVES] = { 0 }; + + int frameno = 0; + double dLT = OGGetAbsoluteTime(); + int samplenoIn = 0; + int sampleno = 0; + double ToneOmega = 0; + while( CNFGHandleInput() ) + { + CNFGClearFrame(); + + frameno++; + float freq = + //pow( 2, (frameno%600)/100.0 ) * 25; + pow( 2, (lastx)/100.0 ) * lastx; + //101; + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + samples[i] = lasty/5 + sin( ToneOmega ) * 127;// + (rand()%128)-64; + ToneOmega += 1 / (double)FSPS * (double)freq * 3.14159 * 2.0; + } + char cts[1024]; + sprintf( cts, "%f %d", freq, sampleno ); + CNFGColor( 0xffffffff ); + CNFGPenX = 2; + CNFGPenY = 2; + CNFGDrawText( cts, 2 ); + + while( OGGetAbsoluteTime() < dLT + TEST_SAMPLES / (double)FSPS ); + dLT += TEST_SAMPLES / (double)FSPS; + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + sample_accumulator += samples[i]; + int octave = whichoctave[(sampleno)&((2<>RUNNING_IIR) + delta; + real_imaginary_running[last_q_bin] = running; + + int q = ++qcount[binno]; + if( q == SAMPLE_Q ) // Effective Q factor. + { + qcount[binno] = 0; + int newmagR = real_imaginary_running[(binno * 2)]; + int newmagI = real_imaginary_running[(binno * 2)+1]; + + real_imaginary_running[(binno * 2)] = newmagR - (newmagR>>COMPLEX_IIR); + real_imaginary_running[(binno * 2)+1] = newmagI - (newmagI>>COMPLEX_IIR); + + // Super-cheap, non-multiply, approximate complex vector magnitude calculation. + newmagR = (newmagR<0)?-newmagR:newmagR; + newmagI = (newmagI<0)?-newmagI:newmagI; + int newmag = + //sqrt(newmagR*newmagR + newmagI*newmagI ); + newmagR > newmagI ? newmagR + (newmagI>>1) : newmagI + (newmagR>>1); + + int lastmag = magsum[binno]; + magsum[binno] = lastmag - (lastmag>>MAG_IIR) + newmag; + + + quadrature_timing_last[binno] += flipdistance[b]*4; + int nextsteps = -(ocative_time - quadrature_timing_last[binno])/QUADRATURE_STEP_DENOMINATOR; + binstothis[binno] = nextsteps/4; + } + nextloopbins[binno] = binstothis[binno]; + } + } + } + + int lx, ly; + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float real = real_imaginary_running[i*2+0]; + float imag = real_imaginary_running[i*2+1]; + float mag = sqrt( real * real + imag * imag ); + + mag = (float)magsum[i] * pow( 2, i / (double)BPERO ); + int y = 768 - ((int)(mag / FSPS * 10) >> MAG_IIR); + if( i ) CNFGTackSegment( i*4, y, lx*4, ly ); + lx = i; ly= y; + //printf( "%d %d\n", real_imaginary_running[i*2+0], real_imaginary_running[i*2+1] ); + } + + CNFGSwapBuffers(); + } +} + + + + + +void HandleKey( int keycode, int bDown ) { } +void HandleButton( int x, int y, int button, int bDown ) { } +void HandleMotion( int x, int y, int mask ) { lastx = x; lasty = y; } +void HandleDestroy() { } + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ) +{ + #define SIXTH1 43 + #define SIXTH2 85 + #define SIXTH3 128 + #define SIXTH4 171 + #define SIXTH5 213 + + uint16_t or = 0, og = 0, ob = 0; + + hue -= SIXTH1; //Off by 60 degrees. + + //TODO: There are colors that overlap here, consider + //tweaking this to make the best use of the colorspace. + + if( hue < SIXTH1 ) //Ok: Yellow->Red. + { + or = 255; + og = 255 - ((uint16_t)hue * 255) / (SIXTH1); + } + else if( hue < SIXTH2 ) //Ok: Red->Purple + { + or = 255; + ob = (uint16_t)hue*255 / SIXTH1 - 255; + } + else if( hue < SIXTH3 ) //Ok: Purple->Blue + { + ob = 255; + or = ((SIXTH3-hue) * 255) / (SIXTH1); + } + else if( hue < SIXTH4 ) //Ok: Blue->Cyan + { + ob = 255; + og = (hue - SIXTH3)*255 / SIXTH1; + } + else if( hue < SIXTH5 ) //Ok: Cyan->Green. + { + og = 255; + ob = ((SIXTH5-hue)*255) / SIXTH1; + } + else //Green->Yellow + { + og = 255; + or = (hue - SIXTH5) * 255 / SIXTH1; + } + + uint16_t rv = val; + if( rv > 128 ) rv++; + uint16_t rs = sat; + if( rs > 128 ) rs++; + + //or, og, ob range from 0...255 now. + //Need to apply saturation and value. + + or = (or * val)>>8; + og = (og * val)>>8; + ob = (ob * val)>>8; + + //OR..OB == 0..65025 + or = or * rs + 255 * (256-rs); + og = og * rs + 255 * (256-rs); + ob = ob * rs + 255 * (256-rs); +//printf( "__%d %d %d =-> %d\n", or, og, ob, rs ); + + or >>= 8; + og >>= 8; + ob >>= 8; + + return or | (og<<8) | ((uint32_t)ob<<16); +} + diff --git a/attic/test_using_square_wave_octave_approach_stipple.c b/attic/test_using_square_wave_octave_approach_stipple.c new file mode 100644 index 0000000..777f613 --- /dev/null +++ b/attic/test_using_square_wave_octave_approach_stipple.c @@ -0,0 +1,328 @@ +/* + An experiment in very, very low-spec ColorChord. This technique foregoes + multiplies. + + Approach 1: + + This approach uses a table, like several colorchord algorithms to only + process one octave each cycle. It then uses a table to decide how often + to process each bin. It performs that bin at 4x the bin's sampling + frequency, in quadrature. So that it performs the +real, +imag, -real, + -imag operations over each cycle. + + You can observe an overtone at the current bin - 1.5 octaves! This is + expected, since, it's the inverse of what the DFT of a square wave would + be. + + That is a minor drawback, but the **major** drawback is that any DC + offset, OR lower frequencies present when computing higher frequencies will + induce a significant ground flutter, and make results really inaccurate. + + This will need to be addressed before the algorithm is ready for prime-time. + + NOTE: To explore: + 1) Consider SAMPLE_Q to possibly use all 4 cycles - though this will + add latency, it will be more "accurate" --> YES! This helps! + 2) Use the cursor to move left and right to sweep tone and up and down + to change DC-bias. This exhibits this algo's shortcoming. + TODO: Can we somehow zero out the DC offset? + + + DISCOVERY: This approach (octave-step in octave) is very sensitive FSPS + + Theories: + * If we force all 4 quadrature value to be the same number of + integration cycles, does that solve it? --> NO! IT GETS MESSY (see Approach 1B) +*/ + +#include +#include + +#define CNFG_IMPLEMENTATION +#define CNFGOGL +#include "rawdraw_sf.h" + +#include "os_generic.h" + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ); + +int lastx = 200; +int lasty = 1000; + +int main() +{ + #define FSPS 22100 + #define OCTAVES 6 + #define BPERO 24 + #define BASE_FREQ 22.5 + #define QUADRATURE_STEP_DENOMINATOR 16384 + + // Careful: It makes a lot of sense to explore these relationships. + #define SAMPLE_Q 4 + #define MAG_IIR 0 + #define RUNNING_IIR 31 + #define COMPLEX_IIR 2 + + #define TEST_SAMPLES 256 + + + int16_t samples[TEST_SAMPLES]; + int i; + + + CNFGSetup( "Example App", 1024, 768 ); + + // Precomputed Tables + int8_t whichoctave[2< 2048, then perform a quadrature step. + int32_t flipdistance[BPERO]; + for( i = 0; i < BPERO; i++ ) + { + double freq = pow( 2, (double)i / (double)BPERO ) * (BASE_FREQ/2.0); + double pfreq = pow( 2, OCTAVES ) * freq; + double spacing = (FSPS / 2) / pfreq / 4; + + flipdistance[i] = QUADRATURE_STEP_DENOMINATOR * spacing; + // Spacing = "quadrature every X samples" + //printf( "%f %d\n", spacing, flipdistance[i] ); + } + + // This is for timing. Not accumulated data. + int32_t quadrature_timing_last[BPERO*OCTAVES] = { 0 }; + uint8_t quadrature_state[BPERO*OCTAVES] = { 0 }; + + uint32_t last_accumulated_value[BPERO*OCTAVES*2] = { 0 }; + + uint32_t octave_timing[OCTAVES] = { 0 }; + + int32_t real_imaginary_running[BPERO*OCTAVES*2] = { 0 }; + + uint32_t sample_accumulator = 0; + + int32_t qcount[BPERO*OCTAVES] = { 0 }; + int32_t magsum[BPERO*OCTAVES] = { 0 }; + + int frameno = 0; + double dLT = OGGetAbsoluteTime(); + int samplenoIn = 0; + int sampleno = 0; + double ToneOmega = 0; + int ops; + while( CNFGHandleInput() ) + { + CNFGClearFrame(); + + frameno++; + float freq = + //pow( 2, (frameno%600)/100.0 ) * 25; + pow( 2, (lastx)/100.0 ) * lastx; + //101; + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + samples[i] = lasty/5 + sin( ToneOmega ) * 127;// + (rand()%128)-64; + ToneOmega += 1 / (double)FSPS * (double)freq * 3.14159 * 2.0; + } + char cts[1024]; + sprintf( cts, "%f %d %f", freq, sampleno, ops/(double)sampleno ); + CNFGColor( 0xffffffff ); + CNFGPenX = 2; + CNFGPenY = 2; + CNFGDrawText( cts, 2 ); + + while( OGGetAbsoluteTime() < dLT + TEST_SAMPLES / (double)FSPS ); + dLT += TEST_SAMPLES / (double)FSPS; + + if( 0 ) + { + memset( real_imaginary_running, 0, sizeof( real_imaginary_running ) ); + memset( last_accumulated_value, 0, sizeof( last_accumulated_value ) ); + memset( quadrature_timing_last, 0, sizeof( quadrature_timing_last ) ); + memset( quadrature_state, 0, sizeof( quadrature_state ) ); + memset( octave_timing, 0, sizeof( octave_timing ) ); + sample_accumulator = 0; + } + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + sample_accumulator += samples[i]; + int octave = whichoctave[(sampleno)&((2< 0 ) + { + ops++; + quadrature_timing_last[binno] += flipdistance[b]; + // This code will get appropriately executed every quadrature update. + + int qstate = quadrature_state[binno] = ( quadrature_state[binno] + 1 ) % 4; + + int last_q_bin = (binno * 2) + ( qstate & 1 ); + int delta = sample_accumulator - last_accumulated_value[last_q_bin]; + last_accumulated_value[last_q_bin] = sample_accumulator; + + if( binno == WATCHBIN ) + printf( "Delta: %d\n", delta ); + + // Qstate = + // (0) = +Cos, (1) = +Sin, (2) = -Cos, (3) = -Sin + if( qstate & 2 ) delta *= -1; + + // Update real and imaginary components with delta. + int running = real_imaginary_running[last_q_bin]; + running = running - (running>>RUNNING_IIR) + delta; + real_imaginary_running[last_q_bin] = running; + + int q = ++qcount[binno]; + if( q == SAMPLE_Q ) // Effective Q factor. + { + qcount[binno] = 0; + int newmagR = real_imaginary_running[(binno * 2)]; + int newmagI = real_imaginary_running[(binno * 2)+1]; + + real_imaginary_running[(binno * 2)] = newmagR - (newmagR>>COMPLEX_IIR); + real_imaginary_running[(binno * 2)+1] = newmagI - (newmagI>>COMPLEX_IIR); + + // Super-cheap, non-multiply, approximate complex vector magnitude calculation. + newmagR = (newmagR<0)?-newmagR:newmagR; + newmagI = (newmagI<0)?-newmagI:newmagI; + int newmag = + //sqrt(newmagR*newmagR + newmagI*newmagI ); + newmagR > newmagI ? newmagR + (newmagI>>1) : newmagI + (newmagR>>1); + + int lastmag = magsum[binno]; + magsum[binno] = lastmag - (lastmag>>MAG_IIR) + newmag; + } + } + } + } + + int lx, ly; + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float real = real_imaginary_running[i*2+0]; + float imag = real_imaginary_running[i*2+1]; + float mag = sqrt( real * real + imag * imag ); + + mag = (float)magsum[i] * pow( 2, i / (double)BPERO ); + int y = 768 - ((int)(mag / FSPS * 10) >> MAG_IIR); + if( i ) CNFGTackSegment( i*4, y, lx*4, ly ); + lx = i; ly= y; + //printf( "%d %d\n", real_imaginary_running[i*2+0], real_imaginary_running[i*2+1] ); + } + + CNFGSwapBuffers(); + } +} + + + + + +void HandleKey( int keycode, int bDown ) { } +void HandleButton( int x, int y, int button, int bDown ) { } +void HandleMotion( int x, int y, int mask ) { lastx = x; lasty = y; } +void HandleDestroy() { } + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ) +{ + #define SIXTH1 43 + #define SIXTH2 85 + #define SIXTH3 128 + #define SIXTH4 171 + #define SIXTH5 213 + + uint16_t or = 0, og = 0, ob = 0; + + hue -= SIXTH1; //Off by 60 degrees. + + //TODO: There are colors that overlap here, consider + //tweaking this to make the best use of the colorspace. + + if( hue < SIXTH1 ) //Ok: Yellow->Red. + { + or = 255; + og = 255 - ((uint16_t)hue * 255) / (SIXTH1); + } + else if( hue < SIXTH2 ) //Ok: Red->Purple + { + or = 255; + ob = (uint16_t)hue*255 / SIXTH1 - 255; + } + else if( hue < SIXTH3 ) //Ok: Purple->Blue + { + ob = 255; + or = ((SIXTH3-hue) * 255) / (SIXTH1); + } + else if( hue < SIXTH4 ) //Ok: Blue->Cyan + { + ob = 255; + og = (hue - SIXTH3)*255 / SIXTH1; + } + else if( hue < SIXTH5 ) //Ok: Cyan->Green. + { + og = 255; + ob = ((SIXTH5-hue)*255) / SIXTH1; + } + else //Green->Yellow + { + og = 255; + or = (hue - SIXTH5) * 255 / SIXTH1; + } + + uint16_t rv = val; + if( rv > 128 ) rv++; + uint16_t rs = sat; + if( rs > 128 ) rs++; + + //or, og, ob range from 0...255 now. + //Need to apply saturation and value. + + or = (or * val)>>8; + og = (og * val)>>8; + ob = (ob * val)>>8; + + //OR..OB == 0..65025 + or = or * rs + 255 * (256-rs); + og = og * rs + 255 * (256-rs); + ob = ob * rs + 255 * (256-rs); +//printf( "__%d %d %d =-> %d\n", or, og, ob, rs ); + + or >>= 8; + og >>= 8; + ob >>= 8; + + return or | (og<<8) | ((uint32_t)ob<<16); +} + diff --git a/attic/test_using_work_selection_heap.c b/attic/test_using_work_selection_heap.c new file mode 100644 index 0000000..14524e8 --- /dev/null +++ b/attic/test_using_work_selection_heap.c @@ -0,0 +1,367 @@ +/* + An experiment in very, very low-spec ColorChord. This technique foregoes + multiplies. + + Approach 2: + + Similar approach to Approach 1, in that this uses square waves and quarter + wavelength segments to quadrature encode, but instead of using an octave + at a time, it instead creates a heap to work through every sample. + + That way, the error induced by sample stutter is minimized and the square + waves are as accurate as possible. + + WARNING: With this approach, operations can 'bunch up' so that you may + need to clear many, many ops in a single cycle, so it is not at all + appropirate for being run in an interrupt. + + Another benefit: If sample rate is large, no time is spent working on + samples that don't need work. This is better for a sparse set of ops. + + + TODO: Can we do this approach, but with a fixed table to instruct when to + perform every bin? + + GENERAL OBSERVATION FOR ALL VERSIONS: (applicableto all) If we integrate + only bumps for sin/cos, it seems to have different noise properties. + May be beneficial! +*/ + +#include +#include + +#define CNFG_IMPLEMENTATION +#define CNFGOGL +#include "rawdraw_sf.h" + +#include "os_generic.h" + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ); + +int lastx = 200; +int lasty = 1000; + +#define FSPS 12000 +#define OCTAVES 6 +#define BPERO 24 +#define BASE_FREQ 22.5 +#define QUADRATURE_STEP_DENOMINATOR 16384 + +// Careful: It makes a lot of sense to explore these relationships. +#define SAMPLE_Q 4 +#define MAG_IIR 0 +#define COMPLEX_IIR 2 +#define RUNNING_IIR 31 + +#define TEST_SAMPLES 256 + +int32_t next_heap_events[OCTAVES*BPERO*2] = { 0 }; + +int sineshape; +// This will sort the head node back down into the heap, so the heap will +// remain a min-heap. This is done in log(n) time. But, with our data, it +// experimentally only needs to run for 6.47 iterations per call on average +// assuming 24 BPERO and 6 OCTAVES. + +int heapsteps = 0; +int reheaps = 0; +void PercolateHeap( int32_t current_time ) +{ + reheaps++; + int this_index = 0; + int this_val = next_heap_events[0]; + do + { + heapsteps++; + int left = (this_index * 2 + 1); + int right = (this_index * 2 + 2); + + // At end. WARNING: This heap algorithm is only useful if it's an even number of things. + if( right >= OCTAVES*BPERO ) return; + + int leftval = next_heap_events[left*2]; + int rightval = next_heap_events[right*2]; + int diffleft = leftval - this_val; + int diffright = rightval - this_val; + //printf( "RESORT ID %d / INDEX %d / [%d %d] %d %d %d %d\n", next_heap_events[this_index*2+1], this_index, diffleft, diffright, leftval, rightval, left, right ); + if( diffleft > 0 && diffright > 0 ) + { + // The heap is sorted. We're done. + return; + } + + // Otherwise we have to pick an edge to sort on. + if( diffleft <= diffright ) + { + //printf( "LEFT %d / %d\n", left, this_val ); + int swapevent = next_heap_events[left*2+1]; + next_heap_events[left*2+1] = next_heap_events[this_index*2+1]; + next_heap_events[this_index*2+1] = swapevent; + + next_heap_events[this_index*2+0] = leftval; + next_heap_events[left*2+0] = this_val; + + this_index = left; + } + else + { + //printf( "RIGHT %d\n", right ); + + int swapevent = next_heap_events[right*2+1]; + next_heap_events[right*2+1] = next_heap_events[this_index*2+1]; + next_heap_events[this_index*2+1] = swapevent; + + next_heap_events[this_index*2+0] = rightval; + next_heap_events[right*2+0] = this_val; + + this_index = right; + } + } while( 1 ); +} + + +int main() +{ + + + int16_t samples[TEST_SAMPLES]; + int i; + + + CNFGSetup( "Example App", 1024, 768 ); + + // Make a running counter to count up by this amount every cycle. + // If the new number > 2048, then perform a quadrature step. + int32_t flipdistance[BPERO*OCTAVES]; + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + double freq = pow( 2, (double)i / (double)BPERO ) * (BASE_FREQ/2.0); + double pfreq = freq; + double spacing = (FSPS / 2) / pfreq / 4; + + flipdistance[i] = QUADRATURE_STEP_DENOMINATOR * spacing; + // Spacing = "quadrature every X samples" + + next_heap_events[i*2+1] = i; + } + + // This is for timing. Not accumulated data. + uint8_t quadrature_state[BPERO*OCTAVES] = { 0 }; + + uint32_t last_accumulated_value[BPERO*OCTAVES*2] = { 0 }; + + int32_t real_imaginary_running[BPERO*OCTAVES*2] = { 0 }; + + uint32_t sample_accumulator = 0; + int32_t time_accumulator = 0; + + int32_t qcount[BPERO*OCTAVES] = { 0 }; + int32_t magsum[BPERO*OCTAVES] = { 0 }; + + int frameno = 0; + double dLT = OGGetAbsoluteTime(); + + double ToneOmega = 0; + while( CNFGHandleInput() ) + { + CNFGClearFrame(); + + frameno++; + float freq = + //pow( 2, (frameno%600)/100.0 ) * 25; + pow( 2, (lastx)/100.0 ) * lastx; + //101; + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + samples[i] = lasty/5 + sin( ToneOmega ) * 127;// + (rand()%128)-64; + ToneOmega += 1 / (double)FSPS * (double)freq * 3.14159 * 2.0; + } + char cts[1024]; + sprintf( cts, "%f %d %f %f SINESHAPE: %d", freq, time_accumulator, (double)heapsteps / (double)reheaps, (double)reheaps/(time_accumulator/QUADRATURE_STEP_DENOMINATOR), sineshape ); + CNFGColor( 0xffffffff ); + CNFGPenX = 2; + CNFGPenY = 2; + CNFGDrawText( cts, 2 ); + + while( OGGetAbsoluteTime() < dLT + TEST_SAMPLES / (double)FSPS ); + dLT += TEST_SAMPLES / (double)FSPS; + + + #define WATCHBIN -1 + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + sample_accumulator += samples[i]; + + time_accumulator += QUADRATURE_STEP_DENOMINATOR; + + while( (time_accumulator - next_heap_events[0]) > 0 ) + { + // Event has occurred. + int binno = next_heap_events[1]; + //printf( "%d %d\n", binno, next_heap_events[0] ); + next_heap_events[0] += flipdistance[binno]; + PercolateHeap( time_accumulator ); + + //int j; + //for( j = 0; j < OCTAVES*BPERO; j++ ) printf( "[%d %d]", next_heap_events[j*2+0], next_heap_events[j*2+1] ); + //printf( "\n" ); + + int qstate = quadrature_state[binno] = ( quadrature_state[binno] + 1 ) % 4; + + int last_q_bin = (binno * 2) + ( qstate & 1 ); + int delta; + if( !sineshape ) + { + delta = sample_accumulator - last_accumulated_value[last_q_bin]; + last_accumulated_value[last_q_bin] = sample_accumulator; + } + else + { + // TESTING: Sine Shape - this only integrates bumps for sin/cos + // instead of full triangle waves. + // Observation: For higher frequency bins, this seems to help + // a lot. + // side-benefit, this takes less RAM. + // BUT BUT! It messes with lower frequencies, making them uglier. + delta = sample_accumulator - last_accumulated_value[binno]; + last_accumulated_value[binno] = sample_accumulator; + delta *= 1.4; // Just to normalize the results of the test (not for production) + } + if( binno == WATCHBIN ) + printf( "Delta: %d\n", delta ); + + // Qstate = + // (0) = +Cos, (1) = +Sin, (2) = -Cos, (3) = -Sin + if( qstate & 2 ) delta *= -1; + + // Update real and imaginary components with delta. + int running = real_imaginary_running[last_q_bin]; + running = running - (running>>RUNNING_IIR) + delta; + real_imaginary_running[last_q_bin] = running; + + int q = ++qcount[binno]; + if( q == SAMPLE_Q ) // Effective Q factor. + { + qcount[binno] = 0; + int newmagR = real_imaginary_running[(binno * 2)]; + int newmagI = real_imaginary_running[(binno * 2)+1]; + + real_imaginary_running[(binno * 2)] = newmagR - (newmagR>>COMPLEX_IIR); + real_imaginary_running[(binno * 2)+1] = newmagI - (newmagI>>COMPLEX_IIR); + + // Super-cheap, non-multiply, approximate complex vector magnitude calculation. + newmagR = (newmagR<0)?-newmagR:newmagR; + newmagI = (newmagI<0)?-newmagI:newmagI; + int newmag = + //sqrt(newmagR*newmagR + newmagI*newmagI ); + newmagR > newmagI ? newmagR + (newmagI>>1) : newmagI + (newmagR>>1); + + int lastmag = magsum[binno]; + magsum[binno] = lastmag - (lastmag>>MAG_IIR) + newmag; + } + } + } + + int lx, ly; + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float real = real_imaginary_running[i*2+0]; + float imag = real_imaginary_running[i*2+1]; + float mag = sqrt( real * real + imag * imag ); + + mag = (float)magsum[i] * pow( 2, i / (double)BPERO ); + int y = 768 - ((int)(mag / FSPS * 10) >> MAG_IIR); + if( i ) CNFGTackSegment( i*4, y, lx*4, ly ); + lx = i; ly= y; + //printf( "%d %d\n", real_imaginary_running[i*2+0], real_imaginary_running[i*2+1] ); + } + + CNFGSwapBuffers(); + } +} + + + + + +void HandleKey( int keycode, int bDown ) { if( keycode == 'a' && bDown ) sineshape = !sineshape; } +void HandleButton( int x, int y, int button, int bDown ) { } +void HandleMotion( int x, int y, int mask ) { lastx = x; lasty = y; } +void HandleDestroy() { } + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ) +{ + #define SIXTH1 43 + #define SIXTH2 85 + #define SIXTH3 128 + #define SIXTH4 171 + #define SIXTH5 213 + + uint16_t or = 0, og = 0, ob = 0; + + hue -= SIXTH1; //Off by 60 degrees. + + //TODO: There are colors that overlap here, consider + //tweaking this to make the best use of the colorspace. + + if( hue < SIXTH1 ) //Ok: Yellow->Red. + { + or = 255; + og = 255 - ((uint16_t)hue * 255) / (SIXTH1); + } + else if( hue < SIXTH2 ) //Ok: Red->Purple + { + or = 255; + ob = (uint16_t)hue*255 / SIXTH1 - 255; + } + else if( hue < SIXTH3 ) //Ok: Purple->Blue + { + ob = 255; + or = ((SIXTH3-hue) * 255) / (SIXTH1); + } + else if( hue < SIXTH4 ) //Ok: Blue->Cyan + { + ob = 255; + og = (hue - SIXTH3)*255 / SIXTH1; + } + else if( hue < SIXTH5 ) //Ok: Cyan->Green. + { + og = 255; + ob = ((SIXTH5-hue)*255) / SIXTH1; + } + else //Green->Yellow + { + og = 255; + or = (hue - SIXTH5) * 255 / SIXTH1; + } + + uint16_t rv = val; + if( rv > 128 ) rv++; + uint16_t rs = sat; + if( rs > 128 ) rs++; + + //or, og, ob range from 0...255 now. + //Need to apply saturation and value. + + or = (or * val)>>8; + og = (og * val)>>8; + ob = (ob * val)>>8; + + //OR..OB == 0..65025 + or = or * rs + 255 * (256-rs); + og = og * rs + 255 * (256-rs); + ob = ob * rs + 255 * (256-rs); +//printf( "__%d %d %d =-> %d\n", or, og, ob, rs ); + + or >>= 8; + og >>= 8; + ob >>= 8; + + return or | (og<<8) | ((uint32_t)ob<<16); +} + diff --git a/attic/test_using_work_selection_table.c b/attic/test_using_work_selection_table.c new file mode 100644 index 0000000..721455c --- /dev/null +++ b/attic/test_using_work_selection_table.c @@ -0,0 +1,321 @@ +/* + An experiment in very, very low-spec ColorChord. This technique foregoes + multiplies. + + Approach 3: Based on Approach 2, but using a work selection table. + + This won't work for the ch32v003, since the minimum practical table for 6 + octaves at 24BPERO with 12kSPS and bottom freq of 22.5 is about 80kB. +*/ + +#include +#include + +#define CNFG_IMPLEMENTATION +#define CNFGOGL +#include "rawdraw_sf.h" + +#include "os_generic.h" + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ); + +int lastx = 200; +int lasty = 1000; + +#define FSPS 16000 +#define OCTAVES 6 +#define BPERO 24 +#define BASE_FREQ 22.5 +#define QUADRATURE_STEP_DENOMINATOR 16384 + +// Careful: It makes a lot of sense to explore these relationships. +#define SAMPLE_Q 4 +#define MAG_IIR 0 +#define COMPLEX_IIR 2 +#define RUNNING_IIR 31 + +#define TEST_SAMPLES 256 + +int sineshape; +// This will sort the head node back down into the heap, so the heap will +// remain a min-heap. This is done in log(n) time. But, with our data, it +// experimentally only needs to run for 6.47 iterations per call on average +// assuming 24 BPERO and 6 OCTAVES. + + +int main() +{ + + + int16_t samples[TEST_SAMPLES]; + int i; + + + CNFGSetup( "Example App", 1024, 768 ); + + // Not size of table (that's usually larger) but # of samples + // to record the work instructions for. + #define WORKLOOP 6144 + + // Make a running counter to count up by this amount every cycle. + // If the new number > 2048, then perform a quadrature step. + double spacings[BPERO*OCTAVES]; + double runningspace[BPERO*OCTAVES]; + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + double freq = pow( 2, (double)i / (double)BPERO ) * (BASE_FREQ/2.0); + double pfreq = freq; + double spacing = (FSPS / 2) / pfreq / 4; + + // make spacings line up to a denominator of workloop, this makes it + // so you don't get a werid jump at the end of the work loop. + double wdt = WORKLOOP / spacing; + printf( "%f %f %f\n", wdt, spacing, WORKLOOP / (double)((int)wdt+0.5) ); + wdt = (int)(wdt+0.5); + spacing = WORKLOOP / wdt; + spacings[i] = spacing; + } + + + + uint8_t worktable[WORKLOOP*BPERO*OCTAVES]; + int worktablelen = 0; + for( i = 0; i < WORKLOOP; i++ ) + { + int j; + for( j = 0; j < BPERO*OCTAVES; j++ ) + { + if( i >= runningspace[j] ) + { + runningspace[j] += spacings[j]; + worktable[worktablelen++] = j; + } + } + worktable[worktablelen++] = 255; + } + + + // This is for timing. Not accumulated data. + uint8_t quadrature_state[BPERO*OCTAVES] = { 0 }; + + uint32_t last_accumulated_value[BPERO*OCTAVES*2] = { 0 }; + + int32_t real_imaginary_running[BPERO*OCTAVES*2] = { 0 }; + + uint32_t sample_accumulator = 0; + int32_t time_accumulator = 0; + + int32_t qcount[BPERO*OCTAVES] = { 0 }; + int32_t magsum[BPERO*OCTAVES] = { 0 }; + + int frameno = 0; + double dLT = OGGetAbsoluteTime(); + + double ToneOmega = 0; + + int worktableplace = 0; + while( CNFGHandleInput() ) + { + CNFGClearFrame(); + + frameno++; + float freq = + //pow( 2, (frameno%600)/100.0 ) * 25; + pow( 2, (lastx)/100.0 ) * lastx; + //101; + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + samples[i] = lasty/5 + sin( ToneOmega ) * 127;// + (rand()%128)-64; + ToneOmega += 1 / (double)FSPS * (double)freq * 3.14159 * 2.0; + } + char cts[1024]; + sprintf( cts, "%f %d SINESHAPE: %d WT %d", freq, time_accumulator, sineshape , worktablelen); + CNFGColor( 0xffffffff ); + CNFGPenX = 2; + CNFGPenY = 2; + CNFGDrawText( cts, 2 ); + + while( OGGetAbsoluteTime() < dLT + TEST_SAMPLES / (double)FSPS ); + dLT += TEST_SAMPLES / (double)FSPS; + + + #define WATCHBIN -1 + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + sample_accumulator += samples[i]; + + time_accumulator += QUADRATURE_STEP_DENOMINATOR; + + while( 1 ) + { + int wtp = worktable[worktableplace]; + worktableplace = worktableplace + 1; + if( worktableplace >= worktablelen ) worktableplace = 0; + if( wtp == 255 ) break; + + // Event has occurred. + int binno = wtp; + + //int j; + //for( j = 0; j < OCTAVES*BPERO; j++ ) printf( "[%d %d]", next_heap_events[j*2+0], next_heap_events[j*2+1] ); + //printf( "\n" ); + + int qstate = quadrature_state[binno] = ( quadrature_state[binno] + 1 ) % 4; + + int last_q_bin = (binno * 2) + ( qstate & 1 ); + int delta; + if( !sineshape ) + { + delta = sample_accumulator - last_accumulated_value[last_q_bin]; + last_accumulated_value[last_q_bin] = sample_accumulator; + } + else + { + // TESTING: Sine Shape - this only integrates bumps for sin/cos + // instead of full triangle waves. + // Observation: For higher frequency bins, this seems to help + // a lot. + // side-benefit, this takes less RAM. + // BUT BUT! It messes with lower frequencies, making them uglier. + delta = sample_accumulator - last_accumulated_value[binno]; + last_accumulated_value[binno] = sample_accumulator; + delta *= 1.4; // Just to normalize the results of the test (not for production) + } + if( binno == WATCHBIN ) + printf( "Delta: %d\n", delta ); + + // Qstate = + // (0) = +Cos, (1) = +Sin, (2) = -Cos, (3) = -Sin + if( qstate & 2 ) delta *= -1; + + // Update real and imaginary components with delta. + int running = real_imaginary_running[last_q_bin]; + running = running - (running>>RUNNING_IIR) + delta; + real_imaginary_running[last_q_bin] = running; + + int q = ++qcount[binno]; + if( q == SAMPLE_Q ) // Effective Q factor. + { + qcount[binno] = 0; + int newmagR = real_imaginary_running[(binno * 2)]; + int newmagI = real_imaginary_running[(binno * 2)+1]; + + real_imaginary_running[(binno * 2)] = newmagR - (newmagR>>COMPLEX_IIR); + real_imaginary_running[(binno * 2)+1] = newmagI - (newmagI>>COMPLEX_IIR); + + // Super-cheap, non-multiply, approximate complex vector magnitude calculation. + newmagR = (newmagR<0)?-newmagR:newmagR; + newmagI = (newmagI<0)?-newmagI:newmagI; + int newmag = + //sqrt(newmagR*newmagR + newmagI*newmagI ); + newmagR > newmagI ? newmagR + (newmagI>>1) : newmagI + (newmagR>>1); + + int lastmag = magsum[binno]; + magsum[binno] = lastmag - (lastmag>>MAG_IIR) + newmag; + } + } + } + + int lx, ly; + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float real = real_imaginary_running[i*2+0]; + float imag = real_imaginary_running[i*2+1]; + float mag = sqrt( real * real + imag * imag ); + + mag = (float)magsum[i] * pow( 2, i / (double)BPERO ); + int y = 768 - ((int)(mag / FSPS * 10) >> MAG_IIR); + if( i ) CNFGTackSegment( i*4, y, lx*4, ly ); + lx = i; ly= y; + //printf( "%d %d\n", real_imaginary_running[i*2+0], real_imaginary_running[i*2+1] ); + } + + CNFGSwapBuffers(); + } +} + + + + + +void HandleKey( int keycode, int bDown ) { if( keycode == 'a' && bDown ) sineshape = !sineshape; } +void HandleButton( int x, int y, int button, int bDown ) { } +void HandleMotion( int x, int y, int mask ) { lastx = x; lasty = y; } +void HandleDestroy() { } + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ) +{ + #define SIXTH1 43 + #define SIXTH2 85 + #define SIXTH3 128 + #define SIXTH4 171 + #define SIXTH5 213 + + uint16_t or = 0, og = 0, ob = 0; + + hue -= SIXTH1; //Off by 60 degrees. + + //TODO: There are colors that overlap here, consider + //tweaking this to make the best use of the colorspace. + + if( hue < SIXTH1 ) //Ok: Yellow->Red. + { + or = 255; + og = 255 - ((uint16_t)hue * 255) / (SIXTH1); + } + else if( hue < SIXTH2 ) //Ok: Red->Purple + { + or = 255; + ob = (uint16_t)hue*255 / SIXTH1 - 255; + } + else if( hue < SIXTH3 ) //Ok: Purple->Blue + { + ob = 255; + or = ((SIXTH3-hue) * 255) / (SIXTH1); + } + else if( hue < SIXTH4 ) //Ok: Blue->Cyan + { + ob = 255; + og = (hue - SIXTH3)*255 / SIXTH1; + } + else if( hue < SIXTH5 ) //Ok: Cyan->Green. + { + og = 255; + ob = ((SIXTH5-hue)*255) / SIXTH1; + } + else //Green->Yellow + { + og = 255; + or = (hue - SIXTH5) * 255 / SIXTH1; + } + + uint16_t rv = val; + if( rv > 128 ) rv++; + uint16_t rs = sat; + if( rs > 128 ) rs++; + + //or, og, ob range from 0...255 now. + //Need to apply saturation and value. + + or = (or * val)>>8; + og = (og * val)>>8; + ob = (ob * val)>>8; + + //OR..OB == 0..65025 + or = or * rs + 255 * (256-rs); + og = og * rs + 255 * (256-rs); + ob = ob * rs + 255 * (256-rs); +//printf( "__%d %d %d =-> %d\n", or, og, ob, rs ); + + or >>= 8; + og >>= 8; + ob >>= 8; + + return or | (og<<8) | ((uint32_t)ob<<16); +} + From 95435d29180d2649eadf9918d73a5c18c94efd5c Mon Sep 17 00:00:00 2001 From: cnlohr Date: Fri, 20 Jan 2023 02:18:55 -0500 Subject: [PATCH 152/162] Add note about careful selection of samplerate --- attic/test_using_square_wave_octave_approach_stipple.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/attic/test_using_square_wave_octave_approach_stipple.c b/attic/test_using_square_wave_octave_approach_stipple.c index 777f613..469c4c0 100644 --- a/attic/test_using_square_wave_octave_approach_stipple.c +++ b/attic/test_using_square_wave_octave_approach_stipple.c @@ -52,7 +52,7 @@ int lasty = 1000; int main() { - #define FSPS 22100 + #define FSPS 22100 // Careful, this matters! It is selected to avoid periodic peaks encountered with DC offsets. #define OCTAVES 6 #define BPERO 24 #define BASE_FREQ 22.5 From 2630cd19ba4f427c1fa9dc2094dd3f4e68ab53ad Mon Sep 17 00:00:00 2001 From: cnlohr Date: Fri, 20 Jan 2023 02:35:01 -0500 Subject: [PATCH 153/162] Head to head comparison. --- .../test_using_square_wave_octave_approach_stipple.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/attic/test_using_square_wave_octave_approach_stipple.c b/attic/test_using_square_wave_octave_approach_stipple.c index 469c4c0..2e28952 100644 --- a/attic/test_using_square_wave_octave_approach_stipple.c +++ b/attic/test_using_square_wave_octave_approach_stipple.c @@ -174,13 +174,10 @@ int main() int ocative_time = octave_timing[octave] += QUADRATURE_STEP_DENOMINATOR; for( b = 0; b < BPERO; b++, binno++ ) { - if( binno == WATCHBIN ) - { - printf( "%d %d %d %6d %6d %6d\n", ocative_time, quadrature_timing_last[binno], quadrature_state[0], real_imaginary_running[0], real_imaginary_running[1], magsum[0] ); - } + ops+=5; if( ocative_time - quadrature_timing_last[binno] > 0 ) { - ops++; + ops+=20; quadrature_timing_last[binno] += flipdistance[b]; // This code will get appropriately executed every quadrature update. @@ -190,9 +187,6 @@ int main() int delta = sample_accumulator - last_accumulated_value[last_q_bin]; last_accumulated_value[last_q_bin] = sample_accumulator; - if( binno == WATCHBIN ) - printf( "Delta: %d\n", delta ); - // Qstate = // (0) = +Cos, (1) = +Sin, (2) = -Cos, (3) = -Sin if( qstate & 2 ) delta *= -1; @@ -205,6 +199,7 @@ int main() int q = ++qcount[binno]; if( q == SAMPLE_Q ) // Effective Q factor. { + ops+=20; qcount[binno] = 0; int newmagR = real_imaginary_running[(binno * 2)]; int newmagI = real_imaginary_running[(binno * 2)+1]; From 9984ec1e155e8ae43d089e0412a5812b0fa6d121 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Fri, 20 Jan 2023 03:13:34 -0500 Subject: [PATCH 154/162] Move really lowspec tests over. --- attic/{ => really_lowspec_basic_tests}/Makefile | 0 .../test_using_square_wave_octave_approach.c | 0 .../test_using_square_wave_octave_approach_stipple.c | 0 .../test_using_work_selection_heap.c | 0 .../test_using_work_selection_table.c | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename attic/{ => really_lowspec_basic_tests}/Makefile (100%) rename attic/{ => really_lowspec_basic_tests}/test_using_square_wave_octave_approach.c (100%) rename attic/{ => really_lowspec_basic_tests}/test_using_square_wave_octave_approach_stipple.c (100%) rename attic/{ => really_lowspec_basic_tests}/test_using_work_selection_heap.c (100%) rename attic/{ => really_lowspec_basic_tests}/test_using_work_selection_table.c (100%) diff --git a/attic/Makefile b/attic/really_lowspec_basic_tests/Makefile similarity index 100% rename from attic/Makefile rename to attic/really_lowspec_basic_tests/Makefile diff --git a/attic/test_using_square_wave_octave_approach.c b/attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach.c similarity index 100% rename from attic/test_using_square_wave_octave_approach.c rename to attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach.c diff --git a/attic/test_using_square_wave_octave_approach_stipple.c b/attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach_stipple.c similarity index 100% rename from attic/test_using_square_wave_octave_approach_stipple.c rename to attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach_stipple.c diff --git a/attic/test_using_work_selection_heap.c b/attic/really_lowspec_basic_tests/test_using_work_selection_heap.c similarity index 100% rename from attic/test_using_work_selection_heap.c rename to attic/really_lowspec_basic_tests/test_using_work_selection_heap.c diff --git a/attic/test_using_work_selection_table.c b/attic/really_lowspec_basic_tests/test_using_work_selection_table.c similarity index 100% rename from attic/test_using_work_selection_table.c rename to attic/really_lowspec_basic_tests/test_using_work_selection_table.c From 966fea175689401d50d6daf19da1bdb42d73f639 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Fri, 20 Jan 2023 04:46:34 -0500 Subject: [PATCH 155/162] lowspec phase 2: More of the CC algorithm. --- attic/lowspec_test_phase_2/Makefile | 14 + .../basic_oldstyle_test.c | 446 ++++++++++++++++++ ...sing_square_wave_octave_approach_stipple.c | 2 +- 3 files changed, 461 insertions(+), 1 deletion(-) create mode 100644 attic/lowspec_test_phase_2/Makefile create mode 100644 attic/lowspec_test_phase_2/basic_oldstyle_test.c diff --git a/attic/lowspec_test_phase_2/Makefile b/attic/lowspec_test_phase_2/Makefile new file mode 100644 index 0000000..7f423a3 --- /dev/null +++ b/attic/lowspec_test_phase_2/Makefile @@ -0,0 +1,14 @@ +PROJS:=basic_oldstyle_test + +all : $(PROJS) + +CFLAGS:=-I../../colorchord2/rawdraw -g +LDFLAGS:=-lGL -lm -lpthread -lX11 + +$(PROJS): %: %.c + gcc -o $@ $^ $(CFLAGS) $(LDFLAGS) + +clean : + rm -rf $(PROJS) + + diff --git a/attic/lowspec_test_phase_2/basic_oldstyle_test.c b/attic/lowspec_test_phase_2/basic_oldstyle_test.c new file mode 100644 index 0000000..7c6051d --- /dev/null +++ b/attic/lowspec_test_phase_2/basic_oldstyle_test.c @@ -0,0 +1,446 @@ +/* + An experiment in very, very low-spec ColorChord. This technique foregoes + multiplies. + + Approach 1: + + This approach uses a table, like several colorchord algorithms to only + process one octave each cycle. It then uses a table to decide how often + to process each bin. It performs that bin at 4x the bin's sampling + frequency, in quadrature. So that it performs the +real, +imag, -real, + -imag operations over each cycle. + + You can observe an overtone at the current bin - 1.5 octaves! This is + expected, since, it's the inverse of what the DFT of a square wave would + be. + + That is a minor drawback, but the **major** drawback is that any DC + offset, OR lower frequencies present when computing higher frequencies will + induce a significant ground flutter, and make results really inaccurate. + + This will need to be addressed before the algorithm is ready for prime-time. + + NOTE: To explore: + 1) Consider SAMPLE_Q to possibly use all 4 cycles - though this will + add latency, it will be more "accurate" --> YES! This helps! + 2) Use the cursor to move left and right to sweep tone and up and down + to change DC-bias. This exhibits this algo's shortcoming. + TODO: Can we somehow zero out the DC offset? + + + DISCOVERY: This approach (octave-step in octave) is very sensitive FSPS + + Theories: + * If we force all 4 quadrature value to be the same number of + integration cycles, does that solve it? --> NO! IT GETS MESSY (see Approach 1B) +*/ + +#include +#include + +#define CNFG_IMPLEMENTATION +#define CNFGOGL +#include "rawdraw_sf.h" + +#include "os_generic.h" + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ); +int binmode = 0; +int additionaltone = 0; +int lastx = 200; +int lasty = 1000; + +// Keep notimes as small as possible +static int timul( int adder, int notimes ) +{ + int sum = 0; + while( notimes ) + { + if ( notimes & 1) sum += adder; + adder <<= 1; + notimes >>= 1; + } + return sum; +} + +int main() +{ + #define FSPS 22100 // Careful, this matters! It is selected to avoid periodic peaks encountered with DC offsets. + #define OCTAVES 6 + #define BPERO 32 + #define BASE_FREQ 22.5 + #define QUADRATURE_STEP_DENOMINATOR 16384 + + // This ultimately determines smoothness + q. + #define COMPLEX_IIR 3 + + #define TEST_SAMPLES 1024 + + + int16_t samples[TEST_SAMPLES]; + int i; + + + CNFGSetup( "Example App", 1024, 768 ); + + // Precomputed Tables + int8_t whichoctave[2< 2048, then perform a quadrature step. + int32_t flipdistance[BPERO]; + for( i = 0; i < BPERO; i++ ) + { + double freq = pow( 2, (double)i / (double)BPERO ) * (BASE_FREQ/2.0); + double pfreq = pow( 2, OCTAVES ) * freq; + double spacing = (FSPS / 2) / pfreq / 4; + + flipdistance[i] = QUADRATURE_STEP_DENOMINATOR * spacing; + // Spacing = "quadrature every X samples" + //printf( "%f %d\n", spacing, flipdistance[i] ); + } + + + struct bindata + { + int32_t quadrature_timing_last; + uint32_t last_accumulated_value[2]; + int32_t real_imaginary_running[2]; + uint32_t magsum; + uint8_t quadrature_state; + uint8_t reserved1, reserved2, reserved3; + } bins[BPERO*OCTAVES] = { 0 }; + // This is for timing. Not accumulated data. + + uint32_t octave_timing[OCTAVES] = { 0 }; + + uint32_t sample_accumulator = 0; + + int frameno = 0; + double dLT = OGGetAbsoluteTime(); + int samplenoIn = 0; + int sampleno = 0; + double ToneOmega = 0; + double ToneOmega2 = 0; + int ops; + while( CNFGHandleInput() ) + { + short w, h; + CNFGGetDimensions( &w, &h ); + CNFGClearFrame(); + + frameno++; + float freq = + //pow( 2, (frameno%600)/100.0 ) * 25; + pow( 2, (lastx)/100.0 ) * 22.5; + //101; + float freq2 = + //pow( 2, (frameno%600)/100.0 ) * 25; + pow( 2, (200)/100.0 ) * 22.5; + //101; + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + samples[i] = lasty/5 + sin( ToneOmega ) * 127 + (additionaltone?(sin(ToneOmega2)*128):0);// + (rand()%128)-64; + ToneOmega += 1 / (double)FSPS * (double)freq * 3.14159 * 2.0; + ToneOmega2 += 1 / (double)FSPS * (double)freq2 * 3.14159 * 2.0; + } + char cts[1024]; + sprintf( cts, "%f %d %f binmode: %d", freq, sampleno, ops/(double)sampleno, binmode ); + CNFGColor( 0xffffffff ); + CNFGPenX = 2; + CNFGPenY = 2; + CNFGDrawText( cts, 2 ); + + while( OGGetAbsoluteTime() < dLT + TEST_SAMPLES / (double)FSPS ); + dLT += TEST_SAMPLES / (double)FSPS; + + + for( i = 0; i < TEST_SAMPLES; i++ ) + { + sample_accumulator += samples[i]; + int octave = whichoctave[(sampleno)&((2<quadrature_timing_last > 0 ) + { + ops+=20; + thisbin->quadrature_timing_last += flipdistance[b]; + + // This code will get appropriately executed every quadrature update. + + int qstate = thisbin->quadrature_state = ( thisbin->quadrature_state + 1 ) % 4; + + int last_q_bin = ( qstate & 1 ); + + //int delta = sample_accumulator - last_accumulated_value[binmode?(binno*2):last_q_bin]; + //last_accumulated_value[binmode?(binno*2):last_q_bin] = sample_accumulator * (binmode?1.8:1.0); + + int delta = sample_accumulator - thisbin->last_accumulated_value[last_q_bin]; + thisbin->last_accumulated_value[last_q_bin] = sample_accumulator; + + // Qstate = + // (0) = +Cos, (1) = +Sin, (2) = -Cos, (3) = -Sin + if( qstate & 2 ) delta *= -1; + + // Update real and imaginary components with delta. + int running = thisbin->real_imaginary_running[last_q_bin]; + running = running + delta; + thisbin->real_imaginary_running[last_q_bin] = running; + + if( qstate == 0 ) + { + ops+=20; + int newmagR = thisbin->real_imaginary_running[0]; + int newmagI = thisbin->real_imaginary_running[1]; + + thisbin->real_imaginary_running[0] = newmagR - (newmagR>>COMPLEX_IIR); + thisbin->real_imaginary_running[1] = newmagI - (newmagI>>COMPLEX_IIR); + + // Super-cheap, non-multiply, approximate complex vector magnitude calculation. + newmagR = (newmagR<0)?-newmagR:newmagR; + newmagI = (newmagI<0)?-newmagI:newmagI; + int newmag = + //sqrt(newmagR*newmagR + newmagI*newmagI ); + newmagR > newmagI ? newmagR + (newmagI>>1) : newmagI + (newmagR>>1); + thisbin->magsum = newmag >> (OCTAVES-octave); + } + } + } + } + + int folded_bins[BPERO]; + + // Taper and fold (happens when we want to update lights) + for( i = 0; i < BPERO; i++ ) + { + int b = i; + int running; + running = bins[b].magsum * i / BPERO; + b+=BPERO; + int j; + for( j = 1; j < OCTAVES-1; j++ ) + { + running += bins[b].magsum; + b+=BPERO; + } + running += bins[b].magsum * ( BPERO - i ) / BPERO; + folded_bins[i] = running * pow( 2, (i%BPERO) / (double)BPERO ); //XXX TODO: Make this fixed. + } + + int lx, ly; +#if 0 + // Boxcar filter + int fuzzed_bins[BPERO]; + int fuzzed_bins2[BPERO]; + + // Taper and fold (happens when we want to update lights) + for( i = 0; i < BPERO; i++ ) + { + fuzzed_bins[i] = (folded_bins[i] + (folded_bins[(i+1)%BPERO]>>0) + (folded_bins[(i+BPERO-1)%BPERO]>>0))>>1; + } + + // Taper and fold (happens when we want to update lights) + for( i = 0; i < BPERO; i++ ) + { + fuzzed_bins2[i] = (fuzzed_bins[i] + (folded_bins[(i+1)%BPERO]>>0) + (fuzzed_bins[(i+BPERO-1)%BPERO]>>0))>>1; + } + + // Filter agian. + for( i = 0; i < BPERO; i++ ) + { + fuzzed_bins[i] = (fuzzed_bins2[i] + (fuzzed_bins2[(i+1)%BPERO]>>0) + (fuzzed_bins2[(i+BPERO-1)%BPERO]>>0))>>1; + } + + // Taper and fold (happens when we want to update lights) + for( i = 0; i < BPERO; i++ ) + { + fuzzed_bins2[i] = (fuzzed_bins[i] + (folded_bins[(i+1)%BPERO]>>0) + (fuzzed_bins[(i+BPERO-1)%BPERO]>>0))>>1; + + fuzzed_bins2[i] = fuzzed_bins2[i]>>1; + } + +#else + int fuzzed_bins2[BPERO]; + int fziir = folded_bins[i]; + // Forward IIR + int j; + + #define FUZZ_IIR 2 + for( j = 0; j < 4; j++ ) + for( i = 0; i < BPERO; i++ ) + { + // Initiate IIR + fziir = fziir - (fziir>>FUZZ_IIR) + folded_bins[i]; + } + for( i = 0; i < BPERO; i++ ) + { + fziir = fziir - (fziir>>FUZZ_IIR) + folded_bins[i];; + fuzzed_bins2[i] = fziir; + } + + // reverse IIR. + for( j = 0; j < 4; j++ ) + for( i = BPERO-1; i >= 0; i-- ) + { + // Initiate IIR + fziir = fziir - (fziir>>FUZZ_IIR) + fuzzed_bins2[i]; + } + for( i = BPERO-1; i >= 0; i-- ) + { + fziir = fziir - (fziir>>FUZZ_IIR) + fuzzed_bins2[i]; + fuzzed_bins2[i] = fziir; + } + + int minfuzz = fziir; + for( i = 0; i < BPERO; i++ ) + { + if( minfuzz > fuzzed_bins2[i] ) minfuzz = fuzzed_bins2[i]; + } + for( i = 0; i < BPERO; i++ ) + { + fuzzed_bins2[i] = ( fuzzed_bins2[i] - minfuzz ) >> FUZZ_IIR; + } +#endif + for( i = 0; i < BPERO*OCTAVES; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float mag = (float)bins[i].magsum * pow( 2, (i%BPERO) / (double)BPERO ); + int y = 768 - mag/20; + if( i ) CNFGTackSegment( i*4, y, lx*4, ly ); + lx = i; ly= y; + } + + + for( i = 0; i < BPERO*2; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float mag = (float)folded_bins[i%BPERO]; + int y = 400 - mag/100; + if( i ) CNFGTackSegment( i*8, y, lx*8, ly ); + lx = i; ly= y; + } + + for( i = 0; i < BPERO*2; i++ ) + { + CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); + float mag = (float)fuzzed_bins2[i%BPERO]; + int y = 500 - mag/100; + if( i ) CNFGTackSegment( i*8, y, lx*8, ly ); + lx = i; ly= y; + } + + + // Fol + + + CNFGSwapBuffers(); + } +} + + + + + +void HandleKey( int keycode, int bDown ) { if( bDown ) { if( keycode == 'a' ) binmode =!binmode; if( keycode == 'b' ) additionaltone = ! additionaltone; } } +void HandleButton( int x, int y, int button, int bDown ) { } +void HandleMotion( int x, int y, int mask ) { lastx = x; lasty = y; } +void HandleDestroy() { } + + +uint32_t EHSVtoHEX( uint8_t hue, uint8_t sat, uint8_t val ) +{ + #define SIXTH1 43 + #define SIXTH2 85 + #define SIXTH3 128 + #define SIXTH4 171 + #define SIXTH5 213 + + uint16_t or = 0, og = 0, ob = 0; + + hue -= SIXTH1; //Off by 60 degrees. + + //TODO: There are colors that overlap here, consider + //tweaking this to make the best use of the colorspace. + + if( hue < SIXTH1 ) //Ok: Yellow->Red. + { + or = 255; + og = 255 - ((uint16_t)hue * 255) / (SIXTH1); + } + else if( hue < SIXTH2 ) //Ok: Red->Purple + { + or = 255; + ob = (uint16_t)hue*255 / SIXTH1 - 255; + } + else if( hue < SIXTH3 ) //Ok: Purple->Blue + { + ob = 255; + or = ((SIXTH3-hue) * 255) / (SIXTH1); + } + else if( hue < SIXTH4 ) //Ok: Blue->Cyan + { + ob = 255; + og = (hue - SIXTH3)*255 / SIXTH1; + } + else if( hue < SIXTH5 ) //Ok: Cyan->Green. + { + og = 255; + ob = ((SIXTH5-hue)*255) / SIXTH1; + } + else //Green->Yellow + { + og = 255; + or = (hue - SIXTH5) * 255 / SIXTH1; + } + + uint16_t rv = val; + if( rv > 128 ) rv++; + uint16_t rs = sat; + if( rs > 128 ) rs++; + + //or, og, ob range from 0...255 now. + //Need to apply saturation and value. + + or = (or * val)>>8; + og = (og * val)>>8; + ob = (ob * val)>>8; + + //OR..OB == 0..65025 + or = or * rs + 255 * (256-rs); + og = og * rs + 255 * (256-rs); + ob = ob * rs + 255 * (256-rs); +//printf( "__%d %d %d =-> %d\n", or, og, ob, rs ); + + or >>= 8; + og >>= 8; + ob >>= 8; + + return or | (og<<8) | ((uint32_t)ob<<16); +} + diff --git a/attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach_stipple.c b/attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach_stipple.c index 2e28952..f58329b 100644 --- a/attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach_stipple.c +++ b/attic/really_lowspec_basic_tests/test_using_square_wave_octave_approach_stipple.c @@ -164,7 +164,7 @@ int main() sampleno++; if( octave < 0 ) { - // A "free cycle" this happens every 1/2^octaves + // A "free cycle" this happens every 1/(2^octaves) continue; } From 138001ac4be5cfa5a79329cec10652b550bb256e Mon Sep 17 00:00:00 2001 From: cnlohr Date: Fri, 20 Jan 2023 04:55:33 -0500 Subject: [PATCH 156/162] A few tweaks. --- .../basic_oldstyle_test.c | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/attic/lowspec_test_phase_2/basic_oldstyle_test.c b/attic/lowspec_test_phase_2/basic_oldstyle_test.c index 7c6051d..f7969d9 100644 --- a/attic/lowspec_test_phase_2/basic_oldstyle_test.c +++ b/attic/lowspec_test_phase_2/basic_oldstyle_test.c @@ -148,7 +148,7 @@ int main() //101; float freq2 = //pow( 2, (frameno%600)/100.0 ) * 25; - pow( 2, (200)/100.0 ) * 22.5; + pow( 2, (500)/100.0 ) * 22.5; //101; for( i = 0; i < TEST_SAMPLES; i++ ) @@ -198,12 +198,20 @@ int main() int last_q_bin = ( qstate & 1 ); - //int delta = sample_accumulator - last_accumulated_value[binmode?(binno*2):last_q_bin]; - //last_accumulated_value[binmode?(binno*2):last_q_bin] = sample_accumulator * (binmode?1.8:1.0); + int delta; + if( binmode ) + { + delta = sample_accumulator - thisbin->last_accumulated_value[0]; + thisbin->last_accumulated_value[0] = sample_accumulator; + delta *= 1.5; + } + else + { + delta = sample_accumulator - thisbin->last_accumulated_value[last_q_bin]; + thisbin->last_accumulated_value[last_q_bin] = sample_accumulator; + } - int delta = sample_accumulator - thisbin->last_accumulated_value[last_q_bin]; - thisbin->last_accumulated_value[last_q_bin] = sample_accumulator; - + // Qstate = // (0) = +Cos, (1) = +Sin, (2) = -Cos, (3) = -Sin if( qstate & 2 ) delta *= -1; From bf21e3bc675ef8fa0e433584192f0df0a21e2a94 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 23 Jan 2023 00:53:21 -0500 Subject: [PATCH 157/162] Fix overflows. --- attic/lowspec_test_phase_2/basic_oldstyle_test.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/attic/lowspec_test_phase_2/basic_oldstyle_test.c b/attic/lowspec_test_phase_2/basic_oldstyle_test.c index f7969d9..acaf9ee 100644 --- a/attic/lowspec_test_phase_2/basic_oldstyle_test.c +++ b/attic/lowspec_test_phase_2/basic_oldstyle_test.c @@ -153,7 +153,7 @@ int main() for( i = 0; i < TEST_SAMPLES; i++ ) { - samples[i] = lasty/5 + sin( ToneOmega ) * 127 + (additionaltone?(sin(ToneOmega2)*128):0);// + (rand()%128)-64; + samples[i] = (lasty/5 + sin( ToneOmega ) * 127 + (additionaltone?(sin(ToneOmega2)*128):0))/2;// + (rand()%128)-64; ToneOmega += 1 / (double)FSPS * (double)freq * 3.14159 * 2.0; ToneOmega2 += 1 / (double)FSPS * (double)freq2 * 3.14159 * 2.0; } @@ -220,7 +220,8 @@ int main() int running = thisbin->real_imaginary_running[last_q_bin]; running = running + delta; thisbin->real_imaginary_running[last_q_bin] = running; - + + // Only perform on full quadrature completions. if( qstate == 0 ) { ops+=20; @@ -349,7 +350,7 @@ int main() { CNFGColor( (EHSVtoHEX( (i * 256 / BPERO)&0xff, 255, 255 ) << 8) | 0xff ); float mag = (float)folded_bins[i%BPERO]; - int y = 400 - mag/100; + int y = 600 - mag/100; if( i ) CNFGTackSegment( i*8, y, lx*8, ly ); lx = i; ly= y; } @@ -363,9 +364,6 @@ int main() lx = i; ly= y; } - - // Fol - CNFGSwapBuffers(); } From 237d0534fa9cff92ba9ae4678555a7921037978e Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sat, 29 Jul 2023 13:40:58 -0400 Subject: [PATCH 158/162] Update clang to not require Windows SDK. --- colorchord2/windows/compile-clang.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/windows/compile-clang.bat b/colorchord2/windows/compile-clang.bat index 1afaba0..d968494 100644 --- a/colorchord2/windows/compile-clang.bat +++ b/colorchord2/windows/compile-clang.bat @@ -1,7 +1,7 @@ @echo off set CC="C:\Program Files\LLVM\bin\clang.exe" rem To enable OpenGL rendering use the -DCNFGOGL option -set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -DCNFGOGL +set CCFLAGS=-g -D_CRT_SECURE_NO_WARNINGS -DCNFGOGL -DNO_WIN_HEADERS set CCIFLAGS=-I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O2 set CCLFLAGS=-lwinmm -lgdi32 -lws2_32 -lsetupapi -lkernel32 -luser32 -ldbghelp -lole32 -lmmdevapi -lAvrt -lopengl32 set SOURCES=..\main.c ..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\filter.c ^ From f9129b395771dc375cf14fd6548e64bf24756b48 Mon Sep 17 00:00:00 2001 From: fruchti Date: Sat, 30 Jun 2018 16:48:00 +0200 Subject: [PATCH 159/162] Add LED matrix control through USB iso transfers --- colorchord2/DisplayUSBIsochronous.c | 197 ++++++++++++++++++++++++++++ colorchord2/Makefile | 2 +- colorchord2/iso.conf | 108 +++++++++++++++ 3 files changed, 306 insertions(+), 1 deletion(-) create mode 100644 colorchord2/DisplayUSBIsochronous.c create mode 100644 colorchord2/iso.conf diff --git a/colorchord2/DisplayUSBIsochronous.c b/colorchord2/DisplayUSBIsochronous.c new file mode 100644 index 0000000..e20d42c --- /dev/null +++ b/colorchord2/DisplayUSBIsochronous.c @@ -0,0 +1,197 @@ +//Copyright 2015 <>< Charles Lohr under the ColorChord License. + +#include "outdrivers.h" +#include "notefinder.h" +#include +#include +#include "parameters.h" +#include +#include +#include "color.h" +#include +#include + +struct LEDOutDriver +{ + struct libusb_device_handle *devh; + int did_init; + int zigzag; + int total_leds; + int array; + float outamp; + uint8_t * last_leds; + volatile int readyFlag; + volatile int transferring; + int xn; + int yn; + int rot90; +}; + +static void isocb(struct libusb_transfer *tf) +{ + struct LEDOutDriver *led = (struct LEDOutDriver*)tf->user_data; + led->transferring = 0; +} + +static void * LEDOutThread( void * v ) +{ + struct LEDOutDriver * led = (struct LEDOutDriver*)v; + + while(1) + { + while(!led->readyFlag || !led->did_init || !led->devh) usleep(100); + + int transfers = ((led->total_leds + 19) / 20); + int totallength = transfers * 64; + + struct libusb_transfer *tf = libusb_alloc_transfer(transfers); + + tf->dev_handle = led->devh; + tf->flags = LIBUSB_TRANSFER_FREE_TRANSFER; + tf->type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS; + tf->num_iso_packets = transfers; + libusb_set_iso_packet_lengths(tf, 64); + tf->endpoint = 1; + tf->flags = 0; + tf->buffer = led->last_leds; + tf->callback = isocb; + tf->length = totallength; + tf->user_data = led; + + if(libusb_submit_transfer(tf)) + { + led->did_init = 0; + printf( "Fault sending LEDs.\n" ); + } + led->transferring = 1; + + while(led->transferring) + { + libusb_handle_events(NULL); + } + led->readyFlag = 0; + } + + return 0; +} + +static void LEDUpdate(void * id, struct NoteFinder*nf) +{ + int i; + struct LEDOutDriver * led = (struct LEDOutDriver*)id; + + if( !led->did_init ) + { + led->did_init = 1; + if( libusb_init(NULL) < 0 ) + { + fprintf( stderr, "Error: Could not initialize libUSB\n" ); +// exit( -99 ); + } + + led->devh = libusb_open_device_with_vid_pid( NULL, 0x16c0, 0x05dc ); + + if( !led->devh ) + { + fprintf( stderr, "Error: Cannot find device.\n" ); +// exit( -98 ); + } + } + + while( led->readyFlag ) usleep(100); + + //Advance the LEDs to this position when outputting the values. + for( i = 0; i < led->total_leds; i++ ) + { + int source = i; + if( !led->array ) + { + int sx, sy; + if( led->rot90 ) + { + sy = i % led->yn; + sx = i / led->yn; + } + else + { + sx = i % led->xn; + sy = i / led->xn; + } + + if( led->zigzag ) + { + if( led->rot90 ) + { + if( sx & 1 ) + { + sy = led->yn - sy - 1; + } + } + else + { + if( sy & 1 ) + { + sx = led->xn - sx - 1; + } + } + } + + if( led->rot90 ) + { + source = sx + sy * led->xn; + } + else + { + source = sx + sy * led->yn; + } + } + + led->last_leds[i*3+0 + (i / 20 + 1) * 4] = OutLEDs[source*3+1] * led->outamp; + led->last_leds[i*3+1 + (i / 20 + 1) * 4] = OutLEDs[source*3+0] * led->outamp; + led->last_leds[i*3+2 + (i / 20 + 1) * 4] = OutLEDs[source*3+2] * led->outamp; + if(i % 20 == 0) + { + led->last_leds[(i / 20) * 64 + 0] = i; + led->last_leds[(i / 20) * 64 + 1] = i >> 8; + led->last_leds[(i / 20) * 64 + 2] = i >> 16; + led->last_leds[(i / 20) * 64 + 3] = i >> 24; + } + } + + led->readyFlag = 1; +} + +static void LEDParams(void * id ) +{ + struct LEDOutDriver * led = (struct LEDOutDriver*)id; + + led->total_leds = GetParameterI( "leds", 300 ); + led->last_leds = (uint8_t*)malloc( led->total_leds * 3 + 1 + ((led->total_leds + 19) / 20) * 4 + 64); + led->outamp = .1; RegisterValue( "ledoutamp", PAFLOAT, &led->outamp, sizeof( led->outamp ) ); + led->zigzag = 0; RegisterValue( "zigzag", PAINT, &led->zigzag, sizeof( led->zigzag ) ); + led->xn = 16; RegisterValue( "lightx", PAINT, &led->xn, sizeof( led->xn ) ); + led->yn = 9; RegisterValue( "lighty", PAINT, &led->yn, sizeof( led->yn ) ); + led->rot90 = 0; RegisterValue( "rot90", PAINT, &led->rot90, sizeof( led->rot90 ) ); + led->array = 0; RegisterValue( "ledarray", PAINT, &led->array, sizeof( led->array ) ); + + led->did_init = 0; +} + + +static struct DriverInstances * DisplayUSBIsochronous() +{ + struct DriverInstances * ret = malloc( sizeof( struct DriverInstances ) ); + memset( ret, 0, sizeof( struct DriverInstances ) ); + struct LEDOutDriver * led = ret->id = malloc( sizeof( struct LEDOutDriver ) ); + ret->Func = LEDUpdate; + ret->Params = LEDParams; + OGCreateThread( LEDOutThread, led ); + led->readyFlag = 0; + LEDParams( led ); + return ret; + +} + +REGISTER_OUT_DRIVER(DisplayUSBIsochronous); + + diff --git a/colorchord2/Makefile b/colorchord2/Makefile index d2f3487..806c780 100644 --- a/colorchord2/Makefile +++ b/colorchord2/Makefile @@ -1,6 +1,6 @@ all : colorchord colorchord-opengl -OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o DisplayRadialPoles.o +OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayUSBIsochronous.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o DisplayRadialPoles.o WINGCC?=i686-w64-mingw32-gcc diff --git a/colorchord2/iso.conf b/colorchord2/iso.conf new file mode 100644 index 0000000..57f33a5 --- /dev/null +++ b/colorchord2/iso.conf @@ -0,0 +1,108 @@ +# This is the configuration file for colorchord. +# Most values are already defaulted in the software. +# This file is constantly checked for new versions. +# \r, and ; are used as terminators, so you can put +# multiple entries on the same line. + +#Whether to limit the control loop to ~60ish FPS. +cpu_autolimit = 1 + +#General GUI properties. +title = PA Test +#set_screenx = 720 +#set_screeny = 480 + +#Sound properties. +buffer = 384 +play = 0 +rec = 1 +channels = 2 +samplerate = 44100 +wininput = 1 + +#Compiled version will default this. +#sound_source = ALSA +#-1 indicates left and right, 0 left, 1 right. + +sample_channel = -1 +sourcename = alsa_output.pci-0000_00_1b.0.analog-stereo.monitor +#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor +#default +# alsa_output.pci-0000_00_1b.0.analog-stereo.monitor +#alsa_output.pci-0000_00_1f.3.analog-stereo.monitor << New laptop +#use pactl list | grep pci- | grep monitor + +################################## +# General ColorChord properties. # +################################## + +# How much to amplify the incoming signal. +amplify = 5 + +# What is the base note? I.e. the lowest note. +# Note that it won't have very much impact until an octave up though! +base_hz = 55 + +# This is only used when dealing with the slow decompose (now defunct) +# decompose_iterations = 1000 +# default_sigma = 1.4000 + +# DFT properties for the DFT up top. +dft_iir = 0.6 +dft_q = 20.0000 +dft_speedup = 1000.0000 +octaves = 5 + +# Should we use a progressive DFT? +# 0 = DFT Quick +# 1 = DFT Progressive +# 2 = DFT Progressive Integer +# 3 = DFT Progressive Integer Skippy +# 4 = Integer, 32-Bit, Progressive, Skippy. +do_progressive_dft = 4fa + + +filter_iter = 2 +filter_strength = .5 + +# How many bins per octave to use? +freqbins = 24 + +# For the final note information... How much to slack everything? +note_attach_amp_iir = 0.3500 +note_attach_amp_iir2 = 0.250 +note_attach_freq_iir = 0.3000 + +#How many bins a note can jump from frame to frame to be considered a slide. +#this is used to prevent notes from popping in and out a lot. +note_combine_distance = 0.5000 +note_jumpability = 1.8000 +note_minimum_new_distribution_value = 0.0200 +note_out_chop = 0.05000 + +#compress_coefficient = 4.0 +#compress_exponent = .5 + + +#======================================================================= +#Outputs + + +outdrivers = DisplayUSBIsochronous, OutputVoronoi, DisplayArray + +leds = 484 +lightx = 11 +lighty = 44 +fromsides = 1 +shape_cutoff = 0.03 +satamp = 2.000 +amppow = 2.5 +distpow = 1.500 +zigzag = 1 +rot90 = 1 +ledoutamp = .01 + +note_attach_amp_iir = .3000 +note_attach_amp_iir2 = .1500 +note_attach_freq_iir = 0.3000 +steady_bright = 0 From 7a8d24c872388b12b5d26a847eaf195fb34eb8fb Mon Sep 17 00:00:00 2001 From: fruchti Date: Tue, 4 Jun 2024 19:52:30 +0200 Subject: [PATCH 160/162] Add nix shell --- colorchord2/shell.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 colorchord2/shell.nix diff --git a/colorchord2/shell.nix b/colorchord2/shell.nix new file mode 100644 index 0000000..2e345ef --- /dev/null +++ b/colorchord2/shell.nix @@ -0,0 +1,19 @@ +{ pkgs ? import {} }: +let + localAdjustments = if (builtins.pathExists ./.local.shell.nix) then import ./.local.shell.nix pkgs else (x: x); +in +pkgs.mkShell (localAdjustments { + nativeBuildInputs = with pkgs; [ + gnumake + gcc + glib + libpulseaudio + alsa-lib + xorg.libX11 + xorg.libXext + xorg.libXinerama + libusb1 + udev + pkg-config + ]; +}) From a9baea6e4d2f776436dc4c053898b1d8dbac30b6 Mon Sep 17 00:00:00 2001 From: fruchti Date: Tue, 4 Jun 2024 19:52:47 +0200 Subject: [PATCH 161/162] Fix libusb header paths --- colorchord2/DisplayDMX.c | 4 ++-- colorchord2/DisplayUSB2812.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/colorchord2/DisplayDMX.c b/colorchord2/DisplayDMX.c index f287b16..664316b 100644 --- a/colorchord2/DisplayDMX.c +++ b/colorchord2/DisplayDMX.c @@ -11,7 +11,7 @@ #include #include "parameters.h" #include -#include +#include #include "color.h" #include #include @@ -128,4 +128,4 @@ static struct DriverInstances * DisplayDMX() } REGISTER_OUT_DRIVER(DisplayDMX); -#endif \ No newline at end of file +#endif diff --git a/colorchord2/DisplayUSB2812.c b/colorchord2/DisplayUSB2812.c index 78be9bd..51c602f 100644 --- a/colorchord2/DisplayUSB2812.c +++ b/colorchord2/DisplayUSB2812.c @@ -11,7 +11,7 @@ #include #include "parameters.h" #include -#include +#include #include "color.h" #include #include From 6b601173569c47508c8ac64932634913e6e32822 Mon Sep 17 00:00:00 2001 From: fruchti Date: Tue, 4 Jun 2024 21:47:47 +0200 Subject: [PATCH 162/162] Add GLUT to nix shell --- colorchord2/shell.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/colorchord2/shell.nix b/colorchord2/shell.nix index 2e345ef..2cb0e5e 100644 --- a/colorchord2/shell.nix +++ b/colorchord2/shell.nix @@ -14,6 +14,7 @@ pkgs.mkShell (localAdjustments { xorg.libXinerama libusb1 udev + freeglut pkg-config ]; })

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 diff --git a/colorchord2/configs.c b/colorchord2/configs.c index db3b1c2..b7c87a8 100644 --- a/colorchord2/configs.c +++ b/colorchord2/configs.c @@ -96,8 +96,8 @@ void SetEnvValues( int force ) SetParametersFromString( "outdrivers=OutputVoronoi,DisplayArray" ); SetParametersFromString( "note_attach_amp_iir2=0.250" ); - SetParametersFromString( "lightx=64" ); - SetParametersFromString( "lighty=32" ); + SetParametersFromString( "lightx=32" ); + SetParametersFromString( "lighty=60" ); SetParametersFromString( "fromsides=1" ); SetParametersFromString( "shape_cutoff=0.03" ); @@ -105,7 +105,9 @@ void SetEnvValues( int force ) SetParametersFromString( "amppow=2.510" ); SetParametersFromString( "distpow=1.500" ); -#else + printf( "On Android, looking for configuration file in: %s\n", InitialFile[0] ); +#endif + LoadFile( InitialFile[0] ); for( i = 1; i < gargc; i++ ) @@ -121,7 +123,6 @@ void SetEnvValues( int force ) LoadFile( gargv[i] ); } } -#endif } void ProcessArgs() @@ -145,9 +146,11 @@ void ProcessArgs() void SetupConfigs() { - +#ifdef ANDROID + InitialFile[0] = "/sdcard/colorchord-android.conf"; +#else InitialFile[0] = "default.conf"; +#endif ProcessArgs(); - } diff --git a/colorchord2/main.c b/colorchord2/main.c index e7aab7c..9e3668f 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -41,14 +41,23 @@ struct CNFADriver * sd; #include #include #include + static int pfd[2]; static pthread_t loggingThread; static const char *LOG_TAG = "colorchord"; + +char genlog[16384] = "log"; +char * genlogptr; + static void *loggingFunction(void*v) { ssize_t readSize; - char buf[128]; + char buf[1024]; + static og_mutex_t m; + if( !m ) m = OGCreateMutex(); + while((readSize = read(pfd[0], buf, sizeof buf - 1)) > 0) { + OGLockMutex( m ); if(buf[readSize - 1] == '\n') { --readSize; } @@ -56,6 +65,45 @@ static void *loggingFunction(void*v) { buf[readSize] = 0; // add null-terminator __android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, buf); // Set any log level you want + if( genlogptr == 0 ) genlogptr = genlog; + int genlogbuffer = genlogptr - genlog; + if( genlogbuffer + readSize + 1 < sizeof( genlog ) ) + { + memcpy( genlogptr, buf, readSize ); + genlogptr += readSize; + *genlogptr = '\n'; + genlogptr++; + *genlogptr = 0; + } + + //Scroll lines. + + #define KEEPLINES 80 + int lineplaces[KEEPLINES]; + int newlinect = 0; + genlogbuffer = genlogptr - genlog; + int i; + for( i = 0; i < genlogbuffer; i++ ) + { + if( genlog[i] == '\n' ) + { + lineplaces[newlinect%KEEPLINES] = i; + newlinect++; + } + } + + + if( newlinect >= KEEPLINES ) + { + int placemark = lineplaces[(newlinect+1)%KEEPLINES]; + for( i = placemark; i <= genlogbuffer; i++ ) + { + genlog[i-placemark] = genlog[i]; + } + genlogptr -= placemark; + } + + OGUnlockMutex( m ); } return 0; @@ -97,8 +145,14 @@ char sound_source[16]; REGISTER_PARAM( sound_source, PABUFFER ); int cpu_autolimit = 1; REGISTER_PARAM( cpu_autolimit, PAINT ); float cpu_autolimit_interval = 0.016; REGISTER_PARAM( cpu_autolimit_interval, PAFLOAT ); int sample_channel = -1;REGISTER_PARAM( sample_channel, PAINT ); -int showfps = 0; REGISTER_PARAM( showfps, PAINT ); -float in_amplitude = 1; REGISTER_PARAM( in_amplitude, PAFLOAT ); +int showfps = 1; REGISTER_PARAM( showfps, PAINT ); + +#if defined(ANDROID) || defined( __android__ ) +float in_amplitude = 2; +#else +float in_amplitude = 1; +#endif +REGISTER_PARAM( in_amplitude, PAFLOAT ); struct NoteFinder * nf; @@ -115,14 +169,19 @@ int show_debug_basic = 1; int gKey = 0; extern int force_white; +void RecalcBaseHz() +{ + nf->base_hz = 55 * pow( 2, gKey / 12.0 ); ChangeNFParameters( nf ); +} + void HandleKey( int keycode, int bDown ) { char c = toupper( keycode ); if( c == 'D' && bDown ) show_debug = !show_debug; if( c == 'W' ) force_white = bDown; - if( c == '9' && bDown ) { gKey--; nf->base_hz = 55 * pow( 2, gKey / 12.0 ); ChangeNFParameters( nf ); } - if( c == '-' && bDown ) { gKey++; nf->base_hz = 55 * pow( 2, gKey / 12.0 ); ChangeNFParameters( nf ); } - if( c == '0' && bDown ) { gKey = 0; nf->base_hz = 55 * pow( 2, gKey / 12.0 ); ChangeNFParameters( nf ); } + if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } + if( c == '-' && bDown ) { gKey++; RecalcBaseHz(); } + if( c == '0' && bDown ) { gKey = 0; RecalcBaseHz(); } if( c == 'E' && bDown ) show_debug_basic = !show_debug_basic; if( c == 'K' && bDown ) DumpParameters(); if( keycode == ESCAPE_KEY ) exit( 0 ); @@ -133,6 +192,26 @@ void HandleKey( int keycode, int bDown ) void HandleButton( int x, int y, int button, int bDown ) { printf( "Button: %d,%d (%d) -> %d\n", x, y, button, bDown ); + if( bDown ) + { + if( y < 800 ) + { + if( x < screenx/3 ) + { + gKey --; + } + else if( x < (screenx*2/3) ) + { + gKey = 0; + } + else + { + gKey++; + } + printf( "KEY: %d\n", gKey ); + RecalcBaseHz(); + } + } } void HandleMotion( int x, int y, int mask ) @@ -202,7 +281,7 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int { out[j] = 0; } - SoundEventHappened( samplesr, out, 1, sd->channelsPlay ); + SoundEventHappened( samplesp, out, 1, channelout ); } @@ -224,6 +303,7 @@ int main(int argc, char ** argv) { int i; + #ifdef ANDROID setvbuf(stdout, 0, _IOLBF, 0); // make stdout line-buffered setvbuf(stderr, 0, _IONBF, 0); // make stderr unbuffered @@ -233,6 +313,9 @@ int main(int argc, char ** argv) dup2(pfd[1], 1); dup2(pfd[1], 2); + genlogptr = genlog; + *genlogptr = 0; + /* spawn the logging thread */ if(pthread_create(&loggingThread, 0, loggingFunction, 0) == -1) { return -1; @@ -260,6 +343,14 @@ int main(int argc, char ** argv) strcpy( sound_source, "WIN" ); #elif defined( ANDROID ) strcpy( sound_source, "ANDROID" ); + + int hasperm = AndroidHasPermissions( "READ_EXTERNAL_STORAGE" ); + if( !hasperm ) + { + AndroidRequestAppPermissions( "READ_EXTERNAL_STORAGE" ); + } + + #else strcpy( sound_source, "PULSE" ); #endif @@ -324,22 +415,31 @@ int main(int argc, char ** argv) free(OutDriverNames); - //Initialize Sound - sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), - GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), - GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ) ); - - if( !sd ) + do { - fprintf( stderr, "ERROR: Failed to initialize sound output device\n" ); - return -1; - } + //Initialize Sound + sd = CNFAInit( sound_source, "colorchord", &SoundCB, GetParameterI( "samplerate", 44100 ), + GetParameterI( "channels", 2 ), GetParameterI( "channels", 2 ), GetParameterI( "buffer", 1024 ), + GetParameterS( "devrecord", 0 ), GetParameterS( "devplay", 0 ) ); + + if( sd ) break; + + CNFGColor( 0xffffff ); + CNFGPenX = 10; CNFGPenY = 100; + CNFGHandleInput(); + CNFGClearFrame(); + CNFGDrawText( "Colorchord must be used with sound. Sound not available.", 10 ); + CNFGSwapBuffers(); + sleep(1); + } while( 1 ); nf = CreateNoteFinder( sd->sps ); //Once everything was reinitialized, re-read the ini files. SetEnvValues( 1 ); + printf( "================================================= Set Up\n" ); + Now = OGGetAbsoluteTime(); double Last = Now; while(1) @@ -500,6 +600,13 @@ int main(int argc, char ** argv) CNFGPenX = 440; CNFGPenY = screeny-10; sprintf( stt, "FPS: %d", lastfps ); CNFGDrawText( stt, 2 ); + +#ifdef ANDROID + CNFGColor( 0xffffff ); + CNFGPenX = 10; CNFGPenY = 600; + CNFGDrawText( genlog, 3 ); +#endif + CNFGSwapBuffers(); } @@ -509,7 +616,9 @@ int main(int argc, char ** argv) ThisTime = OGGetAbsoluteTime(); if( ThisTime > LastFPSTime + 1 && showfps ) { +#ifndef ANDROID printf( "FPS: %d\n", frames ); +#endif lastfps = frames; frames = 0; LastFPSTime+=1; @@ -530,3 +639,5 @@ int main(int argc, char ** argv) } + + diff --git a/colorchord2/os_generic.c b/colorchord2/os_generic.c deleted file mode 100644 index 2b4321e..0000000 --- a/colorchord2/os_generic.c +++ /dev/null @@ -1,343 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the NewBSD OR MIT/x11 License. - -#include "os_generic.h" - -#ifdef USE_WINDOWS - -#include - -void OGSleep( int is ) -{ - Sleep( is*1000 ); -} - -void OGUSleep( int ius ) -{ - Sleep( ius/1000 ); -} - -double OGGetAbsoluteTime() -{ - static LARGE_INTEGER lpf; - LARGE_INTEGER li; - - if( !lpf.QuadPart ) - { - QueryPerformanceFrequency( &lpf ); - } - - QueryPerformanceCounter( &li ); - return (double)li.QuadPart / (double)lpf.QuadPart; -} - - -double OGGetFileTime( const char * file ) -{ - FILETIME ft; - - HANDLE h = CreateFile(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); - - if( h==INVALID_HANDLE_VALUE ) - return -1; - - GetFileTime( h, 0, 0, &ft ); - - CloseHandle( h ); - - return ft.dwHighDateTime + ft.dwLowDateTime; -} - - -og_thread_t OGCreateThread( void * (routine)( void * ), void * parameter ) -{ - return (og_thread_t)CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)routine, parameter, 0, 0 ); -} - -void * OGJoinThread( og_thread_t ot ) -{ - WaitForSingleObject( ot, INFINITE ); - CloseHandle( ot ); - return 0; -} - -void OGCancelThread( og_thread_t ot ) -{ - CloseHandle( ot ); -} - -og_mutex_t OGCreateMutex() -{ - return CreateMutex( 0, 0, 0 ); -} - -void OGLockMutex( og_mutex_t om ) -{ - WaitForSingleObject(om, INFINITE); -} - -void OGUnlockMutex( og_mutex_t om ) -{ - ReleaseMutex(om); -} - -void OGDeleteMutex( og_mutex_t om ) -{ - CloseHandle( om ); -} - - - -og_sema_t OGCreateSema() -{ - HANDLE sem = CreateSemaphore( 0, 0, 32767, 0 ); - return (og_sema_t)sem; -} - -int OGGetSema( og_sema_t os ) -{ - typedef LONG NTSTATUS; - HANDLE sem = (HANDLE)os; - typedef NTSTATUS (NTAPI *_NtQuerySemaphore)( - HANDLE SemaphoreHandle, - DWORD SemaphoreInformationClass, /* Would be SEMAPHORE_INFORMATION_CLASS */ - PVOID SemaphoreInformation, /* but this is to much to dump here */ - ULONG SemaphoreInformationLength, - PULONG ReturnLength OPTIONAL - ); - - typedef struct _SEMAPHORE_BASIC_INFORMATION { - ULONG CurrentCount; - ULONG MaximumCount; - } SEMAPHORE_BASIC_INFORMATION; - - - static _NtQuerySemaphore NtQuerySemaphore; - SEMAPHORE_BASIC_INFORMATION BasicInfo; - NTSTATUS Status; - - if( !NtQuerySemaphore ) - { - NtQuerySemaphore = (_NtQuerySemaphore)GetProcAddress (GetModuleHandle ("ntdll.dll"), "NtQuerySemaphore"); - if( !NtQuerySemaphore ) - { - return -1; - } - } - - - Status = NtQuerySemaphore (sem, 0 /*SemaphoreBasicInformation*/, - &BasicInfo, sizeof (SEMAPHORE_BASIC_INFORMATION), NULL); - - if (Status == ERROR_SUCCESS) - { - return BasicInfo.CurrentCount; - } - - return -2; -} - -void OGLockSema( og_sema_t os ) -{ - WaitForSingleObject( (HANDLE)os, INFINITE ); -} - -void OGUnlockSema( og_sema_t os ) -{ - ReleaseSemaphore( (HANDLE)os, 1, 0 ); -} - -void OGDeleteSema( og_sema_t os ) -{ - CloseHandle( os ); -} - -#else - -#define _GNU_SOURCE - - -#include -#include -#include -#include -#include -#include - -pthread_mutex_t g_RawMutexStart = PTHREAD_MUTEX_INITIALIZER; - -void OGSleep( int is ) -{ - sleep( is ); -} - -void OGUSleep( int ius ) -{ - usleep( ius ); -} - -double OGGetAbsoluteTime() -{ - struct timeval tv; - gettimeofday( &tv, 0 ); - return ((double)tv.tv_usec)/1000000. + (tv.tv_sec); -} - -double OGGetFileTime( const char * file ) -{ - struct stat buff; - - int r = stat( file, &buff ); - - if( r < 0 ) - { - return -1; - } - - return buff.st_mtime; -} - - - -og_thread_t OGCreateThread( void * (routine)( void * ), void * parameter ) -{ - pthread_t * ret = malloc( sizeof( pthread_t ) ); - int r = pthread_create( ret, 0, routine, parameter ); - if( r ) - { - free( ret ); - return 0; - } - return (og_thread_t)ret; -} - -void * OGJoinThread( og_thread_t ot ) -{ - void * retval; - if( !ot ) - { - return 0; - } - pthread_join( *(pthread_t*)ot, &retval ); - free( ot ); - return retval; -} - -void OGCancelThread( og_thread_t ot ) -{ - if( !ot ) - { - return; - } -#ifdef ANDROID - void * fakeret; - pthread_join( *(pthread_t*)ot, &fakeret ); -#else - pthread_cancel( *(pthread_t*)ot ); -#endif - free( ot ); -} - -og_mutex_t OGCreateMutex() -{ - pthread_mutexattr_t mta; - og_mutex_t r = malloc( sizeof( pthread_mutex_t ) ); - - pthread_mutexattr_init(&mta); - pthread_mutexattr_settype(&mta, PTHREAD_MUTEX_RECURSIVE); - - pthread_mutex_init( (pthread_mutex_t *)r, &mta ); - - return r; -} - -void OGLockMutex( og_mutex_t om ) -{ - if( !om ) - { - return; - } - pthread_mutex_lock( (pthread_mutex_t*)om ); -} - -void OGUnlockMutex( og_mutex_t om ) -{ - if( !om ) - { - return; - } - pthread_mutex_unlock( (pthread_mutex_t*)om ); -} - -void OGDeleteMutex( og_mutex_t om ) -{ - if( !om ) - { - return; - } - - pthread_mutex_destroy( (pthread_mutex_t*)om ); - free( om ); -} - - - - -og_sema_t OGCreateSema() -{ - sem_t * sem = malloc( sizeof( sem_t ) ); - sem_init( sem, 0, 0 ); - return (og_sema_t)sem; -} - -int OGGetSema( og_sema_t os ) -{ - int valp; - sem_getvalue( os, &valp ); - return valp; -} - - -void OGLockSema( og_sema_t os ) -{ - sem_wait( os ); -} - -void OGUnlockSema( og_sema_t os ) -{ - sem_post( os ); -} - -void OGDeleteSema( og_sema_t os ) -{ - sem_destroy( os ); - free(os); -} - - - -#endif - -//Date Stamp: 2012-02-15 - -/* - Copyright (c) 2011-2012 <>< Charles Lohr - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of this file. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ - diff --git a/colorchord2/os_generic.h b/colorchord2/os_generic.h deleted file mode 100644 index 163f2db..0000000 --- a/colorchord2/os_generic.h +++ /dev/null @@ -1,78 +0,0 @@ -//Copyright 2015 <>< Charles Lohr under the NewBSD or MIT/x11 License. -#ifndef _OS_GENERIC_H -#define _OS_GENERIC_H - -#if defined( WIN32 ) || defined (WINDOWS) || defined( _WIN32) -#define USE_WINDOWS -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - -//Things that shouldn't be macro'd -double OGGetAbsoluteTime(); -void OGSleep( int is ); -void OGUSleep( int ius ); -double OGGetFileTime( const char * file ); - -//Threads and Mutices -typedef void* og_thread_t; -typedef void* og_mutex_t; -typedef void* og_sema_t; - -og_thread_t OGCreateThread( void * (routine)( void * ), void * parameter ); -void * OGJoinThread( og_thread_t ot ); -void OGCancelThread( og_thread_t ot ); - -//Always a recrusive mutex. -og_mutex_t OGCreateMutex(); -void OGLockMutex( og_mutex_t om ); -void OGUnlockMutex( og_mutex_t om ); -void OGDeleteMutex( og_mutex_t om ); - -//Always a semaphore -og_sema_t OGCreateSema(); //Create a semaphore, comes locked initially. NOTE: Max count is 32767 -void OGLockSema( og_sema_t os ); -int OGGetSema( og_sema_t os ); //if <0 there was a failure. -void OGUnlockSema( og_sema_t os ); -void OGDeleteSema( og_sema_t os ); - -#ifdef __cplusplus -}; -#endif - - - -#endif - - -//Date Stamp: 2012-02-15 - -/* - NOTE: Portions (namely the top section) are part of headers from other - sources. - - Copyright (c) 2011-2012 <>< Charles Lohr - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of this file. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ - diff --git a/colorchord2/rawdraw b/colorchord2/rawdraw index 55fa52d..407da6d 160000 --- a/colorchord2/rawdraw +++ b/colorchord2/rawdraw @@ -1 +1 @@ -Subproject commit 55fa52d1eb355baf1456aa55251e722500a32ab8 +Subproject commit 407da6d1e7a11e68565c4f8cb35dfc330167e30b From 534c2186f06dcb9f823f03f2ae01d2d534f41d0b Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 10 May 2020 21:28:24 -0700 Subject: [PATCH 009/162] cleanup when Android is suspending our app. --- colorchord2/android/DisplayTensigralAndroid.c | 12 +++-- colorchord2/main.c | 50 ++++++++++--------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/colorchord2/android/DisplayTensigralAndroid.c b/colorchord2/android/DisplayTensigralAndroid.c index 8971054..20ff60b 100644 --- a/colorchord2/android/DisplayTensigralAndroid.c +++ b/colorchord2/android/DisplayTensigralAndroid.c @@ -13,6 +13,7 @@ #include #include +extern int is_suspended; #define MAX_LEDS_PER_NOTE 512 @@ -43,10 +44,13 @@ static void DTAUpdate(void * id, struct NoteFinder*nf) RequestPermissionOrGetConnectionFD( TensigralDebugStatus, 0xabcd, 0xf410 ); } - CNFGPenX = 800; - CNFGPenY = 800; - CNFGColor( 0xffffff ); - CNFGDrawText( TensigralDebugStatus, 2 ); + if( !is_suspended ) + { + CNFGPenX = 800; + CNFGPenY = 800; + CNFGColor( 0xffffff ); + CNFGDrawText( TensigralDebugStatus, 2 ); + } if( !deviceConnectionFD ) return; diff --git a/colorchord2/main.c b/colorchord2/main.c index 9e3668f..f315a19 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -128,7 +128,7 @@ void HandleDestroy() #endif - +int is_suspended = 0; float DeltaFrameTime = 0; double Now = 0; @@ -290,12 +290,12 @@ void SoundCB( struct CNFADriver * sd, short * in, short * out, int samplesr, int #ifdef ANDROID void HandleSuspend() { - //Unused. + is_suspended = 1; } void HandleResume() { - //Unused. + is_suspended = 0; } #endif @@ -488,7 +488,7 @@ int main(int argc, char ** argv) //int maxdists = freqbins/2; //Do a bunch of debugging. - if( show_debug_basic ) + if( show_debug_basic && !is_suspended ) { //char sttdebug[1024]; //char * sttend = sttdebug; @@ -544,7 +544,7 @@ int main(int argc, char ** argv) } //Extra debugging? - if( show_debug ) + if( show_debug && !is_suspended ) { //Draw the histogram float lasthistval; @@ -583,31 +583,33 @@ int main(int argc, char ** argv) CNFGDrawText( stdebug, 2 ); } - CNFGColor( show_debug?0xffffff:0x000000 ); - CNFGPenX = 0; CNFGPenY = screeny-10; - CNFGDrawText( "Extra Debug (D)", 2 ); + if( !is_suspended ) + { + CNFGColor( show_debug?0xffffff:0x000000 ); + CNFGPenX = 0; CNFGPenY = screeny-10; + CNFGDrawText( "Extra Debug (D)", 2 ); - CNFGColor( show_debug_basic?0xffffff:0x000000 ); - CNFGPenX = 120; CNFGPenY = screeny-10; - CNFGDrawText( "Basic Debug (E)", 2 ); + CNFGColor( show_debug_basic?0xffffff:0x000000 ); + CNFGPenX = 120; CNFGPenY = screeny-10; + CNFGDrawText( "Basic Debug (E)", 2 ); - CNFGColor( show_debug_basic?0xffffff:0x000000 ); - CNFGPenX = 240; CNFGPenY = screeny-10; - sprintf( stt, "[9] Key: %d [0] (%3.1f) [-]", gKey, nf->base_hz ); - CNFGDrawText( stt, 2 ); + CNFGColor( show_debug_basic?0xffffff:0x000000 ); + CNFGPenX = 240; CNFGPenY = screeny-10; + sprintf( stt, "[9] Key: %d [0] (%3.1f) [-]", gKey, nf->base_hz ); + CNFGDrawText( stt, 2 ); - CNFGColor( 0xffffff ); - CNFGPenX = 440; CNFGPenY = screeny-10; - sprintf( stt, "FPS: %d", lastfps ); - CNFGDrawText( stt, 2 ); + CNFGColor( 0xffffff ); + CNFGPenX = 440; CNFGPenY = screeny-10; + sprintf( stt, "FPS: %d", lastfps ); + CNFGDrawText( stt, 2 ); #ifdef ANDROID - CNFGColor( 0xffffff ); - CNFGPenX = 10; CNFGPenY = 600; - CNFGDrawText( genlog, 3 ); + CNFGColor( 0xffffff ); + CNFGPenX = 10; CNFGPenY = 600; + CNFGDrawText( genlog, 3 ); #endif - - CNFGSwapBuffers(); + CNFGSwapBuffers(); + } } //Finish Rawdraw with FPS counter, and a nice delay loop. From 24cdfc96e25f6244c2ee737152374b1e47ef8556 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 00:05:09 -0700 Subject: [PATCH 010/162] Actually prep for ColorChord being an example package. --- colorchord2/android/AndroidManifest.xml | 4 +++- colorchord2/android/Makefile | 4 ++++ colorchord2/android/rawdrawandroid | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 4ec219b..9f1af76 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,4 +1,6 @@ - + + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index 0f138ef..b76c2f1 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -11,6 +11,10 @@ CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder. SRC:=rawdrawandroid/android_usb_devices.c DisplayTensigralAndroid.c $(CC_C) +#Uncomment to make all targets. +#TARGETS:=makecapk/lib/arm64-v8a/lib$(APPNAME).so makecapk/lib/armeabi-v7a/lib$(APPNAME).so makecapk/lib/x86/lib$(APPNAME).so makecapk/lib/x86_64/lib$(APPNAME).so + + include rawdrawandroid/Makefile diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index a124fee..a8790e1 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit a124feee8d928f2276c00a35c56e15b8d5984a06 +Subproject commit a8790e1a0593d623607570d36587ecfdf7b7a226 From 58c7e0c224036ca6c8bffdf7ffa3c973198342f1 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 00:10:13 -0700 Subject: [PATCH 011/162] Add ability for ColorChord-android to read external file. --- colorchord2/android/README.md | 4 ++++ colorchord2/android/colorchord-android.conf | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100755 colorchord2/android/colorchord-android.conf diff --git a/colorchord2/android/README.md b/colorchord2/android/README.md index 3c21bd8..b78bdcb 100644 --- a/colorchord2/android/README.md +++ b/colorchord2/android/README.md @@ -1,2 +1,6 @@ This part of the project is baed on https://github.com/cnlohr/androidusbtest +You should be able to build this. If you give your app full permissions, and you +copy a copy of `colorchord-android.conf` into the external storage folder on your +Android device at the root level, it should pick it up and switch over to a pie +style display and output to the tensigral lamp. diff --git a/colorchord2/android/colorchord-android.conf b/colorchord2/android/colorchord-android.conf new file mode 100755 index 0000000..9067216 --- /dev/null +++ b/colorchord2/android/colorchord-android.conf @@ -0,0 +1,14 @@ +# Put configs here. Note when you reload the file, a lot of variables can be updated dynamically, but some like drivers cannot be changed at the time. + +#Play with OutputCells and OutputLinear + + +amplify=4.0 +outdrivers = DisplayPie,DisplayTensigralAndroid,OutputCells +leds = 20 +light_siding = 2.2 #Turn this to ~1.9 for more uniformity, ~1.0 for less. (Linear driver looks good at 1, cells look good at 1.9) + +timebased = 1 +snakey = 1 + + From f90b1e12fd1ae9945710147421466f44e2c108d7 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 14:00:25 -0700 Subject: [PATCH 012/162] cleanup system button behavior. --- colorchord2/android/AndroidManifest.xml | 2 +- colorchord2/android/rawdrawandroid | 2 +- colorchord2/android/test.c | 392 ------------------------ colorchord2/main.c | 12 +- 4 files changed, 13 insertions(+), 395 deletions(-) delete mode 100644 colorchord2/android/test.c diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 9f1af76..b7a9a5b 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,6 +1,6 @@ + android:versionCode="3"> diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index a8790e1..de5da7e 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit a8790e1a0593d623607570d36587ecfdf7b7a226 +Subproject commit de5da7e41b177438cf082199da35441a2263eeb9 diff --git a/colorchord2/android/test.c b/colorchord2/android/test.c deleted file mode 100644 index 94f7900..0000000 --- a/colorchord2/android/test.c +++ /dev/null @@ -1,392 +0,0 @@ -//Copyright (c) 2011-2020 <>< Charles Lohr - Under the MIT/x11 or NewBSD License you choose. -// NO WARRANTY! NO GUARANTEE OF SUPPORT! USE AT YOUR OWN RISK -// Super basic test - see rawdrawandroid's thing for a more reasonable test. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "android_usb_devices.h" - -#include "os_generic.h" - -#define CNFG_IMPLEMENTATION -#include "CNFG.h" - -#define printf( x...) LOGI( x ) - -unsigned frames = 0; -unsigned long iframeno = 0; - -void AndroidDisplayKeyboard(int pShow); -volatile int suspended; - -short screenx, screeny; -int lastmousex = 0; -int lastmousey = 0; -int lastbid = 0; -int lastmask = 0; -int lastkey, lastkeydown; - -static int keyboard_up; - -int mousedown; -int colormode; -double colormodechangetime; - - -void HandleKey( int keycode, int bDown ) -{ - lastkey = keycode; - lastkeydown = bDown; - if( keycode == 10 && !bDown ) { keyboard_up = 0; AndroidDisplayKeyboard( keyboard_up ); } -} - -void HandleButton( int x, int y, int button, int bDown ) -{ - lastbid = button; - lastmousex = x; - lastmousey = y; - - if( bDown ) { colormode = (colormode+1)%2; } - if( !bDown ) { colormodechangetime = OGGetAbsoluteTime(); } - mousedown = bDown; -// if( bDown ) { keyboard_up = !keyboard_up; AndroidDisplayKeyboard( keyboard_up ); } -} - -void HandleMotion( int x, int y, int mask ) -{ - lastmask = mask; - lastmousex = x; - lastmousey = y; -} - -extern struct android_app * gapp; - -int lastFDWrite = 0; - -void HandleDestroy() -{ - printf( "Destroying\n" ); - exit(10); -} - -void HandleSuspend() -{ - suspended = 1; -} - -void HandleResume() -{ - suspended = 0; -} - - -#define NUM_LEDS 20 -uint8_t Colorbuf[NUM_LEDS*4]; - -char rettext[512]; -char assettext[512]; - -int pixelhueX = -1, pixelhueY = -1; - -unsigned long HSVtoHEX( float hue, float sat, float value ); -unsigned long PixelHue( int x, int y ) -{ - float sat = (pixelhueY-y) / (float)pixelhueY * 2.0; - float hue = x / (float)pixelhueX; - if( sat < 1.0 ) - { - return HSVtoHEX( x * 0.0012, (sat<1)?sat:1, 1.0 ); - } - else - { - return HSVtoHEX( x * 0.0012, (sat<1)?sat:1, 2.0-sat ); - } -} - -int main() -{ - int i, x, y; - double ThisTime; - double LastFPSTime = OGGetAbsoluteTime(); - double LastFrameTime = OGGetAbsoluteTime(); - double SecToWait; - int linesegs = 0; - uint32_t * pixelHueBackdrop = 0; - - CNFGBGColor = 0x400000; - CNFGDialogColor = 0x444444; - CNFGSetup( "Test Bench", 0, 0 ); - - //To make text look boldish - - while(1) - { - int i, pos; - float f; - iframeno++; - RDPoint pto[3]; - - CNFGHandleInput(); - - if( suspended ) { usleep(50000); continue; } - - CNFGClearFrame(); - CNFGGetDimensions( &screenx, &screeny ); - - if( ( screenx != pixelhueX || screeny != pixelhueY ) && screenx > 0 && screeny > 0) - { - pixelhueX = screenx; - pixelhueY = screeny; - pixelHueBackdrop = realloc( pixelHueBackdrop, pixelhueX * pixelhueY * 4 ); - int x, y; - for( y = 0; y < pixelhueY; y++ ) - for( x = 0; x < pixelhueX; x++ ) - { - pixelHueBackdrop[x+y*screenx] = PixelHue( x, y ); - } - } - - //This whole section does cool stuff with LEDs - int allledbytes = NUM_LEDS*4; - for( i = 0; i < allledbytes; i+=4 ) - { - uint32_t rk; - float sat = (OGGetAbsoluteTime() - colormodechangetime)*3.0; - - if( colormode ) - { - rk = PixelHue( lastmousex, lastmousey ); - } - else - { - rk = HSVtoHEX( i * 0.012+ iframeno* .01, (sat<1)?sat:1, 1.0 ); - } - - int white = (int)((1.-sat) * 255); - if( white > 255 ) white = 255; - if( white < 0 ) white = 0; - - Colorbuf[i+0] = rk>>8; - Colorbuf[i+1] = rk; - Colorbuf[i+2] = rk>>16; - Colorbuf[i+3] = white; - } - - - if( pixelHueBackdrop && colormode == 1 && mousedown ) - { - CNFGUpdateScreenWithBitmap( pixelHueBackdrop, pixelhueX, pixelhueY ); - } - else - { - int led = 0; - for( led = 0; led < NUM_LEDS; led++ ) - { - uint32_t col = ( Colorbuf[led*4+0] << 8) | ( Colorbuf[led*4+1] ) | ( Colorbuf[led*4+2] << 16); - CNFGColor( 0xff000000 | col ); - int sx = (led * screenx) / (NUM_LEDS); - CNFGTackRectangle( sx, 850, sx + screenx/(NUM_LEDS)+1, screeny ); - CNFGFlushRender(); - } - } - - if( deviceConnectionFD ) - { - //This section does the crazy wacky stuff to actually split the LEDs into HID Packets and get them out the door... Carefully. - int byrem = allledbytes; - int offset = 0; - for( i = 0; i < 2; i++ ) - { - uint8_t sendbuf[64]; - sendbuf[0] = (byrem > 60)?15:(byrem/4); - sendbuf[1] = offset; - - memcpy( sendbuf + 2, Colorbuf + offset*4, sendbuf[0]*4 ); - - offset += sendbuf[0]; - byrem -= sendbuf[0]*4; - - - if( byrem == 0 ) sendbuf[0] |= 0x80; - int tsend = 65; //Size of payload (must be 64+1 always) - - //Ok this looks weird, because Android has a bulkTransfer function, but that has a TON of layers of misdirection before it just calls the ioctl. - struct usbdevfs_bulktransfer ctrl; - memset(&ctrl, 0, sizeof(ctrl)); - ctrl.ep = 0x02; //Endpoint 0x02 is output endpoint. - ctrl.len = 64; - ctrl.data = sendbuf; - ctrl.timeout = 100; - lastFDWrite = ioctl(deviceConnectionFD, USBDEVFS_BULK, &ctrl); - if( lastFDWrite < 0 ) - { - DisconnectUSB(); - break; - } - usleep(1000); - } - - { - char * rxprintf = rettext; - uint8_t RXbuf[64]; - //Also read-back the properties. - struct usbdevfs_bulktransfer ctrl; - memset(&ctrl, 0, sizeof(ctrl)); - ctrl.ep = 0x81; //Endpoint 0x81 is input endpoint. - ctrl.len = 64; - ctrl.data = RXbuf; - ctrl.timeout = 100; - int lastfdread = ioctl(deviceConnectionFD, USBDEVFS_BULK, &ctrl); - rxprintf += sprintf( rxprintf, "RX: %d\n", lastfdread ); - if( lastfdread == 64 ) - { - int temperature = RXbuf[4] | (RXbuf[5]<<8); - int adc = RXbuf[6] | (RXbuf[7]<<8); - int voltage = RXbuf[8] | (RXbuf[9]<<8); - rxprintf += sprintf( rxprintf, "T: %d ADC: %d V: %d\n", temperature, adc, voltage ); - - int t; - CNFGColor( 0xffffffff ); - for( t = 0; t < 3; t++ ) - { - CNFGTackSegment( t * screenx / 3, RXbuf[20+t] * 50 + 1100, (t+1)*screenx/3, RXbuf[20+t] * 50 + 1100 ); - } - } - } - } - - - if( deviceConnectionFD == 0 ) - { - RequestPermissionOrGetConnectionFD( assettext, 0xabcd, 0xf410 ); - } - - CNFGPenX = 20; CNFGPenY = 200; - char st[2048]; - sprintf( st, "%dx%d %d %d %d %d - %d %d - %d\n%s\n%s", screenx, screeny, lastmousex, lastmousey, lastkey, lastkeydown, lastbid, lastmask, lastFDWrite, assettext, rettext ); - - CNFGColor( 0xff000000 ); - glLineWidth( 20.0f ); - CNFGDrawText( st, 10 ); - CNFGFlushRender(); - - CNFGColor( 0xFFFFFFFF ); - glLineWidth( 2.0f ); - CNFGDrawText( st, 10 ); - CNFGFlushRender(); - - - // Square behind text - - frames++; - CNFGSwapBuffers(); - - ThisTime = OGGetAbsoluteTime(); - if( ThisTime > LastFPSTime + 1 ) - { - printf( "FPS: %d\n", frames ); - frames = 0; - linesegs = 0; - LastFPSTime+=1; - } - } - - return(0); -} - - - - - - - - - - - - - -unsigned long HSVtoHEX( float hue, float sat, float value ) -{ - float pr = 0; - float pg = 0; - float pb = 0; - - short ora = 0; - short og = 0; - short ob = 0; - - float ro = fmod( hue * 6, 6. ); - - float avg = 0; - - ro = fmod( ro + 6 + 1, 6 ); //Hue was 60* off... - - if( ro < 1 ) //yellow->red - { - pr = 1; - pg = 1. - ro; - } else if( ro < 2 ) - { - pr = 1; - pb = ro - 1.; - } else if( ro < 3 ) - { - pr = 3. - ro; - pb = 1; - } else if( ro < 4 ) - { - pb = 1; - pg = ro - 3; - } else if( ro < 5 ) - { - pb = 5 - ro; - pg = 1; - } else - { - pg = 1; - pr = ro - 5; - } - - //Actually, above math is backwards, oops! - pr *= value; - pg *= value; - pb *= value; - - avg += pr; - avg += pg; - avg += pb; - - pr = pr * sat + avg * (1.-sat); - pg = pg * sat + avg * (1.-sat); - pb = pb * sat + avg * (1.-sat); - - ora = pr * 255; - og = pb * 255; - ob = pg * 255; - - if( ora < 0 ) ora = 0; - if( ora > 255 ) ora = 255; - if( og < 0 ) og = 0; - if( og > 255 ) og = 255; - if( ob < 0 ) ob = 0; - if( ob > 255 ) ob = 255; - - return (ob<<16) | (og<<8) | ora; -} - - - diff --git a/colorchord2/main.c b/colorchord2/main.c index f315a19..7d3331f 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -177,6 +177,14 @@ void RecalcBaseHz() void HandleKey( int keycode, int bDown ) { char c = toupper( keycode ); +#ifdef ANDROID + if( keycode == 4 && bDown ) + { + //Back button. + printf( "Back button pressed\n" ); + return; + } +#endif if( c == 'D' && bDown ) show_debug = !show_debug; if( c == 'W' ) force_white = bDown; if( c == '9' && bDown ) { gKey--; RecalcBaseHz(); } @@ -635,7 +643,9 @@ int main(int argc, char ** argv) OGUSleep( (int)( SecToWait * 1000000 ) ); } - SetEnvValues( 0 ); + if( !is_suspended ) + SetEnvValues( 0 ); + Last = Now; } From ba3b608c179262d8525188abcc45b5c768f88cf4 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Mon, 11 May 2020 18:15:10 -0700 Subject: [PATCH 013/162] Fix Windows compile. --- colorchord2/DisplayNetwork.c | 2 +- colorchord2/cnfa | 2 +- colorchord2/windows/compile.bat | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/colorchord2/DisplayNetwork.c b/colorchord2/DisplayNetwork.c index a2eb6d4..9f8cc62 100644 --- a/colorchord2/DisplayNetwork.c +++ b/colorchord2/DisplayNetwork.c @@ -5,7 +5,6 @@ #include #include "parameters.h" #include -#include #include #include #include "color.h" @@ -18,6 +17,7 @@ #endif #define MSG_NOSIGNAL 0 #else +#include #define closesocket( x ) close( x ) #include #include diff --git a/colorchord2/cnfa b/colorchord2/cnfa index c474fb4..de9d3d4 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit c474fb4c0a81a3d460125ce275c5dc7d96eba0b5 +Subproject commit de9d3d45979bd9c34f9f7fa54524ed726473894d diff --git a/colorchord2/windows/compile.bat b/colorchord2/windows/compile.bat index a29f643..79c0915 100644 --- a/colorchord2/windows/compile.bat +++ b/colorchord2/windows/compile.bat @@ -1,9 +1,9 @@ @echo off echo Unzip http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.27-win64-bin.zip to C:\tcc echo Don't worry. It includes the i386 compiler in the win64 build. -set CFLAGS=-v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -I.. -I. -I../../embeddedcommon -rdynamic -g +set CFLAGS=-v -DHIDAPI -DWINDOWS -DWIN32 -DTCC -DRUNTIME_SYMNUM -Os -Itccinc -DINCLUDING_EMBEDDED -I../rawdraw -I../cnfa -I.. -I. -I../../embeddedcommon -rdynamic -g set LDFLAGS=-lkernel32 -lgdi32 -luser32 -lsetupapi -ldbghelp -lws2_32 -set SOURCES=..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\DisplayNetwork.c ..\DisplayArray.c ..\DisplayHIDAPI.c ..\DisplayOUTDriver.c ..\DisplayPie.c ..\DrawFunctions.c ..\filter.c ..\hidapi.c ..\hook.c ..\main.c ..\os_generic.c ..\outdrivers.c ..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c ..\parameters.c ..\sound.c ..\sound_win.c ..\sound_null.c ..\util.c ..\WinDriver.c ..\notefinder.c ..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c +set SOURCES=..\chash.c ..\color.c ..\configs.c ..\decompose.c ..\dft.c ..\DisplayNetwork.c ..\DisplayArray.c ..\DisplayHIDAPI.c ..\DisplayOUTDriver.c ..\DisplayPie.c ..\filter.c ..\hidapi.c ..\hook.c ..\main.c ..\outdrivers.c ..\OutputCells.c ..\OutputLinear.c ..\OutputProminent.c ..\OutputVoronoi.c ..\parameters.c ..\util.c ..\notefinder.c ..\..\embeddedcommon\DFT32.c tcc_stubs.c symbol_enumerator.c set ARCH_SPECIFIC=-L32 C:\windows\system32\winmm.dll set CC=C:\tcc\i386-win32-tcc.exe rem set CC=C:\tcc\x86_64-win32-tcc.exe From c891563efd8533fe7d2263eae9b3bbf19bf95168 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 14:25:25 -0700 Subject: [PATCH 014/162] Allow other configuration schemes. --- colorchord2/configs.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/colorchord2/configs.c b/colorchord2/configs.c index b7c87a8..dadb57f 100644 --- a/colorchord2/configs.c +++ b/colorchord2/configs.c @@ -19,6 +19,7 @@ void LoadFile( const char * filename ) char * buffer; int r; + printf( "Loading file: %s\n", filename ); FILE * f = fopen( filename, "rb" ); if( !f ) { @@ -108,9 +109,11 @@ void SetEnvValues( int force ) printf( "On Android, looking for configuration file in: %s\n", InitialFile[0] ); #endif - LoadFile( InitialFile[0] ); - - for( i = 1; i < gargc; i++ ) + for( i = 0; i < InitialFileCount; i++ ) + { + LoadFile( InitialFile[i] ); + } + for( ; i < gargc; i++ ) { if( strchr( gargv[i], '=' ) != 0 ) { @@ -147,7 +150,9 @@ void ProcessArgs() void SetupConfigs() { #ifdef ANDROID - InitialFile[0] = "/sdcard/colorchord-android.conf"; + InitialFile[0] = "/sdcard/colorchord-android.txt"; + InitialFile[1] = "/sdcard/colorchord-android-overlay.txt"; + InitialFileCount = 2; #else InitialFile[0] = "default.conf"; #endif From 4cfc47e7af39af1ff16cdbe85879621ea35cb282 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 14:52:28 -0700 Subject: [PATCH 015/162] Fix access to external storage. --- colorchord2/android/AndroidManifest.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index b7a9a5b..78c0dc9 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -6,8 +6,7 @@ - - + From cfc00033118c47c591df01552310cfbeee336686 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 15:01:49 -0700 Subject: [PATCH 016/162] Update submodule --- colorchord2/android/rawdrawandroid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index de5da7e..48945dc 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit de5da7e41b177438cf082199da35441a2263eeb9 +Subproject commit 48945dcd0887e5e520ab8795e78027133e66aa35 From 3f68bfd6248468c5c980ea08c0a4b785a2b89c26 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 22:00:02 -0700 Subject: [PATCH 017/162] Fix app name --- colorchord2/android/AndroidManifest.xml | 10 +++++----- colorchord2/android/Makefile | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 78c0dc9..9eda6bc 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,13 +1,13 @@ - + - - + + @@ -15,7 +15,7 @@ - + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index b76c2f1..e8cfd8e 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -1,18 +1,17 @@ -APPNAME=colorchord +APPNAME=colorchordtest RAWDRAWANDROID=rawdrawandroid -PACKAGENAME?=org.cnlohr.$(APPNAME) +PACKAGENAME?=com.cnlohr.$(APPNAME) CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon -ffunction-sections -Os -DPRINTF_NO_OVERRIDDE LDFLAGS:=-s -lOpenSLES -PACKAGENAME?=org.yourorgexample.$(APPNAME) CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../hook.c ../outdrivers.c ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c SRC:=rawdrawandroid/android_usb_devices.c DisplayTensigralAndroid.c $(CC_C) #Uncomment to make all targets. -#TARGETS:=makecapk/lib/arm64-v8a/lib$(APPNAME).so makecapk/lib/armeabi-v7a/lib$(APPNAME).so makecapk/lib/x86/lib$(APPNAME).so makecapk/lib/x86_64/lib$(APPNAME).so +TARGETS:=makecapk/lib/arm64-v8a/lib$(APPNAME).so makecapk/lib/armeabi-v7a/lib$(APPNAME).so makecapk/lib/x86/lib$(APPNAME).so makecapk/lib/x86_64/lib$(APPNAME).so include rawdrawandroid/Makefile From 8db7e74cf2629c06a8575d546bd4f98f81964fc0 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 11 May 2020 22:17:48 -0700 Subject: [PATCH 018/162] bump rev --- colorchord2/android/AndroidManifest.xml | 10 +++++----- colorchord2/android/Makefile | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 9eda6bc..1052ea0 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,13 +1,13 @@ - + - - + + @@ -15,7 +15,7 @@ - + diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index e8cfd8e..095158b 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -1,10 +1,10 @@ -APPNAME=colorchordtest +APPNAME=colorchord RAWDRAWANDROID=rawdrawandroid -PACKAGENAME?=com.cnlohr.$(APPNAME) +PACKAGENAME?=org.cnlohr.$(APPNAME) CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon -ffunction-sections -Os -DPRINTF_NO_OVERRIDDE -LDFLAGS:=-s -lOpenSLES +LDFLAGS:=-s -lOpenSLES CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../hook.c ../outdrivers.c ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c From 3ed6237c3b7bb22883e3de52dd957313279903f8 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Tue, 12 May 2020 03:31:47 -0700 Subject: [PATCH 019/162] Cleanup and improve back button behavior --- colorchord2/android/AndroidManifest.xml | 2 +- colorchord2/android/Makefile | 5 ++++- colorchord2/android/rawdrawandroid | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index 1052ea0..c5223c8 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,6 +1,6 @@ + android:versionCode="4"> diff --git a/colorchord2/android/Makefile b/colorchord2/android/Makefile index 095158b..999f589 100644 --- a/colorchord2/android/Makefile +++ b/colorchord2/android/Makefile @@ -3,7 +3,10 @@ APPNAME=colorchord RAWDRAWANDROID=rawdrawandroid PACKAGENAME?=org.cnlohr.$(APPNAME) -CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon -ffunction-sections -Os -DPRINTF_NO_OVERRIDDE +CFLAGS:=-I. -I.. -Irawdrawandroid/rawdraw -I../cnfa -I../../embeddedcommon \ + -ffunction-sections -Os -s -DPRINTF_NO_OVERRIDDE -fvisibility=hidden \ + -DRDALOGFNCB=example_log_function + LDFLAGS:=-s -lOpenSLES CC_C:= ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../hook.c ../outdrivers.c ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index 48945dc..d07d11d 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit 48945dcd0887e5e520ab8795e78027133e66aa35 +Subproject commit d07d11decf22945b797991bc7cf05fbcf26001d4 From 68c0ff8277bc3647e9762f3961a9a54d9da22619 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Tue, 12 May 2020 03:39:05 -0700 Subject: [PATCH 020/162] Bump submodules + fix back button configuration. --- colorchord2/android/rawdrawandroid | 2 +- colorchord2/cnfa | 2 +- colorchord2/main.c | 153 +++++++++++++---------------- 3 files changed, 68 insertions(+), 89 deletions(-) diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index d07d11d..9321a8b 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit d07d11decf22945b797991bc7cf05fbcf26001d4 +Subproject commit 9321a8bda8cac848512d418f94d142aafe9258d9 diff --git a/colorchord2/cnfa b/colorchord2/cnfa index de9d3d4..6c9dd09 160000 --- a/colorchord2/cnfa +++ b/colorchord2/cnfa @@ -1 +1 @@ -Subproject commit de9d3d45979bd9c34f9f7fa54524ed726473894d +Subproject commit 6c9dd0901ba034577dea72f86756f3ac2f748862 diff --git a/colorchord2/main.c b/colorchord2/main.c index 7d3331f..62110e1 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -42,75 +42,75 @@ struct CNFADriver * sd; #include #include -static int pfd[2]; -static pthread_t loggingThread; -static const char *LOG_TAG = "colorchord"; +int bQuitColorChord = 0; -char genlog[16384] = "log"; -char * genlogptr; - -static void *loggingFunction(void*v) { - ssize_t readSize; - char buf[1024]; - static og_mutex_t m; - if( !m ) m = OGCreateMutex(); - - - while((readSize = read(pfd[0], buf, sizeof buf - 1)) > 0) { - OGLockMutex( m ); - if(buf[readSize - 1] == '\n') { - --readSize; - } - - buf[readSize] = 0; // add null-terminator - - __android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, buf); // Set any log level you want - if( genlogptr == 0 ) genlogptr = genlog; - int genlogbuffer = genlogptr - genlog; - if( genlogbuffer + readSize + 1 < sizeof( genlog ) ) - { - memcpy( genlogptr, buf, readSize ); - genlogptr += readSize; - *genlogptr = '\n'; - genlogptr++; - *genlogptr = 0; - } - - //Scroll lines. - - #define KEEPLINES 80 - int lineplaces[KEEPLINES]; - int newlinect = 0; - genlogbuffer = genlogptr - genlog; - int i; - for( i = 0; i < genlogbuffer; i++ ) - { - if( genlog[i] == '\n' ) - { - lineplaces[newlinect%KEEPLINES] = i; - newlinect++; - } - } - - - if( newlinect >= KEEPLINES ) - { - int placemark = lineplaces[(newlinect+1)%KEEPLINES]; - for( i = placemark; i <= genlogbuffer; i++ ) - { - genlog[i-placemark] = genlog[i]; - } - genlogptr -= placemark; - } - - OGUnlockMutex( m ); - } - - return 0; +void HandleDestroy() +{ + bQuitColorChord = 1; + CNFAClose( sd ); } + + #endif +#define GENLINEWIDTH 89 +#define GENLINES 67 + +int genlinelen = 0; +char genlog[(GENLINEWIDTH+1)*(GENLINES+1)+2] = "log"; +int genloglen; +int genloglines; +int firstnewline = -1; + +void example_log_function( int readSize, char * buf ) +{ + static og_mutex_t * mt; + if( !mt ) mt = OGCreateMutex(); + OGLockMutex( mt ); + int i; + for( i = 0; (readSize>=0)?(i <= readSize):buf[i]; i++ ) + { + char c = buf[i]; + if( c == '\0' ) c = '\n'; + if( ( c != '\n' && genlinelen >= GENLINEWIDTH ) || c == '\n' ) + { + int k; + genloglines++; + if( genloglines >= GENLINES ) + { + genloglen -= firstnewline+1; + int offset = firstnewline; + firstnewline = -1; + + for( k = 0; k < genloglen; k++ ) + { + if( ( genlog[k] = genlog[k+offset+1] ) == '\n' && firstnewline < 0) + { + firstnewline = k; + } + } + genlog[k] = 0; + genloglines--; + } + genlinelen = 0; + if( c != '\n' ) + { + genlog[genloglen+1] = 0; + genlog[genloglen++] = '\n'; + } + if( firstnewline < 0 ) firstnewline = genloglen; + } + genlog[genloglen+1] = 0; + genlog[genloglen++] = c; + if( c != '\n' ) genlinelen++; + } + + OGUnlockMutex( mt ); +} + + + #if defined(WIN32) || defined(USE_WINDOWS) @@ -182,6 +182,7 @@ void HandleKey( int keycode, int bDown ) { //Back button. printf( "Back button pressed\n" ); + AndroidSendToBack( 0 ); return; } #endif @@ -311,28 +312,6 @@ int main(int argc, char ** argv) { int i; - -#ifdef ANDROID - setvbuf(stdout, 0, _IOLBF, 0); // make stdout line-buffered - setvbuf(stderr, 0, _IONBF, 0); // make stderr unbuffered - - /* create the pipe and redirect stdout and stderr */ - pipe(pfd); - dup2(pfd[1], 1); - dup2(pfd[1], 2); - - genlogptr = genlog; - *genlogptr = 0; - - /* spawn the logging thread */ - if(pthread_create(&loggingThread, 0, loggingFunction, 0) == -1) { - return -1; - } - - pthread_detach(loggingThread); - -#endif - #ifdef TCC void ManuallyRegisterDevices(); ManuallyRegisterDevices(); @@ -450,7 +429,7 @@ int main(int argc, char ** argv) Now = OGGetAbsoluteTime(); double Last = Now; - while(1) + while( !bQuitColorChord ) { char stt[1024]; //Handle Rawdraw frame swappign From 8520283ad2a92726073eda5540f511e046a24964 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Tue, 12 May 2020 03:41:07 -0700 Subject: [PATCH 021/162] bump submodule --- colorchord2/android/rawdrawandroid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index 9321a8b..2d14755 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit 9321a8bda8cac848512d418f94d142aafe9258d9 +Subproject commit 2d147556d345ed3cfb75ced1912da53099916991 From a6e629669c547b9719f2fca57f74aad756adc5ce Mon Sep 17 00:00:00 2001 From: cnlohr Date: Wed, 13 May 2020 14:48:35 -0700 Subject: [PATCH 022/162] Fix build rev --- colorchord2/android/AndroidManifest.xml | 2 +- colorchord2/android/rawdrawandroid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/android/AndroidManifest.xml b/colorchord2/android/AndroidManifest.xml index c5223c8..27265e1 100644 --- a/colorchord2/android/AndroidManifest.xml +++ b/colorchord2/android/AndroidManifest.xml @@ -1,6 +1,6 @@ + android:versionCode="5"> diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index 2d14755..d9dffce 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit 2d147556d345ed3cfb75ced1912da53099916991 +Subproject commit d9dffceb027dc95d47553a993792e8fd31b18639 From ee621d9e7570532215feb116d8a6484146a73e14 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:35:57 -0400 Subject: [PATCH 023/162] Added makefile to compile on Windows with clang --- colorchord2/windows/Makefile | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 colorchord2/windows/Makefile diff --git a/colorchord2/windows/Makefile b/colorchord2/windows/Makefile new file mode 100644 index 0000000..23983f7 --- /dev/null +++ b/colorchord2/windows/Makefile @@ -0,0 +1,33 @@ +all : colorchord + +OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o + +SRCS := ../main.c ../dft.c ../decompose.c ../filter.c ../color.c ../notefinder.c ../util.c ../outdrivers.c +SRCS += ../parameters.c ../chash.c ../OutputVoronoi.c ../OutputProminent.c ../DisplayArray.c +SRCS += ../OutputLinear.c ../DisplayPie.c ../DisplayNetwork.c ../hook.c ../RecorderPlugin.c +SRCS += ../../embeddedcommon/DFT32.c ../OutputCells.c ../configs.c ../hidapi.c ../DisplayHIDAPI.c + +WINGCC:= clang -fcolor-diagnostics + +WINGCCFLAGS:= -g -D_CRT_SECURE_NO_WARNINGS -Wno-deprecated-declarations -DICACHE_FLASH_ATTR= -I../../embeddedcommon -I../cnfa -I../rawdraw -I../ -O1 #-O2 -Wl,--relax -Wl,--gc-sections -ffunction-sections -fdata-sections +WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi + +RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext +LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt + + +CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= +EXTRALIBS:=-lusb-1.0 + +OBJS:=../main.o ../dft.o ../decompose.o ../filter.o ../color.o ../notefinder.o ../util.o ../outdrivers.o $(OUTS) ../parameters.o ../chash.o ../hook.o ../../embeddedcommon/DFT32.o ../configs.o + +colorchord : $(OBJS) + gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) + + +colorchord.exe : $(SRCS) + $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) + + +clean : + rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) From 7c6f7c6aaf1e4a6373322074091b81aa0fb2e105 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:48:19 -0400 Subject: [PATCH 024/162] Update main.c so that it matches latest code --- colorchord2/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 62110e1..2fd9402 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -429,7 +429,7 @@ int main(int argc, char ** argv) Now = OGGetAbsoluteTime(); double Last = Now; - while( !bQuitColorChord ) + while( !headless ) { char stt[1024]; //Handle Rawdraw frame swappign From 3030d2a8735d4d7616f3a68d2042067f0cd259e5 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:49:01 -0400 Subject: [PATCH 025/162] Update Makefile to compile with clang --- colorchord2/windows/Makefile | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/colorchord2/windows/Makefile b/colorchord2/windows/Makefile index 23983f7..0701174 100644 --- a/colorchord2/windows/Makefile +++ b/colorchord2/windows/Makefile @@ -1,4 +1,4 @@ -all : colorchord +all : colorchord.exe OUTS := OutputVoronoi.o DisplayArray.o OutputLinear.o DisplayPie.o DisplayNetwork.o DisplayUSB2812.o DisplayDMX.o OutputProminent.o RecorderPlugin.o DisplayHIDAPI.o hidapi.o OutputCells.o DisplaySHM.o DisplayFileWrite.o @@ -15,19 +15,10 @@ WINLDFLAGS:=-lwinmm -lgdi32 -lws2_32 -lsetupapi RAWDRAWLIBS:=-lX11 -lm -lpthread -lXinerama -lXext LDLIBS:=-lpthread -lasound -lm -lpulse-simple -lpulse -ludev -lrt - -CFLAGS:=-g -O1 -flto -Wall -ffast-math -I../embeddedcommon -I. -Icnfa -Irawdraw -DICACHE_FLASH_ATTR= -EXTRALIBS:=-lusb-1.0 - OBJS:=../main.o ../dft.o ../decompose.o ../filter.o ../color.o ../notefinder.o ../util.o ../outdrivers.o $(OUTS) ../parameters.o ../chash.o ../hook.o ../../embeddedcommon/DFT32.o ../configs.o -colorchord : $(OBJS) - gcc -o $@ $^ $(CFLAGS) $(LDLIBS) $(EXTRALIBS) $(RAWDRAWLIBS) - - colorchord.exe : $(SRCS) $(WINGCC) $(WINGCCFLAGS) -o $@ $^ $(WINLDFLAGS) - clean : rm -rf *.o *~ colorchord colorchord.exe embeddedcc $(OBJS) From 72d8e1dce9cb62208f35af2649082309194ff323 Mon Sep 17 00:00:00 2001 From: Sam Ellicott Date: Thu, 14 May 2020 01:50:50 -0400 Subject: [PATCH 026/162] Make CNFA module point to CaiB's repo --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index ae541d5..0803dc3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/cntools/rawdraw [submodule "colorchord2/cnfa"] path = colorchord2/cnfa - url = https://github.com/cnlohr/cnfa + url = https://github.com/CaiB/cnfa [submodule "colorchord2/android/rawdrawandroid"] path = colorchord2/android/rawdrawandroid url = https://github.com/cnlohr/rawdrawandroid From 09f450a2a8318b810af054751828167ef002f997 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Wed, 13 May 2020 23:14:21 -0700 Subject: [PATCH 027/162] Fix compile on non-android platforms. --- colorchord2/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/colorchord2/main.c b/colorchord2/main.c index 62110e1..b80d5e9 100644 --- a/colorchord2/main.c +++ b/colorchord2/main.c @@ -33,6 +33,8 @@ //Sound driver. struct CNFADriver * sd; +int bQuitColorChord = 0; + #ifdef ANDROID #include @@ -42,8 +44,6 @@ struct CNFADriver * sd; #include #include -int bQuitColorChord = 0; - void HandleDestroy() { bQuitColorChord = 1; From 7207a8e560effdd0be23d84d35bc80d4e7ee702b Mon Sep 17 00:00:00 2001 From: cnlohr Date: Wed, 13 May 2020 23:19:55 -0700 Subject: [PATCH 028/162] Bump rawdrawandroid submodule --- colorchord2/android/rawdrawandroid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/colorchord2/android/rawdrawandroid b/colorchord2/android/rawdrawandroid index d9dffce..352f6cf 160000 --- a/colorchord2/android/rawdrawandroid +++ b/colorchord2/android/rawdrawandroid @@ -1 +1 @@ -Subproject commit d9dffceb027dc95d47553a993792e8fd31b18639 +Subproject commit 352f6cf6ea2d341a8c364762d93a79d5af5f028f From 22779c4a6922cdf34bbcfdd77c58b046fe46b16f Mon Sep 17 00:00:00 2001 From: cnlohr Date: Thu, 14 May 2020 13:59:18 -0700 Subject: [PATCH 029/162] add docs --- docs/TheoryOfCCDFT.md | 218 ++++++++++++++++++++++++++ docs/TheoryOfCCDFT/cc-screenshot3.png | Bin 0 -> 5270 bytes docs/TheoryOfCCDFT/chop.wav | Bin 0 -> 88244 bytes docs/TheoryOfCCDFT/chop2.wav | Bin 0 -> 88244 bytes docs/TheoryOfCCDFT/chopfast.png | Bin 0 -> 1651 bytes docs/TheoryOfCCDFT/chopfast.wav | Bin 0 -> 220544 bytes docs/TheoryOfCCDFT/test.py | 16 ++ 7 files changed, 234 insertions(+) create mode 100644 docs/TheoryOfCCDFT.md create mode 100644 docs/TheoryOfCCDFT/cc-screenshot3.png create mode 100644 docs/TheoryOfCCDFT/chop.wav create mode 100644 docs/TheoryOfCCDFT/chop2.wav create mode 100644 docs/TheoryOfCCDFT/chopfast.png create mode 100644 docs/TheoryOfCCDFT/chopfast.wav create mode 100644 docs/TheoryOfCCDFT/test.py diff --git a/docs/TheoryOfCCDFT.md b/docs/TheoryOfCCDFT.md new file mode 100644 index 0000000..5a356ae --- /dev/null +++ b/docs/TheoryOfCCDFT.md @@ -0,0 +1,218 @@ +# Theory behind ColorChord's fast DFT. + +Becaue +1) ColorChord's binning process needs to focus on notes in frequency + space instead of the bins a normal FFT produces, we have to use another + tactic to decompose incoming audio into chromatic bins instead of normal + bins. +2) We want bins which can be foldend on top of each other, i.e. each octave + can add to the previous. +3) Originally ColorChord accomplished this by using a GPU algorithm which + every frame looked at the last several milliseconds of sound and by brute + force multipled a sine and cosine for every bin against the incoming audio + with a window. This was prohibitively expensive. +4) One night I think around 2010 or 2011, Will Murnane, Charles Lohr's + roommate at the time had a pretty deep insight. Charles is not good at + math or algorithms, but Will is. +5) Much later on May 13, 2020, CaiB wanted to understand the process more, + and Will Murnane explained this in the ColorChord discord channel. + +This following is not an exact transcript but has minor edits for flow, +grammar, and clarity. + +Will: Hey @CaiB I helped Charles figure out the DFT-ish thing that's implemented in colorchord. I did the conceptual stuff, he wrote the actual code. + +CaiB: Ooh, nice to meet you o/ + +Will: Basically the idea is this: if we can do something clever to get the note intensities within one octave, then we can average adjacent samples together as a simple low-pass filter, and repeat the clever thing to get notes an octave lower. So then the next insight is that we're looking for repeating patterns, and they can all be decomposed into sine waves. The reasoning behind this is complicated if you haven't seen it, but it's called fourier analysis, and there's a lot of tutorials around on the internet. + +CaiB: I know enough about this stuff to kinda get the gist, but not enough to be practically useful in comprehensive understanding or implementation. + +Will: So, okay, sine waves. let's start with a simple idea: suppose we just guess that the frequency is exactly some value. that is, our samples are `f(t) = sin(t*omega)` for some value of `omega`. So if we multiply our samples by `sin(t*omega)` again, we get `sin(t*omega)*sin(t*omega)` also notated `sin^2(t*omega)` + +CaiB: OK, yeah (If it's easier for you, we can do a voice call so you don't have to type a bunch of stuff) + +Charles: I would kind of like to document the text. + +Will: The way I think of this is basically: if we happen to pick the right value of omega, those values will all tend to add up faster than if we pick the wrong value +(really, it's more like `sin(t*omega_actual) * sin(t*omega_guessed))`) + +CaiB: OK, so kinda like constructive vs destructive interference but multiplied not added. + +Will: Exactly! the intuition is that if we pick `omega_guessed` to be nearly equal to `omega_actual` the sum over the window we're considering will add up to a bigger value than if we pick a guess that's, say, 10% too big. + +CaiB: Gotcha + +Will: The next layer to add is this: We're assuming everything is gonna get decomposed into sine waves. However, a sine wave isn't just parameterized by a frequency, there's also phase information. So to account for this potential phase shift, we can multiply our signal with two functions with a 90 degree phase shift +two functions that happen to have a 90 degree phase shift are the sine and the cosine. +CaiB: Oooh, that way you can look at proprtions of the outputs to get an idea of the actual phase. + +Will: So if we take `f(t) = sin(omega*t + phi)` and then do `f(t) * sin(omega * t) + f(t) * cos(omega*t)` then regardless of the value of phi the sum over our window adds up to the same value! You could extract phase information, but colorchord doesn't actually do that iirc. +CaiB: When you say "over the window", what kind of ballpark are we talking? 10 samples? 100? + +Will: Usually it makes sense to think of the window as being in seconds rather than samples. Your sample rate is basically totally up to you, but humans perceive a fixed frequency range around 20hz-20khz + +CaiB: I mean, for ColorChord it's just set by the system audio mode, so around 44.1k-48k usually.. + +Will: Yeah, but you can do it on a microcontroller like an AVR where you're doing the ADC yourself at some arbitrary rate and the window can be a sliding window, in the sense that you don't need to process entirely non-overlapping blocks. You could even get to doing this once per sample, just using the last N samples each time. +CaiB: Now if I'm remembering correctly, your window size significantly impacts what resolution your output is? + +Will: The window size basically only determines the speed of reaction to new inputs. If you used a 10 second window, you wouldn't notice a new note until it had been around for a few seconds for example ok, so. we figured out how to determine how much a single frequency/note is happening in a window of time. But there's still a bunch of FP math going on, and depending on what system you're dealing with you might have a slow FPU or no sin/cos function in hardware and getting only the intensity of a single frequency doesn't give us very much pitch information at all. so how can we get more? make more guesses in parallel! + +Will: In 12-tone just intonation, the rule is that each half-step is `2^(1/12) ~= 1.06` times higher than its neighbor. so within each octave, we have a separate data structure for the intensity of each half-step so we get 12 of these, with frequencies `[1, 1.06, 1.12, 1.19, 1.26, 1.33, 1.31, 1.50, ...]` +CaiB: Let's say you're guessing at 100 Hz and 110 Hz, both of them being let's say 50% strong. How do you know the difference between a sound signal that just has weak content at 100 and 110 vs strong content at 105? + +Will: We'll get there... But ultimately the answer is that you can do curve fitting on the values you get out. you're right, feeding 105 hz into a thing with 100 and 110 hz guesses will give strong values for both (it's actually an exponential system, so the "halfway" point is `sqrt(100*110) = 104.88`, not `105`, but the point stands) +but we can also look at the adjacent bins even further outside to give an indication of where the peak is. suppose we're dealing with a `108 hz` signal, and we have bins at `90, 100, 110, 120`. +CaiB: Aah. + +Will: We can fit a curve to the intensities in those bins, and we'll find a peak at approximately `108hz`. so as long as we have a decent number of bins, the location of the peak should be pretty easy to find. +CaiB: Because one at `108` is a sharper peak (less spread to further bins) than two at `100` and `110`. + +Will: (so ultimately, the exact values of the bins don't really matter, but it's easier for me to think of it as a 12-tone scale) well... there isn't a bin at 108hz, only one at `100` and `110`. Usually music tends to have harmonic content, so you don't see `100hz` played next to `110hz`, you see a single `108hz` note. so colorchord basically assumes you're playing music and you would prefer the answer `108hz`. + +CaiB: Sorry, I meant one peak in frequency content at `108hz` would mean bins `90hz` and `120hz` see lower numbers than an input with content at `100hz` and `110hz`, where `90hz` and `120hz` would see larger numbers. + +Editorial Note from Charles: The section below is an extremely powerful concept. It's what ultimately took ColorChord from needing a GPU to being able to run on microcontrollers. + +Will: Yeah, the spread of the distribution is important. And if you added more bins, you'd be able to see the distinction between `100hz+110hz` and `108hz` alone the expensive part of adding more resolution is adding more bins within a single octave, but there's a clever thing we can do to get all the octaves we can hear for only 2x the cost of doing a single octave. Effectively all of our base frequency bins are in the highest octave we care about. then by doing the 2x averaging i mentioned earlier, we get one octave lower. And by repeatedly averaging samples, we get additional octaves lower basically, think of it like this: +* Every sample we calculate octave 8. +* Every 2nd sample we average the last 2 samples from octave 8, and use them to calculate octave 7. +* Every 4th sample we average the last 2 samples from octave 7, and use them to calculate octave 6. +* 8th, 2, 6, 5 +* 16th, 2, 5, 4 +* ... +By cleverly interleaving the work, we can do a fixed amount of averaging-and-higher-octave-stuff every tick the octave we work on at each tick is determined by the number of zeroes at the end of the binary representation of the tick number. +`0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, ...` + +CaiB: Neat. I'm still not quite understanding how the 2x averaging works though, you'd still need to compare it to a sine wave at the lower frequency, right? + +SamE: Question: Why not use the aliasing property of the DFT to get the other frequency bins? + +Will: By averaging, we're effectively getting samples that count for twice as much time, or half as much frequency, which means notes exactly one octave lower. + +Will: @SamE: I may well not understand it well enough to take advantage of it correctly, but let's talk it out a bit. + +SamE: TBH: I don't understand it either. + +Will: @CaiB fyi here's [the definition of the DFT on wikipedia](https://en.wikipedia.org/wiki/Discrete_Fourier_transform#Definition) so you can see how the formalism correlates to the extremely-informal construction I gave above. + +Will: Is there good math formatting maybe? `$f(x) = 3x$` + +CaiB: Yeah, that just flies right over my head by the time I get a few sentences in. Haha, Discord is not fancy enough for anything other than the most basic of formatting. + +Will: The second part with the sines and the cosines is basically what I was talking about. @Sam E so my understanding is basically that because of aliasing, frequencies higher than your sample rate wind up reflected off your sample rate. Which we avoid by using averaging as a low pass filter, so that there can be no frequencies higher than sample rate. iow (?) the highest octave is directly from captured audio samples, so it doesn't contain any information higher than nyquist allows. each of the lower octaves is downsampled to remove one octave off the top. + +CaiB: OH, you're taking the average of every two samples, then treating that as the _same_ sample rate. + +Will: Yes. you want to only keep half as many samples around, though, or you'll be considering twice as long a window in real-time. + +CaiB: Essentially speeding up the audio by 2x, then comparing it to the same standard sine waves. + +Will: Yep! + +CaiB: Ooooh. I was thinking you were taking a 48kHz sample rate signal, averaging them and treating it as a 24kHz signal, which would just get you a worse version of the same result. + +Will: Whoa, here's a picture from wikipedia that describes things very similar to what i'm talking about! ![WOLA Channelizer](https://en.wikipedia.org/wiki/Filter_bank#/media/File:WOLA_channelizer_example.png) + +CaiB: And that way you can precompute the comparisons, one sine and one cosine for each bin in only one octave? + +Will: Yeah! the other trick you can play is to just add the samples instead of averaging. this means you take (let's say) two 16-bit samples, and get one 17-bit result which is twice as large on average as a highest-octave 16-bit sample but you only have half as many of those 17-bit samples in your window, and by definition their sum is the same as the sum of the 16-bit samples so the magnitudes you get per octave are comparable. + +CaiB: Then divide the output by two. Half the resolution, but about half the calculations. Oh! + +Will: In other words you don't get a reading that says "note 6 in octave 3 is twice as loud as in octave 4" when in fact they're equal. + +SamE: What I was saying is trying to be clever (always dangerous) and try and use the aliasing to stack all of the information we want into the same bins for us. One would probably have to add in a few more DSP filters in order to flip some of the higher frequency images. I might have to experiment with this later. + +CaiB: So on the output, you're updating the top octave every sample, the second-highest octave every other sample, etc, until the lowest is only updating once in a while (comparatively)? And that still works OK? + +Will: Using some kind of clever sub-sampling to fold things around might work: [Alias wikipedia page, section Folding](https://en.wikipedia.org/wiki/Aliasing#Folding) Yeah, if you think about it the bottom octave can't change too fast or it wouldn't be in the bottom octave anymore :open_mouth: + +CaiB: But if a low tone starts and stops playing repeatedly, you may end up completely losing that info, and just seeing a weaker signal instead of the actual pulsing. + +Will: Take a pathological example: consider a wave where the top half of each pulse is at 40 hz, and the bottom is at 38hz wellllll... that's really just a 39hz wave with some distortion! + +CaiB: I'm thinking more along the lines of take a 40Hz sine signal, then multiply it by a 0-1 square wave at 200 Hz. You'd just see the 40Hz at a intensity corresponding to the duty cycle of the square wave, not the actual on-off pattern. + +Will: Well, you'd see an output at 40hz corresponding to the amount of time that the 40hz signal is present for sure. but you'd also see a strong 200hz (and many higher-frequency!) signals corresponding to the 200hz square wave + +CaiB: But you have no way of knowing that the 40Hz signal is actually starting and stopping vs just being weaker. + +Will: a description of how you got to a particular waveform isn't the same as a description of what it sounds like :wink: + +SamE: In the frequency domain, aren't they essentially the same thing. + +Will: And if you want a system that changes its fundamental answer 400 times a second, you probably do not want an audio system. + +CaiB: @SamE, My point is if you were to just watch a live graph of the frequency domain, you'd see the low frequencies refresh slowly, and won't be able to see a pulsing signal down there as actually pulsing. Whereas a 5kHz signal turning on and off at that same 200Hz you could clearly see turning on and off because your graph refreshes fast enough up there. + +Will: I think if you wanted to see things at that level you could, by subtracting out old samples from that octave and adding in new ones live... but i don't think that audio sounds like you think. + +SamE: Okay, I need to turn this off so that I can finish a presentation for work. Thanks for explain this to us mere mortals. :slight_smile: + +CaiB: OK, it probably wouldn't be useful to audio but for actually analyzing a signal thoroughly it may be a problem. But I guess that's outside the scope I might try to implement this from scratch when I have some free time, since trying to look at the existing code just makes my brain stop working. So let's say your window is 1000 samples long. You're doing `1000 samples * (1 for sin + 1 for cos) * 24 bins` number of calculations every single sample, just to get the highest octave? Also, is this something you came up with yourself? If so, how? :exploding_head: + +Will: Example Audio (chop.wav) / (chop.pv). + +CaiB: Hmm, how is the actual sin/cos multiplication step done? Because if you just go in with no previous info, (assuming 1000 sample window) you'd need to multiply every sample by the precomputed sin and cos, so 2000 multiplications. Then, assuming you don't want phase info, you'd maybe just add each sin and cos value together, but then you also need to sum all of them up in order to compare the entire window, so 1000 adds. And now do that for every bin, so 24 times just for that one octave. That's a lot of math. + +Will: there are a bunch of tricks you can play to not do so much work. for example, instead of using processing you could use more memory: you can remember the results of `sin*sample + cos*sample` and then just subtract the sample that's falling out of your window and add the one that's coming in. Or approximate your windowing function using an IIR filter: just multiply your "last" value by something like 0.999 each sample, and the influence of old samples will be forgotten implicitly over time. + +CaiB: Charles does love his IIRs (assuming he's the one that made the post-DFT analysis). + +Editorial Note: ColorChord almost exclusively uses IIRs for this purpose. In practice they work/feel better than other triangular solutions because of the logarithmic nature of how we perceive sound. Also, yes, Charles rarely works on a project more than a month before he finds a use for IIRs. + +Will: I built the description in my head of why this works, but i did so by reading a lot on DFT and DTFT and taking a class on complex analysis. stay in school, i guess? Hah, so he does. + +CaiB: "school" did a great job of making me hate every subject I took, even ones I used to love previously... + +Will: PS: the audio file above is generated using the method you mentioned above. i think it shows that mostly what you hear is 200hz and harmonics of that. + +CaiB: Not quite, your square wave is -1 to 1, but I get the point. + +Will: yeah, I agree that school can be a backwards way of approaching subjects if you can become interested in the subject first, and then learn the formality behind it, it can be a great way of figuring out how to apply things, but if you have to slog through the formality with no idea where you're going it's not exactly gonna instill a love of the subject. Yup, so it is, change the definition of `c` to be all that stuff `+1` and it'll be what you were talking about. Doesn't sound much different though. (see chop2.wav / chop2.png) + +CaiB: It's more just that the methods taught are often so abstract it feels pointless. An entire class I took was just doing RLC-type circuit analysis using various methods like Laplace transforms. When in the real world, you just plug it into a calculator and will never use that unless you are the 0.1% of people who develop those calculators or other weird applications... 40 and 200 were a bad choice, speeding it up by 4x, you can definitely hear both tones. (See chopfast.wav) + +Will: Sure, but my point earlier is that colorchord will probably tell you "this is mostly 200hz content, with some 40" because that's what it sounds like. + +CaiB: Yeah, good enough. + +Will: Not "this is 40hz, now nothing, now 40hz, now nothing..." + +CaiB: I mean, by the time it shows up, 200Hz changes would be completely smoothed to oblivion anyways. It's just steady this. (See cc-screenshot3.png) + +Will: Yeah, what's happening in colorchord is that it squashes all the octaves together. + +CaiB: Yeah, I understand all the processing happening after the DFT. Just a couple of days ago I went through line-by-line, commented and rewrote some parts to actually understand what it does. + +Will: So it sees 40hz, and 200/4 = 50hz, which is a perfect major third: (Wikipedia article on Major Thirds)[https://en.wikipedia.org/wiki/Major_third] so it makes green for one of those and red for the other. + +CaiB: E1-ish = 40Hz, G1-ish = 50Hz. Mine is looking at the 4x version because ColorChord doesn't even look below 55Hz, so more like E3ish and G3ish. Also because my speakers can't output 40Hz enough to be useful here, so I 4xed it to hear the low tone. + +Will: yeah, eventually you need a cutoff on how low you look, aka how many times you average pairs of samples. Also, depending on what shape of sine wave you pick for the highest rate, you can limit how high you listen but still get good resolution and you don't even necessarily need to use many samples, or good-quality samples for your sin/cos tables! Like your high-res sin table, in full, could be: `[0, 1, 0, -1]` And the one at the other end of the octave could be `[1, -1, 1, -1]` or so. + +CaiB: So assuming 5 octaves like is used, and no clever interleaving, every `2 << (5 - 1) = 32` samples you need to calculate all octaves + +Will: Yeah, but over those 32 samples you need to do: highest octave: 32 calculations next-highest: `16, 8, 4, 2, 1` total: 63 calculations (and 31 sums/averages) + +CaiB: Wouldn't it be 63 * 2 because `sin` and `cos`. + +Will: Well, sure, for some complicated version of "calculations" + +CaiB: OK, fair. + +Will: And you need to do some adds and so on. This is all handwavy. + +CaiB: Hold up, 4 element tables? I'm amazed you don't just get literal garbage out of that. + +Will: well it's not great, that's for sure! + +CaiB: Looks like the table in the actual implementation is 256 long. + +Will: Since you're aligning a longer sequence to it, you wind up re-using elements often enough to make it kinda work buuut don't start with a 4-element table as a goal. definitely a distorted sine wave. + +CaiB: Yeah, like said when I have time, I'm going to try to recreate it from scratch, now that I can actually see the logic behind it. A decent while back I ported ColorChord to C#, and copy-pasted/re-wrote everything but the DFT because it looks so alien and scary, so in my fork it literally is still the original C code sitting there all alone. Well thank you very much for taking the time to explain this, very much appreciated + +Will: Happy to help! hope your reimplementation goes well. diff --git a/docs/TheoryOfCCDFT/cc-screenshot3.png b/docs/TheoryOfCCDFT/cc-screenshot3.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2e9eb0d32a1a6de6687e23100af88cbc433fe1 GIT binary patch literal 5270 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 CDIZ4w literal 0 HcmV?d00001 diff --git a/docs/TheoryOfCCDFT/chop.wav b/docs/TheoryOfCCDFT/chop.wav new file mode 100644 index 0000000000000000000000000000000000000000..37e2ea8c01d4d2a28d78f6a7cf2658797bd2f9b5 GIT binary patch literal 88244 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 literal 0 HcmV?d00001 diff --git a/docs/TheoryOfCCDFT/chopfast.wav b/docs/TheoryOfCCDFT/chopfast.wav new file mode 100644 index 0000000000000000000000000000000000000000..34d4b1f18248a935010d59a0a14f3b5477e45c85 GIT binary patch literal 220544 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≶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