Fix ColorChord on Windows10 32-bit TinyCC Compilation.
This commit is contained in:
parent
0b2e686d55
commit
9c3e841771
|
@ -17,6 +17,7 @@
|
||||||
#endif
|
#endif
|
||||||
#define MSG_NOSIGNAL 0
|
#define MSG_NOSIGNAL 0
|
||||||
#else
|
#else
|
||||||
|
#define closesocket( x ) close( x )
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
@ -191,7 +192,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf)
|
||||||
if( r < 0 )
|
if( r < 0 )
|
||||||
{
|
{
|
||||||
fprintf( stderr, "Send fault.\n" );
|
fprintf( stderr, "Send fault.\n" );
|
||||||
close( d->socket );
|
closesocket( d->socket );
|
||||||
d->socket = -1;
|
d->socket = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf)
|
||||||
for( i = 0; i < d->note_peaks; i++ )
|
for( i = 0; i < d->note_peaks; i++ )
|
||||||
{
|
{
|
||||||
struct LINote * l = &d->notes[i];
|
struct LINote * l = &d->notes[i];
|
||||||
l->ledexp = pow( nf->note_amplitudes2[i], d->pow ) - d->cutoff;
|
l->ledexp = powf( nf->note_amplitudes2[i], d->pow ) - d->cutoff;
|
||||||
if( l->ledexp < 0 ) l->ledexp = 0;
|
if( l->ledexp < 0 ) l->ledexp = 0;
|
||||||
totalexp += l->ledexp;
|
totalexp += l->ledexp;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ static void DPOUpdate(void * id, struct NoteFinder*nf)
|
||||||
for( i = 0; i < d->note_peaks; i++ )
|
for( i = 0; i < d->note_peaks; i++ )
|
||||||
{
|
{
|
||||||
struct LINote * l = &d->notes[i];
|
struct LINote * l = &d->notes[i];
|
||||||
l->ledexp = pow( nf->note_amplitudes2[i], d->amppow ) - d->cutoff;
|
l->ledexp = powf( nf->note_amplitudes2[i], d->amppow ) - d->cutoff;
|
||||||
if( l->ledexp < 0 ) l->ledexp = 0;
|
if( l->ledexp < 0 ) l->ledexp = 0;
|
||||||
totalexp += l->ledexp;
|
totalexp += l->ledexp;
|
||||||
if( d->from_sides )
|
if( d->from_sides )
|
||||||
|
|
BIN
colorchord2/colorchord.exe
Normal file
BIN
colorchord2/colorchord.exe
Normal file
Binary file not shown.
|
@ -97,6 +97,39 @@ extern "C" {
|
||||||
};
|
};
|
||||||
#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
|
#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
|
||||||
|
|
||||||
|
#define WINSETUPAPI __declspec(dllimport) //XXX Should these be CDECL?
|
||||||
|
WINSETUPAPI BOOL SetupDiEnumDeviceInterfaces(
|
||||||
|
HDEVINFO DeviceInfoSet,
|
||||||
|
PSP_DEVINFO_DATA DeviceInfoData,
|
||||||
|
const GUID *InterfaceClassGuid,
|
||||||
|
DWORD MemberIndex,
|
||||||
|
PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData
|
||||||
|
);
|
||||||
|
WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailA(
|
||||||
|
HDEVINFO DeviceInfoSet,
|
||||||
|
PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
|
||||||
|
PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,
|
||||||
|
DWORD DeviceInterfaceDetailDataSize,
|
||||||
|
PDWORD RequiredSize,
|
||||||
|
PSP_DEVINFO_DATA DeviceInfoData
|
||||||
|
);
|
||||||
|
WINSETUPAPI BOOL SetupDiEnumDeviceInfo(
|
||||||
|
HDEVINFO DeviceInfoSet,
|
||||||
|
DWORD MemberIndex,
|
||||||
|
PSP_DEVINFO_DATA DeviceInfoData
|
||||||
|
);
|
||||||
|
WINSETUPAPI BOOL SetupDiGetDeviceRegistryPropertyA(
|
||||||
|
HDEVINFO DeviceInfoSet,
|
||||||
|
PSP_DEVINFO_DATA DeviceInfoData,
|
||||||
|
DWORD Property,
|
||||||
|
PDWORD PropertyRegDataType,
|
||||||
|
PBYTE PropertyBuffer,
|
||||||
|
DWORD PropertyBufferSize,
|
||||||
|
PDWORD RequiredSize
|
||||||
|
);
|
||||||
|
WINSETUPAPI BOOL SetupDiDestroyDeviceInfoList(
|
||||||
|
HDEVINFO DeviceInfoSet
|
||||||
|
);
|
||||||
#else
|
#else
|
||||||
#include <setupapi.h>
|
#include <setupapi.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
|
|
|
@ -166,6 +166,7 @@ int main(int argc, char ** argv)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
#ifdef TCC
|
#ifdef TCC
|
||||||
|
void ManuallyRegisterDevices();
|
||||||
ManuallyRegisterDevices();
|
ManuallyRegisterDevices();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -288,7 +288,6 @@ void RunNoteFinder( struct NoteFinder * nf, const float * audio_stream, int head
|
||||||
nf->note_founds[i] = 1;
|
nf->note_founds[i] = 1;
|
||||||
|
|
||||||
nf->note_positions[i] = avgloop( nf->note_positions[i], (1.-nf->note_attach_freq_iir), nf->dists[j].mean, nf->note_attach_freq_iir, nf->freqbins);
|
nf->note_positions[i] = avgloop( nf->note_positions[i], (1.-nf->note_attach_freq_iir), nf->dists[j].mean, nf->note_attach_freq_iir, nf->freqbins);
|
||||||
|
|
||||||
//I guess you can't IIR this like normal.
|
//I guess you can't IIR this like normal.
|
||||||
////note_positions[i] * (1.-note_attach_freq_iir) + dists[j].mean * note_attach_freq_iir;
|
////note_positions[i] * (1.-note_attach_freq_iir) + dists[j].mean * note_attach_freq_iir;
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <mmsystem.h>
|
#include <mmsystem.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#if defined(WIN32)
|
#if defined(WIN32) && !defined( TCC )
|
||||||
#pragma comment(lib,"winmm.lib")
|
#pragma comment(lib,"winmm.lib")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -133,11 +134,14 @@ static struct SoundDriverWin * InitWinSound( struct SoundDriverWin * r )
|
||||||
|
|
||||||
printf( "Wave Devs: %d; WAVE_MAPPER: %d; Selected Input: %d\n", waveInGetNumDevs(), WAVE_MAPPER, dwdevice );
|
printf( "Wave Devs: %d; WAVE_MAPPER: %d; Selected Input: %d\n", waveInGetNumDevs(), WAVE_MAPPER, dwdevice );
|
||||||
|
|
||||||
printf( "waveInOpen: %p, %p\n", &r->hMyWave, &wfmt );
|
printf( "waveInOpen: %p, %p\n", r->hMyWave, &wfmt );
|
||||||
|
|
||||||
int p = waveInOpen(&r->hMyWave, dwdevice, &wfmt,(DWORD)(void*)(&HANDLEMIC) , 0, CALLBACK_FUNCTION);
|
int p = waveInOpen(&r->hMyWave, dwdevice, &wfmt, (void*)(&HANDLEMIC) , 0, CALLBACK_FUNCTION);
|
||||||
|
|
||||||
printf( "WIO: %d\n", p );
|
if( p )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Error performing waveInOpen. Received code: %d\n", p );
|
||||||
|
}
|
||||||
|
|
||||||
for ( i=0;i<BUFFS;i++)
|
for ( i=0;i<BUFFS;i++)
|
||||||
{
|
{
|
||||||
|
@ -145,13 +149,17 @@ static struct SoundDriverWin * InitWinSound( struct SoundDriverWin * r )
|
||||||
(r->WavBuff[i]).dwBufferLength = r->buffer*2*r->channelsRec;
|
(r->WavBuff[i]).dwBufferLength = r->buffer*2*r->channelsRec;
|
||||||
(r->WavBuff[i]).dwLoops = 1;
|
(r->WavBuff[i]).dwLoops = 1;
|
||||||
(r->WavBuff[i]).lpData=(char*) malloc(r->buffer*r->channelsRec*2);
|
(r->WavBuff[i]).lpData=(char*) malloc(r->buffer*r->channelsRec*2);
|
||||||
waveInPrepareHeader(r->hMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR));
|
p = waveInPrepareHeader(r->hMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR));
|
||||||
|
printf( "WIP: %d\n", p );
|
||||||
waveInAddBuffer(r->hMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR));
|
waveInAddBuffer(r->hMyWave,&(r->WavBuff[i]),sizeof(WAVEHDR));
|
||||||
|
printf( "WIA: %d\n", p );
|
||||||
}
|
}
|
||||||
|
\
|
||||||
p = waveInStart(r->hMyWave);
|
p = waveInStart(r->hMyWave);
|
||||||
|
if( p )
|
||||||
printf( "WIS: %d\n", p );
|
{
|
||||||
|
fprintf( stderr, "Error performing waveInStart. Received code %d\n", p );
|
||||||
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
@echo off
|
@echo off
|
||||||
echo Unzip https://download.savannah.gnu.org/releases/tinycc/tcc-0.9.26-win64-bin.zip to C:\tcc
|
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.. -I. -I../../embeddedcommon -rdynamic -g
|
||||||
set LDFLAGS=-lkernel32 -lgdi32 -luser32 -lsetupapi -ldbghelp -ltcc1 -lwinmm -lws2_32
|
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 ..\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 ARCH_SPECIFIC=-L32
|
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
|
||||||
@echo on
|
@echo on
|
||||||
C:\tcc\tcc %CFLAGS% %ARCH_SPECIFIC% %SOURCES% %LDFLAGS% -o ..\colorchord.exe
|
%CC% %CFLAGS% %ARCH_SPECIFIC% %SOURCES% %LDFLAGS% -o ..\colorchord.exe
|
3
colorchord2/windows/run.bat
Normal file
3
colorchord2/windows/run.bat
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
cd ..
|
||||||
|
colorchord
|
||||||
|
cd windows
|
|
@ -1,7 +1,12 @@
|
||||||
|
#include <string.h>
|
||||||
#include <_mingw.h>
|
#include <_mingw.h>
|
||||||
|
#include <tcclib.h>
|
||||||
|
#include "symbol_enumerator.h"
|
||||||
|
|
||||||
|
_CRTIMP int __cdecl _vscprintf(const char *_Format,va_list _ArgList);
|
||||||
|
|
||||||
#define REMATH(x) double __cdecl x( double f ); float x##f(float v) { return x(v); }
|
#define REMATH(x) double __cdecl x( double f ); float x##f(float v) { return x(v); }
|
||||||
|
#define REMATH2(x) double __cdecl x( double f, double g ); float x##f(float v, float w) { return x(v,w); }
|
||||||
|
|
||||||
int SymnumCheck( const char * path, const char * name, void * location, long size )
|
int SymnumCheck( const char * path, const char * name, void * location, long size )
|
||||||
{
|
{
|
||||||
|
@ -27,8 +32,8 @@ REMATH( sin );
|
||||||
REMATH( sqrt );
|
REMATH( sqrt );
|
||||||
REMATH( asin );
|
REMATH( asin );
|
||||||
REMATH( exp );
|
REMATH( exp );
|
||||||
REMATH( fmod );
|
REMATH2( fmod );
|
||||||
REMATH( pow );
|
REMATH2( pow );
|
||||||
|
|
||||||
double __cdecl strtod (const char* str, char** endptr);
|
double __cdecl strtod (const char* str, char** endptr);
|
||||||
float strtof( const char* str, char** endptr)
|
float strtof( const char* str, char** endptr)
|
||||||
|
|
Loading…
Reference in a new issue