Created
March 2, 2019 03:53
-
-
Save jroweboy/e7d6de6c565bb16ecbc07ccf0bd80ddf to your computer and use it in GitHub Desktop.
Hardware test for 3ds mic rate at which it writes to the shared mem buffer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdlib.h> | |
#include <stdio.h> | |
#include <string.h> | |
#include <malloc.h> | |
#include <3ds.h> | |
#include <time.h> | |
void sampleTest(MICU_SampleRate sampleRate) { | |
if(R_SUCCEEDED(MICU_StartSampling(MICU_ENCODING_PCM16_SIGNED, sampleRate, 0, micGetSampleDataSize(), true))) printf("Now recording.\n"); | |
u64 start = svcGetSystemTick(); | |
u32 last_offset = micGetLastSampleOffset(); | |
u32 count = 0; | |
u32 lame_way_to_wait_some_time = 0; | |
while (lame_way_to_wait_some_time++ < 10000000) { | |
u32 this_offset = micGetLastSampleOffset(); | |
if (last_offset != this_offset) { | |
last_offset = this_offset; | |
++count; | |
} | |
} | |
printf("Offset changed %lu times in %llu ticks\n\n", count, svcGetSystemTick() - start); | |
if(R_FAILED(MICU_StopSampling())) printf("Failed to stop sampling.\n"); | |
} | |
int main() | |
{ | |
gfxInitDefault(); | |
consoleInit(GFX_BOTTOM, NULL); | |
u32 micbuf_size = 0x30000; | |
u8* micbuf = memalign(0x1000, micbuf_size); | |
printf("Initializing CSND...\n"); | |
if(R_FAILED(csndInit())) | |
{ | |
printf("Could not initialize CSND.\n"); | |
} else printf("CSND initialized.\n"); | |
printf("Initializing MIC...\n"); | |
if(R_FAILED(micInit(micbuf, micbuf_size))) | |
{ | |
printf("Could not initialize MIC.\n"); | |
} else printf("MIC initialized.\n"); | |
u32 audiobuf_size = 0x100000; | |
u8* audiobuf = linearAlloc(audiobuf_size); | |
printf("Starting sample rate testing. Please wait a second or so for each test\n"); | |
printf("Sample Rate 8180\n"); | |
sampleTest(MICU_SAMPLE_RATE_8180); | |
printf("Sample Rate 10910\n"); | |
sampleTest(MICU_SAMPLE_RATE_10910); | |
printf("Sample Rate 16360\n"); | |
sampleTest(MICU_SAMPLE_RATE_16360); | |
printf("Sample Rate 32730\n"); | |
sampleTest(MICU_SAMPLE_RATE_32730); | |
printf("Press START to exit.\n"); | |
while(aptMainLoop()) | |
{ | |
hidScanInput(); | |
gspWaitForVBlank(); | |
u32 kDown = hidKeysDown(); | |
if (kDown & KEY_START) | |
break; // break in order to return to hbmenu | |
gfxFlushBuffers(); | |
gfxSwapBuffers(); | |
} | |
linearFree(audiobuf); | |
micExit(); | |
free(micbuf); | |
csndExit(); | |
gfxExit(); | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment