Ir ao conteúdo
  • Cadastre-se

ribeiro220

Membro Júnior
  • Posts

    16
  • Cadastrado em

  • Última visita

posts postados por ribeiro220

  1. @densyy Boa tarde,desculpe incomodar e sei que este tópico é antigo mas gostaria que se possível você me enviasse a planilha do excel para fazer senoides.DEUS TE ABENÇOE

    Em 08/09/2016 às 14:30, .if disse:

    fi-lo. Dar-te-ei apenas a fórmula...

    coluna A de 0 a 360

    coluna B =RADIANOS(A)

    coluna C =SEN(B)

    coluna D =127+INT(C*127)

    A coluna D são os dados em bytes que devem ser transferidos para o fonte

    Obs: você cria apenas uma linha de fórmula. As demais, selecione a linha, clique e arraste o +zinho

    o início

    (clrt-c ctrl-v)

    127

    129

    131

    133

    135

    138

    140

    142

    144

    146

    149

    151

    153

    155

    157

    159

    162

    164

    Usando o editar-substituir do word você consegue colocar tudo em ordem.

     

    
    unsigned char const tabelaseno[] = {
    127,129,131,133,135,138,140,142,144,146,149,151,153,155,157,159,162,164
    //...
    }
    

    Depois disso é só alimentar seu port ou o canal pwm do paulão com o dado. Lembrando que a freq do pwm deve ser pelo menos 10x maior do que aquela que queres gerar

     

    Ah sim, do jeito que você fez - alimentar um port com variável float - é bem sinistro. Port geralmente é em hexa char, int. Se float, a parte fracionária é ignorada e seu compilador devia de dar um warning pelo menos. (desconheço o compilador do arduíno ok?)

    Boa tarde,poderia me ajudar a fazer essa tabela,DEUS TE ABENÇOE @.if

  2. 14 horas atrás, Guri Vonnilmam disse:

    Não é bem assim Ribeiro.     Não se desvalorize!      O conceito prático sobre sinteze sonora é algo complexo e demanda muita dedicação de fato.     Os conceitos envolvidos são realmente complexos.

    Imagine uma base de tempo padrão,  fixa à 22050hz.     Essa base de tempo poderia estar num timer do pic18 por exemplo, sendo ativada na interrupção.     Assim a cada 1÷22050 lhe dará um time total entre uma interrupção e outra uns 45us.      Dentro desse time você inclui seus osciladores quantos der dentro desse time, lembre de deixar uma folga para o retorno e execução do main.

    Eu fiz um bateria que toca 8 instrumentos simultaneamente com resolução de 16bits e sample de 22050hz o som é HI-FI. ...em um pic18f4520...como a memoria era pouca, reajustei as amostras ao minimo possível. ..e ainda deu para por controle de volume master: 

     

    Em um dsp da texas com core arm tipo a linha tms320...é possível gerar 384 canais de polifonia,  isso da para gerar 9 drawbars lower e upper mais pedals bass com 4 vozes mono.

    @Guri Vonnilmam DEUS O ABENÇOE MUITO!

  3. @Guri Vonnilmam DEUS TE ABENÇOE meu amigo,mas estou batendo em ponta de faca e só decepcionando comigo mesmo.

    Parece que a mente está fechada,informações tem de todos os lados e com certeza estão corretas,o problema é meu entendimento no assunto.

    esse negócio de fazer varios osciladores internos trabalhando em conjunto como fosse uma orquestra não é pra qualquer um não.Vejo códigos prontos que só fala em gerar uma senóide,quando fala em polifonia,ai o calo aperta.

    Ja tentei comprar projeto pronto de freelancer,mas não entendem de sinteses musicais,trabalham mais com automaçao.

    sem falar dos efeitos posteriormente de sustain,vibrato,etc.

    Estou igual a Moisés no egito,vou ver a terra de longe mas não vou chegar lá ou seja vejo brilhantes projetos mas só fica nisso.

    DEUS TE ABENÇOE

    Acho que conheço você de algum lugar!

    veja isso

     

    • Curtir 1
  4. @aphawk Muito obrigado amigo.Vou tentar com interrupção do Timer do Pic e conseguindo,posto aqui.Gostaria de enviar _lhes o circuito pronto no Proteus pra escutar em os sons.Toca todas notas simultâneamente.polifonia de 12  notas.Muito obrigado e se puderem me ajudar eu sempre serei grato.Meu código é muito simples pois não sei como otimizar o mesmo.

  5. Boa tarde a todos,vejam isso,graças a vocês e A DEUS fiz algo baseado no conceito do nosso amigo @xyko-2020 ,porém não usei base de tempo como o timer0 do Pic pois não consegui(fica pra próxima).Escrevi e compilei e no MikroC e simulei no Proteus.Não ficaram exatas as medidas mas tocando não dá pra perceber.

    PIC16F628 - 20MHZ,gostaria de enviar o arquivo do proteus mas não consigo por aqui.

    int c0 = 0x00;                  //Variável de contagem auxiliar
    int c1 =0x00;
    int c2 = 0x00;                  //Variável de contagem auxiliar
    int c3 =0x00;
    int c4 = 0x00;                  //Variável de contagem auxiliar
    int c5 =0x00;
    int c6 = 0x00;                  //Variável de contagem auxiliar
    int c7 =0x00;
    int c8 = 0x00;                  //Variável de contagem auxiliar
    int c9 =0x00;
    int c10 = 0x00;                  //Variável de contagem auxiliar
    int c11 =0x00;
    
    void main()                    // configura port.a e port.bcomo saidas digitais
    {  TRISA.RA0 = 0X00;
       RA0_bit   = 0x00;
       
       TRISA.RA1 = 0X00;
       RA1_bit   = 0x00;
       
       TRISA.RA2 = 0X00;
       RA2_bit   = 0x00;
    
       TRISA.RA3 = 0X00;
       RA3_bit   = 0x00;
    
       TRISB.RB0  = 0x00;
       RB0_bit    = 0x00;
       TRISB.RB1  = 0x00;
       RB1_bit    = 0x00;
       
       TRISB.RB2  = 0x00;
       RB2_bit    = 0x00;
       TRISB.RB3 = 0x00;
       RB3_bit    = 0x00;
       
       TRISB.RB4  = 0x00;
       RB4_bit    = 0x00;
       TRISB.RB5  = 0x00;
       RB5_bit    = 0x00;
    
       TRISB.RB6  = 0x00;
       RB6_bit    = 0x00;
       TRISB.RB7 = 0x00;
       RB7_bit    = 0x00;
       
    
    while(1)
       {    c0++;                  //incrementa contadores
            c1++;
            c2++;
            c3++;
            c4++;
            c5++;
            c6++;
            c7++;
            c8++;
            c9++;
            c10++;
            c11++;
    
           if(c0==65)               // compara e se for igual executa
           {
    
              RA0_bit = ~RA0_bit;
              c0 = 0x00;
           }
             if(c1==61)
           {
              RA1_bit = ~RA1_bit;
              c1 = 0x00;
           }
    
           if(c2==58)
           {
              RA2_bit = ~RA2_bit;
              c2 = 0x00;
           }
             if(c3==55)
            
              {
    
              RA3_bit = ~RA3_bit;
              c3 = 0x00;
           }
            
            
            
    
           if(c4==52)
           {
    
              RB0_bit = ~RB0_bit;
              c4 = 0x00;
           }
             if(c5==49)
           {
              RB1_bit = ~RB1_bit;
              c5 = 0x00;
           }
           
           if(c6==46)
           {
              RB2_bit = ~RB2_bit;
              c6 = 0x00;
           }
             if(c7==43)
           {
    
              RB3_bit = ~RB3_bit;
              c7 = 0x00;
           }
           
             if(c8==41)
           {
    
              RB4_bit = ~RB4_bit;
              c8 = 0x00;
           }
             if(c9==39)
           {
    
              RB5_bit = ~RB5_bit;
              c9= 0x00;
           }
    
           if(c10==37)
           {
              RB6_bit = ~RB6_bit;
              c10 = 0x00;
           }
             if(c11==35)
           {
    
              RB7_bit = ~RB7_bit;
              c11 = 0x00;
           }
    
           
           
           
       } //end while
    
    } //end main

    image.png.7778b25064cf584f7d94a7e1b6216e2d.png

    • Curtir 1
  6. 20 horas atrás, aphawk disse:

    @ribeiro220 ,

     

    Se esse é o problema ... faça 12 osciladores de precisão com 12 Atmegas kkkkkkk DDS fica super preciso...

     

    Paulo

    @aphawk  Não compensa,custo beneficio..Conheço um desenvolvedor que fez tudo dentro de um Arm STMF32-051,polifonia com varias notas simultaneas e leitura dos teclados ate 61 teclas!usou técnicas de wavetables ou pcm.Um excelente trabalho,pena que ele não desenvolve pra pessoa fisica .ele trabalha pra uma empresa de órgãos eletronicos(teclado).

     

     

    adicionado 7 minutos depois

     

     

     

    adicionado 14 minutos depois
    12 horas atrás, Isadora Ferraz disse:

     

    Qualquer coincidência é outra mera semelhança. No entanto parece que o garoto quer mais que os bips irritantes da onda quadrada. Neste caso, pouco (ou melhor, nada) posso somar mas não sem antes corroborar a Chicão que "suaviza e torna menos irritante"

    Square-to-sine-wave-converter-circuit.pn

    ... o som do circuito! 😉. Quem tiver um mínimo de sinestesia técnica (inventei isso agora) pode até "ouvir"

    adicionado 7 minutos depois

    Ah sim.. gostei do link do piano russo. . 👍 ... Até favoritei pra uso futuro..

    abç

    @Isadora Ferraz Boa noite,não quero os irritantes bips e sim a senoide,e seu circuito é mais ou menos isso que pretendo fazer mas na saida das notas tocadas juntas ou seja,no pré amplificador.Isso era muito usual nos circuitos antigos e dependendo do filtro voce consegue simular alguns instrumentos como flauta,oboé,piano,clarinete,...grato

    adicionado 17 minutos depois
    14 horas atrás, xyko-2020 disse:

    adicionado 8 minutos depois

    @ribeiro220

    Acho que o problema da onda quadrada você pode resolver com isto.

    Todas as saídas devem entrar num MIXER antes de ser amplificadas, senão as frequências mais baixas irão "encobrir" as mais altas.

    Sim meu amigo,é isso mesmo .grato

    • Curtir 2
  7. 12 minutos atrás, aphawk disse:

    pessoalmente também usaria os 12 osciladores chaveador por CD4066 ....

    Já montei com 12 osciladores com 40106 o problema são os capacitores que sofrem alterações com mudança s climáticas quente ou frio e também pela estafa.isso vai variar mesmo que levemente a frequência da nota musical.A nossa audição percebe facilmente.grato

    • Curtir 2
  8. @xyko-2020  Muito obrigado pela atenção,ja pensei em fazer quase isso com um PIC em programar 12 contadores e ir decrementando a cada ciclo de máquina e sinceramente não me atentei a um timer ser a base.Vou tentar e darei retorno aqui.

    tem varios projetos na internet mas parece que nada funciona,achei um interessante mas ao compilar dá um mote de erros.Conversei com o dono do projeto é um Russo que respondeu me abandonado o projeto a anos.

    Vejam abaixo o que esse cara fez. Muito obrigado

     

    http://www.pic24.ru/doku.php/en/osa/articles/pk2_osa_piano

    • Curtir 1
  9. 3 horas atrás, aphawk disse:

    @ribeiro220 ,

     

    São duas coisas diferentes ....

     

    Por DDS você consegue sim gerar a frequência que quiser. Uma de cada vez ... e muito precisamente.

     

    Mas sua pergunta é gerar as 12 frequências simultâneamente !  Isso não tem como !


    Mas se for trabalhar com apenas duetos de frequências, aí sim dá para fazer no DDS, fazendo a soma algébrica do valor de saída ANTES de enviar para a saída. Para ter uma boa performance até 20 KHz isso teria de ser feito em Assembly, ou caso use um Arm de clock bem alto ( uns 150 Mhz no mínimo ) talvez possa ser feito em C mesmo.

     

    Uma outra ideia é você utilizar 12 osciladores diferentes para gerar as frequências, e controlar as saídas deles , assim você tem todas as combinações possiveis... em um único volume...

     

    Paulo

     

     

    @aphawk  Muito obrigado pela atenção mas como seria essa soma algébrica?outra pergunta a ideia de controlar 12 osciladores não entendi muito bem!Desde já agradeço-lhe

    • Curtir 1
  10. 1 hora atrás, Isadora Ferraz disse:

    Ao googlar arduino dds achei bem interessante aquele (caro) módulo dds

    ...

     

    Quase sinto vontade comprar. Mas pode ser que não te atenda pois pelo que vi superficialmente gera 2 sinais simultâneos. Sobre a técnica dds, li isso rapidinho

    https://www.embarcados.com.br/dds-sintese-digital-direta/

    e também quase não entendi muito.

    Sobre gerar várias frequencias, vejamos o que vislumbro sem mc

    2 74hc14 ou do gênero, 6 portas cada, cada uma com uma freq diferente

    40106_just_osc1.png?w=800

    Suas saídas somadas num ampl.

     

    Obviamente com mc é mais desafiador. Sem pensar muito (e sem ler a teoria dds) vislumbro uma interrupt com uma dúzia de variáveis a controlar o momento da inversão de bits dos ports... Só posso falar isso... pode ser que ... ndv

    Boa noite e obrigado pela atenção,o problema em gerar frequencias individuais como o oscilador CI 40106 esta no fato de serem totalmente independente,ou seja se um oscilador sair de frequencia,a nota desafina.Se tiver um oscilador único,mesmo que o oscilador saia um pouco da frequencia,todas as outras acompanharão...

     

    • Curtir 1
  11. @Gabriel.Rocha estou com o mesmo problema,não consigo nem compilar o programa,ja conversei com o proprietário e ele protinficou em ajudar-me mas o projeto é de 2008 disse que não está mais trabalhando no mesmo.

    Estava tentando gerar uma polifonia com pic pois trabalho com manutenção de orgãos eletrônicos de dificeis peças para reposição então pensava em fazer algo em substituição das mesmas e esse projeto ,com algumas modificações ,era excelente.

     

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!