JS Плагины - обсуждение

Тема в разделе "Reaper", создана пользователем Aleksandr Oleynik, 10 янв 2014.

  1. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @Aleksandr Oleynik, И правда вопрос из середины. Задача стара как мир, отправить с рипера string по OSC на девайс. Более того я уже понял, что вообще не с того конца зашел, ибо это только отображение, но не значение. А значение в стринге быть не может, т.к. хост...
     
  2. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    Значение из стринга нужно делать в приёмнике... Иначе ни как.
    Если нужен параметр, то его сразу и передавать нужно, в соотвествии с настройками конфиг osc файла Рипера.
     
  3. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Можно сделать что-то и по-круче намного. Чисто для JS(там есть особенности).
    Больше всего в скриптах, особенно в EEL, и особенно в JS задалбывает графика.
    Не потому что это чем-то сложно, наоборот, это неинтересно абсолютно... Как говорится, есть дела поважнее.
    В чем фокус JS-слайдеров, по сравнению со скриптами или нарисоваными вручную в JS?
    В JS есть родные слайдеры, 64 штуки. С ними очень быстро можно делать эксперименты.
    По сути - написав всего одну строку мы имеем сам слайдер со всеми потрохами, переменную со значением,
    которое можно взять-установить, повлияв на все остальное, сохраняемый параметр - для пресетов, автоматизацию(передачу значения из хоста и в хост) и т.п.
    Используя только родные слайдеры не нужно заботится об автоматизации, сериализации и прочей х..не.
    В чем недостаток?
    Недостаток очевиден, когда слайдеров становиться более 10-15 штук. Уже даже визуально трудно ориентироваться.
    Кроме этого - каждая переключаемая хренюшка требует целый слайдер, это зря отнимает рабочее пространство.
    ===============
    В варианте, который приведен выше, я предложил возможность привязаться к родным JS-слайдерам любыми собственными элементами.
    Смысл ясен, только допилить. То есть, использовать свойства родных слайдеров, но свою графику.
    Мысль вполне обычная. Разработчик Jeez - сделал "Soda", разработчики в Рипере тоже привязывают, некоторые другие плагины с графикой привязаны, но это уже реже.
    Если кто-то скачал и попробовал(пару человек скачало, уже ох..но), то мог заметить, что мышь у меня реализована полностью аналогично родным слайдерам -
    двойной клик - сброс, ctrl - точная настойка. Сами элементы(в этом простом случае - кнобы) - тоже содержат все параметры, включая step и прочее.
    Остальные кнопки мыши - правая,средняя - поддерживаются точно так же, мышь получилась крутая, и с минимумом кода.
    Что мне не нравится в этом решении?
    1) Приходится в инициализации вручную дублировать параметры родных слайдеров - вроде и не проблема, но параметров много и если нужно что-то поменять - это сильно задалбывает.
    2) Мне просто все не нравится, некрасиво...
    3) Хотелось бы так - скрыл родной, указал линкованный слайдер, картинку и координаты - (idx, img_file, x,y,w,h) - и вся любовь. Никакой возни, любые картинки, любые координаты, любые значения.
    4) А почему бы и нет?
    5) И бл.., вопрос решен, такой крутячок получится для JS.
    6) "прелесть" в православии называется, вопрос спорный - но сделал...сам, но "прелесть"...
    7) Буду пить.
     
    PianoIst нравится это.
  4. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    А зря. Змия душить надо.
     
  5. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    О змеях и змиях. Раньше увлекался философией. Много всякого читал. И не знаю почему - но только Ницше запомнился.
    Там притчи - натуральные стихи, даже в переводе, это надо уметь так КРАСИВО писать. Некоторые я помню почти наизусть, спустя 15 лет, в том числе и "об укусе змеи".
    Однажды Заратустра заснул под смоковницей, ибо было жарко, и положил руку на лицо свое. Но приползла змея и укусила его в шею, так что Заратустра вскрикнул от боли. Отняв руку от лица, он посмотрел на змею; тогда узнала она глаза Заратустры, неуклюже отвернулась и хотела уползти. "Погоди, – сказал Заратустра, – я еще не поблагодарил тебя! Ты разбудила меня кстати, мой путь еще долог". "Твой путь уже короток, – ответила печально змея, – мой яд убивает". Заратустра улыбнулся. "Когда же дракон умирал от яда змеи? – сказал он. – Но возьми обратно свой яд! Ты недостаточно богата, чтобы дарить мне его". Тогда змея снова обвилась вокруг его шеи и начала лизать его рану.

    Когда Заратустра однажды рассказал это ученикам своим, они спросили: "В чем же мораль рассказа твоего, о Заратустра?" Заратустра так отвечал на это:— Разрушителем морали называют меня добрые и праведные: мой рассказ неморален.

    возможно, перевод, но моя версия в памяти более проста
    Однажды Заратустра заснул под смоковницей, ибо было жарко. Но приползла змея и укусила его в шею, так что Заратустра проснулся и вскрикнул от боли.
    Отняв руку от лица, он посмотрел на змею; тогда она узнала она глаза Заратустры, неуклюже отвернулась и хотела уползти. "Погоди, – сказал Заратустра, – я еще не поблагодарил тебя! Ты разбудила меня кстати, мой путь еще долог".
    "Твой путь уже короток, – ответила печально змея, – мой яд убивает". Заратустра улыбнулся! "Когда же дракон умирал от яда змеи? – сказал он. – На, возьми обратно свой яд! Ты недостаточно богата, чтобы дарить мне его". Тогда змея снова обвилась вокруг его шеи и начала лизать его рану.
    Когда Заратустра однажды рассказал это ученикам своим, они спросили: "В чем же мораль рассказа твоего, о Заратустра?" Заратустра так отвечал на это:
    Разрушителем морали называют меня добрые и праведные: мой рассказ аморален.
    ==========
    Кстати, почему Заратустра не подает милостыни, интересный вопрос - недостаточно беден - не ответ. Вернее. ответ, но не для нас...
     
    Последнее редактирование: 11 мар 2017
    mitinglas и vitalker нравится это.
  6. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    PHP:
    function jsl_knob_GetJSslider(idx)
      
    local(handlepatternretvalstrs1,s2def_valmin_valmax_valval_steplblval_lbl)
    (
      
    handle file_open(JS.file);
      
    //--------------------------
      
    handle >= ? (
        
    file_rewind(handle);
        
    pattern strcat(strcpy(#, "slider"), sprintf(#, "%d", idx));
        
    pattern strcat(pattern":*?%f*?<*?%f*?,*?%f*?,*?%f*?>*?%s");
        
    retval 0;
        
    str #; lbl = #;
        
    while(file_string(handlestr) > && !retval ) (
          
    retval match(patternstrdef_valmin_valmax_valval_steplbl);
        );
        
    file_close(handle);
      );
     
      
    //--------------------------
      
    retval ? (
        
    s1=#; s2=#;
        
    match("-%s"lbls1) ? lbl s1;
        
    match("*?%s(%s)*"lbls1s2 ) ? (lbl s1val_lbl s2) : val_lbl "";     
        
    //------------------------
        
    this.idx idx;
        
    this.val this.def_val def_val;
        
    this.min_val min_val;
        
    this.max_val max_val;
        
    this.val_step val_step;
        
    this.lbl lbl;
        
    this.val_lbl val_lbl
      );
      
    );
    Функция берет все значения из JS - слайдера. Единицы измерения, если нужно, указываются в круглых скобках, например, Threshold (dB).
    Единственное, что указывается вручную - сам JS-файл.
     
  7. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Еще одна мысль - разработчик Jeez сделал менеджер кучи(heman). Основанный на строках.
    Я подумал, сам менеджер кучи мне, например, не нужен - но идея отличная!
    Можно сделать маленький аналог таблиц - как в Lua, построить по такому же принципу.
    Допустим, на пару десятков кБ - для простых граф. элементов - этого с головой хватит.
     
  8. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Ух..вроде все. Добавил в Scope шкалу уровня, отображение значения в позиции курсора и паузу - на правый клик, поисправлял мелкие косяки.
    Осталось добавить временную шкалу и смещение-перетаскивание влево-вправо.
    Может еще что-то, и мы уделаем все скопы, сейчас не могу засыпаю на ходу прямо.
    https://raw.githubusercontent.com/EUGEN27771/JSFX/master/WaveScope
     
    Последнее редактирование: 27 дек 2017
    Golgo 13, Beckoff, noshyn и 11 другим нравится это.
  9. Wefilev

    Wefilev Member

    Регистрация:
    22 мар 2015
    Сообщения:
    182
    Симпатии:
    21
    Пол:
    Мужской
    @EUGEN27771, очень хорошая работа.. но можно, пожалуйста, поярче форму волны. Идеальный вариант был бы выбор цвета, яркости и сглаживание
     
    sve, RJ Baker, nazarol-jk35 и ещё 1-му нравится это.
  10. RJ Baker

    RJ Baker Well-Known Member

    Регистрация:
    15 июл 2006
    Сообщения:
    911
    Симпатии:
    377
    Пол:
    Мужской
    Род занятий:
    Музыка, аранжировка
    Адрес:
    Мариуполь
    Вот это очень ДА, т.к. у кого с глазами проблема - все надо подбирать индивидуально! @EUGEN27771, если сложно или нет времени то можно хотя бы инструкцию в какой строчке в тексте менять значения для цвета волны.
     
  11. Slick

    Slick IDDQD

    Регистрация:
    13 май 2008
    Сообщения:
    1.945
    Симпатии:
    859
    Род занятий:
    Аранжировщик, Саунд Дизайнер
    Адрес:
    Москва, Апрелевка
    @EUGEN27771, очень круто. Во всю пользую. Еще хотелось бы тактовую сетку (в идеале с возможностью ее менять).
     
  12. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    Позавчера, когда практиковал метод научного тыка, мне показалось, что _global.x работает и в скриптах, то-есть, можно с помощью этих переменных отправлять значения из скрипта в JS плагин. А сегодня чего-то хрень какая-то... В какой раз я был не прав?
     
  13. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Цвет волны можно поменять прямо сейчас, в начале кода:
    r1=0.6; g1=0.3; b1=0.3; a1=0.2; // для первой
    r2=0.3; g2=0.6; b2=0.3; a2=0.2; // для второй
    Тут он указан в формате 0...1, если хотите указать в формате 0...255, просто добавьте /255;
    То есть вот так -
    r1 = 50/255; // ( для значения, например, 50);
    g1=80/255; // ( для значения, например, 80);
    и так далее.
    ========
    Контур волны пока зависит от осн. цвета, просто чуть светлее, на a + 0.2, поэтому, не ставьте в цвете волны a1 и a2 - более 0.8(в норм. значениях)!
    По графике в Scope - @HDVulcan, написал очень много хороших и детальных советов, буду доделывать постепенно.
    ========
    Сетку тоже буду делать, пока мне не совсем понятно, как ее привязать к изм. темпу в этой версии, хоть приблизительно.
    С постоянным темпом - проблем нет, а когда темп изменяемый - она не будет соответствовать реальности.
    Есть другая версия скоп, где сетка будет ложиться четко, но там другие вопросы не решены.
    ========
    --- добавлено 13 мар 2017 ---
    Не работает, хотя было бы круто, если бы работало.
     
    Последнее редактирование: 13 мар 2017
    RJ Baker, Slick, sve и 2 другим нравится это.
  14. Wefilev

    Wefilev Member

    Регистрация:
    22 мар 2015
    Сообщения:
    182
    Симпатии:
    21
    Пол:
    Мужской
    @EUGEN27771, спасибо!! Это здорово!
     
  15. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771, Можешь мне залечить про два вопроса?
    простой: я не совсем въехал в работу @serialize Он вызывается и при сохранении параметров и при считывании, правильно? Но в функции file_var(), например, мы не указываем, считываем мы значение или записывваем. То-есть, мы можем спокойно вызывать эту функцию единожды, верно? без всякой возни с условиями.

    сложный: Я так понял, что eel в принципе объектно-ориентированный, но вроде как через костыли. И вот осознать механику работы с "объектами" я пока не могу. Допустим сейчас на платформе HISE (движок, написанный на JUCE) используется несколько переработанный JavaScript, там объектом может быть почти все что угодно, как и атрибутом. То-есть, можно сделать примерно так:
    PHP:
    function add(x,y)
    {
       
    x+y;
    };

    function 
    addParams(param1,param2)
    {
       
    param1.add(1,2);
       
    param2.add(3,4);
    };
    object1.addParams();
    object2.addParsms();
    Не уверен, что синтаксис праваильный сейчас изобразил, но смысл примерно такой.

    В принципе, спрашиваю все еще в контексте построения интерфейса, хотя и для остальных вещей тоже было бы очень полезно знать как оно здесь функционирует.
     
    Последнее редактирование: 14 мар 2017
  16. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Да, условия нужны в более сложных ситуациях, когда, например, не нужно записывать новые данные при каких-то обстоятельствах.
    В большинстве случаев - file_var или file_mem в секции @serialize для необх. данных - и все.

    Если бы так было... Там используются пространства имен, что позволяет получить некое подобие - в док. прямо написано "псевдо".
    В принципе, уже хорошо, хотя хотелось бы большего. Тот пример, что Вы выше привели - вполне будет работать с мин. исправлений.
    Что не получится - переназначить "методы"(если уж так называть) , после того, как к ним уже есть обращения. То есть в EEL все функции должны быть определены до вызова,
    и еще много всяких проблем и ограничений. Если поизворачиваться, решается. И, учитывая, что люди просто на функциях делают очень крутые вещи - возможности не такие и маленькие.
     
    PianoIst нравится это.
  17. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    да в принципе, в том же KSP функции - единственное, что можно использовать, и то в них нельзя кое-что запихивать. Оно не то, чтобы мешает, просто разница между 20 000 строк и 2 000 есть))) Вот я сейчас в JS и JavaScript уже чувствую ощутимое сокращение рукописного текста, аппетиты и растут)))
     
  18. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771, еще сложный вопрос:
    По мануалу я не понял, как происходит навигация по файлу (скажем, текстовому), и как вообще с ними работать.
    Ну, понятное дело, что указать в filename:0, а вот что происходит дальше - хз....
    Конкретная цель: сделать две кнопки: сохранить пресет\загрузить пресет. Слайдеры для этого использовать низя, т.к. переменных очень много.
    Попутно хотелось бы, если это вообще возможно, импортировать имена программ из reabank файлов в соответствующие ячейки, скажем, массива.

    P.S> ВообЩЕ да, массив. Научиться бы экспортировать\импортировать хотя бы один массив с фиксированной длинной в разные файлы, этого бы на долгое время хватило.
     
  19. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    Господа, есть ли плагин, который блокирует все миди-сообщения кроме нот?
     
  20. Subers

    Subers Member

    Регистрация:
    4 фев 2008
    Сообщения:
    72
    Симпатии:
    41
    Пол:
    Мужской

    Вложения:

    vitalker нравится это.
  21. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @PianoIst, file_mem в сериалайз, для области памяти может Вам подойти. Сохранять как обычные пресеты.
    Прочитать сторонний файл не проблема, но он должен быть не где попало, а именно либо в директории( или подпапке) с JS, либо в папке -подпапке Data.
    Возможно, будут работать жесткие ссылки, я не проверял.
    А вот запись в сторонний файл, насколько помню, невозможна(тоже надо уточнить, может изменилось что-то) - только в файл проекта(см. JS SER чанк) или в пресет - что может Вам подойти.
    @vitalker,
    Если совсем коротко:
    PHP:
    //Это все, больше никакие секции не нужны.
    @block
    while (midirecv(offset,msg1,msg2,msg3)) (
       
    type msg1&240;
       
    type == 144 || type == 128 midisend(offset,msg1,msg2,msg3);
    );
     
    vitalker нравится это.
  22. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    @EUGEN27771 мерси, то что нужно!
    --- добавлено 1 апр 2017 ---
    @Subers класс, даже можно менять. Нашёл, это плагин Александра.
     
    Последнее редактирование: 1 апр 2017
  23. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771, то-есть, file_mem(0,var) & file_var(0,var) записываются в пресеты? Было б генияльно, ящитаю)
    Сегодня полдня бился, пытаясь научить JSFX записывать ввод с клавиатуры в переменную) ура.
     

    Вложения:

  24. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771, ок, проверил с пресетами, все работает! ее!
    А как быть со строковыми значениями?
    Допустим, я назначил в процессе #str начение "Trombone", оно у меня с пресетом не сохраняется...
    P.S. Все равно ничего не выходит. именные переменные не назначаются правильно на обычные (хотя в мануале, вроде, должны).
    А сами именные переменные не сохраняются в пресет...
    PHP:
    options:want_all_kb
    import KeyboardInput
    .jsfx-inc

    @init
     
      
    #input.str="0";
      
    kb_capture=0;
      
    kb_firstchar=0;
         
    @
    gfx 100 100
      gfx_r
    =gfx_g=gfx_b=0.5;
      
    gfx_rect(0,0,100,100);

      
    mouse_x<100&&mouse_x>0&&mouse_y<100&&mouse_y>0?(
        
    gfx_r=gfx_g=gfx_b=0.7;
        
    gfx_rect(0,0,100,100);
        
    mouse_cap == 1?(
          
    kb_capture=1;
          
    kb_firstchar=1;
        );
      );

      
    kb_capture==1?(
        
    input.kb_to_str(10);//clears the #input.str and writes keyboard input into it until user types enter or up to the 6th character.
      
    );

      
    gfx_r=gfx_g=gfx_b=0;
      
    gfx_x=gfx_y=0;
      
    gfx_drawstr(#input.str);
      
    input=#input.str;
     
    Последнее редактирование: 1 апр 2017
  25. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    file_mem(handle,offset, length) - читает/записывает кусок лок. памяти в файл/из файла. В секции сериалайз - в файл проекта, и в файл пресета, при сохранении пресета.
    ===============
    handle = 0 - в ser секции, offset - смещение от нуля, грубо говоря, указатель на обл. памяти, первый элемент Вашего массива. length - длина читаемого - записываемого куска (от точки offset).
    @PianoIst, не понятно, зачем Вам вообще здесь нужны изменяемые строки? Есть литералы, допустим str = "Trombone", Вы же не будете потом проводить операции со строкой, а даже если будете, все легко через врем. строки сделать.
    ===============
    Вы лучше опишите четко, что конкретно нужно, в упрощенном виде, и в чем проблема. Потому что гадать сейчас не могу, но попробую помочь хотя бы направление найти.
    Ваш код гляну попозже.
     
  26. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771, Спасибо, что помогаете!
    до меня просто не доперло, что mem есть массив) Думал, это какой-то абстрактный блок памяти, который торчит байтами в оперативке, и в котором может быть все, что угодно. А к нему-таки можно конкретно обращаться.

    Я сейчас пытаюсь осилить миди-процессор по типу LASS ARC. И чтобы пользователю как-то ориентироваться в гипотетических 1000+ артикуляциях с вариантами их переключений, мне надо чтоб он имел возможность сам их обзывать, и желательно, чтоб он мог это сделать один раз, а потом немного варьировать от плагина к плагину (скажем, когда мы делаем струнную секцию).
    Вот, допустим, как выглядит окно инструментов:
    2017-04-02_06-02-08.png
    Правая колонка назначается в ависимости от имени артикуляций во время проигрывания миди. Центральная колонка - просто перевод значения переменнной в формат миди-нот. А вот левая колонка, как и сами названия артикуляций (их, кстати, пользователю, в любом случае придется дублировать для *reabank файла, работающего в свяке с плагином) вводятся самим пользователем. И надо их как-то хранить, персонально для пресета.

    А проблема в том, что a) я так и не понял, как кошерно прочитать файл реабенка. Точнее, сейчас потихоньку стал понимать, что мы можем попробовать загрузить его и перевести каждую строку в массив, но еще не пробовал.
    б) у меня не получается сохранить string, а без этого, КМК, в таком деле никуда.
    в) (из ряда фантастики) хотелось бы попутно иметь возможноть отдавать кой-чего по OSC. Но он, вроде работает по UDP а куфыскшзе умеет общаться только по TCP причем, странно как-то. Да и нормальный сервер поднять это еще надо постараться)

    Логику работы самого процессора я уже почти построил на бумаге, там проблем с программингом нет. Но вот интерфейс уже имеет меня третьи сутки... На контакте бы я тот объем работ, который проделан проделал бы раза в 4 быстрее...
    P.S. Пытаюсь сейчас осознать работу с Вашей библиотекой захвата мыши, но кой-чего все равно не связывается в голове пока.
     
  27. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Давайте проще, чтобы я понял - никогда подобными вещами не пользовался. Что такое артикуляции в этом случае?
    Сам принцип работы для незнакомого с этим.
    file_string(handle,str) - 100% проверенный рабочий вариант. Читать строку за строкой, до конца, можно сразу что-то нужное искать и тп.
    В EEL, сперва кажется, оч. слабые возможности, по работе со строками по сравнению с Lua, но это не совсем так. Можно сделать аналогичные практически любым строк. функциям из Lua. Правда, все делать придется руками.
    Попробую, 99,9% должно работать, обратите внимание, что возможность сохранить хоть что-либо автоматически дает возможность сохранить что угодно.
    Если Вы уже точно знаете, как плагин будет выглядеть - все просто. Можно нарисовать все в граф. редакторе, поставить фоном и все, так в принципе и делают почти все. Единственное, что теряется в этом случае - возможность масштабирования без потерь(это если она вообще нужна).
    Там вроде, все понятно, но если что, напишу более подробные комментарии.
    А что это? Я в ступоре..
     
    PianoIst нравится это.
  28. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771,
    >>Что такое артикуляции в этом случае?

    Это определённые штрихи инструмента(виртуального), которые у каждого производителя переключаются по-своему. А юзеру бы (мне, допустим) их переключать унифицированно )

    >>file_string(handle,str) - 100% проверенный рабочий вариант. Читать строку за строкой, до конца,

    Я вот сейчас час возился с этой функцией. Она принимает у меня либо первую, либо последнюю строку... Не могу разобоаться, каким должен быть алгоритм чтения.

    >>А что это? Я в ступоре..

    Упс, прошу прощения, реаскрипт (который не jsfx)

    По поводу сохранения стрингов - я завис на передаче стринга из #переменной в нормальную для сохранения.
    Конструкция var="abc"; работает.
    А вот
    #str ="abc";
    var=#str;
    Не хотит. Сама #str чего-то тоже через file_var не сохраняется.
    Посмотрите, пожалуйста, если получится
    --- добавлено 2 апр 2017 ---
    PS. По поводу файлстринг. Я так понял, построчно он читает только файлы расширения txt?
    Но даже с ними не пойму, как строка выбирается
    --- добавлено 2 апр 2017 ---
    Механизм работы артикуляций упрощенно: в инпут-плагине выставляем правила для ввода по миди. В идеальном темплейте они будут почти одинаковые для всех. В миди-тейк уже пишутся только банк/программа. И пользователь может легко и наглядно их двигать и добавлять. Для этого используются реабанки.
    А аутпут плагин интерпретирует банк/программу уже по своей схеме, и играет тем, чем надо. Ну и ещё пара надстроек
     
  29. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Все читает, вроде бы. Проверил, что успел, строки читаются и сохраняются только через file_string, и file_string нормально работает в сериалайз.
    Напишу позже более подробно, тут, конечно, со строками дела не очень.
     
    PianoIst нравится это.
  30. PianoIst

    PianoIst Well-Known Member

    Регистрация:
    19 май 2010
    Сообщения:
    2.834
    Симпатии:
    2.322
    Пол:
    Мужской
    Род занятий:
    Аранжировка, солист-пинанист
    Адрес:
    Новосибирск
    @EUGEN27771, я правильно понимаю, что при вызове file-open плагин читает весь файл, по одной строке в цикл? А номер строки равен file-avail?
    У меня получилось как-то раз все строки поочередно за секунду вывести на экран. Но вот вывести конкретную строку не получается...
    Можно заодно обнаглеть и попросить пример кода чтения?
     
  31. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    file-open только возвращает handle, грубо говоря, открывает файл. Читает файл file_string. При каждом вызове читается одна строка и позиция смещается на одну строку вниз по файлу. file_rewind возвращает позицию в начало файла, если нужно. Мало в JS возможностей в этом плане, в скриптах иначе сделано.
    Лучше на это не ориентироваться, потому что для txt файлов функция возвращает просто 0 и 1(в мануале сказано, я не проверял).
    Вот код - читает весь файл в одну строку #str
    PHP:
    @init

    File 
    "!!!Test ReadFile"// Set you file!
    //----------------------------
    function ReadFile(File)
      
    local(handlestr)
    (
      
    handle file_open(File);
      
    handle >= ? (
        
    #str = "";
        
    while( file_string(handlestr) > 0) (
          
    #str+=str;
        
    );
        
    file_close(handle);
      );
      
    #str;
    );

    //----------------------------
    ReadFile(File);

    @
    serialize

    file_string
    (0#str);

    @gfx 800 550
    gfx_set
    (0.8);
    gfx_rect(0,0gfx_wgfx_h);
    gfx_set(0.1);
    gfx_setfont(1,"Arial"20);
    //----------------------------
    gfx_x gfx_y gfx_texth;
    #str ? gfx_drawstr(#str);
    ========================================
    Вот другой код читает каждую строку в спец. слоты для строк.
    1234.gif
     

    Вложения:

  32. Stapleton

    Stapleton ex wwwoland

    Регистрация:
    22 май 2011
    Сообщения:
    2.204
    Симпатии:
    1.465
    Пол:
    Мужской
    Род занятий:
    аранжировщик, звукооператор
    Адрес:
    Одесса
    Коллеги, подскажите: никто не реализовывал в js аналог waves oneknob pumper? ( http://www.waves.com/plugins/oneknob-pumper)
    Удобная вещица, но мне бы сразу на несколько устройств, а вэйвсы не дают.
     
  33. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @Stapleton, опишите суть работы.
     
  34. Stapleton

    Stapleton ex wwwoland

    Регистрация:
    22 май 2011
    Сообщения:
    2.204
    Симпатии:
    1.465
    Пол:
    Мужской
    Род занятий:
    аранжировщик, звукооператор
    Адрес:
    Одесса
    По ссылке видео есть, там очень наглядно. Эффект сайдчейна без сайдчейна
     
  35. mitinglas

    mitinglas дМитрий Зайцев

    Регистрация:
    18 ноя 2004
    Сообщения:
    2.049
    Симпатии:
    1.429
    Пол:
    Мужской
    Род занятий:
    TV
    Адрес:
    мАсква и ея акрестнасти
    Дык был же в теме прекраснейший плагин от Еугена27771, дай Бог ему здоровья! Смотрите выше по этой ветке.
     
    vitalker нравится это.
  36. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @mitinglas, спасибо за здоровье!
    Не сплю, на самом деле. По ходу дела, Scope по-немногу допилил совместно с @HD Vulkan, - он подбирал все цвета, расстояния, то есть графика - практически полностью - его заслуга.
    Я бы сам на такие вещи внимания не обращал, конечно. По крайней мере, мне нравится, даже потому что очень много исправлено и добавлено технически.
    Мы получили в итоге, очень-очень приличный вариант.
    Из функционала:
    1) Добавлена возможность просмотреть любую волну в любом разрешении в режиме паузы - это очень круто - причем, можно таскать верх-вниз и влево-вправо, как угодно.
    2) Сам момент отрисовки очень сильно поправлен - теперь все отображается не просто точно, а просто ох...но точно, математически учтено все, до мелочей, до самых мелочей, в любом виде и такого нет нигде!
    3) Добавлена возможность настройки цвета для каждой волны.
    5) Все зумы теперь плавны и равномерны, как вода.
    6) Прочая херня.
    ==================
    Последняя версия здесь WS Scope
    1234.gif

    ==================
    "Mousewheel - Change Time Range(buffer length), aka Horizontal zoom.
    Click&Drag(up/down) - Vertical zoom.
    Middle Click - Pause/Unpause.
    Shift + Click&Drag(left/right) on Pause - Change offset.

    Midi Pitch Sync Mode:
    The plugin automatically sets the correct buffer-time, depending on the pitch of the input MIDI-note.
    This is useful for waveform analysis when using synths.
    TimeLoop Sync Mode:
    The plugin automatically adapts to the selected range.
    Accurate to sample.
    Tempo Sync Mode:
    The plugin automatically adapts to the Host Tempo.
    Free Sync Mode:
    Sync disabled.
    ==================
    "+" - Change Colors.
     
    Последнее редактирование: 8 апр 2017
    Golgo 13, Alex_HS, Слава и 8 другим нравится это.
  37. Stapleton

    Stapleton ex wwwoland

    Регистрация:
    22 май 2011
    Сообщения:
    2.204
    Симпатии:
    1.465
    Пол:
    Мужской
    Род занятий:
    аранжировщик, звукооператор
    Адрес:
    Одесса
    Большое спасибо! Потестил.
    Однако мне не совсем подходит кривая этого плагина: она открывается не на восьмушку, а почти на 3ю шестнадцатую из 4х.
    (естественно, в режиме BeatSync - мы ведь говорим об альтернативе Pumper).
    Тогда уж легче использовать такое:
    Буфер обмена01.gif

    P.S. Мне почему-то кажется, что вэйвсы там не огибающую громкости используют, а придавливают компрессором (lfo на трэшолде???).
    Но я совсем не уверен.

    P.P.S. заметил, что VST-версии плагинов supermaailma кушают в Рипере меньше, чем JS
     
  38. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    во-первых, по аудио JS либо столько же, либо меньше(нужно и на вход, и на выход смотреть), а во-вторых, в vst ещё графика кушает, Рипер ведь этого не показывает.
    --- добавлено 8 апр 2017 ---
    @EUGEN27771 эту версию можно считать финальной?)
     
  39. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    @vitalker, по аудио JS кушает больше чем тот-же плаг в VST -это уже обсуждали.
     
  40. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    не помню где я это прочитал, видимо в одной из тем тут. Человек утверждал, что vst всегда больше кушает, даже после оптимизации, просто потому что даже малейшая графика сильно грузит проц. Да, вспомнил: при обсуждении плагинов от Anomaly(supermaailma)
     
  41. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Совсем не так это. Показать тесты? Смотреть на диспетчер задач, а не в Рипере. По математике возможно некоторое преимущество(не более 40%) - но по графике - VST, сделанные в Jeez, безнадежно отстают(в десятки раз).
    Да и вообще, в графике у JS превосходство абсолютное, даже сравнивать нельзя. Нужны примеры?
    --- добавлено 8 апр 2017 ---
    Да, ты прав. Графика идет отдельным процессом и потому в Рипере не видно, сколько жрет - там показывает только математику.
     
    mitinglas и vitalker нравится это.
  42. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    А вот кто писал об этом :D
    --- добавлено 8 апр 2017 ---
    @EUGEN27771 так можно ли эту версию считать финальной?
     
  43. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    Я просто взял и проверил. На самом деле - на кокосовском форуме пишут то же самое, это абсолютно не секрет.
     
  44. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    Я абсолютно согласен, ведь Рипер показывает только нагрузку аудио, не зря ведь JS существует :)
     
  45. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    По Scope или по Curve? По скопу - почти да, только маленький хелп хочу добавить, но сам на англ. не переведу - могу только на русском.
    И еще пару полезных мелочей, а так, да, я доволен результатом. Это очень красиво, в любом смысле.
    По Курвам - все только начинается, там уже много чего можно сделать.
     
    mitinglas и vitalker нравится это.
  46. Aleksandr Oleynik

    Aleksandr Oleynik Well-Known Member

    Регистрация:
    16 янв 2007
    Сообщения:
    16.914
    Симпатии:
    9.168
    Пол:
    Мужской
    Адрес:
    Киев
    Женя, так почти всегда проблема не с CPU, которое и графику тянет по большей части, а с ASIO.
    ASIO первое захлёбывается.
    И тут мои тесты говорят не в пользу JS.
     
  47. vitalker

    vitalker Well-Known Member

    Регистрация:
    8 окт 2013
    Сообщения:
    3.061
    Симпатии:
    1.183
    Адрес:
    Гродно
    :D хаахахахах
    Пишите на русском, я переведу. Ну и буду просить Джона сделать по нему обзор.
    --- добавлено 8 апр 2017 ---
     
  48. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @Aleksandr Oleynik, я думаю, что это не так. Но для уверенности - можно сделать тесты.
    Си будет считать быстрее - что тоже спорно, я проверял - стандартная библиотека считает медленнее, чем JS!
    Но в графике он сразу застрянет, тоже проверял. Возможно, я ошибся. Но про Jeez - проверено, там медленнее - 100%.
    Можно накидать вариантов, это же все-таки тема - "обсуждение". Ваши варианты проверки?

    Спасибо, ибо я в англ. без понятия. Тогда, сделаю два хелпа - англ/рус - англ. будет пустой, нужен будет перевод, рус. напишу.
     
    vitalker нравится это.
  49. EUGEN27771

    EUGEN27771 Well-Known Member

    Регистрация:
    23 апр 2010
    Сообщения:
    2.321
    Симпатии:
    1.963
    Пол:
    Мужской
    @Aleksandr Oleynik, самый простой тест - нарисовать N случайных линий, например.
    Когда N станет несколько тысяч или несколько десятков или сотен тысяч - не думаю, что это понравится любому процессору.
    В JS это проходит на ура - где-то я уже писал об этом.
    Помните - мы разбирались с пресетами. В конце каждого куска была контр. сумма - если она не совпадала - только тогда кусок переписывался.
    Я думаю - здесь то же самое. JS не считают то, что уже было посчитанно - нах.. 100 раз считать одно и то же - отсюда и скорость в графике.
     
  50. mitinglas

    mitinglas дМитрий Зайцев

    Регистрация:
    18 ноя 2004
    Сообщения:
    2.049
    Симпатии:
    1.429
    Пол:
    Мужской
    Род занятий:
    TV
    Адрес:
    мАсква и ея акрестнасти
    Что-то у меня черный экран с крестиком, и фсё :( А предидущая версия работает... Смущает, что размер новой раз в семь меньше, чем работающей... Что-то я не так делаю... ?
     

Поделиться этой страницей