LINUX.ORG.RU

История изменений

Исправление ChekPuk, (текущая версия) :

А тем временем я натыкал поразительный эффект, которого не ожидал. Как такое может быть?

Речь о павердраме, эффекте, который добавляет «пщщщщ» сольникам.

В петле комбфильтра сделал фильтр на smooth. Просто, но эффективно подавляет нежелательные бумчики и выделяет «ссс» :) Но этого мне показалось мало и я решил сделать смешивание смута зависимым от задержки комбфильтра. (Привожу код очищенный от остального, чтобы не мешал)

declare name "Powerdrum";
declare version "0.001";
declare author "Chelobaka";
declare description "based on freeverb params";

import("stdfaust.lib");

origSR = 44100;

mixx = hslider("Mix",1,0,2,0.001);

rever = _ <: par(i,8,lbcf(combtuningL(i)+spread,fb1,damp,i))
	:> seq(i,4,fi.allpass_comb(1024, allpasstuningL(i)+spread, -fb2))
with{
    spread = hslider("spread",0,0,1,0.0001);
    fb1=hslider("lpc",0,0,1,0.0001);
    damp=hslider("lpd",0,0,1,0.0001);
    fb2=hslider("hpc",0,0,1,0.0001);
    
    smooth(t) = _<: si.smooth(0.6896)*st,_: -: *(st)
        with {
        at = 1617/t;
        sm = hslider("Smoothness",0,0,1,0.0001);
        st = hslider("gain",1,0,2,0.001)*at;
        
        };
    // Filters parameters
    combtuningL(0) = 1116;
    combtuningL(1) = 1188;
    combtuningL(2) = 1277;
    combtuningL(3) = 1356;
    combtuningL(4) = 1422;
    combtuningL(5) = 1491;
    combtuningL(6) = 1557;
    combtuningL(7) = 1617;

    allpasstuningL(0) = 556*ma.SR/origSR : int;
    allpasstuningL(1) = 441*ma.SR/origSR : int;
    allpasstuningL(2) = 341*ma.SR/origSR : int;
    allpasstuningL(3) = 225*ma.SR/origSR : int;
    // Lowpass Feedback Combfiler:
    
    lbcf(dt, fb, damp, i) = (+: smooth(dt): @(tm)) ~ (*(1-damp) : (+ ~ *(damp)) :  *(fb))
        with {
        tm = dt*ma.SR/origSR: int;
        };
};


process =  _<: rever,*(mixx):- ;

Параметры работающего эффекта примерно такие: mix 1, gain 1, lpd 0.7-1, остальные в ноль.

Это моноэффект (вроде как?). Так вот, на моём пробном наборе сольников всё работает как надо, но если его применить на стандартном драмсете из стандартного FluidR3_GM SF2банка, то ударные подавляются! КАКЭТА??? При чём всякие вжикалки и брюкалки из того же набора ударных есть и эффект именно тот, которого я ожидал.

Загвоздка в строке

at = 1617/t

Если сделать at = 1, то во всех комбфильтрах одинаковый эффект, без учёта задержки. Если сделать at = t/1617, то эффект не тот, но все ударные слышны! Но at = 1617/t подавляет барабаны и тарелки из FluidR3_GM. Они были обработаны freeverb и сложив стереосигнал в моно и наложив мою фильтрующую ахинею я вырезаю звук ударных?

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

Исходная версия ChekPuk, :

А тем временем я натыкал поразительный эффект, которого не ожидал. Как такое может быть?

Речь о павердраме, эффекте, который добавляет «пщщщщ» сольникам.

В петле комбфильтра сделал фильтр на smooth. Просто, но эффективно подавляет нежелательные бумчики и выделяет «ссс» :) Но этого мне показалось мало и я решил сделать смешивание смута зависимым от задержки комбфильтра. (Привожу код очищенный от остального, чтобы не мешал)

declare name "Powerdrum";
declare version "0.001";
declare author "Chelobaka";
declare description "based on freeverb params";

import("stdfaust.lib");

origSR = 44100;

mixx = hslider("Mix",1,0,2,0.001);

rever = _ <: par(i,8,lbcf(combtuningL(i)+spread,fb1,damp,i))
	:> seq(i,4,fi.allpass_comb(1024, allpasstuningL(i)+spread, -fb2))
with{
    spread = hslider("spread",0,0,1,0.0001);
    fb1=hslider("lpc",0,0,1,0.0001);
    damp=hslider("lpd",0,0,1,0.0001);
    fb2=hslider("hpc",0,0,1,0.0001);
    
    smooth(t) = _<: si.smooth(0.6896)*st,_: -: *(st)
        with {
        at = 1617/t;
        sm = hslider("Smoothness",0,0,1,0.0001);
        st = hslider("gain",1,0,2,0.001)*at;
        
        };
    // Filters parameters
    combtuningL(0) = 1116;
    combtuningL(1) = 1188;
    combtuningL(2) = 1277;
    combtuningL(3) = 1356;
    combtuningL(4) = 1422;
    combtuningL(5) = 1491;
    combtuningL(6) = 1557;
    combtuningL(7) = 1617;

    allpasstuningL(0) = 556*ma.SR/origSR : int;
    allpasstuningL(1) = 441*ma.SR/origSR : int;
    allpasstuningL(2) = 341*ma.SR/origSR : int;
    allpasstuningL(3) = 225*ma.SR/origSR : int;
    // Lowpass Feedback Combfiler:
    
    lbcf(dt, fb, damp, i) = (+: smooth(dt): @(tm)) ~ (*(1-damp) : (+ ~ *(damp)) :  *(fb))
        with {
        tm = dt*ma.SR/origSR: int;
        };
};


process =  _<: rever,*(mixx):- ;

Это моноэффект (вроде как?). Так вот, на моём пробном наборе сольников всё работает как надо, но если его применить на стандартном драмсете из стандартного FluidR3_GM SF2банка, то ударные подавляются! КАКЭТА??? При чём всякие вжикалки и брюкалки из того же набора ударных есть и эффект именно тот, которого я ожидал.

Загвоздка в строке

at = 1617/t

Если сделать at = 1, то во всех комбфильтрах одинаковый эффект, без учёта задержки. Если сделать at = t/1617, то эффект не тот, но все ударные слышны! Но at = 1617/t подавляет барабаны и тарелки из FluidR3_GM. Они были обработаны freeverb и сложив стереосигнал в моно и наложив мою фильтрующую ахинею я вырезаю звук ударных?

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