내 응용 프로그램에는 약 60 개의 사운드 샘플이 있습니다. 강한 정확성으로 시간을 들여 플레이해야합니다. 5ms가됩니다. 사운드는 사용자 작업에 응답하여 재생되어야합니다. 그래서 나는 다음에 무슨 소리가 나올지 모르겠다. 모든 사운드에 대해 SoundEffectInstance를 미리 준비하는 것으로 생각했습니다. SoundEffectInstance를 만드는 데 시간과 메모리가 필요합니까? 메모리에 SoundEffect의 전체 복사본 또는 일부 포인터 정보가 있습니까? SoundEffectInstances를 미리 작성하면 응용 프로그램을 향상시킬 수 있습니까? 가능한 빨리 XNA에서 샘플을 재생할 수있는 다른 방법이 있습니까?사운드를 최대한 빨리 재생하는 방법은 무엇입니까?
답변
SoundEffect
에는 실제 파형 데이터가 들어 있습니다. 많은 양의 메모리를 사용합니다 (파형 데이터에 필요한만큼).
SoundEffectInstance
은 재생 (위치, 볼륨 등)에 대한 데이터와 재생을 위해 할당 된 "음성"에 대한 핸들을 포함하는 작은 개체입니다.
SoundEffect.Play
을 사용하면 내부적으로 SoundEffectInstance
이 생성됩니다. 또한 이러한 인스턴스를 풀링 할 수 있으므로 후속 호출에서 다시 만들 필요가 없습니다.
SoundEffectInstance
을 생성하는 데는 약간의 시간과 메모리가 필요합니다. 30FPS (프레임 당 33ms)로 실행되는 게임의 사운드 효과의 경우 대기 시간은 지각 할 수 없어야합니다.
당신도 5ms의 문제, 당신은 DynamicSoundEffectInstance
을 사용하여 자신 만의 오디오 믹서를 구현 필요 서로 다른 사운드 효과를 혼합하여 시퀀스 음악을 재생하려는 경우. 이렇게하면 사운드가 샘플과 동기화되도록 할 수 있습니다.
당신은 실시간으로 어떤 종류의 재생 "도구"를 만들려고하는 경우, 당신은 5ms의 아래로 당신의 입력 - 출력 대기 시간을 얻기 위해 노력하고 - 그럼 이제 포기. 5ms는 터무니없이 좋으며 일반적으로 전문 장비와 소프트웨어가 필요합니다.
가능한 한 입력 - 출력 대기 시간을 줄여야하는 경우 프레임 당 한 번 이상 입력을 폴링 할 수 있습니다. DSEI를 사용해야 할 것입니다. DSEI에 구성 가능한 재생 버퍼 크기가 있는지 확신 할 수 없지만 오디오 글리치를 도입하지 않으면 최대한 작게 만들어야합니다.
사용자가 세트를 선택하면 해당 사운드 효과를 사전에로드해야 나중에 액세스하는 것이 더 빠릅니다.
그러나 모든 사운드 효과, 특히 특정 화면이나 설정에서 필요하지 않은 사운드 효과를로드하지 않아야합니다. 또한 더 이상 필요하지 않은 음향 효과를 언로드해야합니다.
로드하려는 크기 및 수량에 따라 사운드 효과를로드하는 데 시간이 오래 걸립니다. 게임의 내용을로드/언로드하기위한 기본 로딩 화면을 만드는 것이 좋습니다 (대부분의 게임은 그렇게합니다). 사운드 효과를 짧게 유지해야하는 이유는 포인터뿐 아니라 메모리에 soundeffect (wav 형식일까요?)를로드하는 것입니다.
이미로드 된 사운드 효과는 매우 빠르게 재생됩니다 (지연은 감지 할 수 없음). 메모리 사용량을 사전에 미리로드하면 이 증가하여 응용 프로그램의 성능이이됩니다.
모든 사운드 또는 SoundEffect에 대해 SoundEffectIstance 객체를 사전로드해야합니까? – xander27
거기에 찾을 수있는 [link] (http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.aspx) ** "SoundEffect에서 생성 된 모든 SoundEffectInstance 개체는 메모리 리소스를 공유합니다. "**. 그래서 나는 여러 개의 'SoundEffectInstance'를 만들 수 있습니다. – xander27
- 1. JS로 사운드를 재생하는 방법은 무엇입니까?
- 2. ZeroClipboard로 사운드를 재생하는 방법은 무엇입니까?
- 3. AVAudioPlayer로 사운드를 재생하는 방법은 무엇입니까?
- 4. JVM은 최대한 빨리
- 5. 2 초마다 사운드를 재생하는 방법은 무엇입니까?
- 6. 사운드를 미리로드하고 Java로 간단하게 재생하는 방법은 무엇입니까?
- 7. 안드로이드에서 다른 주파수 사운드를 재생하는 방법은 무엇입니까?
- 8. 다른 스피커에서 사운드를 재생하는 방법은 무엇입니까?
- 9. XAudio2에서 동일한 사운드를 반복 재생하는 방법은 무엇입니까?
- 10. iPhone에서 정확한 순간에 사운드를 재생하는 방법은 무엇입니까?
- 11. 루핑 사운드를 재생하는 가장 간단한 방법은 무엇입니까?
- 12. 사운드를 재생하는 재생 버튼을 만드는 방법은 무엇입니까?
- 13. JSF 웹 앱에서 사운드를 재생하는 방법은 무엇입니까?
- 14. XAML에서 시스템 사운드를 재생하는 방법은 무엇입니까?
- 15. AS3에서 라이브러리의 사운드를 재생하는 방법은 무엇입니까?
- 16. 버튼 마우스에서 사운드를 재생하는 방법은 무엇입니까?
- 17. PHP에서 최대한 빨리 URL을 누르십시오.
- 18. 루아에서 사운드를 재생하는 방법
- 19. 비디오 사운드를 재생하는 방법
- 20. AS3에서 다른 사운드를 재생하는 사운드를 어떻게 멈추게합니까?
- 21. 다음 페이지로 스크롤 할 때 사운드를 자동으로 재생하는 방법은 무엇입니까?
- 22. 기본 사운드를 재생하는 OpenAL 코드
- 23. 여러 사운드를 하나씩 재생하는 방법
- 24. 자체적으로 재생하는 대신 사운드를 자르십시오.
- 25. 자바를 사용하여 사운드를 재생하는 방법
- 26. Java 게임에서 사운드를 재생하는 방법?
- 27. XNA에서 동적 사운드를 재생하는 방법?
- 28. ipad에서 여러 사운드를 재생하는 방법
- 29. 특정 시간 동안 동일한 사운드를 반복적으로 재생하는 방법은 무엇입니까?
- 30. iPhone SDK에서 두 가지 다른 사운드를 재생하는 방법은 무엇입니까?
응용 프로그램의 모든 순간에 모든 소리가 필요합니까, 아니면 다른 화면에 할당 된 소리가 있습니까? – Msonic
60 개의 소리로 적은 세트.사용자가 세트를 선택하면 세트의 모든 사운드가 될 수 있습니다. – xander27