It’s curious, what do you think of these entries in the fmod api:
fmod.h
/* Recording API. */
FMOD_RESULT F_API FMOD_System_GetRecordNumDrivers (FMOD_SYSTEM *system, int *numdrivers, int *numconnected);
FMOD_RESULT F_API FMOD_System_GetRecordDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_DRIVER_STATE *state);
FMOD_RESULT F_API FMOD_System_GetRecordPosition (FMOD_SYSTEM *system, int id, unsigned int *position);
FMOD_RESULT F_API FMOD_System_RecordStart (FMOD_SYSTEM *system, int id, FMOD_SOUND *sound, FMOD_BOOL loop);
FMOD_RESULT F_API FMOD_System_RecordStop (FMOD_SYSTEM *system, int id);
FMOD_RESULT F_API FMOD_System_IsRecording (FMOD_SYSTEM *system, int id, FMOD_BOOL *recording);
and theses from the defold fmod native extension:
fmod_generated.c
#ifdef FMODBridge_func_FMOD_System_GetRecordNumDrivers
lua_pushcfunction(L, &FMODBridge_func_FMOD_System_GetRecordNumDrivers);
lua_setfield(L, -4, "get_record_num_drivers");
#endif
#ifdef FMODBridge_func_FMOD_System_GetRecordDriverInfo
lua_pushcfunction(L, &FMODBridge_func_FMOD_System_GetRecordDriverInfo);
lua_setfield(L, -4, "get_record_driver_info");
#endif
#ifdef FMODBridge_func_FMOD_System_GetRecordPosition
lua_pushcfunction(L, &FMODBridge_func_FMOD_System_GetRecordPosition);
lua_setfield(L, -4, "get_record_position");
#endif
#ifdef FMODBridge_func_FMOD_System_RecordStart
lua_pushcfunction(L, &FMODBridge_func_FMOD_System_RecordStart);
lua_setfield(L, -4, "record_start");
#endif
#ifdef FMODBridge_func_FMOD_System_RecordStop
lua_pushcfunction(L, &FMODBridge_func_FMOD_System_RecordStop);
lua_setfield(L, -4, "record_stop");
#endif
#ifdef FMODBridge_func_FMOD_System_IsRecording
lua_pushcfunction(L, &FMODBridge_func_FMOD_System_IsRecording);
lua_setfield(L, -4, "is_recording");
#endif
I will try to enumerate the recording devices under my mac starting from the example provided in the native extension fmod…