colorchord/colorchord2/configs.c

168 lines
3.9 KiB
C

#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;
printf( "Loading file: %s\n", filename );
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 );
r = fread( buffer, 1, size, f);
fclose( f );
buffer[size] = 0;
if( r != size )
{
fprintf( stderr, "Warning: %d bytes read. Expected: %d from file %s\n", r, size, filename );
}
else
{
SetParametersFromString( buffer );
}
free( buffer );
}
}
void SetEnvValues( int force )
{
static int ifcheck;
int hits = 0;
if( InitialFileCount )
{
//Only check one location per frame.
double ft = OGGetFileTime( InitialFile[ifcheck] );
if( FileTimes[ifcheck] != ft )
{
FileTimes[ifcheck] = ft;
hits++;
}
ifcheck = ( ifcheck + 1 ) % InitialFileCount;
}
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=32" );
SetParametersFromString( "lighty=60" );
SetParametersFromString( "fromsides=1" );
SetParametersFromString( "shape_cutoff=0.03" );
SetParametersFromString( "satamp=5.000" );
SetParametersFromString( "amppow=2.510" );
SetParametersFromString( "distpow=1.500" );
printf( "On Android, looking for configuration file in: %s\n", InitialFile[0] );
#endif
int i;
for( i = 0; i < InitialFileCount; i++ )
{
LoadFile( InitialFile[i] );
}
for( ; i < gargc; i++ )
{
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()
{
#ifdef ANDROID
InitialFile[0] = "/sdcard/colorchord-android.txt";
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
ProcessArgs();
}