История изменений
Исправление
Chelobaka,
(текущая версия)
:
Так. Твои плагины попробую позже. Ночью опять было весело, надо передохнуть (хотя руки чешутся). А вообще, жду человечка одного, он обещал вчера подъехать и не приехал. Он с двумя гитарами и с двумя комбиками (правда, совсем уж говёными, но это даже лучше, сможет ли эмуляция из них сделать красиво?)
Я не совсем доволен звуком моего овердрайва. В низах - почти-почти то, чего искал. Но, во первых звук должен тянуть рычание, а он сходит на низах очень быстро. Во вторых - идя вверх он теряет эти призвуки и гармоники, превращаясь просто в обрезанную синусоиду (ну, близко). В самых верхах появляется опять то, что хотел. И как мне кажется - из-за отсутствия рекурсии. Из-за этого мне пришлось поставить фильтры второго порядка, из-за этого «диоды» у меня не в петле обратной связи, а скорее как у дисторшна, после. и звучит оно «прилично» потому что диоды я делаю арктангенсом. В третьих я вычитаю фильтрованный сигнал усиленный на квадрат драйва! Это тотали вронг сё, что на выходе похоже, но не то. Что имеем:
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)
С рекурсией же у меня фигня получается. То она прибавляет единицу к входному сигналу при каждом круге воспроизведения в кутракторе (откуда? Кааак?) Кода не сохранилось, запутался, стёр. То превращается в гармошку инверсий себя же, (это где-то я переборщил с усилением и при вычитании из предыдущего оно инвертируется), тут интересно, на осцилоскопе хорошо пилу, и как мне кажется, это периоды буфферизации, потому что ну никак не тянет на период в тик дискретизации, как в лекции утверждалось. Если тик рекурсии - это период буфферизации, то всё пропало вообще. Другой комп, другие настройки и ёк.
Лучшее, что у меня получилось - это поймать рекурсию на тонкой грани, когда перегруза немного не хватает, но зато он не выходит на цикличную инверсию. Это когда драйв держать в пределах 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) ;
};
Исправление
Chelobaka,
:
Так. Твои плагины попробую позже. Ночью опять было весело, надо передохнуть (хотя руки чешутся). А вообще, жду человечка одного, он обещал вчера подъехать и не приехал. Он с двумя гитарами и с двумя комбиками (правда, совсем уж говёными, но это даже лучше, сможет ли эмуляция из них сделать красиво?)
Я не совсем доволен звуком моего овердрайва. В низах - почти-почти то, чего искал. Но, во первых звук должен тянуть рычание, а он сходит на низах очень быстро. Во вторых - идя вверх он теряет эти призвуки и гармоники, превращаясь просто в обрезанную синусоиду (ну, близко). В самых верхах появляется опять то, что хотел. И как мне кажется - из-за отсутствия рекурсии. Из-за этого мне пришлось поставить фильтры второго порядка, из-за этого «диоды» у меня не в петле обратной связи, а скорее как у дисторшна, после. и звучит оно «прилично» потому что диоды я делаю арктангенсом. В третьих я вычитаю фильтрованный сигнал усиленный на квадрат драйва! Это тотали вронг сё, что на выходе похоже, но не то. Что имеем:
Vout = diode(VinPlus-VinMinus)
VinPlus = Signal
VinMinus = FilterHiLo(N2,Signal)*drive^2
Vout = VinPlus-VinMinus-Diodes //И тут вопрос, минус или плюс всё-таки? То мне кажется что плюс надо, то наоборот
VinPlus = Signal
VinMinus = FilterHiLo(N1,(VinPlus+Vout'))*drive
Diodes = atan(FilterHiLo(N1,(VinPlusVout')))*(max_drive-drive)
С рекурсией же у меня фигня получается. То она прибавляет единицу к входному сигналу при каждом круге воспроизведения в кутракторе (откуда? Кааак?) Кода не сохранилось, запутался, стёр. То превращается в гармошку инверсий себя же, (это где-то я переборщил с усилением и при вычитании из предыдущего оно инвертируется), тут интересно, на осцилоскопе хорошо пилу, и как мне кажется, это периоды буфферизации, потому что ну никак не тянет на период в тик дискретизации, как в лекции утверждалось. Если тик рекурсии - это период буфферизации, то всё пропало вообще. Другой комп, другие настройки и ёк.
Лучшее, что у меня получилось - это поймать рекурсию на тонкой грани, когда перегруза немного не хватает, но зато он не выходит на цикличную инверсию. Это когда драйв держать в пределах 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) ;
};
Исправление
Chelobaka,
:
Так. Твои плагины попробую позже. Ночью опять было весело, надо передохнуть (хотя руки чешутся). А вообще, жду человечка одного, он обещал вчера подъехать и не приехал. Он с двумя гитарами и с двумя комбиками (правда, совсем уж говёными, но это даже лучше, сможет ли эмуляция из них сделать красиво?)
Я не совсем доволен звуком моего овердрайва. В низах - почти-почти то, чего искал. Но, во первых звук должен тянуть рычание, а он сходит на низах очень быстро. Во вторых - идя вверх он теряет эти призвуки и гармоники, превращаясь просто в обрезанную синусоиду (ну, близко). В самых верхах появляется опять то, что хотел. И как мне кажется - из-за отсутствия рекурсии. Из-за этого мне пришлось поставить фильтры второго порядка, из-за этого «диоды» у меня не в петле обратной связи, а скорее как у дисторшна, после. и звучит оно «прилично» потому что диоды я делаю арктангенсом. В третьих я вычитаю фильтрованный сигнал усиленный на квадрат драйва! Это тотали вронг сё, что на выходе похоже, но не то. Что имеем:
Vout = diode(VinPlus-VinMinus)
VinPlus = Signal
VinMinus = FilterHiLo(N2,Signal)*drive^2
Vout = VinPlus-VinMinus-Diodes //И тут вопрос, минус или плюс всё-таки? То мне кажется что плюс надо, то наоборот
VinPlus = Signal
VinMinus = FilterHiLo(N1,(VinPlus+Vout'))*drive
Diodes = atan(FilterHiLo(N1,Vout'))*(max_drive-drive)
С рекурсией же у меня фигня получается. То она прибавляет единицу к входному сигналу при каждом круге воспроизведения в кутракторе (откуда? Кааак?) Кода не сохранилось, запутался, стёр. То превращается в гармошку инверсий себя же, (это где-то я переборщил с усилением и при вычитании из предыдущего оно инвертируется), тут интересно, на осцилоскопе хорошо пилу, и как мне кажется, это периоды буфферизации, потому что ну никак не тянет на период в тик дискретизации, как в лекции утверждалось. Если тик рекурсии - это период буфферизации, то всё пропало вообще. Другой комп, другие настройки и ёк.
Лучшее, что у меня получилось - это поймать рекурсию на тонкой грани, когда перегруза немного не хватает, но зато он не выходит на цикличную инверсию. Это когда драйв держать в пределах 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) ;
};
Исходная версия Deleted, :
Так. Твои плагины попробую позже. Ночью опять было весело, надо передохнуть (хотя руки чешутся). А вообще, жду человечка одного, он обещал вчера подъехать и не приехал. Он с двумя гитарами и с двумя комбиками (правда, совсем уж говёными, но это даже лучше, сможет ли эмуляция из них сделать красиво?)
Я не совсем доволен звуком моего овердрайва. В низах - почти-почти то, чего искал. Но, во первых звук должен тянуть рычание, а он сходит на низах очень быстро. Во вторых - идя вверх он теряет эти призвуки и гармоники, превращаясь просто в обрезанную синусоиду (ну, близко). В самых верхах появляется опять то, что хотел. И как мне кажется - из-за отсутствия рекурсии. Из-за этого мне пришлось поставить фильтры второго порядка, из-за этого «диоды» у меня не в петле обратной связи, а скорее как у дисторшна, после. и звучит оно «прилично» потому что диоды я делаю арктангенсом. В третьих я вычитаю фильтрованный сигнал усиленный на квадрат драйва! Это тотали вронг сё, что на выходе похоже, но не то. Что имеем:
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)
С рекурсией же у меня фигня получается. То она прибавляет единицу к входному сигналу при каждом круге воспроизведения в кутракторе (откуда? Кааак?) Кода не сохранилось, запутался, стёр. То превращается в гармошку инверсий себя же, (это где-то я переборщил с усилением и при вычитании из предыдущего оно инвертируется), тут интересно, на осцилоскопе хорошо пилу, и как мне кажется, это периоды буфферизации, потому что ну никак не тянет на период в тик дискретизации, как в лекции утверждалось. Если тик рекурсии - это период буфферизации, то всё пропало вообще. Другой комп, другие настройки и ёк.
Лучшее, что у меня получилось - это поймать рекурсию на тонкой грани, когда перегруза немного не хватает, но зато он не выходит на цикличную инверсию. Это когда драйв держать в пределах 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) ;
};