2013-03-18 1 views
0

사용자 정의 템포 (BPM)를 유지할 ActionScript 3 (Adobe AIR Android 앱)으로 드럼 머신을 만들려고합니다.ActionScript 3 : 정확한 BPM 카운터를 유지하려면 어떻게해야합니까?

나는 프로젝트를 제 시간에 맞추기 위해 고심하고있다. 나는 지금까지 5 개의 다른 소리가 8 개의 사각형으로 표현되도록했고, 사용자는 각 사각형을 클릭하여 그 소리를 재생 (희망이 이해가).

현재로서는 프로젝트를 제 시간에 맞추기 위해 타이머를 사용하고 있습니다. 매우 느리고 일관성이 없습니다. 타이머를 사용하여

+0

디자인 결함이있는 것처럼 저에게 소리. 콜백이 부풀어 오른 경우에만 타이머가 지연됩니다. –

+0

그걸 좀 상세히 설명해 주시겠습니까? 타이머는 기본적으로 매우 정확하지는 않습니다. 각 비트 사이에 서로 다른 크기의 차이가 남습니다. –

+0

최근에 이와 비슷한 것을 만들었습니다. 나는 타이머 클래스도 활용했는데 괜찮 았지만 좋았지는 않았다. 사운드를 재생하는 것은 매우 비용이 많이 드는 작업이며, 최소한의 애니메이션과 결합하면 때로는 내 영화가 비트를 건너 뛰거나 사소한 지연을 추가하는 경우가 있습니다. 나는 그것을 완성 할 길을 찾을 수 없었다. 정확한 지연을 측정하려면 getTimer()를 사용하여 디버그해야합니다. – lostPixels

답변

2

이에 대한 나쁜 생각, 거기에 내가

문제는 타이머가 드리프트를 가지고 몇 밀리 초 후에 발사한다는 것입니다 ... 그것을 말했다. 매 500ms마다 실행되는 타이머가있는 간단한 테스트를 수행 한 다음 getTimer() 수를 비교하십시오. 내 실험에서 타이머가 계속 꺼져 있고 자기가 맞지 않는 것처럼 보였습니다. 마지막으로 실행 한 후 getTimer() 차이를 기반으로 발사 시간을 변경하는 자체 수정 타이머를 사용해 보았지만 여전히 안정적이지 않습니다. 프로세서로드가 상승 할 때마다 타이머가 꺼집니다.

이 문제를 해결하는 올바른 방법은 byteArray 데이터를 사운드 소스로 사용하는 것입니다. 샘플링 해상도 계산을 기반으로 미리 스트림에 데이터를 채울 수 있으며 사운드는 정시에 재생되어 거의 보장됩니다. 나는 지금까지 나 자신을하는 무언가를 만들만큼 멀리 가지 않았다. 그러나 이것을 활용할 수있는 몇 가지 라이브러리를 활용할 수 있습니다.

내 상단이 감소 라이브러리 시온하고 내가 안드로이드에 그들을 시도하지 않은 반면

당신이 여기 시온 샘플 http://wonderfl.net/c/qf4b
http://tonematrix.audiotool.com/

에서 tonfall 예를 볼 수 있습니다 tonfall, 나도 생각 작동해야한다

+0

감사합니다. 친구가되어 주셔서 감사합니다. 좋은 사람 :) –