Reaper: вопросы присматривающихся к этой программе

  • Автор темы Автор темы goa
  • Дата начала Дата начала
@DRYGVA, там есть режим «подхватки параметра» при обучении (не прмню как называется), вот его и нужно использовать.
 
  • Like
Реакции: DRYGVA
@ecosoft, я вам тут темку создал: https://forum.cockos.com/showthread.php?t=207298
Дальше сами.
Спасибо большое! Респект Вам!
Я не стал пока создавать тему на оффе, т.к. не знаю пока формулы, по которой рассчитывается длительность долей такта, а следовательно и самого такта. Я предполагал, что будут реплики, типа: всё работает правильно, что мешает... и т.п. Сначала я найду формулу, чтобы говорить небезосновательно, иначе получится голословие. Arobas Music молчит как партизан, но я уже подошёл к заключительной части вычисления формулы - вот тогда я напишу на оффе. Ещё раз Вам спасибо за участие!

Т.к. я с Reaper хорошо не знаком, то мне непонятна фраза на оффе:
If you use playrate envelope in Reaper, it takes 3.25.
I don't know if it works 100% right.
Можете объяснить о чём идёт речь, т.к. что я ни делал в Reaper - не мог получить значение 3.25, всё время ровно 3 сек. при плавном замедлении темпа с 120bpm до 40bpm за один такт.
 
If you use playrate envelope in Reaper, it takes 3.25.
I don't know if it works 100% right.
Если вы возьмёте темп 120 и и автоматизируете playrate (наверно до 0.3), то это расстояние будет длится 3.25 с. Playrate - это скорость воспроизведения, которая равна 1.
 
Попробуйте ещё вторую программу - вдруг в ней можно.
Попробовал DeskPins - ещё интересней - "прикалывает" окна на твой выбор, а не все возможные (за исключением), как FileBox eXtender... И вот DeskPins "говорит" (когда булавку назначаешь на него) что Customize menus/toolbars уже "поверх всех" (назначение не получается и с ним)! Что так оно и есть, только эта настройка меню тулбара закреплена за главным редактором, а не за миди-редактором, вот и вылетает... И с ним, в миди-редакторе, назначить булавку не получается.
Вот сделали же разрабы на VST инструменты и плагины "гвозди" и с ними всё в порядке в миди-редакторе - никуда не деваются, торчат как пригвозджённые:eek:, пробуй, экспериментируй, а вот такая важная вещь, как настройка тулбара - без гвоздя... Почему такая несправедливость? Это же очень неудобно - что то изменил, ткнул в кнопку попробовать, а окно настройки улетает куда то...:(
 
Последнее редактирование:
Вот тут ничего не понял. :) Я вам про методологию. Вот, нашёл: https://ru.wikipedia.org/wiki/Бережливая_разработка_программного_обеспечения
На данный момент это лучшая модель не только в написании софта, но и для любого производства и услуг.
Ну так есть там пункт "Мотивация команды" - это тоже методология, в каком то виде - "гуманная" эксплуатация от которой вряд ли кто откажется из тех кто "закрываются в своих коморках и пишут софт без постоянных отзывов пользователей". С виду очевидные вещи которым, почему то, почти ни кто не следует (это по другим пунктам - особенно "Акцент на обучении" - частая обратная связь с заказчиком). В случае с Reaper - команда раскидана по всему миру...
 
Последнее редактирование:
Спасибо! Понял. Это получается костыль
Так вы прочитайте его вторую фразу. Это не костыль, это не то просто) Я даже не знаю, как он это посчитал :0
Тем более вы ещё с формулой не разобрались. Может быть никто правильно не считает.
[DOUBLEPOST=1527837859][/DOUBLEPOST]
а вот такая важная вещь, как настройка тулбара - без гвоздя...
напишите в хотелки :)
[DOUBLEPOST=1527837967][/DOUBLEPOST]
В случае с Reaper - команда раскидана по всему миру...
Вообще-то разработчики находятся в США.
Ну так есть там пункт "Мотивация команды"
В методологии должны исполнятся все пункты, иначе это просто рванина.
 
Последнее редактирование:
@vitalker, конечно все пункты, это я просто надёргал фраз, а по поводу команды - я не о разработчиках - всё уже гораздо шире и непонятно как это будет развиваться: сами заказчики становятся частью команды и вообще: методология, это не догма...
 
сами заказчики становятся частью команды и вообще: методология, это не догма...
О чём сейчас вообще речь? Не догма, но на данный момент это самая эффективная методология и глупо её не придерживаться. Засим кланяюсь ;)
 
Ребята, давно не следил за темой. Интересует вот что: можно ли по типу как в протулс сделать группировку параметров плагинов? Скажем есть у меня группа гитар, на каждом из каналов висит ченелстрип. Можно ли как то всё залинковать чтобы я крутил на одной инстанции плагина, и автоматически всё также крутилось на другой?
 
Arobas Music не предоставили мне формулу расчёта длительности тактов, а точнее долей оных, при равномерных ускорении или замедлении темпа. Такое ощущение, что эта самая формула является коммерческо-научной тайной :D Пришлось на несколько дней погрузиться в "сладкий" мир математики, правда, с недельным перерывом. Итак, я с полной уверенностью могу заявить, что в DAW Reaper разработчиками заложен неверный алгоритм расчёта длительности долей тактов при равномерных плавных ускорении или замедлении темпа. Речь не идёт о неравномерном плавном (или постепенном, как кому угодно) изменении темпа, т.е. , например, когда музыкант сначала медленно ускоряется, а со временем ускорение всё быстрей и быстрей - в этом случае расчёт формулы очень сложный и при таких условиях лучше обойтись пошаговым изменением темпа. Так что речь пойдёт о равномерном плавном изменении темпа. Что бы постоянно не писать фразу "равномерное плавное изменение темпа", далее по тексту будет просто "изменение темпа", подразумевая равномерное плавное изменение.
Не буду здесь приводить свой алгоритм поиска формулы, а начну сразу с её пояснения.
Formula1.png


В чём же смысл данной формулы? Ключевым моментом в ней является логарифмическая функция, согласно которой происходит изменение темпа. Именно натуральный логарифм лежит в основе, а не линейная функция y=a+bx, которую взяли за основу разработчики Reaper - в этом их единственная, но фатальная ошибка алгоритма (после описания формулы я расскажу, на что влияет алгоритм этого расчёта с практической точки зрения).
Приведённая выше формула переведена из bpm в bps для упрощения, т.к. является сложной функцией и содержит несколько вложенных функций. Да, сам темп, относительно долей тактов, изменяется по линейной функции, но на этом вся линейность и заканчивается, а дальше вступает в действие натуральный логарифм. Постараюсь это кратко объяснить. Например, при изменении темпа со 120 bpm до 40 bpm за один такт размером 4/4 сначала темп быстрый (119, 118, 117 и т.д.), а к концу такта темп медленный (49, 48, 47 и т.д.), следовательно: первая доля такта будет самой короткой, вторая будет подольше, третья ещё дольше, чем вторая, а четвёртая будет самой долгой. Так что о линейности изменения времени и речи быть не может. Кстати, как косвенное подтверждение: значения темпа не могут быть равны нулю, а начальное и конечное значения темпа не равны друг другу, т.к. в таком случае функции не существует (изменения темпа нет).
С начальным моментом времени всё просто: если изменение темпа начинается с нулевой отметки времени, то оно равно нулю. Если же темп изменяется в середине муз. композиции или в конце, то начальное время прибавляется к значению продолжительности изменения темпа.
Опустим пока объяснение коэффициента 4ca/b и обратимся к выражению в скобках. Сначала лёкая часть - знаменатель - показывает на сколько изменяется темп на заданном интервале долей. Числитель понять немного сложней, т.к. присутствуют логарифмы. Что это означает? Я не буду объяснять, что такое логарифм. По сути мы видим ту же разность значений темпа, но не в абсолютных, а в весовых значениях. Т.о., разделив числитель на знаменатель, мы получаем значение веса темпа одной единичной доли интервала, за которое происходит изменение темпа. За единичную долю принимается один удар в секунду.
Теперь надо узнать: какая относительная длительность доли музыкального размера композиции на данном интервале. За единичную (удельную) длительность доли принимается четвертная доля (константа 4 удара). Это связано с тем, что музыканты считают четвертными долями при значении темпа 1 удар в секунду (60 bpm). При значении длительности доли в 1/8, темп счёта увеличивается в два раза, поэтому удельная длительность доли музыкального размера рассчитывается 4:b. Например, при музыкальном размере 3/4 удельная длительность будет 4:4=1 удар, а при размере 5/8 будет 4:8=0,5 удара. А теперь умножим удельное количество ударов за одну долю на количество долей в такте: 4:b*a. Например, для размера 5/8 будет 4:8*5=2,5 удара. А теперь полученное значение умножим на значение веса единичной доли (выражение в скобках) и получим длительность интервала в секундах, за которые происходит изменение темпа.
Остаётся умножить на количество тактов данного интервала (оно может быть не только целым, но и дробным). Из формулы видно, что значение t будет всегда положительным (здесь время отрицательным не бывает).
Для большей наглядности преобразуем bps в bpm через f=F:60. Получится:

Formula2.png


Чтобы уменьшить погрешность, избавимся от одного логарифма, выразив F0 через F0=kF. В итоге получим две формулы, когда темп замедляется:

Formula3.png


когда темп ускоряется:

Formula4.png


При желании можно рассчитать производную от этой функции. У меня такого желания не возникло :D


Теперь практическая часть, о которой я обещал рассказать. После некоторых размышлений я не удивляюсь, почему за столько лет работы Reaper, не была обнаружена эта ошибка. Об этом писать не буду. А вот о возможных казусах работы в Reaper, связанных с данным алгоритмом расчёта, скажу:
  1. Неправильный обмен данными между приложениями (в частности с нотным редактором), касательно значений темпо-маркеров при равномерных плавных изменениях темпа;
  2. При коллективной работе в различных DAW возникнет смещение долей, при использовании в композиции равномерных плавных изменений темпа;
  3. Излишние затраты времени, неточность и ложные значения темпо-маркеров при подгонке темпа аудио трека;
  4. Асинхронность темпа при использовании отдельного метронома и фонограммы, проигрывающейся в Reaper на репетициях или концертах.
Конечно, можно на всё это не обращать внимания, но лично я не испытываю желания, при известных мне значениях равномерного плавного изменения темпа, каждый раз тратить время на подгонку, устанавливая “мифические” значения темпо-маркеров.
Имея формулу в качестве обоснования, я обязательно напишу об этой ошибке на официальном форуме Reaper, чтобы производители её исправили. Несерьёзно как-то не следовать математике. Убеждён в том, что законы математики следует выполнять безупречно, ибо несоблюдение их означает идти против самой природы или «… против ветра».:D
 
Пара вопросов про Reaper
1. Есть ли отдельные настройки для midi-item и audio-item? Например, привязка ко времени. Я хочу сделать, чтобы аудио были привязанны ко времени только местоположением, а миди местоположением и темпом.
2. Есть ли где-то настройка записи миди (или аудио, не важно) так, чтобы при записи (или после остановки записи) конец и начало айтема привязывался к сетке, но не перемещением записанного материала, а растягиванием конца или начала айтема до ближайшей линии сетки?
 
1. Есть ли отдельные настройки для midi-item и audio-item? Например, привязка ко времени. Я хочу сделать, чтобы аудио были привязанны ко времени только местоположением, а миди местоположением и темпом.
Item properties (по умолчанию F2) вам о чём-нибудь говорит?
 
Конечно говорит. Но это настройки каждого отдельного айтема. А вот как их задать по умолчанию различные для аудио и миди айтемов?
Но больше интересует второй мой вопрос.
Пс. Я хз как тут цитировать с телефона)))
 
@KenAdams, File->Project settings(Alt+Enter), там настраивается. Отдельно только индивидуально. Можно использовать экшны для смены. А вообще попросите кого-то написать скрипт, который будет выбирать привязка исходя из содержания.
 
Из данных экшнов
SWS/BR: Select all audio items
SWS/BR: Select all audio items (obey time selection, if any)
SWS/BR: Select all MIDI items
SWS/BR: Select all MIDI items (obey time selection, if any)
Можно сделать то, о чем просит автор вопроса, но хочется уточнить, для всех ли миди и аудио это надо сделать?
 
@naash_g, зачем на каждый канал вешать, если можно на папку? А так Script: spk77_Link selected tracks FX parameters.lua в помощь
Можно ещё через Mapping panel Михаила, но там как-то долго и не сразу срабатывает.
 
Последнее редактирование:
  • Like
Реакции: naash_g и mezozoy
Доброго дня. Потратил день - настраивал Рипер. Делал кнопочки на тулбар, радиал менюшки понастраивал. Вырубили свет - сбой винды и зашел в систему только через резервную точку восстановления и последних настроек в рипере нет. Пропало часть Cycle actions. Рипер не на системном диске - знаю,что папка настроек на диске С. Все делать заново?
 
Последнее редактирование:
Есть программы для восстановления файлов, фотографий и т. д... И всё это с сомнительным успехом. В любом случае это к специалистам по восстановлению данных с ХД. Потратишь деньги и время (несколько дней и х. з. сколько денег). Надо это тебе? Если то что ты потерял - это гениально и неповторимо для всего человечества... То любые причуды за твои деньги... без гарантий на успех.
п. с. Потрать лучше бабки на бесперебойное питание. Думай о будущем. Вдруг опять вырубят? Так к Reaper и не присмотришься...
 
Последнее редактирование:
@ecosoft,
PHP:
--[[
Measure = Bar - Такт
Beat - Доля
--]]

--==============================================================================
-- Несколько мат. функций ----
local min, max = math.min, math.max
local abs, ceil, floor = math.abs, math.ceil, math.floor
local log, exp = math.log, math.exp
------------------------------
function minmax(x, minv, maxv)
  return min(max(x, minv),maxv)
end
------------------------------
function round(x)
  if x < 0 then return ceil(x - 0.5)
  else return floor(x + 0.5)
  end
end
------------------------------
function roundstp(x, step)
  if x < 0 then return ceil(x/step - 0.5)*step
  else return floor(x/step + 0.5)*step
  end
end

--==========================================================
--[[Функция возврашает таблицу с позициями сетки проекта в диапазоне:
ОТ starttime(окр. вниз, до начала такта) ДО endtime(окр. вверх, до начала след. такта).
То есть, пока намеренно цепляется целое число тактов(можно и ограничить).
Точно повторяет сетку проекта, что очень круто, поддерживает свинг.
gap_min - мин. время между линиями сетки, до какого уровня прореживается сетка, в секундах!
шаг прореживания считается по первому такту и идет до конца независимо от темпа/размера.
Это логично - иначе сетка может быть визуально неверной!--]]
--======================================
function GetStep(sm, cml, cdenom,  gap_min, div)
  local mstart = reaper.TimeMap2_beatsToTime(0, 0, sm) -- время начала такта
  -- len1 и len2 - время(длина) полного такта и мин. длительности(по настройкам сетки)
  local len1 = reaper.TimeMap2_beatsToTime(0, 0, sm + 1) - mstart
  local len2 = reaper.TimeMap2_beatsToTime(0, cdenom * div, sm) - mstart
  local step1, step2 = max(div, 1), 1 -- начальные значения
  ------------------
  for i = 1, 16 do -- проверка по тактам
    if len1 * step1 < gap_min then step1 = step1 * 2 else break end
  end
  ------------------
  if step1 == 1 then
    for i = 1, 16 do -- проверка по мин. длительности
      if len2 * step2 < gap_min then step2 = step2 * 2 else break end
    end
    --if step2 > 1 and cml%2 ~= 0 then step2 = nil end -- поправка косячная!
  else step2 = nil
  end
  ------------------
  return step1, step2
end

--======================================
function GetProjGrid(starttime, endtime, gap_min)
  local flags, div, swingmode, swingamt = reaper.GetSetProjectGrid(0, false)
  local sb, sm, cml, fb, cdenom = reaper.TimeMap2_timeToBeats(0, starttime) -- start measure
  local eb, em = reaper.TimeMap2_timeToBeats(0, endtime) -- end measure
 
  ------------------
  local step1, step2 = GetStep(sm, cml, cdenom, gap_min, div)

  ------------------
  local grid = {}
  local status, tpos, swing, bpos
  local b, m, cml, fb, cdenom
  for i = sm, em, step1 do
      local status = "M"
      local tpos = reaper.TimeMap2_beatsToTime(0, 0, i) -- measure start time
      --------------
      if step2 then
          b, m, cml, fb, cdenom = reaper.TimeMap2_timeToBeats(0, tpos) -- need cml, cdenom
          ----------
          for j = 0, 256, step2 do
            if swingmode == 1 and j%2 ~= 0 then swing = 0.5*swingamt else swing = 0 end
            bpos = cdenom * div * (j + swing)
            --------
            if bpos >= cml then break end -- if len more then measure len
            if bpos == 0 then status = "M"
            elseif bpos%1 == 0 then status = "B"
            else status = "D"
            end
            --------
            grid[#grid+1] = status
            grid[#grid+1] = reaper.TimeMap2_beatsToTime(0, bpos, m)
          end
      else
        grid[#grid+1] = status
        grid[#grid+1] = t
      end
  end

  return grid
end

------------------------------------------------------------
function DrawProjGrid(x,y,w,h, col, PT2X, X2PT, starttime, endtime)
  local line_spacing = 24 -- grid line spacing minimum, pixels!
  -- gap_min = line spacing min, converted to project time
  local gap_min = X2PT(x + line_spacing) - starttime

  ----------------------------
  local grid = GetProjGrid(starttime, endtime, gap_min)
  local status, tpos, xpos
  SetRGB(col)
  for i = 1, #grid, 2 do
    status = grid[i]
    tpos = grid[i + 1]
    xpos = PT2X(tpos)
    if xpos > x and xpos < x+w then
      if status == "M" then gfx.a = 1
      elseif status == "B" then gfx.a = 0.75
      else gfx.a = 0.5
      end
      gfx.line(xpos, y, xpos, y+h)
    end
  end
 
end
[DOUBLEPOST=1528661532][/DOUBLEPOST]Вот такие формулы, они не совпадают с их же GetProgectGrid() - но это верняк, на тот момент когда делал - посемплово.
 
  • Like
Реакции: Aleksandr Oleynik
Вот такие формулы, они не совпадают с их же GetProgectGrid() - но это верняк, на тот момент когда делал - посемплово.
Конечно не совпадают, т.к. их сетка рисуется (строится) правильно, т.е. по логарифмической функции. Но я заметил, что у Вас логарифмическая переменная log объявлена и проинициализирована, но в формулах function не используется. В этом-то вся загвоздка: сетка долей тактов Reaper по логарифму, но время рассчитывается линейно, а должно быть рассчитано тоже логарифмически.
 
Последнее редактирование:
Для меня эта ошибка стоит острым вопросом: покупать Reaper или Cubase.
Я написал на оффе, но пока молчание. Всё моё нутро желает взять Reaper, т.к. возможности Reaper очень обширны, тем более я в прошлом программист и могу писать скрипты. Но всё "накрывается медным тазом" из-за найденной мной ошибки, т.к. её скриптами не исправишь. Для меня ситуация обостряется тем, что ко мне уже едет штейнберговский ключ.
 
@ecosoft, считается правильно, Вы же даже не проверили. Используются родные ф-и, только с заворотами. Точность посемпловая.
 
Новое
@ecosoft, считается правильно, Вы же даже не проверили. Используются родные ф-и, только с заворотами. Точность посемпловая.
простите, но я не понимаю, что Вы пишете
[DOUBLEPOST=1528746769][/DOUBLEPOST]
@ecosoft, а теперь длинный ответ
я им пишу тоже длинный ответ, с указанием в чём их ошибка. Они не знают физики и математики?... :eek: Поразительно! :)
 
@ecosoft, это, наверное, мне адресовано. Если есть желание - могу детально расписать ситуацию. До мелочей.
С математикой там порядок, все сходится. Даже больше, вероятно, захотели сделать так, как нигде
---------
Математически считаются абсолютно нереальные размеры - например 8/5 - запросто, да, это просчитывается - а на сетке иначе рисуется.
Тут сложно сказать, как "правильно" - попробуйте прикинуть, уверяю, сначала запутаетесь
 
Последнее редактирование:
Через команду Learn привязываю бесконечную крутилку к параметру эквалайзера, сохраняю как настройку по умолчанию. Всё работает, но при переходе на другую дорожку с таким же плагином, параметр сначала делает прыжок к значению, в котором был прошлый плагин, а потом снова нормально плавно работает. Подскажите, это особенность такого способа подключения, или особенность контроллера моего?
При назначении крутилки ставьте галку Soft takeover, при переходе на другой плагин прыжков не будет.
 
  • Like
Реакции: DRYGVA и Aleksandr Oleynik

Сейчас просматривают