collapse

* Posts Recentes

(Resolvido) Compro ULN2003 DIP por KammutierSpule
[01 de Dezembro de 2022, 11:58]


DIY - Robot Arm por dropes
[30 de Novembro de 2022, 14:55]


Curiosidade Ferro Soldar por dropes
[22 de Novembro de 2022, 12:17]


Fonte de alimentação +/-15V para tensões de entrada <80Vdc por jm_araujo
[14 de Novembro de 2022, 16:25]


ua796 jurássico por SerraCabo
[08 de Novembro de 2022, 23:55]


Resistência interna de transformador por SerraCabo
[08 de Novembro de 2022, 23:42]


Resistência paralela com bateria primária de Lítio. por jm_araujo
[06 de Novembro de 2022, 18:49]


Precisão de condensadores de origem na China por dropes
[05 de Novembro de 2022, 20:44]


Imagine this kind of development tools for your favourite Programming Language. por blabla
[04 de Novembro de 2022, 22:16]


Ajuda Identificar Resistência por SerraCabo
[02 de Novembro de 2022, 22:27]

Autor Tópico: À procura da distorção de audio  (Lida 6293 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.597
    • Tróniquices
À procura da distorção de audio
« em: 22 de Setembro de 2015, 02:05 »
Não sei onde hei-de meter o tópico, fica aqui.
A 13 de Junho de 2015, escrevi assim a uns amigos:


Ontem às 2h da manhã resolvi voltar a pegar no NanoTone. O efeito da distorção estava-me atravessado na garganta, e era um empecilho que me incomodava, como estar sempre a engolir em seco.

A distorção que implementei originalmente é um simples "hard clippig": amplificava o sinal absurdamente e depois saturava-o no limite do DAC. Mas uma distorção de guitarra é por um lado uma função de derivada contínua e por outro vai reduzindo o ganho muito suavemente, redução que acelera nos extremos até saturar - como acontece por exemplo com um andar amplificador semicondutor. A curva de transferência é mais ou menos aquilo a que em matemática se chama um sigmóide (https://en.wikipedia.org/wiki/Sigmoid_function). Esta curva de ganho é que cria o som característico de guitarra distorcida, introduzindo uma riqueza harmónica gradual e muito diferente de um hard-clipping (amplificação constante = 1 e saturação instantânea nos extremos).

Então andei por aí a vasculhar nesta grande biblioteca chamada Internet e o 1º sigmóide que encontrei foi esta função (gráfico em anexo):

f3(x) = -2/3, x < -2/3
f3(x) = x - x^3 / 3, -2/3 <= x <= 2/3
f3(x) = +2/3, x > +2/3


(https://ccrma.stanford.edu/~jos/pasp/Soft_Clipping.html)

Pareceu-me ter um clipping demasiado hard para o que eu imaginava, parecido quase com hard clipping. Mas a brincar com ela percebi que o "truque" para tornar a função constante "para lá" dos extremos sem que haja descontinuidade da derivada é encontrar os pontos em que a derivada é 0, e saturá-la aí.

Continuei à procura e encontrei uma discussão que começou em torno de um sigmóide complicado, e alguém sugere simplificar para:

fa(x) = atan(k * x) / k

(http://www.musicdsp.org/showone.php?id=104)

De facto a função arco-de-tangente (arctan, atan na informática) é um sigmóide que toda a gente do ramo das ciências conhece ou pelo menos está familiarizado por causa da função tangente. Nesta função fa() o parâmetro k permite ajustar a "agressividade" do clipping, que foi algo que me chamou inicialmente a atenção para esta página (ver gráfico animado no final da página!). Na prática acabei por ficar com k = 1 porque dá bons resultados, e portanto usar apenas a função atan directamente.
Ora calcular atan num microcontrolador é que é mais chato :), mas nesta mesma discussão outro alguém sugere a seguinte aproximação (chamei-lhe fatan de "fast atan") (gráfico em anexo):

fatan(x) = x / (1 + 0.28125 * x^2)

Encontrei este artigo que fala sobre esta aproximação, a que dei uma olhadela só por alto (quem sugeriu esta aproximação na discussão indicava apenas 0.28 para a constante e não 0.28125 como neste artigo):
http://www.embedded.com/design/other/4216719/Performing-efficient-arctangent-approximation

No entanto a fatan() trás escondidas 2 surpresas: |fatan| não chega bem a 1.0 (mas close enough), e a aproximação é boa quando o resultado está no intervalo [-1;1] mas fora deste intervalo ela não "satura", e começa a crescer em sentido contrário (gráfico em anexo). Já munido da experiência de ter andado a brincar com a f3() inicial, fui a http://www.derivative-calculator.net/ :) calcular a derivada de fatan() e depois calculei à mão os seus zeros em torno de fatan(x) = -/+1, que são -/+1.8856181 e cheguei então à "minha" 1ª função de soft clipping:

sclip(x) = fatan(-1.8856181), x < -1.8856181
sclip(x) = fatan(x), -1.8856181 <= x <= 1.8856181
sclip(x) = fatan(+1.8856181), x > +1.8856181


Podem ver este link directo para o cálculo da derivada da fatan, de que o site também mostra gráficos:
http://www.derivative-calculator.net/#expr=x%20%2F%20%281%20%2B%200.28125%20%2A%20x%5E2%29

E se por um momento pensaram que a coisa acabou aqui, enganaram-se :) . Esta função é muito bonita mas ainda usa números reais e não está escalada para usar o intervalo que me interessa do ADC (12 bits com sinal). Portanto tudo isto ainda foi transformado e optimizado para

inline int32 fatan (int32 x, int32 unit)
{
    // fatan = x / (1 + 0,28125 * x^2)
    // fatan = x / (unit + 0,28125 * x^2)
    // 0,28125 = 9 / 32
    // fatan = x / (unit + 9 * (x^2) / 32)
    return FPDIV(x, (unit + 9 * FPMUL(x, x, unit) / 32), unit);
}

inline int32 SoftClipper (int32 x)
{
    const int32  Unit = 1024;
    const int32  sat = PosREAL2FP(1.8856181, Unit);
    if (x > sat)
        return fatan(sat, Unit);
    else if (x < -sat)
        return fatan(-sat, Unit);
    return fatan(x, Unit);
}


Se colocar a Unit com mais ou menos metade do número de bits do ADC, como a saída é de -1 a 1 para uma entrada de -/+ ~1.9, fico logo com um soft clipper "natural" para o meu sistema, a saturar perto dos extremos da gama dinâmica (como se quer).
O site http://www.derivative-calculator.net/ faz outra coisa interessante. Antes de calcular a derivada, ele re-escreve a função simbólicamente, simplificando-a e convertendo todas as constantes reais para fracções. Aproveitei esse facto para rapidamente arranjar um substituto inteiro para 0.28125 (http://www.derivative-calculator.net/#expr=0.28125), que deliciosamente se consegue representar sem erro por 9/32, reparem na divisão por 32, e multiplicação por 9 (8 + 1) em caso de necessidade.
A macro PositiveREAL2FP() converte um número real positivo para ponto fixo com uma determinada unidade. FPMUL() e FPDIV() são macros para multiplicar/dividir em ponto fixo. fatan(-/+sat,Unit) são constantes, usei a função apenas por conveniência; na verdade já vi o GCC optimizar coisas deste género calculando a constante (quando é tudo constante e as funções são inline), mas não verifiquei se o está a fazer neste caso.

Pelo caminho ainda aprendi um nadinha de libreoffice BASIC, que usei para criar novas funções "built-in" para fazer experiências no "Excel". Ideal teria sido um matlab, octave, ou similar, sim. Também ainda me cruzei com o CORDIC (https://en.wikipedia.org/wiki/CORDIC). E outras 2 discusões a explorar melhor mais tarde:
http://www.dsprelated.com/showthread/comp.dsp/74732-1.php
http://www.kvraudio.com/forum/viewtopic.php?t=195315

Ainda em anexo, 2 exemplos da actuação do softclipping. Ainda hei-de arranjar uns WAVs, mas só depois de resolver o problema do ruído.

End-of-report...

Abraços

--

Tenho isto "alinhavado" num PSoC4 em tempo real, mas ainda com uns problemas para resolver. Além da distorção ainda tenho reveberação (o chip tem pouca RAM, só dá para reveberação), filtro LP, filtro HP, filtro MP, tremolo e auto-wah.
« Última modificação: 22 de Setembro de 2015, 15:11 por Njay »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.113
Re: À procura da distorção de audio
« Responder #1 em: 22 de Setembro de 2015, 11:22 »
Boa explicação  ::)

Há muitos efeitos que se conseguem fazer em tempo real, ou próximo disso enquanto o processador o permitir, ao colocar divisões ou multiplicações com nºs faccionários a coisa torna-se mais exigente.

Gostei do exemplo n2º, creio ser o usado nas guitarras eléctricas, existe sim distorção, mas se for suavizado obtém-se um som mais agradável, daí muitos preferirem usar válvulas para o efeito... tudo analógico.

Também gosto de usar código em som, não é bem um desafio mas com bastante dedicação obtém-se bons resultados, alguns deles que até são simples mas que na realidade deram uma grande trabalheira.

Existem ICs dedicados para tudo, desde atrasos de linha com o TDA1022, AGCs, compressores/expansores, sintetizadores, etc... todos eles têm um problema em comum, geram ruído, isso em código pelo que é possível, fica-se em vantagem.
Depois também à a possibilidade de se trabalhar na edição do áudio, pode-se alterar a velocidade entre a entrada e saída para mudar o tom, é algo engraçado, come alguma memória mas pouca.

Um enorme desafio, isso sim vai ter de ter um micro à altura como o rpi, será de alterar em tempo real a voz para o tom correcto (já usado para quem não tem lá grande voz mas que quer cantar/repar wathever), se for mais além e se conseguir entender o que o Melodyne faz (referenciado no comentário de reposição de tom) + outros truques, teria o famoso GLaDOS, ainda não perdi a esperança ;)

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: À procura da distorção de audio
« Responder #2 em: 22 de Setembro de 2015, 12:59 »
Tenho isto "alinhavado" num PSoC4 em tempo real, mas ainda com uns problemas para resolver. Além da distorção ainda tenho reveberação (o chip tem pouca RAM, só dá para reveberação), filtro LP, filtro HP, filtro MP, tremolo e auto-wah.


Boa explicacao e exemplificacao.
Gostei especialmente desta parte final.

Talvez agora passar para um Cortex-M4F com floating point, e capacidades DSP pois acredito q vai ajudar na computacao.
Ha alguns fabricantes q teem M4F com boa capacidade de RAM, ou entao quem sabe usar uma RAM externa paralela ligada ao micro. Mt rapida e super easy de usar.

Qts milisegundos tens no Reverb ?  estou curioso.
Tenho usado os chips analogicos p fazer umas brincadeiras, com a familia MN3007 e afins, completamente obsoletos e c muita procura no mercado paralelo de clones.

Sugestao, implementar uma entrada analogica p pedal de expressao e tornar o WahWah manual :)

Se precisares de beta-tester apita pois vou comecar a tocar ao vivo outra vez no inicio do ano q vem.


Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.597
    • Tróniquices
Re: À procura da distorção de audio
« Responder #3 em: 22 de Setembro de 2015, 16:08 »
Melodyne, GLaDOS.... tanta cena que desconheço :), tenho que ir ver. TDA1022 não é um "bucket brigade"? Deve ser do género desse MN3007, pareceu-me ser tb um BB. Vi isso numa revista de electrónica brasileira há mtos, mtos anos.

Isto não tem (pelo menos ainda :D ) qualidade suficiente sequer para hobby, mas obrigado pela oferta de beta-testing Sena :) O problema que ainda tenho tem essencialmente a ver com ruído; uma parte é da montagem (cozinhei uma cena à pressa, é um PCB genérico aberto e sem cuidado nenhum com routing), a outra penso que é ruído de quantitização, pois o sinal de entrada é fraco e o DAC tem poucos bits (9). Ainda tenho que dedicar algum tempo a perceber bem e a melhorar isto. A parte de software está razoável e não tenho grandes queixas dela, o CPU dá conta dos efeitos todos ligados em simultâneo e os efeitos em si soam razoavelmente bem. Se precisar de mais performance ainda tenho muita margem de manobra para optimizar o código, sem contar que posso prescindir de toda a interface de UART que tenho para controle, debug e monitorização (é cerca de 60% do programa todo!); também ainda posso ir buscar mais 7MHz, o chip faz 48MHz e estou a usar 41MHz. Não tenho falta de CPU power, tenho sim falta de RAM e DAC. De facto as RAMs são bastante baratas, ainda acabo a juntar-lhe uma.

Neste momento tou a fazer a aquisição a 36Ksps com o ADC de 12 bits, a fazer o processamento todo numa interrupção de timer com cálculo intermédio de 32bits (ponto fixo), e a escrever para um DAC de 9 bits (não por esta ordem; a escrita no DAC é a 1ª coisa na interrupção, para não se introduzir jitter). O DAC tem poucos bits para isto; ainda quero experimentar uma saída de PWM filtrada, que dá para ter 16 bits, antes de ir para um DAC externo. O tempo de propagação da entrada para a saída é basicamente um periodo de sampling, ou seja neste momento 27.7us.

40.88ms de buffer de reverb. E tem perfeitamente espaço para meter um pedal externo para controlar o wah (ou outro parametro doutro efeito, ou até mais pedais). Neste momento controlo isso por UART.

Tenho algumas ideias de como tornar isto numa pequenina caixa alimentada por 2 pilhas AA/AAA, seria um nano pedal de agarrar a uma guitarra (daí o NanoTone, mas tenho que procurar outro nome que este tá mto batido), com alguns botões a controlar uma matriz de LEDs que permite configurar se cada efeito está ON/OFF e qual a ordem de alguns dos efeitos. A ideia era ser uma cena mesmo pequena e simples; o PSoC4 tem algum hw porreiro para isto como ADC, DAC (infelizmente de poucos bits, mas são IDACs o que permite mais flexibilidade) e ampops, que estou a usar como pré-amplificador e buffer de saída. No proof-of-concept, além do prototyping kit PSoC4 (que custa uns 5 ou 6€) só tenho uma dúzia de passivos incluindo fichas e botões.
« Última modificação: 22 de Setembro de 2015, 16:23 por Njay »

Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.466
Re: À procura da distorção de audio
« Responder #4 em: 22 de Setembro de 2015, 16:24 »
40.88ms de buffer de reverb. E tem perfeitamente espaço para meter um pedal externo para controlar o wah (ou outro parametro doutro efeito, ou até mais pedais). Neste momento controlo isso por UART.

Uma vez andei a pensar fazer umas cenas na area, mas mais ligadas a syntetizadores.
Uma ideia que tinha na altura e nao descobri se ja existe, era implementar um algoritmo que "parametrizasse" a onda e depois reproduzisse o mesmo durante algum tempo de modo a fazer um efeito "reverb"
Isto no fundo pode ser considerado uma compressao de muitas perdas. Mas por exemplo, se extraires as harmonicas do sinal, depois podes continuar a usa-las para fazer o efeito (do teu processador) e ao mesmo tempo faz soar a reverb..
Penso que isto tambem se pode chamar "resynthesis"

Outra opcao mais facil, eh fazers o reverb com um passa baixo e menos bits. (ganhas assim mais tempo de reverb)
Depois tambem podias usar isso (o facto de ter levado com um passa baixo) e usar um metodo qq de compressao (ex: delta)

Estas solucoes trocam RAM por CPU power.

Bom trabalho!

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.597
    • Tróniquices
Re: À procura da distorção de audio
« Responder #5 em: 22 de Setembro de 2015, 16:48 »
Sim, é uma boa ideia, a de reduzir a fidelidade do sinal atrasado. Estou a guardar a sample toda usando 16bits, podia reduzir para 8 bits / sample no buffer e ficava logo com o dobro do tempo máximo de reverb. Ainda por cima só estou a mixar (na sample actual) 75% da sample atrasada, só aí já estou a deitar fora alguma informação. Hei-de experimentar isso.

Acho que isso que tás a falar de parametrizar a onda, existe, ou existiu, para voz, e chamava-se vocoder, penso que era usado exactamente em... telemóveis :). Não sei se depois passaram para GSM (o algoritmo de compressão de voz).

Este é o meu andar de entrada. Se alguém tiver alguma sugestão... O ampop faz parte do PSoC4, não tenho mais ampops livres. O meu desenho inicial era fantástico, tinha muitos MOhm de impedancia de entrada (montagem não-inversora e ref de entrada em Vdda/2 em vez de GND)... mas depois quando o montei rapidamente percebi que nunca iria funcionar numa guitarra, porque ambos os fios de entrada de sinal tinham que ser blindados :\ . O ruído era abismal.

Ah, dá para ligar directamente uns phones à saída e curtir sem amplificador (a saída do DAC é buffered por um dos ampops do PSoC4), mesmo com uma R de 56 Ohm que meti em série com a saída para não exceder a corrente máxima de saída do ampop. O sinal não é muito alto mas num ambiente silencioso dá perfeitamente.
« Última modificação: 23 de Setembro de 2015, 00:56 por Njay »

Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.466
Re: À procura da distorção de audio
« Responder #6 em: 23 de Setembro de 2015, 09:11 »
Acho que isso que tás a falar de parametrizar a onda, existe, ou existiu, para voz, e chamava-se vocoder, penso que era usado exactamente em... telemóveis :). Não sei se depois passaram para GSM (o algoritmo de compressão de voz).

Acho que vocoder tem varios significados diferentes. Por exemplo um vocoder (synthetizador) que modula o pitch de uma entrada (ex micro, voz) de acordo com outro sinal.
Os algoritmos de compressao de voz, foram desenhados particularmente.. para as caracteristicas da voz, eh possivel que se considere que restora um sinal sintetizando-o.

Talvez o mesmo se podesse fazer para a guitarra. Estudar as caracteristicas do input e usar esse conhecimento para uma compressao e geracao em tempo real.

Por exemplo, existe este algoritmo para gerar "cordas pulsadas"
https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.113
Re: À procura da distorção de audio
« Responder #7 em: 23 de Setembro de 2015, 14:17 »
Melodyne, GLaDOS.... tanta cena que desconheço :), tenho que ir ver. TDA1022 não é um "bucket brigade"? Deve ser do género desse MN3007, pareceu-me ser tb um BB. Vi isso numa revista de electrónica brasileira há mtos, mtos anos.
Pensei que fosse de teu conhecimento o jogo "Portal" é um clássico da "Valve".


TDA1022, sim é um "bucket brigade line", 512 memórias analógicas, creio ser através de condensadores ou algo parecido, são caros, mas com 2 dá para se alterar o pitch, gravando uma velocidade e reproduzindo alternadamente a outras velocidades.

Mesmo só tendo 512 memórias analógicas, é possível criar uma reverberação com baixo ruído.

A falha que estás a fazer é reproduzir em PWM, depois de tanto trabalho de código é bom que tivesses uma saída DAC.

A compressão / expansão de áudio podia ser usado à uns anos atrás em cassetes de áudio para aumentar a gama dinâmica delas, cheguei a comprar os ICs, além de caros o ruído de fundo desmotivou-me.

ps: ainda cheguei a criar um leitor MOD, 4 canais em que reproduzia samples a velocidades diferentes em simultâneo seguindo uma pauta, além dos efeitos exigidos, tudo em assemby AVR, fotos na minha pág.  ;)

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.597
    • Tróniquices
Re: À procura da distorção de audio
« Responder #8 em: 23 de Setembro de 2015, 18:59 »
Acho que vocoder tem varios significados diferentes. Por exemplo um vocoder (synthetizador) que modula o pitch de uma entrada (ex micro, voz) de acordo com outro sinal.
Os algoritmos de compressao de voz, foram desenhados particularmente.. para as caracteristicas da voz, eh possivel que se considere que restora um sinal sintetizando-o.
Sim, no limite da compressão, tens TTS :)

Citação de: KammutierSpule
Talvez o mesmo se podesse fazer para a guitarra. Estudar as caracteristicas do input e usar esse conhecimento para uma compressao e geracao em tempo real.

Por exemplo, existe este algoritmo para gerar "cordas pulsadas" (...)
Não estou mto por dentro desse mundo, mas parece que actualmente há algoritmos muito bons para gerar som de guitarra.

Nunca fui grande aficionado de (jogar :)) jogos dropes, e a maior parte dos que joguei foi no spectrum.

Não estou a usar PWM.

Em assembly, g'anda maluco hein :) . Conheço bem os MOD, compus alguns, e no PC tb cheguei a fazer uma espécie de MOD player (lia um formato custom e tinha menos efeitos), em Turbo Pascal (não me lembro se meti asm nesse projecto), que usava a SoundBlaster (programando a placa directamente claro, à Homem lol).

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 249
Re: À procura da distorção de audio
« Responder #9 em: 10 de Dezembro de 2021, 15:20 »
Boa tarde,

achei esta discussão muito interessante (obrigado) e gostaria de mostrar aqui um vídeo que é muito elucidativo do efeito e formato da aplicação destas curvas de distorção, no caso é usada a técnica de WaveShaper, mas na realidade é exatamente a mesma coisa do que aqui é dito pelo Njay, mas graficamente. Contudo como é graficamente pode ser mais fácil de visualizar e de testar, modificar o efeito final desejado e depois replicado no código do micro-controlador, sob a forma de equações que repliquem a função nos diferentes troços.

Aqui o valor de ganho pode ser visto como um valor absoluto. É engraçado pois até coisas como efeitos de Sag (ligeira diminuição do ganho dinâmico no fim quando o amplificador entra em regimes de muita corrente, isto dentro das limitações do facto do WaveShapping ser um mapeamento estática e não dinâmico ou seja não tem estado interno ) do amplificador a válvulas podem ser aqui colocadas.

Make your own Free Amp Sim?


Este Review seguinte também é muito bom para dar uma ideia de como funcionam os simuladores de amplificadores a válvulas ele explora muitos papers e muitas patentes, pois muitas destas coisas se encontram em patentes:

A Review of Digital Techniques for Modeling Vacuum-Tube Guitar Amplifiers
Jyri Pakarinen and David T. Yeh
(O link é um pouco longo mas se pesquisarem no google vão encontrar o PDF do artigo)

Gostaria só de adicionar que quando a técnica de WaveShapper funciona para todas as frequências, ou seja não tem um comportamento especifico para cada uma das bandas de frequência. É um profile de mapeamento para todas as frequências, mas no tutorial/paper anterior é descrito uma técnica não muito complexa de colocar um filter bank com um group delay fixo (para que os filtros tenham todos o mesmo atraso e o sinal final se mantenham sincronizado) e depois à frente aplica-se o normal WaveShapping, mas com um perfil para cada banda. Os filtros no filter Bank normalmente são implementados como filtros peak ou passa-banda sendo do tipo FIR, pois esses são mais fáceis de desenhar de modo a que tenha um group delay constante. Outra coisa interessante que está no tutorial anterior, é que quando se aplica uma distorção de WaveShapping (qualquer distorção de mapeamento de valores), está a potenciar-se um aumento da largura de banda logo estaremos a aumentar a largura de banda do nosso sinal para além do valor teórico de Nyquist. Ora isso causa problemas de alliasing.  Para resolver esse problema normalmente as aplicações de distorção por WaveShapper fazem previamente o UpSampling (aumentando o sample rate), depois aplicam o mapeamento, depois fazem um filtro passa baixo e downSampling (voltando outra vez para o sample rate normal).

Contudo com esta técnica que falo antes, como as frequências a serem processadas tem mapeamentos diferentes, diferentes profiles, basta que o ultimo profile seja abaixo dos 10 KHz para que já não introduza um aumento da largura de banda do sinal para lá do valor de Nyquist. Ou então que o ultimo mapeamento (ultima banda) seja simplesmente um mapeamento linear que já não introduz a distorção nem o aumento de largura de banda.

Podem ver aqui o paper sobre esta técnica:

MWD: Multiband Waveshapping Distortion
by Fernández-Cid, Quirós, Aguilar
https://www.dafx.de/paper-archive/1999/fernandez-cid.pdf

No Review anterior também me chamou a atenção uma técnica que é usada pelo Kemper Profiller:

https://www.kemper-amps.com/

E que é uma patente de 2006, não me recordo mas acho que as patentes duram 20 anos, mas esta técnica também é muito simples e é uma forma de obter um perfil dinâmico (tanto em termos de estado interno como processamento diferentes para frequências diferentes) de um pedal ou de um amplificador, de um cabinet speaker ou de um sistema completo. Ele se baseia em excitar o sistema com várias formas de onda e de obter através de um microfone a IR – Resposta de Impulso para cada uma delas e de depois de no sistema que está a reproduzir o efeito, ele vai identificar sample a sample a amplitude e a forma de onda mais próxima entre a que está a sair da guitarra e a que foi usada para excitar o sistema do amplificador original e aplica assim a IR correta previamente gravada, através de uma convolução dinâmica que varia sample a sample. (os detalhes presumo para além do que o que estou a descrever e que estavam na Review, presumo que estejam na patente). Com isto mantêm uma espécie de estado interno no mapeamento e da resposta e com isto é também obtido de uma forma simples um resultado muito preciso. Não é à toa que o Kemper é considerado um dos bons sistemas a simular amplificadores de válvulas.

Mais uma vez, obrigado por esta discussão.

Cumprimentos,
João