/** * Furnace Tracker - multi-system chiptune tracker * Copyright (C) 2021-2022 tildearrow and contributors * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include "../ta-log.h" #include "sdl.h" void taSDLProcess(void* inst, unsigned char* buf, int nframes) { TAAudioSDL* in=(TAAudioSDL*)inst; in->onProcess(buf,nframes); } void TAAudioSDL::onProcess(unsigned char* buf, int nframes) { if (audioProcCallback!=NULL) { audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,desc.bufsize); } float* fbuf=(float*)buf; for (size_t j=0; j TAAudioSDL::listAudioDevices() { std::vector ret; if (!audioSysStarted) { if (SDL_Init(SDL_INIT_AUDIO)<0) { logE("could not initialize SDL to list audio devices\n"); } else { audioSysStarted=true; } } int count=SDL_GetNumAudioDevices(false); if (count<0) return ret; for (int i=0; i0) { outBufs=new float*[desc.outChans]; for (int i=0; i