C#에서 SNES SPC 파일과 FMOD를 재생해야하는 DLL이있는 이유는 무엇입니까? system.createSound
에 대한 호출이 실패하는 이유는 무엇입니까?사용자가 만든 스트림으로 FMOD CreateSound
FMOD.MODE mode = (FMOD.MODE._2D | FMOD.MODE.DEFAULT
| FMOD.MODE.OPENUSER | FMOD.MODE.LOOP_NORMAL
| FMOD.MODE.HARDWARE);
//snip
createsoundexinfo.cbsize = Marshal.SizeOf(createsoundexinfo);
createsoundexinfo.fileoffset = 0;
createsoundexinfo.length = frequency * channels * 2 * 2;
createsoundexinfo.numchannels = (int)channels;
createsoundexinfo.defaultfrequency = (int)frequency;
createsoundexinfo.format = FMOD.SOUND_FORMAT.PCM16;
createsoundexinfo.pcmreadcallback = pcmreadcallback;
createsoundexinfo.pcmsetposcallback = pcmsetposcallback;
createsoundexinfo.dlsname = null;
//snop
result = system.createSound(
(string)null,
(mode | FMOD.MODE.CREATESTREAM),
ref createsoundexinfo,
ref sound);
길이, 주파수 ... 중요하지 않습니다
var ret = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null);
var soundEx = new FMOD.CREATESOUNDEXINFO()
{
cbsize = Marshal.SizeOf(soundEx),
fileoffset = 0,
length = ~0U,
numchannels = 2,
defaultfrequency = 32000,
format = FMOD.SOUND_FORMAT.PCM16,
pcmreadcallback = pcmreadcallback,
pcmsetposcallback = pcmsetposcallback,
dlsname = null,
};
var mode = FMOD.MODE.DEFAULT | FMOD.MODE.OPENUSER
| FMOD.MODE.LOOP_NORMAL | FMOD.MODE.CREATESTREAM;
ret = system.createSound((string)null, mode, ref soundEx, ref sound);
//^-- ERR_INVALID_PARAM
ret = system.playSound(FMOD.CHANNELINDEX.FREE, sound, false, ref channel);
는 FMOD와 함께 제공되는 usercreatedsound
샘플 것을 비교.
편집 : SPC 플레이어가 작동하는 것을 이미 확인했습니다. 적어도 초기화가 진행되면 FMOD와 함께 제공된 샘플이 올바르게 빌드되고 실행됩니다. 특히 의미있는 변경 사항은 설정을 실행하기 위해 설정을 왜곡하지 않고 4.0 스타일로 작성하는 것입니다.
소프트웨어 모드 및/또는 44.1Khz로 변경되지 않았습니다. 이제 BASS.NET을 조금 쳐다 보겠습니다. – Kawa
기본적으로 BassMix addon이 필요합니다. 44.1Khz 믹서를 만든 다음 32Khz 소스를 추가하십시오. 마침내 당신은 그 믹서를 연주합니다. 그것에 대해 도움이 필요하면 그냥 물어보십시오. – Aybe
작동시킬 샘플을 얻을 수 없습니다. ( – Kawa