Очередная победа над нарезкой)
Сейчас закоммичу изменения
А какое у него назначение? Не очень понятно
Очередная победа над нарезкой)
Сейчас закоммичу изменения
основное — нарезка сэмплов для VSTi. А вообще там просто получается хорошая основа для того, чтобы собирать как конструктор нарезатор под любые задачи. В принципе, за вечер можно собрать нечто похожее на MK SlicerА какое у него назначение?
На гиф не очень понятно что ты хочешь сделать.mpl align takes не работает.
на новойсистеме. ставил только этот скрипт через reapack.
рипер v6.43, win 10 x63, sws 2.12.1
пробовал предыдущую версию скрипта.
Посмотреть вложение 211759
Это я тупанул не по детски. Я выделял семпл и ждал, что скрипт расставит в нём маркеры.На гиф не очень понятно что ты хочешь сделать.
from typing import Any, Dict, List, Optional
import reapy_boost as rpr
from pprint import pprint
def not_empty(track: rpr.Track, region: rpr.Region) -> bool:
if track.is_muted:
return False
for item in track.items:
if region.start > item.position > region.end:
return True
if region.end > (item.position + item.length) > region.start:
return True
for send in track.receives:
if not_empty(send.source_track, region):
return True
return False
def get_fx_states(track: rpr.Track) -> List[bool]:
state = []
for fx in track.fxs:
state.append(fx.is_online)
if fx != track.instrument:
fx.is_online = False
return state
def set_fx_states(track: rpr.Track, states: List[bool]) -> None:
for fx, state in zip(track.fxs, states):
if fx != track.instrument:
fx.is_online = state
def get_track_state(track: rpr.Track) -> Dict[str, Any]:
state = {}
state['vol'] = track.get_info_value('D_VOL')
state['pan'] = track.get_info_value('D_PAN')
state['width'] = track.get_info_value('D_WIDTH')
state['panmode'] = track.get_info_value('I_PANMODE')
state['panlaw'] = track.get_info_value('D_PANLAW')
state['FX'] = get_fx_states(track)
track.set_info_value('D_VOL', 1)
track.set_info_value('I_PANMODE', 3)
track.set_info_value('D_PANLAW', -1)
track.set_info_value('D_PAN', 0)
track.set_info_value('D_WIDTH', 1)
return state
def set_track_state(track: rpr.Track, state: Dict[str, Any]) -> None:
track.set_info_value('D_VOL', state['vol'])
track.set_info_value('I_PANMODE', state['panmode'])
track.set_info_value('D_PAN', state['pan'])
track.set_info_value('D_PANLAW', state['panlaw'])
track.set_info_value('D_WIDTH', state['width'])
set_fx_states(track, state['FX'])
def region_state(
region: rpr.Region,
stem_states: Optional[Dict[str, Any]] = None
) -> Dict[str, Any]:
stems = region.rendered_tracks
rendered_stems: List[rpr.Track] = []
for stem in stems:
if not_empty(stem, region):
rendered_stems.append(stem)
else:
region.remove_rendered_track(stem)
if stem_states is None:
stem_states = {}
for stem in rendered_stems:
stem_states[stem.GUID] = get_track_state(stem)
stem_states['rendered_tracks'] = stems
return stem_states
region.add_rendered_tracks(stem_states['rendered_tracks'])
del stem_states['rendered_tracks']
for stem_guid in stem_states:
stem = rpr.Track.from_GUID(stem_guid)
set_track_state(stem, stem_states[stem_guid])
return {}
# =================
with rpr.inside_reaper():
pr = rpr.Project()
with rpr.undo_block('render stems'):
region_states = {}
for region in pr.regions:
state = region_state(region)
region_states[region.index] = state
# render project
rpr.perform_action(41824)
for region in pr.regions:
region_state(region, region_states[region.index])
Баг, гляну после выходных. Лучше писать в телеге или на форум. Рандомно спрашивать в темах - не лучшая затея.В Visual Mixer от @Michael при перемещении по слотам возникает такая надпись Посмотреть вложение 217933 и микшер закрывается. Как это победить?
Я так понимаю, что происходит сбрасывание выделения треков, а это обязательное условие. Не пойму, баг это или что?
Нет такогоВсем доброго дня! Прошу прощения если не сюда вопросик... Вроде поискал по форуму ответа на нашел... Есть ли такой скрипт. допустим наиграл гармонию, или вставил midi файл гармонический.. а скрипт продетектировал и создал бы регионы с обозначением аккордов данной прогрессии? Так что бы для удобства написания аранжировки.. Заранее спасибо за ответы.
Track: Duplicate tracks
Xenakios/SWS: Select previous tracks
SWS: Unselect all items on selected track(s)
Take: Crop to active take in items
Item: Glue items
SWS/BR: Normalize loudness of selected items to -23 LUFS
Item: Unselect (clear selection of) all items
function scroll_to_track(track)
-- for original code (by spk77) see, https://forum.cockos.com/showpost.php?p=2226523&postcount=870
local tcp_y = reaper.GetMediaTrackInfo_Value(track, "I_TCPY")
local arrange = reaper.JS_Window_FindChildByID(reaper.GetMainHwnd(), 0x3E8)
local ok, ar_vsb_position, ar_vsb_page, ar_vsb_min, ar_vsb_max, ar_vsb_trackPos = reaper.JS_Window_GetScrollInfo(arrange, "v")
if ok then reaper.JS_Window_SetScrollPos(arrange, "v", tcp_y + ar_vsb_position) end
end
function ScrollToPreviousTrack()
for i = reaper.CountTracks(0)-1,0,-1 do
local tr = reaper.GetTrack(0,i)
local tr_y = reaper.GetMediaTrackInfo_Value(tr, 'I_TCPY')
if tr_y < 0 and reaper.IsTrackVisible(tr, false) then
scroll_to_track(tr)
break
end
end
end
function ScrollToNextTrack()
for i = 0, reaper.CountTracks(0)-1 do
local tr = reaper.GetTrack(0,i)
local tr_y = reaper.GetMediaTrackInfo_Value(tr, 'I_TCPY')
if tr_y > 0 and reaper.IsTrackVisible(tr, false) then
scroll_to_track(tr)
break
end
end
end
if not reaper.APIExists('JS_Window_SetScrollPos') then
reaper.MB('js_ReaScriptAPI extension is required for this script.', 'Missing API', 0)
else -- call a scroll function,
ScrollToNextTrack()
--ScrollToPreviousTrack()
end
reaper.defer(function () end)
Обычно кроссфейды не нужны, а в стандартном их легко получить с пресетомПо сравнению с обычным видеорежимом, мой автоматически добавляет кроссфейды.
Как пример:@Trasher, не понятен вопрос... Настолько непонятен, что даже наводящий вопрос задать сложно…
// код
loop(x=0;nch=3,printf("in_pin:input %d\n, x+=1));
//
// результат кода цикла и принта
in_pin:input 0
in_pin:input 1
in_pin:input 2