2011-09-08 3 views
0

나는 이것을 이해할 수 없습니다. 텍스트 상자를 클릭하면 분당 x 번씩 타이머를 설정합니다. 타이머가 잘 작동하는 것처럼 보이지만 분당 사이클 수가 낮을수록 사운드 영향이 재생되는 볼륨이 낮아집니다. XNA 프레임 워크가 어떻게 작동하는지 이해하고 있으면 안됩니다.WP7 SoundEffect 음량이 감소합니다.

private System.Threading.Timer tmrMetronome_m; 

private void tbTempo_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    TextBlock tb = (TextBlock)sender; 
    int iBeatsPerMinute = int.Parse(tb.Text); 

    int iMS = 1000 * 60/iBeatsPerMinute; 

    if (this.tmrMetronome_m != null) 
    { 
     this.tmrMetronome_m.Change(new TimeSpan(0), new TimeSpan(0, 0, 0, 0, iMS)); 
    } 
    else 
    { 
     this.tmrMetronome_m = new System.Threading.Timer(MetronomeTick, null, new TimeSpan(0), new TimeSpan(0, 0, 0, 0, iMS)); 
    } 
} 

private void MetronomeTick(object state) 
{ 
    using (System.IO.Stream strWAV = TitleContainer.OpenStream("wav/Beat.wav")) 
    { 
     SoundEffect effect = SoundEffect.FromStream(strWAV); 
     FrameworkDispatcher.Update(); 
     effect.Play(); 
    } 
} 
+0

나는 마침내 개발자 라이센스를 구입하여 휴대 전화에 배포했습니다. 물리적 장치에는 문제가 없습니다. 이 시점에서 에뮬레이터에만이 문제가있는 것처럼 보입니다. – Jeremy

답변

0

여기에 다른 문제가 있습니까? 박자가 더 자주 발생할 때 소리가 커지는 느낌을주기 위해 박자가 겹칠 수 있습니까?

위의 정확한 코드를 빠른 XNA 프로젝트에서 재현 한 결과 큰 소리로 문제가 발생하지 않았습니다. 나는 분명히 동일한 오디오 샘플을 사용하지는 않았다.

+0

오버랩이 일어나고 있다고 생각하지 않습니다. 왜냐하면 오버랩이 완벽해야하기 때문입니다. 40에서 200까지 다른 템포로 테스트하고 있습니다. 중복이있는 경우 대부분의 경우 템포가 불규칙합니다. . 이 프로젝트는 다른 곳에서는 xna를 사용하지 않으며 다른 사운드도 재생하지 않습니다. 나는 완전히 손해를보고있다. – Jeremy

+0

마침내 개발자 계정을 구입하고 휴대 전화에 배포했습니다. 실제 전화에는 문제가 없습니다. 나는 이것이 에뮬레이터의 문제라고 생각한다. – Jeremy

0

어딘가에서 초기화 스트림으로 이동하려고 할 수 있습니다. 앱로드 시간 동안 사운드 효과 내용을 SoundEffect 변수에 저장 한 다음 MetronomeTick 중에이 변수에 대해 Play()를 호출하십시오.

당신의 욕구에 따라, 대안 만 SoundEffectInstance 변수를 저장하는 것입니다, 다음로드 시간 동안, 그래서처럼로드 :

using (System.IO.Stream strWAV = TitleContainer.OpenStream("wav/Beat.wav")) 
{ 
    SoundEffect effect = SoundEffect.FromStream(strWAV); 
    soundInstance = effect.CreateInstance(); 
} 

가 SoundEffectInstance에 바로 전화, 재생()를 재생하려면 목적.

물론 하나의 인스턴스 만 유지하기 때문에이 사운드 중 두 개는 겹치지 않습니다 (원하는 것을 모르는 경우). 어느 쪽이든이 문제가 여전히 지속된다면 시도해 볼 가치가 있습니다.