colorchord/colorchord2/configs.c

168 lines
3.9 KiB
C
Raw Permalink Normal View History

2016-07-21 03:11:39 +02:00
#include "configs.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <os_generic.h>
#include "parameters.h"
int gargc;
char ** gargv;
const char * InitialFile[NRDEFFILES];
double FileTimes[NRDEFFILES];
int InitialFileCount = 1;
void LoadFile( const char * filename )
{
char * buffer;
int r;
2020-05-11 23:25:25 +02:00
printf( "Loading file: %s\n", filename );
2016-07-21 03:11:39 +02:00
FILE * f = fopen( filename, "rb" );
if( !f )
{
fprintf( stderr, "Warning: cannot open %s.\n", filename );
}
else
{
fseek( f, 0, SEEK_END );
int size = ftell( f );
fseek( f, 0, SEEK_SET );
buffer = malloc( size + 1 );
2020-05-16 08:35:49 +02:00
r = fread( buffer, 1, size, f);
2016-07-21 03:11:39 +02:00
fclose( f );
buffer[size] = 0;
2020-05-16 08:35:49 +02:00
if( r != size )
2016-07-21 03:11:39 +02:00
{
2020-05-16 08:35:49 +02:00
fprintf( stderr, "Warning: %d bytes read. Expected: %d from file %s\n", r, size, filename );
2016-07-21 03:11:39 +02:00
}
else
{
SetParametersFromString( buffer );
}
free( buffer );
}
}
void SetEnvValues( int force )
{
2020-05-19 00:29:35 +02:00
static int ifcheck;
2016-07-21 03:11:39 +02:00
int hits = 0;
2020-05-19 00:29:35 +02:00
if( InitialFileCount )
2016-07-21 03:11:39 +02:00
{
2020-05-19 00:29:35 +02:00
//Only check one location per frame.
double ft = OGGetFileTime( InitialFile[ifcheck] );
if( FileTimes[ifcheck] != ft )
2016-07-21 03:11:39 +02:00
{
2020-05-19 00:29:35 +02:00
FileTimes[ifcheck] = ft;
2016-07-21 03:11:39 +02:00
hits++;
}
2020-05-19 00:29:35 +02:00
ifcheck = ( ifcheck + 1 ) % InitialFileCount;
2016-07-21 03:11:39 +02:00
}
if( !hits && !force ) return;
//Otherwise, something changed.
2019-11-17 11:53:02 +01:00
#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" );
2020-05-11 06:23:04 +02:00
SetParametersFromString( "lightx=32" );
SetParametersFromString( "lighty=60" );
2019-11-17 11:53:02 +01:00
SetParametersFromString( "fromsides=1" );
SetParametersFromString( "shape_cutoff=0.03" );
SetParametersFromString( "satamp=5.000" );
SetParametersFromString( "amppow=2.510" );
SetParametersFromString( "distpow=1.500" );
2020-05-11 06:23:04 +02:00
printf( "On Android, looking for configuration file in: %s\n", InitialFile[0] );
#endif
2020-05-19 00:29:35 +02:00
int i;
2020-05-11 23:25:25 +02:00
for( i = 0; i < InitialFileCount; i++ )
{
LoadFile( InitialFile[i] );
}
for( ; i < gargc; i++ )
2016-07-21 03:11:39 +02:00
{
if( strchr( gargv[i], '=' ) != 0 )
{
printf( "AP: %s\n", gargv[i] );
SetParametersFromString( gargv[i] );
}
else
{
printf( "LF: %s\n", gargv[i] );
LoadFile( gargv[i] );
}
}
}
void ProcessArgs()
{
int i;
for( i = 1; i < gargc; i++ )
{
if( strchr( gargv[i], '=' ) != 0 )
{
//A value setting operation
}
else
{
InitialFile[InitialFileCount++] = gargv[i];
}
}
SetEnvValues( 1 );
}
void SetupConfigs()
{
2020-05-11 06:23:04 +02:00
#ifdef ANDROID
2020-05-11 23:25:25 +02:00
InitialFile[0] = "/sdcard/colorchord-android.txt";
2020-05-19 00:29:35 +02:00
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;
2020-05-11 06:23:04 +02:00
#else
2016-07-21 03:11:39 +02:00
InitialFile[0] = "default.conf";
2020-05-11 06:23:04 +02:00
#endif
2016-07-21 03:11:39 +02:00
ProcessArgs();
}