LINUX.ORG.RU

Гитарный звук и Linux

 , ,


8

7

Создание такого треда давно уже назрело, так как обсуждение вопроса гитарного звука в Linux вспыхивает оффтопиком то в одном месте, то в другом. Приглашаю всех интересующихся обсуждать вопрос здесь.

Кастую ist76, Chelobaka, AP.

Обсуждаем вопросы использования guitarix, rakarrack, tuxguitar, VST, LV2, LADSPA плагинов и прочего.

Практический результат обсуждений можно увидеть тут.

https://github.com/olegkapitonov/Kapitonov-Plugins-Pack

Версия 1.0, бинарники

https://github.com/olegkapitonov/Kapitonov-Plugins-Pack/releases/tag/v1.0

Прямая ссылка на скачивание всех бинарников

https://github.com/olegkapitonov/Kapitonov-Plugins-Pack/releases/download/v1....

Перемещено leave из multimedia

Перемещено jollheef из talks

Перемещено leave из multimedia

★★★★★

Ответ на: комментарий от curufinwe

Так. Твои плагины попробую позже. Ночью опять было весело, надо передохнуть (хотя руки чешутся). А вообще, жду человечка одного, он обещал вчера подъехать и не приехал. Он с двумя гитарами и с двумя комбиками (правда, совсем уж говёными, но это даже лучше, сможет ли эмуляция из них сделать красиво?)

Я не совсем доволен звуком моего овердрайва. В низах - почти-почти то, чего искал. Но, во первых звук должен тянуть рычание, а он сходит на низах очень быстро. Во вторых - идя вверх он теряет эти призвуки и гармоники, превращаясь просто в обрезанную синусоиду (ну, близко). В самых верхах появляется опять то, что хотел. И как мне кажется - из-за отсутствия рекурсии. Из-за этого мне пришлось поставить фильтры второго порядка, из-за этого «диоды» у меня не в петле обратной связи, а скорее как у дисторшна, после. и звучит оно «прилично» потому что диоды я делаю арктангенсом. В третьих я вычитаю фильтрованный сигнал усиленный на квадрат драйва! Это тотали вронг сё, что на выходе похоже, но не то. Что имеем:

Vout = diode(VinPlus-VinMinus)
VinPlus = Signal
VinMinus = FilterHiLo(N2,Signal)*drive^2
если не напутал. А хочу я :
Vout = VinPlus-VinMinus-Diodes //И тут вопрос, минус или плюс всё-таки? То мне кажется что плюс надо, то наоборот
VinPlus = Signal
VinMinus = FilterHiLo(N1,Vout')*drive
Diodes = atan(FilterHiLo(N1,Vout'))*(max_drive-drive)
И что-то тут с диодами внутри всего этого цикла, арктангенсом и оставить? Увеличиваем сопротивление(драйв), всё идёт через «диоды». Тут уж я пока не допетрил как конкретно реализовать диоды. Но главная разница (оставим пока диоды) - в VinMinus идёт результат предыдущего вычисления, а не просто инверсия фильтрованного сигнала со входа. Это Эпистолическая, Краеугольно-Сермяжная идея моего изыскания.

С рекурсией же у меня фигня получается. То она прибавляет единицу к входному сигналу при каждом круге воспроизведения в кутракторе (откуда? Кааак?) Кода не сохранилось, запутался, стёр. То превращается в гармошку инверсий себя же, (это где-то я переборщил с усилением и при вычитании из предыдущего оно инвертируется), тут интересно, на осцилоскопе хорошо пилу, и как мне кажется, это периоды буфферизации, потому что ну никак не тянет на период в тик дискретизации, как в лекции утверждалось. Если тик рекурсии - это период буфферизации, то всё пропало вообще. Другой комп, другие настройки и ёк.

Лучшее, что у меня получилось - это поймать рекурсию на тонкой грани, когда перегруза немного не хватает, но зато он не выходит на цикличную инверсию. Это когда драйв держать в пределах 0.5-0.98. Сразу стало понятно, надо ставить фильтры первого порядка, как на реальной педали и «диоды» именно в обратной цепи. Вот только что дальше? :) Код такой (примерно, всё опять на пальцах)

import("stdfaust.lib");
import("filters.lib");
process = stomp with {
  volume = hslider("volume",1,0,1,0.01);
  drive = hslider("drive",1,0.1,10,0.01): si.smooth(0.7);
  hipass = 720;
  lopass = 62;
  breakline =hslider("breakline",0,-10,10,0.1);
  amplitude = hslider("preamp",1,0,4,0.01);
  voice = hslider("voice",0.5,0,1,0.001);
  prelopassfreq = 723.4;
  s = hslider("smoothness",0,0,1,0.0001);
  
  overdrive(inputL) = overdriven(inputL):ba.bypass1(checkbox("ATC"),ActiveToneCirquit) with {
	boost = _*amplitude;
	loopbackfilter = _<:fi.highpass(1,hipass+(breakline*drive)),fi.lowpass(1,((lopass+breakline)/drive)): +:*(drive): atan(_) ;
	driven =  _*(drive^2);
	overdriven = boost<: -~loopbackfilter(_): ba.bypass1(checkbox("smooth"),si.smooth(s));
	
	PreActiveLowpass = fi.lowpass(1,prelopassfreq);
	ActiveToneCirquit = _<: (PreActiveLowpass:fi.lowpass(1,prelopassfreq))*voice,(PreActiveLowpass + fi.highpass(1,prelopassfreq))*(1-voice):+;
  };
  
  
  stomp =  _: ba.bypass1(checkbox("overdrive"),overdrive): _*(volume) ;
    
};
Если драйв выкручивать дальше, то начинается вакханалия, уровень сигнала может убежать вверх, или вниз, как ему захочется, а может начать инвертироваться и свистеть. letrec не получается использовать, не понимаю, что ему не нравится, он никак у меня не работает.

Deleted ()
Последнее исправление: Chelobaka (всего исправлений: 3)
Ответ на: комментарий от Deleted

Ты неправильно обратную связь делаешь. И последовательные диоды надо не арктангенсом делать. Чуть позже поковыряю, как время будет.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Так. Немного про твой амп.

МОЙ овердрайв в последней своей (рабочей) версии звучит очень похоже и в куб и в колонку через ТВОЙ newtubeamp. Я бы сказал, что очень близко, с учётом того, что колонки в принципе могут передать. Интересно, что если включать овердрайв в newtubeamp а потом в куб, то выстраивается ещё лучше. В наушниках на компе тоже всё хорошо. На newtubeamp bias выкручиваю на 6-12 а драйв на 1. Но! Включаю ТВОЙ дисторшн - он абсолютно по разному звучит в куб, в куб через newtubeamp и в колонки через newtubeamp. В голый куб - всё заваливает басами. Убираю бас на дисторшне, уходит весь звук. Громко играть на таком сете вообще не возможно, динамик выплёвывает от басов. Когда ставлю через newtubeamp в куб, то становится лучше, гораздо. Разница просто офигительная. Но дисторшн в newtubeamp в колонки - совсем по другому приходится выстраивать звук. Вопрос, это newtubeamp не так работает, или всё же distruction? Второе - на newtubeamp я не могу получить гитару вообще без искажений. Биас хоть обкрутись, он лучше не становится, при чём даже если уменьшаю громкость на гитаре, довольно долго сохраняется подтравленное.

DeadGate - супер. Только не совсем очевидно из названия, что какая ручка делает.

Bluedreamer - распробовал. Через newtubeamp - хорошо. Действительно хорошо! С небольшим надрывом, хочет выскочить, классно! Теперь это именно Дример! Играю в комбик, ушли паразиты в средних верхах и басы встали на место. Не такие басы, как я себе делал, но тоже классные, ровненько, акуратненько. Для живого исполнения - самое то. Но! Опять же, только через твой амп. Без него педали фулюганят на реальном кубе. Нечем мне записать тебе профиль моего куба, чтобы было чем оперировать.

Deleted ()
Последнее исправление: Chelobaka (всего исправлений: 2)
Ответ на: комментарий от Deleted

Понятно, это наводит на определенные мысли. А в кубе в какое место ты звук вводишь, на гитарный вход?

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от Deleted

У тебя же куб транзисторный? Часто пишут, что транзисторный куб плохо греется педалями-грелками. Может в этом дело? Мои именно как грелки настроены. Поэтому через tubeAmp и лучше.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

наводит на определенные мысли

Про мой куб? :) Усилок и в кубе и в компе транзисторный. Но через даже tubeAmp в колонку и в куб звучит сильно по разному. Ощутимо. Не то, что не красиво, по разному.

Может быть потому, что ты всё профилирование делал на колонках через tubeAmp. И пусть бы и так, должно работать в связке, пусть работает, но звучит в разных колонках по разному, это уже проблема. Теперь ведь придётся каждый раз перенастраивать и использовать разные пресеты на разных колонках. А ежели в микшер и непойми куда дальше? как отстроить? Так не получится.

Ко мне так и не приехал друг, не привёз кубы и гитары. Отложили на потом.

Ещё новость. с Китая пришёл NanoPC. Купил я его детям, ютуб смотреть, ну и пристрою на нём гонять педали в куб. Надо заняться расперипишной распиновкой и питонятиной делающей мидишные волшебства из крутилок и кнопочек.

Deleted ()
Ответ на: комментарий от Deleted

наводит на определенные мысли Про мой куб? :)

Нет, про то как подправить мои плагины. Я собственно уже подправил, сильно по-другому не станет, но острые моменты приубрал.

Усилок и в кубе и в компе транзисторный

Вот видимо он и разогревается не так, как эмулирующий лампы tubeAmp. А педали рассчитаны на разогрев tubeAmp.

Может быть потому, что ты всё профилирование делал на колонках через tubeAmp.

Есть такая проблема. Но я, как ты и говоришь, исхожу из того что все это в связке будет.

пусть работает, но звучит в разных колонках по разному, это уже проблема

Я не пойму, а как оно может звучать одинаково? В линейных негитарных колонках, наушниках, микшерах оно будет звучать одинаково. А кубы имеют каждый свою АЧХ нехиловски выгнутую, и звучать одинаково через разные кубы не может по определению, а также через обычные колонки и куб, если профиль не с этого куба снят.

Как ты предлагаешь это решить? Если педаль совсем не будет греть, а будет весь перегруз давать сама - то проблема почти решается, но все равно ощутимая разница будет.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

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

Ладно. Дождусь когда друг освободится и откатаю на его кубах всё тоже самое. Посмотрю, как оно будет играть у него и на колонках и на кубах и на его гитарах. А то местные тестировщики не торопятся :)

Ты, кстати, не пробовал faustlive собирать? Там есть возможность экспортировать на все платформы используя сервер фаустовцев, настроенный под всё что нужно. Можно было бы экпортнуть в vst, дать ist76 покататься, он то уж наиспытывает и отчитается. Только плагины подавай :)

Deleted ()
Ответ на: комментарий от Deleted

Не концертный, но достаточно нейтральный куб

Ну у тебя же там гитарный динамик, не широкополосный? И как ты подогреваешь комбик плагином с компа, если максимальная амплитуда линейного выхода звуковой карты с включенной "грелкой" не увеличивается?

templarrr ★★★★★ ()
Последнее исправление: templarrr (всего исправлений: 1)
Ответ на: комментарий от Deleted

Что я вам, лётчик-испытатель?
Я не люблю играть в компьютер и не играю в компьюьер практически никогда. Если совсем шуметь нельзя, или комбо греть лень, я просто не подключаю а играю так.
Это имеет последствия в виде идиосинкразии к задержкам и нелюбви к компьютерному звуку. Не оттого что он нетруъ, а банально оттого, что я привык к другому.

ist76 ★★★★★ ()
Ответ на: комментарий от templarrr

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

Ничего, curufinwe сделал какие-то поправки, завтра посмотрим.

Deleted ()
Ответ на: комментарий от ist76

Тебе же оценить предлагают, а не пересесть навечно. Тем более ты сам вызывался - только, мол, дайте мне плагины под винду, я вам накатаю. А ещё у тебя амп ламповый, мог бы помочь с проблемой нетранзисторной грелки, подключил бы выход компа в ерасова, да заценил работу Блюдримера и Деструкшона напрямую в него. Ведь реально интересно, насколько корректна модель и прочая и прочая. Тут же не спору ради, а пользы для.

Deleted ()
Ответ на: комментарий от templarrr

Погоди, как это не греется? ещё как. Амплитуда входного сигнала растёт с её умножением сигнала на любой стадии усиления. Пришёл сигнал в -3db (или -6, как посмотреть), ушёл в 0db. Он стал сильнее? Да. Мне и овердрайв не нужен, просто бустер (с коррекцией частот) и куб захочет реагировать на ноты. Да я даже могу тупо бустнуть звук ручкой громкости на звуковухе. Амплитуда же растёт? А в овердрайве ещё и сжимаются пики, поднимая слабые нюансы на хороший такой уровень. Амплитуда растёт, вольтаж (как эквивалент амплитуды) растёт. Куб получает приготовленную, прогорошенную волну и дальше рассекает её на более поробные детали. Что плохо-то?

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

Deleted ()
Ответ на: комментарий от Deleted

Потрогать то я, конечно, потрогаю
Но не надо из меня делать жупел
Я в звуке не понимаю, мне вообще нравится пердящий звук перегруженного входа. Вот как у Вайлда, образца где-нибудь 2002-2003 годов
А тут явно такого никому не надо

ist76 ★★★★★ ()
Ответ на: комментарий от Deleted

По твоему плагину. Попробуй так. Это код именно перегруза

overdriven = fi.lowpass(1,low_freq) : (+ : *(100)) ~ loopback;

loopback = *(-1.0) : lb_filter : diode;

diode(input) = input - K*atan(input);

Усилитель, охваченный обратной связью с фильтром и диодами. Перед таким усилителем _обязательно_ должен стоять lowpass фильтр (fi.lowpass(1,low_freq) у меня). Иначе будет дико звенеть. low_freq надо подобрать, пока не исчезнет звон. Такой фильтр встроен в микросхемы операционников, поэтому на схемах педалей его нет, но он есть.

*(100) в усилителе может быть слишком жестко, тогда надо уменьшить.

lb_filter - твой фильтр в обратной связи.

В уравнении диода K - коэффициент, который задает жесткость перегруза. K = 0 без перегруза, K = 1 максимальная жесткость. Больше 1 делать нельзя.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 2)
Ответ на: комментарий от ist76

АААА!!! Как трудно с детьми... :) То хочу, то не хочу... Я тебе кашу накладывал - ты мне что говорил? «Хочу»! А теперь нет? Не скушаешь за шиворот вылью! :)

Придётся искать комп с виндой и самому пробовать. В конце концов надо выяснить, экспорт вообще правильно работает?

Вот, кстати, попробовал свой компильнуть (уже запутался, это последняя версия или нет) Вот ссылка на vst

Deleted ()
Ответ на: комментарий от Deleted

чота не видит у меня сонар эту либу как плагин

ist76 ★★★★★ ()
Ответ на: комментарий от ist76

Может быть из-за того, что я не заполнил всяких там нащваний, авторов и прочего? А нету «пустых» плагинов в списке? может там завалялся? Если нет, то я даже не знаб чего может не хватать. Действительно надо комп с виндой искать.

Я сейчас подумал... Это же мне надо будт найти не просто комп с виндой, туда же надо и давы всякие ставить... Оах... Надо тормошить кореша.

Deleted ()
Ответ на: комментарий от curufinwe

Так. попробовал этот алгоритм, подставил везде слайдеры, чтобы рулить. Там где у тебя (+ : *(100)) - сразу щелчок и на осциллографе сплошная зелёная стена. Сделал на единицу и слайдером понемногу поднимаюсь, работает каждый раз по разному. Один раз круто поднимается, другой раз практически до ста дохожу без проблем. Но 100 стабильно стена и после этого только перезапуск студии помогает. И если в поле слайдера щёлкнуть на произвольное значение, тут же стена. Пробовал на значение smooth ставить, не помогает. Очень не стабильно с этими рекурсиями. Мне мозгов не хватает.

Deleted ()
Ответ на: комментарий от Deleted

Дай полностью код с моей вставкой

Очень не стабильно с этими рекурсиями

Потому что в фаусте нет алгебраических петель напрямую.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Попробуй так


tau = 1/ma.SR;

overdriven = fi.lowpass(1,low_freq) :
 (+ : *(tau*5000.0) : fi.integrator) ~ loopback;

loopback = *(-1.0) : lb_filter : diode;

diode(input) = input - K*atan(input);

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 2)
Ответ на: комментарий от curufinwe

Вот код первого варианта:

import("stdfaust.lib");
import("filters.lib");
process = stomp with {
    volume = hslider("volume",1,0,1,0.01);
    hipass = 720;
    lopass = 62;
    voice = hslider("voice",0.5,0,1,0.001);
    prelopassfreq = 723.4;
	low_freq = hslider("lololo",1000,100,10000,1);
	K = hslider("K",1,0,1,0.01);
	volt = hslider("Volt",1,0.5,100,0.01): si.smooth(0.98);
  
    overdrive(inputL) = overdriven(inputL):ba.bypass1(checkbox("ATC"),ActiveToneCirquit): _*(volume) with {
        loopback = *(-1.0) : filter : diode;
        filter = _<:fi.highpass(2,hipass)+fi.lowpass(2,lopass) ;
        diode(input) = input - K*atan(input);
        overdriven = fi.lowpass(1,low_freq) : (+ : *(volt)) ~ loopback;
		
		PreActiveLowpass = fi.lowpass(1,prelopassfreq);
		ActiveToneCirquit = _<: (PreActiveLowpass:fi.lowpass(1,prelopassfreq))*voice,(PreActiveLowpass + fi.highpass(1,prelopassfreq))*(1-voice):+;
  };
  
  
  stomp =  _: ba.bypass1(checkbox("overdrive"),overdrive) ;
    
};

А вот второй вариант:

import("stdfaust.lib");
import("filters.lib");
process = stomp with {
    volume = hslider("volume",1,0,1,0.01);
    hipass = 720;
    lopass = 62;
    voice = hslider("voice",0.5,0,1,0.001);
    prelopassfreq = 723.4;
	low_freq = hslider("lololo",1000,100,10000,1);
	K = hslider("K",1,0,1,0.01);
	volt = hslider("Volt",5000.0,100,10000,1): si.smooth(0.98);
	tau = 1/ma.SR;
  
    overdrive(inputL) = overdriven(inputL):ba.bypass1(checkbox("ATC"),ActiveToneCirquit): _*(volume) with {
        loopback = *(-1.0) : filter : diode;
        filter = _<:fi.highpass(2,hipass)+fi.lowpass(2,lopass) ;
        diode(input) = input - K*atan(input);
        overdriven = fi.lowpass(1,low_freq) : (+ : *(tau*volt) : fi.integrator) ~ loopback;
		
		PreActiveLowpass = fi.lowpass(1,prelopassfreq);
		ActiveToneCirquit = _<: (PreActiveLowpass:fi.lowpass(1,prelopassfreq))*voice,(PreActiveLowpass + fi.highpass(1,prelopassfreq))*(1-voice):+;
  };
  
  
  stomp =  _: ba.bypass1(checkbox("overdrive"),overdrive) ;
    
};
Я усиленно не понимаю что делает этот

(+ : *(volt))

и этот

(+ : *(tau*volt) : fi.integrator)

код. Зачем в этом месте умножение? Оно же и даёт аццкий ад. И не понял про тау. Ну допустим высчитали мы частоту сэмплирования, но что она делает в этом умножении? про integrator почитал, тоже не особо понял, что он делает. Можешь на пальцах разложить? Извини, что достаю.

Deleted ()
Ответ на: комментарий от Deleted

Это модель вот этой штуки

http://radiomaster.ru/stati/radio/ou_3.php

Вместо R2 у нас диоды и фильтр. Поэтому коэффициент усиления будет зависеть от величины сигнала и будет получаться нелинейный перегруз.

Умножение - это коэффициент усиления самого операционника. В описании по ссылке, заметь, он вообще бесконечности равен, а у нас всего 100 и уже жопа.

integrator - интегрирует входной сигнал, чтобы он не сразу на выход шел и «закольцовывался» по петле обратной связи, а медленно накапливался и все успевало устаканиться. В фаусте не настоящий интегратор, поэтому fi.integrator надо умножать на tau - так получится близко к аналоговому интегратору.

Ближе к вечеру я тоже потыкаю, скорее всего я что-то не учитываю.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

хм. Меня смущает то, что умножение идёт не на (коефициент + фильтрованный сигнал), а в фильтр подаётся охренителной амплитуды сигнал. В нашем случае мы не можем копировать поведение аналогового усилителя. Добавь в эту аналоговую схему задержку на один тик дискертизации на минусовом входе и оно так всё в бесконечность и улетит иразвалится.

Я попробовал в кальке табличку накидать, сравнил разницу поведения аналогового и такого вот усиления с задержкой в один тик. В первом варианте всё правильно отработало, во втором сплошные инверсии от несовпадения фазы. Вот она, проблема. Теперь буду думать как обойти.

Deleted ()
Ответ на: комментарий от Deleted

Да, вот именно по этому его надо на tau умножать, чтобы получить подобие аналогового интегратора.

curufinwe ★★★★★ ()
Ответ на: комментарий от Deleted

Я с этими петлями наелся еще когда модель лампы делал, которая сейчас в моих плагинах. В результате я забил, загрубил уравнение и сделал без такой петли.

А тут даже не знаю как вывернуть. faust тут умывает руки.

Точнее знаю как упростить, только смысла нет - упрощенные мы уже сделали.

В аналоговых то задержка тоже есть, просто она намного меньше чем у нас тик, и все успевает устаканиться.

Надо на C писать код, который будет на каждом тике нелинейное уравнение решать. Во-первых это сложно, во-вторых бешеные вычислительные затраты, в третьих я думаю что на слух разницы с упрощенным вариантом не будет.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 2)
Ответ на: комментарий от curufinwe

Нде. Получилось некоторое подобие стабильной петли, но песка.... Ну его в баню. сделаю лучше двух-трёх ступенчатое усиление без рекурсии для более тянучего звука. Я раньше пробовал, но мне захотелось попоболи и я стал есть рекурсивный кактус :)

Deleted ()
Ответ на: комментарий от Deleted

Вот именно, сделай обычное усиление и все. Ничего эта рекурсия мистического не даст.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

А вот и даст. Но ладно, жюжжит и нормально. Вот последняя инкарнация овердрайва:

import("stdfaust.lib");
import("filters.lib");
process = stomp with {
  volume = hslider("volume",1,0,1,0.01);
  drive = hslider("drive",5,1,10,0.1);
  hipass = 720;
  lopass = 62;
  breaklinel =hslider("breaklinel",0,-10,10,0.1);
  breaklineh =hslider("breaklineh",0,-100,100,0.1);
  amplitude = hslider("preamp",1,0,10,0.01);
  voice = hslider("voice",0.5,0,1,0.001);
  prelopassfreq = 723.4;
  
  overdrive(input) = overdriven(input): ba.bypass1(checkbox("ATC"),ActiveToneCirquit): _*(volume) with {
	boost = _*amplitude;
	loopback(wave, drive_val, high, low) = diodes(filter(driven(wave))) with{
        filter = _<:fi.highpass(1,high)+fi.lowpass(1,low) ;
        diodes = atan(_);
        driven = *(drive_val);
        };
    overdriven = boost: _<: _-loopback(_,drive, (hipass-(breaklineh*drive)), ((lopass-breaklinel)/drive)),_: loopback(_+_, drive, (hipass+(breaklineh*drive)), ((lopass+breaklinel)/drive)): atan(_); 
	
	PreActiveLowpass = fi.lowpass(1,prelopassfreq);
	ActiveToneCirquit = _<: (PreActiveLowpass:fi.lowpass(1,prelopassfreq))*voice,(PreActiveLowpass + fi.highpass(1,prelopassfreq))*(1-voice):+;
  };
  
  
  stomp =  _: ba.bypass1(checkbox("overdrive"),overdrive) ;
    
};

два каскада фильтрации и усиления. фильтры регулируются в прортивоположную сторону, в результате можно на первом дать больше перегруза на нижних частотах ручкой «breaklineh», а на втором подобрать их. По идее рык на низах более равномерным должен быть. другой вариант примерно так выглядит:
overdriven = boost: _<: _-loopback(_,drive, (hipass-(breaklineh*drive)), ((lopass-breaklinel)/drive)): loopback(_, drive, (hipass+(breaklineh*drive)), ((lopass+breaklinel)/drive)): atan(_);
Логически менее правильный. Но надо слушать на нормальной громкости. Но проверить уже не могу. Завтра.

Под конец только вспомнил про исправления твоих плагинов, уже поздно, извини, протормозил, мог попрорбовать. Завтра.

Deleted ()
Ответ на: комментарий от curufinwe

Не пробуй то, это попробуй. Наколдовааал, хотел поиграться с характером звучания.

Deleted ()
Ответ на: комментарий от curufinwe

В пьяном угаре я свою педаль сённи испортил. Обратно надо раскручивать, понаколдовал сам не знаю чего.

После издевательств над своей педалью, включил твои педали. Через тюбамп в комбик. Как же красиво всё звучит. С Диструкшоном и так всё понятно, а вот в Блюдримере - как красиво, «по взрослому» верха делает. Моя пипикалка рядом не валялась :)

Зачот!

А вот тюбамп всё-таки все низа съедает. До этого я как-то хорошо попал и не чувствовалось этого, а теперь - и на моих и на твоих педалях надо выкручивать басы вверх полностью. Вот такая заметка.

Deleted ()
Ответ на: комментарий от Deleted

А вот тюбамп всё-таки все низа съедает.

Да, есть такое. То ли профиль криво снят, то ли прототип из amplitube тоже низы ест.

Тут хорошо то, что в tubeAmp все зависит от профиля. Ест низы - значит надо просто более басовитый профиль подключить будет. Сам то алгоритм плагина универсальный.

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Да. Я это помню. И терпеливо жду и даже не намекаю на то, что у меня уже трясутся руки посмотреть, что ты там с ним ещё сделал и пальцы свои корявые туда запустить. Жду. А пока восстанавливаю свой плагин и пытаюсь прикрутить к нему промили обратно. Вроде получается. Вообще хорошо, что наши педали разные получились, это правильно.

Deleted ()
Ответ на: комментарий от curufinwe

Короче, я тут сижу дома с отитом, у меня потный (во всех смыслах) вал вдохновения, плагины твои пашут, а вот тюбеамп мартовский не заводится ваще нигде, даже в кутракторе. Причём гитариксовская усилительная пукалка не вставляет, а LXVSTшные кабинеты, челобакой любимые, пропускают куски сигнала. Не готов этот ваш линупс! :)

AP ★★★★★ ()
Ответ на: комментарий от AP

Как прорпускают? У меня всегда наоборот было, подашь сигнал помощнее, так кабинет затыкается.

А амп пересобрать прорбовал? там же только написать "./build" и оно само соберётся.

Deleted ()
Ответ на: комментарий от Deleted

«Пропускает» — именно в смысле «затыкается». Пробовал оба. Пересборку позже гляну.

AP ★★★★★ ()
Ответ на: комментарий от Deleted

Пересобрал, завелось. Пока запускал только с jalv.gtk. Попозже в DAW какую-нибудь воткну.

AP ★★★★★ ()
Ответ на: комментарий от AP

Здо́рово. На его ампе драйв на 1 и увеличивай bias до 5-10, меньше искажение, приближается к чистому каналу ампа. А с разогретым педалью звуком становится вкусно. Громкость ампа сделай такую, чтобы кабсим не затыкало.

Ваш КО.

А, попробуй без кабсима в гитарный куб воткнуться. Чобуит?

Deleted ()
Последнее исправление: Chelobaka (всего исправлений: 1)

curufinwe, я всё же слышу нехорошие призвуки на колонках через блюдример-тюбамп-кабсим. Куб их съедает. Посмотрел исходники твоего плагина увидел НЧ фильтр на 9000, которым ты, очевидно, борешься с паразитами и мне вспомнилась такая штука - в лекции по Фаусту такое встречалось, после усиления, когда гарантированно за единицу ничего не вылазит, делать сигналу так out=in-in^3/3 А в конце ещё и dcoffset возвращать надо с помощью dcblocker. Я в осциллоскопе вижу, что у тебя оффсет волны появляется на полных драйвах. В 13 лекции об этом говорится.

Вот, собрал плейлист лекций по фаусту 2015ого года: https://yadi.sk/d/iGUxRld23aFJTj

Попробовал сегодня опять играть на 192кГц сетапе. три буффера по 256. В итоге задержка 4мс. Играю через тюбамп в куб. Задержка меньше, иксрунов не случилось как ни мучал. Разницы в звуке не особо заметил, чуть почище стало, тоесть, звук и работа плагинов остались те же, искажений нет, а чистоты немного добавилось, но может это плацебо. В колонках уже заметна проблема пересэмплирования, потому что шлю в пульсу на встроенную звуковуху. Нде. Я свои колонки давно отдал и так не хочется обратно загромождать всё ими, но видать придётся, чтобы можно было сравнивать звук в колонке и в кубе.

Deleted ()
Ответ на: комментарий от AP

вот тюбеамп мартовский не заводится ваще нигде, даже в кутракторе

С ним пока задержка, скоро доделаю. Тот мартовский очень сырой и проблемный.

Причём гитариксовская усилительная пукалка не вставляет

Мягко говоря. Я тоже пробовал свои плагины в гитариксе - его родной перегруз звучит никак. И импульсы кабинетов по сравнению с amplitube это небо и земля.

curufinwe ★★★★★ ()
Ответ на: комментарий от Deleted

Я в осциллоскопе вижу, что у тебя оффсет волны появляется на полных драйвах

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

потому что шлю в пульсу на встроенную звуковуху

Вот жестоко как.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Хе-хе. Ото!

Так. поймал кота за хвост. Проблема, скорее всего, была не в блюдримере, а тюбампе. Опущу кровослёзную историю о том как я весь день писал плагин с рекурсией и не мог понять, что со звуком. (оказалось я в куб включился в ретурн, а не во вход) Написал вот такой испытательный плагин:

import("stdfaust.lib");
process = stomp with {
  volume = hslider("Volume",1,0,1,0.01):si.smooth(0.97);
  drive = hslider("Drive",5,1,10,0.01):si.smooth(0.97);
  promiles = hslider("Promiles",0,0,1,0.01);
  amplitude = hslider("Boost",1,0,10,0.01):si.smooth(0.97);
  tone = hslider("Sugar",0.5,0,1,0.001):si.smooth(0.97);
  
  bass = hslider("Bass",0,0,2,0.01);
  filterN1 = checkbox("filterN1");
  filterN2 = checkbox("filterN2");
  filterN3 = checkbox("filterN3");
  prelopassfreq = 723.4;
  hipass1 = hslider("hip1",720,1,3000,1);
  hipass2 = hslider("hip2",720,1,3000,1);
  lopass1 = hslider("lop1",62,1,1000,1);
  lopass2 = hslider("lop2",62,1,1000,1);
  K = hslider("K",0.1,1,100,0.01);
  
  overdrive(input) = overdriven(input): ActiveToneCirquit: _*(volume) with {
	boost = _*amplitude;
    driven = *(drive);
    diodes = atan(_);
    
	lb_filter1 = _<:fi.highpass(1,hipass1)+fi.lowpass(1,lopass1/drive) ;
	lb_filter2 = _<:fi.highpass(2,hipass2)+fi.lowpass(2,lopass2/drive) ;
	
	loopback1 = driven<:-(diodes: ba.bypass1(1-filterN1,lb_filter1) : ba.bypass1(filterN1,lb_filter2)): diodes;
	loopback2 = driven: ba.bypass1(1-filterN2,lb_filter1) : ba.bypass1(filterN2,lb_filter2): diodes ;
	loopback3 = diodes(driven):  ba.bypass1(1-filterN3,lb_filter1) : ba.bypass1(filterN3,lb_filter2) ;
	
    overdriven(wave) = boost(wave): ba.bypass1(1-checkbox("1loop"),loopback1): ba.bypass1(1-checkbox("2loop"),loopback2):ba.bypass1(1-checkbox("3loop"),loopback3) ;
	
	PreActiveLowpass = fi.lowpass(1,prelopassfreq);
	ActiveToneCirquit = _<: PreActiveLowpass*(1-tone)+(PreActiveLowpass + fi.highpass(1,prelopassfreq))*tone:_<: +(fi.lowpass(3,196)*((-1+bass+(0.2*drive))-promiles));
	};
	
  stomp =  _: ba.bypass1(1-checkbox("overdrive"),overdrive) ;
    
};
Заметил, что включая первый луп через тюбамп я слышу эти призвуки и у себя даже на небольшом перегрузе. Генерируется это где-то в басах, добавляется шепоток такой. Другие лупы такого эффекта не дают, даже если на педали бас добавить на полную. В первом варианте, видимо, куда-то оно попадает в нехорошее место. (filterN переключает порядок фильтра в лупе)

И чтобы два раза не вставать - это на кубе проявляется. педаль-тюбамп-куб

Deleted ()
Последнее исправление: Chelobaka (всего исправлений: 2)
Ответ на: комментарий от Deleted

Да, тюбамп на сильном перегрузе и у меня шепчет. Я как раз занялся этой проблемой, но пока времени нет. Может на выходных разберусь.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Да я не тороплю. Я просто сообщаю о находке. Минут двадцать можешь позаниматься отвлечёнными делами, я не тороплю.

Deleted ()
Ограничение на отправку комментариев: ★★