Друзья, прошу помощи мозговым штурмом мозги кипят, и, видимо, я не замечаю чего-то очевидного
цель - скриптованная транзиция с регулируемой значением velocity скоростью. Не могу откалибровать скорость слайда.
так же есть прошлый способ расстановки значений в цикле while: работал почти корректно, за исключением пары артефактов.
но свою логику такого расположения значений я востановить не могу(((
цель - скриптованная транзиция с регулируемой значением velocity скоростью. Не могу откалибровать скорость слайда.
Код:
on note [COLOR="#40E0D0"]{пока ничего интересного}[/COLOR]
disallow_group ($ALL_GROUPS)
allow_group (find_group("Trem_Sul_E_f"))
ignore_event($EVENT_ID)
if (in_range($EVENT_NOTE,64,88))
$lastnote:=$EVENT_NOTE
$interval:=$lastnote - $firstnote [COLOR="#40E0D0"]{вычисление диапазона скачка (если таковой есть)}[/COLOR]
message ($interval)
if ($firstnote = 0)
$newnote_id:=play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1){сустейн, в случае, если нет транзиций}
end if
if ($firstnote # 0) [COLOR="#40E0D0"]{самая интересная часть}[/COLOR]
$i:=0
$leg_time := 250000/$EVENT_VELOCITY [COLOR="#40E0D0"]{250000 - четверть секунды, мксимальное время транзиции (на velocity 0) на velocity 127, соответственно 1969}[/COLOR]
[COLOR="#40E0D0"]{цикл со скриптовым слайдом}[/COLOR]
while ($i < $leg_time) [COLOR="#40E0D0"]{это второй способ: длина одной итерации 1 микросекунда, а кол-во циклов соответствует времени слайда}[/COLOR]
change_tune ($firstnote_id, 100000/$leg_time*$interval,1) [COLOR="#40E0D0"]{100000 - полтона}[/COLOR]
wait (1)
inc ($i)
end while
[COLOR="#40E0D0"]{Такая организация цикла мне кажется правильной, но не работает :( тюнинга не случается, просто последующие fade in и fade out}[/COLOR]
message ($firstnote_id)
[COLOR="#40E0D0"]{Дальше все работает}[/COLOR]
fade_out ($firstnote_id,$leg_time,1) {гасим предыдущую нотку}
$newnote_id:=play_note ($EVENT_NOTE,$EVENT_VELOCITY,0,-1)
fade_in ($newnote_id, $leg_time) [COLOR="#40E0D0"]{параллельно выводим настоящую нотку}[/COLOR]
end if
wait (5000)
$firstnote:= $EVENT_NOTE [COLOR="#40E0D0"]{назначаем необходимые переменные}[/COLOR]
$firstnote_id:=$newnote_id
end if
end on
так же есть прошлый способ расстановки значений в цикле while: работал почти корректно, за исключением пары артефактов.
но свою логику такого расположения значений я востановить не могу(((
Код:
$leg_time := 250000/127*$EVENT_VELOCITY
while ($i < 100000)[COLOR="#40E0D0"]{в отличие от предыдущего варианта кол-во итераций всегда одинаково - количество микротонов в полутоне}[/COLOR]
change_tune ($firstnote_id, $interval,1) [COLOR="#40E0D0"]{за каждую итерацию мы повышаем тон на 1\100000 нашего интервала}[/COLOR]
wait (100000/%leg_time)[COLOR="#40E0D0"]{а вот как и почему это работает, я не понимаю}[/COLOR]
inc ($i)
end while
$newnote_id:=play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1)
fade_in ($newnote_id,%leg_time)
fade_out($firstnote_id,%leg_time,0)