PDA

Просмотр полной версии : Изменение темпа AY музыки



Aprisobal
24.07.2006, 01:33
Совсем не разбираюсь в плеерах AY музыки. Возможно ли в них реалтайм изменять темп? Конкретно плеер PT3. Самостоятельно нашел только то, куда(адрес плеера+$463/$464 (это LD A,3)) заносится значение темпа при инитиализации плеера, но просто изменение этого значения при проигрывании музыки ничего не меняет.

Ronin
24.07.2006, 09:20
ну можно вызывать реже или чаще одного раза за инт например :)

SAM style
24.07.2006, 10:34
Я так как-то делал, причем не только с PT3, но еще и с PT2, ST, PSC и ASC. Вернусь с работы - покопаюсь, где там чего.
Проще, конечно, будет как Ronin предложил...

Aprisobal
24.07.2006, 14:01
Я так как-то делал, причем не только с PT3, но еще и с PT2, ST, PSC и ASC. Вернусь с работы - покопаюсь, где там чего.
Проще, конечно, будет как Ronin предложил...Да, проще, но музыка слишком быстро/медленно звучит, нежели изменять темп +-1 в редакторе.

newart
24.07.2006, 14:18
Да, проще, но музыка слишком быстро/медленно звучит, нежели изменять темп +-1 в редакторе.
Иходники pt3 плеера в редакции Alon'a лежат в свободном доступе (вместе с pt3). Так же на сайте Сергея Бульбы ты можешь найти исходник его версии плеера, а также декомпиленые версии всяких pt2, Sqt, Stp и т.д.

key-jee
24.07.2006, 14:44
проще, но музыка слишком быстро/медленно звучит, нежели изменять темп +-1 в редакторе.
Зато и более точно, ведь давно известно, что иногда музыканты пишут темы в инструментах, а в таком случае появляется жёсткая привязанность к темпу воспроизведения.. и если тупо изменять темп воспроизведения - звук в отдельных каналах поплывёт.. То же саое произойдёт при использоваини музыкантом команд-слайдов..

Опять же.. музыкант может собственноручно изменять скорость из модуля...

SAM style
24.07.2006, 21:29
Если оно ещё надо, то нашёл адреса для плейера PT3.69:
+#462 - тут базовое значение темпа
+#87d - это счетчик (съезжает до 0, потом туда пишется значение из +#462)

Для того, чтобы изменение скорости из модуля не влияло на задуманое, надо постоянно менять +#462 примерно так:

call PLAY
ld a,(player+#462)
sub n для ускорения или add a,n для замедления
; потом проверка, чтобы значение не вылезло за пределы 2-255
; (точно не помню, но слишком быстрый темп плейером вроде не переваривается)
ld (player+#462),aвот как-то так
можно еще перехватывать изменение темпа из модуля - меняется прогой на +#BFA:

ld a,(de)
inc de
ld (+#462),a
ret

Aprisobal
25.07.2006, 10:45
Для того, чтобы изменение скорости из модуля не влияло на задуманое, надо постоянно менять +#462 примерно так:Спасибо! Как раз то, что нужно.