Programação de pedais digitais

Autor Mensagem
Ismah
Veterano
# jun/14


Conversava com o Nichendrix (espero ter escrito serto Sr Nicholae) e o pedrolake, sobre chorus, leslie e blá blá blá... E acabamos tocando nesse assunto. A pedidos do Nich, segue o baile nesse tópico, especificamente sobre programação de pedais.

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


essas fórmulas X e Y representam exatamente o que?

No caso, a qualidade do efeito está relacionada com a complexidade do cálculo e a quantidade de vezes que o mesmo é realizado. Certo?

Bem Ismah, o processamento de sinais digitais, utiliza varias técnicas, por exemplo, pense em um cross over digital, o onde você precisa, barrar ou atenuar uma determinada gama de frequências, nesse caso o eixo 'x' pode me representar o espectro de frequências e o eixo 'y' o ganho em decibéis. Neste exemplo estamos usando o domínio da frequência. No caso do chorus ja teríamos que trabalhar com dois elementos, por meio da interpolação de Gauss, onde primeiramente teríamos um gráfico sobre domínio da frequência e outro sobre domínio do tempo. A interpolação dos dois nos daria o gráfico de frequência(y) e tempo(x).

Sobre o cálculo, acontece o seguinte fato, audivelmente a qualidade do programa depende da amostra, por isso em pedaleiras e racks você tem a seguinte frase no conversor Analógico-Digital ,XXX times oversampling, ou seja em uma amostra, que pode ser um Lá, ela passa XXX vezes na conversão, para garantir que não haja uma distorção ou Alias, em relação a amostra original, isso significa que o que entra analógico é o que sai digital (a principio é isso, pois há uma certa complexidade que depende da arquitetura do conversor).

Bem após termos a amostra, no processador, executamos cálculos, mas no caso do chorus, o que acontece, essa amostra é duplicada e ela passa pelo cálculo de delay que atrasará esta onda, depois ela será modulada pelo LFO sobre o delay. A saída desse processo gerará um onda com tempo T maior que o da amostra, e essa onda terá o pitch reduzido em 1 oitava. Até aqui temos a onda original e a onda do processo de phasing e pitching. Após esses processos, devemos interpolar as ondas, para termos somente um sinal de saída, essa interpolação não acontece ao acaso, ela é sincronizada a partir do tempo inicial da amostra o que gera um sinal parecido com esse.

Interpolação de Ondas.


Nesse link, tem algumas técnicas de interpolação: http://cnx.org/content/m11126/latest/

Você pode usar as formulas no MathLab.

Analogicamente usamos um clock síncrono sobre estágio DDB (MN, SAD), para que não haja sobreposição e troca de tempos.

Agora sobre quantidade de vezes que o mesmo é realizado, se for uma programação as cegas, onde se desconhece a arquitetura do sistema e somente conhece-se o processador, sim por exemplo, pegar a onda interpolada do chorus e sobre ela re-executar o calculo de delay, phasing e pitch gerando uma dobra com 1 oitava mais baixa e deixando o chorus mais warm, ou passar ela em compressor para deixar a saída dela com picos de frequências mais lineares.

nichendrix
Veterano
# jun/14
· votar


Ismah

Marcando, quando voltar eu vejo aqui.

Alex guitar man
Veterano
# jun/14
· votar


Vamo fazer uma distorção digital, rs, nem que for pra parecer um fuzz

Tipo isso, não simulação de nada.. só distorção msm

https://www.youtube.com/watch?v=976ntZ7ZHnw

pedrolake
Veterano
# jun/14
· votar


a distorção é a representação cubica do clipping de diodos, para uma full usa- se raiz de 2 * Vpp onda, jpa para ter menos ganho (Raiz de 2 - (0,1 * Raiz de 2) * vpp onda. ou seja você deixa ela mais quadrada ou menos.
Y = 2 - 1/X

Expressão

Y = 2 - 12/X

threshold,

Y = 2t - t2/X ; 2t é limite da saturação



Y/X = 2t/X - t2/X2 - controle de ganho adicionado

Y/X = 2(t/X) - (t/X)2

Gráficos: Gráfico representativo

Ismah
Veterano
# jun/14
· votar


E uma pergunta tosca...

Mas... Essas fórmulas ficam guardadas num CI, até aí tudo certo... Mas te pergunto, como elas chegam lá?

mjcmello
Veterano
# jun/14
· votar


Ismah

São CIs programáveis. Estes CIs executam instruções igual a uma CPU do notebook.

Quando vc faz um projeto que utilize estes CIs, vc tem que criar o programa que eles vão executar e gravar o programa lá. A fórmula faz parte do programa.

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


Então as formulas são escrita no que chamamos de opcodes ou matrizes binárias, exemplo para se ler o potenciômetro usa-se em C o comando
RDAX POT0,1, e binário seria 01100100110010010. Dependendo o processador, os códigos são gravados em uma memória interna, que pode ser uma EEPROM, ROM, EAPROM, PROM. No processador existe uma controlador da parte lógica que executa um ciclo de máquina e acessa por meio de endereçamento das portas internas por meio de códigos de acesso. Se a memória do for externa ao processador, ela estará conectada diretamente ou não ha portas especificas para a comunicação entre os dois Chips.

O ciclo de máquina está ligado diretamente e indiretamente ao clock/ frequência do ciclo de trabalho, que pode variar de alguns kilo Hertz até giga Hertz..

Exemplo do cliclo de máquina sobre o clock

O IO neste caso está ligada as portas de entrada e saída de informação. E os AD ao endereçamento.

As vezes as memorias externas podem estar conectada em interface, que fica disposta entre o processador DSP e a memoria, Geralmente isso acontece nas pedaleiras e a interface age no controle a acesso de memória. Por exemplo dependendo da complexidade do sistema você pode ter mais de uma memória e códigos específicos nela, que pode ser distorção, modulação.


O processador tem uma estrutura complexa, além da parte não lógica ( o processamento DSP, que é mais matemático que lógico) e a estrutura de controle e lógica. Essa estrutura de controle e lógica, fica responsável pela aquisição de dados lógicos, no caso nossos códigos e a execução de comandos. Em um ciclo essa estrutura começa no estado IDLE, quando ela recebe o que chamamos de clock alto ou o pulso positivo de algum microprocessador externo ela automaticamente começa alguns procedimentos, como a leitura de portas, e memorias. Ao ler a memoria interna e se deparar com uma estrutura não vazia, onde o retorno poderá ser um opcode de reconhecimento positivo, a estrutura de controle, copia esses códigos para uma alocação de memória que somente existe durante o ciclo de máquina. A partir da dai, começa a interpretação do código para funções matemáticas que são enviadas para a parte que faz o processamento de sinais.

Ismah
Veterano
# jun/14
· votar


mjcmello
pedrolake

Certo. Jásabia que era em CI's programáveis. Mas volto apergunta: como o código binário chega no CI?

Dependendo o processador, os códigos são gravados em uma memória interna

De maneira lógica, poderíamos criar uma pedaleira que utilizasse "cartuchos" (algo como um MicroSD card) de efeitos... Tería N slots de memória removível, e compraria eles aleatóriamente com drives, modulações e cara*&¨% a quatro?

MauricioBahia
Moderador
# jun/14
· votar


Relacionado:

By mjcmello

【FIXO】 Artigo - Amostragem de sinais e pedaleiras digitais
http://forum.cifraclub.com.br/forum/7/290301/

Abs

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


Dependendo o processador, os códigos são gravados em uma memória interna

Sim há muitos processadores que possuem uma alocação para se gravar o programa que ele executará, são chamadas de aplicações embarcadas.

De maneira lógica, poderíamos criar uma pedaleira que utilizasse "cartuchos" (algo como um MicroSD card) de efeitos... Tería N slots de memória removível, e compraria eles aleatóriamente com drives, modulações e cara*&¨% a quatro?

Não, as memorias que servem para este tipo não são memorias flash, não memorias eletrônicas que trabalham sobre ciclo de máquina, seria possível se colocarmos uma CPU para receber o codigos do SD e transferir para essas memorias.

mjcmello
Veterano
# jun/14
· votar


como o código binário chega no CI?

Vc usa geralmente faz a programação em linguagem de alto nível (C, por exempo) num micro. Depois que vc compila, é gerado um arquivo binário (.bin) que contém o programa no formato de bits que o CI consegue entender e executar as instruções.

Os fabricantes dos CIs disponibilizam interfaces onde vc transfere estes arquivos BIN direto pro chip via USB (ou serial).

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


o Arquivo bin é a matriz binaria/ opcode. Além do C, C++,C#,java também usa-se codificação em Assembly para se gerar o bin, como uma camada intermediaria entre a alta codificação e a baixa.


Atualmente isso é feita por placas de desenvolvimento, que jé lhe traz todo o suporte para o pré teste, debug e gravação.

mjcmello
Veterano
# jun/14
· votar


mas alguns processadores ainda precisam de interfaces paralelas ou seriais tipo RS232. Atualmente isso é feita por placas de desenvolvimento, que jé lhe traz todo o suporte para o pré teste, debug e gravação

Sim, eu conheço. Só quis simplificar as coisas.

pedrolake
Veterano
# jun/14
· votar


mjcmello

Valeu, pela ajuda

Ismah
Veterano
# jun/14
· votar


MauricioBahia

O meu rei, aqui é um assunto mais técnico... achei que ia ficar massante e desvirtuado postar fórmulas matemáticas por lá... Afinal alguns querem saber se a pedaleira/pedal é bom, sem se importar como ela processa o sinal...

mjcmello
pedrolake

Entendam que sou quase leigo no assunto, portanto falhas são admissíveis. Não tinha me percebido do compartivo nulo que havia feito.

Ainda assim, a concepção inicial de usar slots removíveis, seria possível, pois a forma como conectaria os circuitos é independente, logo poderia me prover de uma conexão de formato USB (apenas o plugue) para efetuar as ligações (supondo que o CI precise só de 4 vias - Fase, neutro, Data + e Data - ).

mjcmello
Veterano
# jun/14
· votar


pedrolake

Não precisava ter editado seu post por causa disoo...

mjcmello
Veterano
# jun/14
· votar


Ismah

Veja bem. O programa geralmente fica gravado dentro do CI. Mas nada impede que ele venha a buscar dados em um microSD, que inclusive pode conter o programa de um efeito totalmente diferente.

Aí vai do seu conhecimento e criatividade para prover as soluções num projeto, conhecidas as restrições e limitações do chip.

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


Ismah, bele cara se tiver indo para mais técnico e ficar mais difícil para entender, me da um puxão de orelha, que as vezes eu me empolgo.

Sobre os slots, daria sim, mas seria muito trabalhoso casar os ciclos, geraria muito atraso, por exemplo teclados tem slots, mas não carregam seu conteúdo logo que inseridos precisa entrar no programa ou esperar um positivo do sistema do teclado.. Quando se usa programação usb, se tem uma interface ( que pode ser um micro controlador, ou micro processador) que recebe os dados, guarda temporariamente ( em um espaço muitíssimo curto de tempo) e transfere para os processadores e CPU, no seu ciclo de máquina.. Geralmente o CI nunca é conectado direto no USB ele tem uma camada de conexão, geralmente controlada por um chip que transforma os dados do cliclo USB em seriais. Na porta Serial temos a seguinte pinagem que pode variar, Vdd, Gnd, Rx, Tx onde Rx é receive e tx é transfer.

Ismah
Veterano
# jun/14
· votar


pedrolake

Me referia mesmo a criar N circuitos paralelos, próprios para um determinado tipo de efeito, e apenas alterar sua programação.

O USB seria apenas o tipo de plugue (e não conexão) usado, caso forem 4 pinos (não usei os termos comuns, pq pra mim não são usuais). Poderia usar uma conexão MIDI (8 vias se não me engano), XLR3 ou XLR5... Ou mesmo um RJ45.

A ideia do mjcmello é interessante, mas tería problema de lag/delay não? Assim se usasse um CI removível, mesmo um diferente do original, ele teria de ser lido como se fosse nativo da placa... Não?

pedrolake
Veterano
# jun/14
· votar


Então Ismah, primeiro você teria que importar os códigos do SD para algum chip e depois inseri-los no processador ou na EEPROM

Na Fractal áudio temos rack processadores com 18 processadores independentes, 2 para cada tipo de efeito, compressores, filtros, overdrives/dist, amplificadores, equalização, modulação, pane e decays, delays, echos, reverbs, e caixas acústicas.

Alex guitar man
Veterano
# jun/14
· votar


Ismah

Da impressão que você quer saber mais sobre no hardware hehe, quando fiz eletronica digital.. sabe.. passou muito longe de qualquer coisa parecida... só sei mexer com TL e afins..

R. Carvalho
Membro Novato
# jun/14
· votar


Ismah
Eu estou preparando um vídeo sobre isso, sobre pedais virtuais, espero que possa ajudar!
Tem alguma sugestão?

pedrolake
Veterano
# jun/14
· votar


Pedais virtuais, tipo os que tem no JamVox, guitar rig. Isso trabalha de forma diferente de pedaleiras, o código é executado por plugins VST, e dll que simulam a camada do processador DSP de uma pedaleira, o sinal é adquirido pela placa de som e convertido para digital, e processado.

Ismah
Veterano
# jun/14
· votar


Alex guitar man

Primeiro penso que preciso saber onde e como a informação trafega. Nada adianta eu saber copiar alguma fórmula pronta. No caso a perguntas vão longe.

R. Carvalho

Falar de guitar rig é redundante... Temos ótimos plug in como o Vermellion, e alguns mais desconhecidos, que eu sei bem pouco, mas que básicamente foi sampleado ruído rosa reproduzido por X amp, em Y caixa, com mic Z, na posição A, a distância B, na sala C... E essa curva de freq é utilizada para o processamento da guitarra.

Ismah
Veterano
# jun/14
· votar


pedrolake

Mas o código fonte de uma dll de um chorus, seria possível compilar em Assembly e "injetar" num pedal?!

Afinal temos um DSP (mesmo que emulado), não?

pedrolake
Veterano
# jun/14
· votar


Ismah, bele, deixa ver se entendi bem sua pergunta.

DLL é uma ligação dinâmica de biblioteca, bibliotecas que contêm controles ActiveX, ou drivers de sistema legado.

VST é Tecnologia de Estúdio Virtual , simplesmente uma interface que utiliza processamento de sinal para simular o hardware tradicional de estúdio de gravação , dentro de VST , temos o que chamamos de HOSTS, que pode ser um software, um hardware ou ambos.

O VST por sua vez é um codigo escrito em C, C++, java e dot Net, que é compilável e executável. Hoje temos projetos livres e abertos para trabalhar com VST, e criar seu próprio software, efeito,sugiro olharem:

VST java: jVSTwRapper

VST C++ : vstgui

Mas o código fonte de uma dll de um chorus, seria possível compilar em Assembly e "injetar" num pedal?!

Afinal temos um DSP (mesmo que emulado), não?


Neste caso o hardware necessitado, seria algo próximo de um tablet, PC. O que envolve médio/alto custo. Pois precisamos de software para servir de host, ou aumentamos a complexabilidade do nosso VST, para somente termos um hardware como host.

Já para trabalhar com o DSP, não. Hoje temos vários DSP's com alta fidelidade, baixo custo e pouco tempo de desenvolvimento, podendo trabalhar isoladamente ou não, Além dessas facilidade já veem acoplados portas analógicas, para entrada e saída e o sistema de conversão embutida. Posso citar o Spin Semi FV-1 do Keith Barr (Alesis), DSPic, Atmega.

O Processador DSP por ter a parte lógica integrada, já possui o host de hardware e software, o que fazemos é complementar o sotware e o hardware dependendo da necessidade.

pedrolake
Veterano
# jun/14
· votar


BEm pra quem quiser brincar o codigo de uma leslie para DSP:

mem del1 1025

equ input REG1
equ dry REG2
equ poti REG3
equ poti_inv REG4
equ sinus0 REG5
equ chout REG6
equ cho_mix REG7

skp run, start
wlds SIN0, 10, 2048
wlds SIN1, 5, 512

start:
;---------------------------------------------------------------
;setup
;---------------------------------------------------------------
rdax pot0, 1
mulx pot0
sof 0.6, 0
wrax SIN0_RATE, 0
;----------------------------------------------------------------
; read for tremolo
;----------------------------------------------------------------
clr
cho rdal, SIN0 ;load
sof 1.99,0.2
sof 1.2,0
wrax sinus0, 0 ;....store

;----------------------------------------------------------------
;dry/wet mix
;----------------------------------------------------------------
rdax POT1, 1
mulx POT1
wrax poti, 1
sof 1,-1
absa
wrax poti_inv, 0

;---------------------------------------------------------------
;setup
;---------------------------------------------------------------
rdax pot2, 1
mulx pot2
wrax cho_mix, 0

;---------------------------------------------------------------
;chourus
;---------------------------------------------------------------
rdax ADCL, 0.25
rdax ADCR, 0.25
wra del1, 0
;cho rda,sin0,sin|compc,del1+200 ;tremolo
;cho rda,sin0,sin,del1+201
;cho rda,sin0,sin|compc,del1^
;cho rda,sin0,sin,del1^+1
mulx cho_mix
wrax chout, 0


;----------------------------------------------------------------
;left output channel
;----------------------------------------------------------------
;dry signal
rdax ADCL, 0.5
wrax input, 1
mulx poti
wrax dry, 0

;wet signal
rdax input, 1
mulx sinus0 ;
mulx poti_inv
rdax dry, 1
rdax chout, 1
wrax DACL, 0


;---------------------------------------------------------------
;right channel
;---------------------------------------------------------------
;dry signal
rdax ADCR, 0.5
wrax input, 1
mulx poti
wrax dry, 0

;wet signal
rdax input, 1
mulx sinus0 ;
mulx poti_inv
rdax dry, 1
rdax chout, 1
wrax DACR, 0


Ismah
Veterano
# jun/14
· votar


Podia explicar cada parte desse código?

pedrolake
Veterano
# jun/14 · Editado por: pedrolake
· votar


Primeira parte do código:

mem del1 1025

equ input REG1
equ dry REG2
equ poti REG3
equ poti_inv REG4
equ sinus0 REG5
equ chout REG6
equ cho_mix REG7

skp run, start
wlds SIN0, 10, 2048
wlds SIN1, 5, 512


Defino a memoria de delay e a quantidade máxima de alocações mem del1 1025

Defino minhas variáveis e crio ponteiros de registradores
equ input REG1
equ dry REG2
equ poti REG3
equ poti_inv REG4
equ sinus0 REG5
equ chout REG6
equ cho_mix REG7


inicio o clico de máquina e carrego meu geradores de ondas senoidais
skp run, start
wlds SIN0, 10, 2048
wlds SIN1, 5, 512


Enviar sua resposta para este assunto
        Tablatura   
Responder tópico na versão original
 

Tópicos relacionados a Programação de pedais digitais