Handmades</center>
 
*
Bem-vindo, Visitante. Por favor faça o Login ou Registro. 27 de Novembro de 2024, as 16:26:16


Login com nome de usuário, senha e duração da sessão


Páginas:  1 [2] 3   Ir para o Fundo
  Imprimir  
Autor Tópico: Harmonizador  (Lida 14808 vezes)
Adiel
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 5.156

Obrigado
-Dado: 1051
-Recebido: 837


Resistance is futile, if <1R


WWW
« Responder #15 : 18 de Setembro de 2012, as 18:23:23 »

Este tópico está me encorajando a colocar meu FV-1 na caixa, com conectores em paralelo para cada potenciômetro de controle, e fazer uma estação de desenvolvimento de pobre. 

Talvez um harmonizer seja meio complicado de se programar ali, devido às complexas relações entre notas em escalas maiores e menores, mas nada impossível.  O som dele no modo de pitch shifting é bastante aceitável, muito melhor que o som da Zoom, de forma geral, mas tem aquele suave e característico "vibrato", além de uma latência perceptível.  Ainda assim, os resultados podem ser, no mínimo, divertidos.
Registrado

GrAmorin
Hand MasterMind
*****
Offline Offline

Sexo: Masculino
Mensagens: 3.354

Obrigado
-Dado: 5
-Recebido: 226



WWW
« Responder #16 : 23 de Setembro de 2012, as 14:52:12 »

Seria interessante definir alguns detalhes.
Se um Harmonizer "basico" (simples) ou um de nivel profissional.
Obviamente uma versao basica apresentará varias coisas que podem ser indesejadas, como baixa definição, latencia, e possivelmente algumas falhas.
Ja uma versao profissional poderater um custo alto.
PAra uma versao profissional, poderia se desenvolver algo, iniciando pelo UDA 1344, depois fazer algo com algum MCUs.
Para isso precisria ter uma boa noçao de programaçao.
Registrado

gfr
Colaborador
***
Offline Offline

Mensagens: 665

Obrigado
-Dado: 18
-Recebido: 86



« Responder #17 : 27 de Setembro de 2012, as 17:16:12 »

Vivendo e aprendendo:

um pitch shifter DE FITA, produzido em 1967 !!!!!



É como um eco de fita, mas a cabeça de leitura é giratória (como cabeças de vídeo de VHS).

http://www.wendycarlos.com/other/Eltro-1967/index.html
http://www.wendycarlos.com/other/Eltro-1967/Eltro-1967.pdf

Os Beach Boys usaram um dispositivo destes já em 1967:
http://www.youtube.com/watch?v=ix1-Coa7qQQ

Um outro dispositivo semelhante:
http://m.matrixsynth.com/2007/02/springer-tempophon.html
Registrado

Com o tempo, uma imprensa cínica, mercenária, demagógica e corrupta formará um público tão vil como ela mesma - Joseph Pulitzer
Alex Frias
DIY Freak
******
Offline Offline

Mensagens: 7.597

Obrigado
-Dado: 2461
-Recebido: 369


Flanelinhas, cuidado!!!


« Responder #18 : 27 de Setembro de 2012, as 19:19:40 »

Essa de usar uma cabeça giratória para ter uma velocidade de leitura independente da velocidade de gravação é sensacional. Legal!
Registrado

"TicoTicoCá, TicoTicoLá..."
Pagão e feliz!!
zekkez
Visitante
« Responder #19 : 27 de Setembro de 2012, as 20:18:30 »

http://www.wendycarlos.com/other/Eltro-1967/index.html
http://www.wendycarlos.com/other/Eltro-1967/Eltro-1967.pdf

Fazia tempo que eu não ouvia falar no Walter Carlos, depois Wendy Carlos...

Para quem não lembra, é o autor/a autora da trilha do clássico filme Laranja Mecânica do Stanley Kubrick.  Alguém sabe se esse/essa compositor ainda vive ?  Um(a) predecessor(a) do Jean Michel Jarre .

Brinquedinho bem apropriado ao estilo musical dele(a) .
« Última modificação: 27 de Setembro de 2012, as 20:20:03 por zekkez » Registrado
Alex Frias
DIY Freak
******
Offline Offline

Mensagens: 7.597

Obrigado
-Dado: 2461
-Recebido: 369


Flanelinhas, cuidado!!!


« Responder #20 : 27 de Setembro de 2012, as 20:31:10 »

Sim, que eu saiba ELA ainda está viva. De certa forma o Walter morreu, afinal só temos atualmente a Wendy que já está bem velhinha. Ela foi professora inclusive de dois ótimos tecladistas: do Larry Fast (Synergy e Peter Gabriel) e do Jordan Rudess. Ela ajudou a criar vários sistemas de sintetização e interfaces para instrumentos e computadores.

Switched on Bach é um marco na história da música eletrônica. Gravado com os primeiros sintetizadores do Robert Moog quando ela ainda era ele... Outra trilha bem conhecida feita por ela foi para o filme TRON, o primeiro. Ela deve estar com uns setenta anos, mas acho que entre nós ainda.
Registrado

"TicoTicoCá, TicoTicoLá..."
Pagão e feliz!!
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #21 : 28 de Setembro de 2012, as 14:34:17 »

 Pessoal, estive olhando o chip da spin semi e ele, apesar de ser muito interessante, a programação da memória é toda em código assembly. Não que seja complicado, mas requer estudo das instruções que o ci faz. Ele é muito interessante mesmo, contém já AD/DA, suporte para potênciômetros e tals... Me parece que o núcleo dele é baseado no 8051.

 Para se fazer um harmonizer (do tipo boss PS6), eu estive pensando aqui, não é impossível. O projeto deverá conter um detector (que foi um assunto comentado em tópico sobre afinadores) da fundamental a ser tocada e uma lista de parâmetros multiplicadores (valores constantes) de diferença entra a fundamental e a nota que queremos na saída, de acordo com a afinação que estamos.
 Não sei se fui muito claro, mas olhem esta tabela: http://www.phy.mtu.edu/~suits/notefreqs.html

 Imaginemos que detectamos um C0(ou C1, C2) e queremos que na saída tenhamos um E0 (E1, E2), precisaremos multiplicar a nota da fundamental por 20.60/16.35 = 1,2599.
 A terça de E0 seria G0, ou seja a relação é de 24.50/20.60 = 1,2378. Sempre!

 Ou seja, encontrar a nota correspondente da escala é fácil, só termos a informação de qual escala estamos (C, C#, D...) e qual a nota que foi detectada, criamos uma tabela que multiplique o valor para cada harmônica (terça, quinta) e fazemos usos destas constantes.

 Bom, essa é a parte fácil, digamos assim.

 Agora vem o problema de fato, como reproduzir o sinal adquirido com a relação de frequências que calculamos?

 Um dos métodos que pensei é fazer uma análise por janelamento do sinal. Por ex, imagine que adquirimos em 10 segundos o sinal proveniente da guitarra. Concorda que se reproduzirmos este sinal em um período de 20s, a frequência de toda a gravação será abaixada em 1 oitava (dividida por 2)?
 Certo, se reproduzirmos em 5s, será aumentada de 1 oitava?
 E se reproduzirmos em 1,2599/2 *10 = 6,2995s , não teremos uma terça acima?

 Correto. Bem mas ai você está subindo toda a gravação de 10s em um terça... Sim, mas e se levarmos este valor de sampling para o infinitesimal (por ex, a cada 1ms) O que ocorre? O ser humano começa a perceber o som de uma terça e não mais o som da nota anterior.
 Só que ai vem um problema. Voltamos novamente a gravação de 10 segundos... Concorda que executamos ela em 6,2995 segundos? Mas o sinal original tinha 10 segundos!! O que aconteceram com os 10-6,2995= 3,7005 segundos restantes? Ficaram em silêncio pois não tem mais audio!

 Levando ao infinitesimal novamente, teremos um período (muito pequeno, concordo) que não teremos sinal processado. Mas isso cria distorções na saída, já ouviram o som de um whammy, harmonizer ? Todos, quanto mais distante (maior a diferença entra a fundamental e as notas harmonizadas, 8ª, etc) tem uma distorção que fazem deixar o som meio artificial. Podem perceber! Existem pessoas que gostam desse som, é até interessante, mas não é o ideal.

 Esse é o método mais "simples" que a maioria dos fabricantes usam...

 O outro método é mais complicado, exige um maior poder computacional (talvez um microcontrolador com DSP dedicado), mas deve exibir resultados próximos do real.
 Seria realizar a transformada de fourier discreta do sinal (que no fundo é calcular a cada sampling quais as todas as harmônicas e amplitudes que o sinal tem) e com as harmônicas (amplitudes/frequência) multiplicar as frequências pelo valor constante que foi definido na tabela e por qual harmônica estamos multiplicando. Ao final junta-se novamente todas as harmônicas e voilá temos novamente nosso sinal de guitarra, mas agora perfeito, só alteradas as frequências.
 Esse método é utilizado em dispositivos/softwares profissionais pois não se criam distorções e o tempo de sampling só depende da resposta em frequência do sinal analisado.

 Um artigo interessante: http://www.phas.ubc.ca/~taniak/p210/NOISE2.pdf É legal observar as formas de onda dos sinais...
http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/

 Bem, é possível de se fazer... Mas vai dar um trabalho ! =)

Um abraço

Eduardo
Registrado
Alex Frias
DIY Freak
******
Offline Offline

Mensagens: 7.597

Obrigado
-Dado: 2461
-Recebido: 369


Flanelinhas, cuidado!!!


« Responder #22 : 28 de Setembro de 2012, as 15:17:57 »

Esse segundo método seria muito interessante, ressintetizando o sinal aditivamente em outras frequencias de fundamental. Isso facilitaria recriar as envoltórias da dinâmica iguais às do sinal original, não alteradas com o processo de esticar e comprimir a base de clock apenas. Assim como manter os parâmetros de EQ e ressonância, mantendo as características timbrais do instrumento ou voz originais. Sem munchkinization nem Darth Vaderism.
Registrado

"TicoTicoCá, TicoTicoLá..."
Pagão e feliz!!
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #23 : 01 de Outubro de 2012, as 13:26:10 »

 Eu pesquisei meio por cima mas dá para fazer utilizando FFT e sintetizando novamente o sinal, vi projetos que estavam utilizando os PIC's mesmo como analisador de espectro de áudio. Aparentemente funcionavam bem! Algoritmos de FFT em C estão por toda a internet, só pesquisar.

 Bem, acho que o ponto mais chato disso tudo é encontrar um microcontrolador que tenha um AD com resolução decente (12 bits para cima), um clock de pelo menos 48Mhz, trabalhe com 32bits, tenha já um DA ... Um ARM seria a melhor pedida, e encontrei placas de desenvolvimento bem baratas (20 dólares) com um Cortex M3 e ja com programador e debugger interno.

 http://www.ebay.com/itm/STM32VLDISCOVERY-STM32-MCU-Value-line-Discovery-evaluation-development-board-/250945576250?pt=LH_DefaultDomain_0&hash=item3a6d859d3a

 
 Vou adquirir uma placa dessas para alguns projetos e quem sabe não sai alguma coisa? =D

Um abraço

Eduardo
Registrado
hgamal
Hand MasterMind
*****
Offline Offline

Sexo: Masculino
Mensagens: 3.985

Obrigado
-Dado: 22
-Recebido: 509



« Responder #24 : 01 de Outubro de 2012, as 17:00:50 »

Eu tenho uma placa desta... é um peso de papel ruim... mas meu tempo anda tão escasso!

Sad

Quanto ao FV-1, ele realmente é programado em assembly. Mas as instruções dele são de muito alto nível. A maioria dos programas é muito pequena.

O irmão do FV-1, os chips al3201 da Alesis, que foram bolados pelo mesmo cérebro (o falecido Keith Barr), possuem apenas 127 posições programáveis.

A melhor opção seriam paralelizar as coisas, um chip avalia o que tem feito (AVR, ARM, STM...) e outro que executa a transposição!
Registrado

Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar
Alex Frias
DIY Freak
******
Offline Offline

Mensagens: 7.597

Obrigado
-Dado: 2461
-Recebido: 369


Flanelinhas, cuidado!!!


« Responder #25 : 01 de Outubro de 2012, as 17:58:51 »

Caso possa manter a formante e não ter que se virar em algoritmos para refazer a envoltória dinâmica dá pra sair um senhor pitch shifter ou harmonizer inclusive para a voz, bem convincente...
Registrado

"TicoTicoCá, TicoTicoLá..."
Pagão e feliz!!
gfr
Colaborador
***
Offline Offline

Mensagens: 665

Obrigado
-Dado: 18
-Recebido: 86



« Responder #26 : 02 de Outubro de 2012, as 08:37:24 »

Ledod,

Seja qual for o algoritmo (fazendo um "doppler" virtual através de leitura de um buffer em velocidade diferente da gravação, ou usando FFT), é interessante, pra diminuir um pouco as distorções estranhas introduzidas, usar janelas de processamento com um pouco de overlap e promover um crossfade entre janelas sucessivas, ao invés de janelas "isoladas" com um corte abrupto entre elas.

Outra coisa, se for usar FFT, por exemplo. Por natureza, o algoritmo vai ter uma certa latência, mesmo que o processamento seja ultra rápido, você precisa no mínimo o tempo de preencher uma janela inteira antes de calcular a FFT. Quanto menor a janela, menos latência, mas menor a resolução em frequência (e pior o resultado sonoro). Mas existem algumas manhas pra otimizar isto.

Procure ler sobre "phase vocoder". Por exemplo:

http://sethares.engr.wisc.edu/vocoders/phasevocoder.html

Alex,
A questão das formantes, pra não gerar o efeito "chá de ferra-guela da Chayene", é complicada. Porque pra ficar natural, conforme se muda o pitch da fundamental, o balanço das amplictudes de cada formante precisa mudar também. Aí além de detetar o pitch (que já é complicado), precisa detetar as formantes e saber como manipular este balanço (pra cada instrumento ou tipo de voz isto muda). O Melodyne, por exemplo, faz este processamento e... bom, deixa pra lá.
Registrado

Com o tempo, uma imprensa cínica, mercenária, demagógica e corrupta formará um público tão vil como ela mesma - Joseph Pulitzer
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #27 : 07 de Outubro de 2012, as 15:46:53 »

 Sim , tempo de processamento vai criar latência no sinal, mas será que notaríamos o efeito? Bem geralmente um harmonizer sempre é tocado com o sinal original do instrumento, para criar as terças e quintas que ficam muito legais em solos... Se o tempo for de alguns milissegundos ainda é aceitável para não perdemos a dinâmica da nota tocada não?

 Sim, o prenchimento da janela é obrigatório, mas apenas no primeiro ciclo. Depois que encheu o buffer não tem mais o que esperar. Lógico, haverá a latância, mas não acho que seja o maior dos problemas... Não estaremos mexendo com comunicação de dados (uart's, spi's) ou seja, o ciclo do programa vai ser muito rápido, não tem "o que esperar" com interrupções, receber dados e coisas do tipo. A cada ciclo do programa é só a leitura do AD, detectar a nota, passar no algoritmo refazer o sinal e jogar no DA.
 As amplitudes não seriam as mesmas das harmônicas de entrada? Só alterando as frequências? Por ex, temos a fundamental valendo 1 a terça valendo 0,7 a quinta 0,5.... Não precisamos saber como se comportam as harmônicas (que dão o timbre do instrumento) apenas copiá-las.


 Haroldo:

 Haha é que sou um pouco traumatizado com assembly. Não que seja difícil, é interessante, muito rápido e seguro. Mas não sei, mexer com AD, DA, fft em assembly é bem complicado (nem imagino como ficaria um algoritmo desses!!), se algo dá errado é complexo e dificil debugar... Prefiro ainda o C !
 Não cheguei a ler sobre o set de instruções com mais detalhes, vi que eram do 8051 e me deixou com os cabelos em pé!  Shocked

 Ixi... Aquela placa eu nunca utilizei mas alguns colegas já desenvolveram aplicações bem legais com elas ! Existe o IAR workbench que é uma IDE que já estou meio acostumado em usar e o mais essencial sem dúvida é o debugger, executar o código linha por linha, observar as variáveis, mapas de memória, as instruções em assembly sendo executadas em tempo real, os breakpoints então!!! Hoje em dia quando preciso programar um PIC sem isso é um parto hahaha
 O legal da plaquinha é que ela já vem com um debugger da ST, não precisando comprar um a parte...
Registrado
Alex Frias
DIY Freak
******
Offline Offline

Mensagens: 7.597

Obrigado
-Dado: 2461
-Recebido: 369


Flanelinhas, cuidado!!!


« Responder #28 : 07 de Outubro de 2012, as 18:32:36 »

Ledod, não precisa partir do zero! Há programas e algoritmos já preparados que poderão dar o norte pra sua bússola.
Registrado

"TicoTicoCá, TicoTicoLá..."
Pagão e feliz!!
hgamal
Hand MasterMind
*****
Offline Offline

Sexo: Masculino
Mensagens: 3.985

Obrigado
-Dado: 22
-Recebido: 509



« Responder #29 : 07 de Outubro de 2012, as 21:02:35 »

Ledod,

no caso do FV-1, seus medos deveriam ser menores. Como falei, a coisa é bem alto nível. Veja o exemplo do fabricante, para um eco + reverb. Veja como é curto o programa.

Código:
;GA_DEMO	Echo

;Pot0 = Reverb level
;Pot1 = delay
;pot2 = Echo level

;memory declarations:

mem edel 20000

mem ap1 334
mem ap2 556
mem ap3 871

mem lap1a 808
mem lap1b 1934
mem d1 2489

mem lap2a 1016
mem lap2b 1787
mem d2 2287

;register equates:

equ mono reg0
equ apout reg1
equ lp1 reg2
equ lp2 reg3
equ revout reg4
equ dout reg5
equ dx reg6
equ efil reg7

;declare constants:

equ kap 0.6 ;all pass coefficient
equ krt 0.55 ;reverb time
equ krf 0.5 ;reverb lpf freq
equ krs -0.6 ;reverb lpf shelf
equ fbk 0

;clear registers and initialize LFOs:

skp run,endclr
wrax lp1,0
wrax lp2,0
wrax efil,0
wlds sin0,12,100
endclr:

;sum inputs to mono:

rdax adcl,0.5
rdax adcr,0.5
wrax mono,0

rdax dout,fbk
rdax mono,1
wra edel,0

;do reverb and put result in revout (after pot0 control):

rdax mono,0.5
rdax dx,0.5

rda ap1#,kap
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
rda ap3#,kap
wrap ap3,-kap
wrax apout,0

rda d2#,krt
rdax apout,1
rda lap1a#,kap
wrap lap1a,-kap
rda lap1b#,kap
wrap lap1b,-kap
rdfx lp1,krf
wrlx lp1,krs
wra d1,0

rda d1#,krt
rdax apout,1
rda lap2a#,kap
wrap lap2a,-kap
rda lap2b#,kap
wrap lap2b,-kap
rdfx lp2,krf
wrlx lp2,krs
wra d2,1.99
rda d1,1.99
mulx pot0
mulx pot0
wrax revout,0

;smooth reverb:

cho rda,sin0,sin|reg|compc,lap1b+100
cho rda,sin0,sin,lap1b+101
wra lap1b+200,0
cho rda,sin0,sin|reg|compc,lap2b+100
cho rda,sin0,sin,lap2b+101
wra lap2b+200,0

;now get delay output, controlled by pot1:

rdax pot1,1
and %01111110_00000000_00000000 ;10mS increments
sof 0.55,0.05 ;range 50mS to 600mS
wrax addr_ptr,0 ;write address pointer

rmpa 1 ;read pointer
rdfx efil,0.3
wrlx efil,-1
wrax dout,1
mulx pot2 ;adjust level with pot2
mulx pot2 ;square function
wrax dx,1 ;write level adjusted delay out
rdax mono,1 ;pass input
rdax revout,1 ;add reverb
sof 1,0.02
wrax dacl,1
sof 1,-0.04
wrax dacr,0


Até a linha 40, só temos definição de constantes. São 31 instruções para implementar o reverb, 6 para amaciar o sinal e 18 para implementar o delay.

Eu programo em C e Assembler a muitos anos (na verdade eu aprendi a programar em assembler 8080), parte do meu ganha pão vem disso. Já fiz muita coisa em processamento de sinais, e acho MUITO DIFÍCIL, alguém implementar o algoritmo acima, em C, com menos linhas.

A meu ver, a parte mais difícil do FV-1, é o processamento real de ponto fixo que ele usa. Pior, não há tradução para este tipo em C. Um float ou double em C são reais com ponto flutuante. Nem o fato dele ter apenas dois registradores, os acumuladores, atrapalha muito.

Não há como implementar algo eficiente em C para máquinas comos o FV-1 ou AL3201. Nem stack pointer eles tem. No caso do AL3201, há um agravante, não há espaço na memória de programação para uma implementação menos eficiente que o próprio assembler.

Já programei DSP 56X000 da motorola (agora eu acho que agora o nome deles é freescale), em C, mas o código gerado era muito perdulário e ineficiente.

O que eu acho mais engraçado, é que uma pessoa que aprenda o Assembler do FV-1 e AL3201, não se sentirá a vontade com o de qualquer outro CISC da vida!

Resumindo, se quiser entrar na seara dos DSPs, ainda é necessário aprender Assembler. E pelas coisas que eu vejo você escrever aqui, acho que o problema no seu aprendizado nisso, será ZERO.
Registrado

Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar
Páginas:  1 [2] 3   Ir para o Topo
  Imprimir  
 
Ir para:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

XHTML 1.0 Válido! CSS Válido! Dilber MC Theme by HarzeM
Página criada em 0.048 segundos com 22 procedimentos.
SimplePortal 2.3.3 © 2008-2010, SimplePortal