Waves x controle de frequencia

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Waves x controle de frequencia

Mensagempor Vonnilmam » 27 Fev 2010 11:45

Em primeiro lugar eu peço desculpas pela minha ignorância em ainda não ter conseguido entender o que explico a seguir:

Meus caros eu estou com a cuca fervendo tentando entender a "lógica" da seguinte coisa:

Eu tenho um SAMPLE de uma WAVE que fiz com as seguintes caracteristicas:

SAMPLE RATE............ = 44.100 hz
FREQUÊNCIA DA WAVE = 440 hz
TEMPO DE SAMPLE..... = 1 segundo

Esta tudo bem até agora, o problema que eu quero resolver é:

Como é o "ALGORÌTMO" (se assim eu posso chamar) que me daria a possíbilidade de controlar a "FREQUÊNCIA DA WAVE", atualmente ela é originalmente 440,00 hz, como eu faço para essa frequência ir para 446,163 hz? Ou melhor dizendo para qualquer outra frequência dentro do "EXPÉCTRO" das notas musicais que é o meu caso.

Sinceramente minha cabeça esta fervendo, porque eu não consegui até agora entender como fazer essa tarefa, por esse motivo eu estou pedindo as meus colegas que são muito mais inteligentes e detentores de grande sabedoria que me ajudem a resolver essa "INCÓGNITA"....

Anteriormente minha dúvida era como resolver o problema da "SOMATÓRIA" de diversas WAVES soando ao mesmo tempo, de forma a envia-las para o DAC em questão, graças a sabedoria de bondade de vocês eu consegui entender o "TREM"....agora estou eu aquí novamente!

Muito obrigado,
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor msamsoniuk » 27 Fev 2010 12:36

de uma olhada em:

http://www.asm51.eng.br/phpbb/viewtopic ... sc&start=0

por sinal foi vc mesmo que iniciou a thread! tem alguns exemplos de como gerar as senoides com wave table e, para uma forma de onda arbitraria, eh exatamente o mesmo caso.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor vtrx » 27 Fev 2010 15:54

Voce está 'gerando' esse 'sample' ou voce esta 'tocando' uma sequencia de bytes?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor proex » 27 Fev 2010 18:22

Vonnilmam meu garoto, a técnica é a seguinte: em vez de vc amostrar 1 segundo da senoide, amostre somente 1 ciclo dela e faça um loop para ficar reproduzindo-a pelo tempo que desejar.

Assim vc economiza memoria e pode usa essa memoria para guardar os outros ciclos, das outras frequencias.

Sua memoria terá amostras de 1 ciclo de cada frequencia que desejar, o que não é muito.

.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor Vonnilmam » 27 Fev 2010 20:08

Em relação a senoide eu tô quase entendendo (vou testar na prática e posto o resultado) agora meus amigos eu tô "nervoso" e vou até o final, eu desejo aprender como fazer isso da forma correta.

Se eu entendi, um ciclo de onda correponderia (isso para o caso de uma senoide) suponhamos a 1/4 dessa onda, ou seja, se minha tabela tiver 256 steps (uma senoide completa), eu necessitaria apenas de 1/4 desta tabela para simular a onda inteira correto, (os 64 primeiros steps)?

Será que eu entendi direito o proex?

Ou será que vc quiz dizer que bastaria eu pegar um ciclo (traduzindo melhor um byte desta tabela de forma que eu faria a amostra na frequencia desejada como por ex.: 440hz e aí só pegaria o primeiro byte? e depois faria outro sample em outra frequencia por ex.: 446, 131 e aí também só pegaria o primeiro byte?...meu amigo confesso que não consegui processar a dica...

Então amigo VTRX, eu estou pegando uma amostra criada através de um SAMPLE, ex.: ligo no PC um instrumento musical, tipo um acordion e toco a nota LA 440hz gravando no formato PCM...entendeu...o que eu ainda não consegui compreender é como os caras desenvolveram a técnica para apartir de uma wave gerar diversas frequencias....uai,




Bom e como eu faço para definir um ciclo em relação a um wave qualquer como por exemplo uma amostra de um som de acordeon?





caramba proex...eu tô quase "sacando" a coisa, só peço que tenham paciência comigo...

olha só junior! Hoje eu iniciei a nova versão da bateria eletrônica baseada em wave table, esta ficando chiqui, apesar de o sample rate ser de 22050hz em 8 bits...agora estou utilizando um picF877a e as waves estou guardando numa eprom....
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor vtrx » 27 Fev 2010 21:15

toco a nota LA 440hz gravando no formato PCM...

Então,não sei como sua rotina ta lendo isso,mas se usar o padrão wav fica fácil escolher a frequencia.
Veja nos bytes 24,25,26 e 27 do arquivo wav que voce gravou,ficam a frequencia a ser tocada(velocidade),por exemplo num arquivo de 44.100Khz,voce encontrará AC 44 00 00.
Alterando esses bytes,voce poderá gerar qualquer frequencia com o mesmo arquivo,só tendo que alterar o tempo de leitura pois a duração do sample vai mudar.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor fabim » 28 Fev 2010 00:23

Van hellssing.. Xover se entendi..

Porraexemplo eu quero reproduzir 440hz por 1 segundo ?
Quando falamos em frequencia, nós falamos em ciclos de 360° por segundo.
440hz equivale o deltaT de 360° medido ou seja.

Passou de zero vai a VP+ votou a zero
de zero foi para VP- voltou a zero.

Observando esse ponto, podemos enxergar a senoide como sendo uma laranja "odeio maçã" cortada ao meio, e a parte de baixa deslocada para direita..

hehehe. To de sacanagem, não resisti, desculpa...


Bom, vamos lá.

1/T = 440 hz.
Sua tabela de conseno e ant coseno para gerar a senoide tem quantas amostras ? 128 ?.
Quer manter essas 128 amostras, porem variar a frequencia ?
óiz que da hora.

O Putex tem uma tabela de seno/ant coseno = 128 amostras.
Ele fez um loop com um sample rate de 8khz.. Qual é a frequencia resultante ?

1/8000 * 128 = 0.016mS
Sabemos que, para tabela de 128 pontos ser mostrada demora exatamente 16mS. Esta tabela é o ciclo completo de 360°.
e a velocidade de amostragem é 8khz, ou uma amostra a cada 1/8000... bla bla bla

Então qual é a frequencia resultante ?
1S/0.016 = 62,5hz..........


Agora eu quero fazer o seguinte. Aumentar o sample rate para 44.1khz e manter os mesmos 62,5hz de frequencia resultante...

então como vai ficar ?

Bom pra começar eu sei que a tabela tem que ser amostrada dentro de 16mS... e que eu tenho 128 amostras pra fazer..

em 44.1khz, quantas amostras cabem dentro de 16ms ?

1/44.1khz = 2.2675736961451247165532879818594e-5
ou seja o tempo entre amostras é de
0,000 022 675 segundo... 22,675uS+/-

prestenção agora..

0.016 / 2.2675736961451247165532879818594e-5 = 705.60000000000000000000000000013 amostras.

705.6 / 128 = 5.5125 << ta vendo esse valor aqui !!!

Ele quer dizer que.
O tempo que vai demorar pra você amostrar entre um byte e outro da tabela é de 5.5125 * 2.2675736961451247165532879818594e-5 que * 128 amostras da 0.016 Segundo, que 1 / por 0.016 que tem 128 amostras de coseno e ant coseno que dentro de 1 segundo vai ser a frequencia final , de exatamente 62,5hz...

Agora, resumindo.. Quanto maior o sample rate, maior a frequencia SENOIDAL que você vai conseguir amostrar, SENOIDAL PURA, sem ficar pulando byte de amostragem.

Para uma tabela com 128 casas, e um sample rate de 44.1khz, qual a máxima frequencia que você pode conseguir ?
Facil..

1/(128*(1/44100) ) = ciclos de 360° com 128 amostras.

= Maxima frequencia perfeitinha de 344.53125hz...

Bom, ja viu que uma tabela com 128 valores pra 44100hz num chega nos seus 440hz do exemplo !! 2 opções aumenta pra 96hz 128khz ou 192khz...rs
Ou, tu faz a reversa dos calculos lógicos que eu passei, e veja quantas amostras vai servir pro que você quer pra uma tabela de coseno e ant coseno..

mimimi...
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor msamsoniuk » 28 Fev 2010 04:04

complicacao fabim! :)

eu diria que vc tem q definir uma taxa de amostragem fixa e um tamanho fixo para a wave table, dae fechou. chutando por exemplo, uma taxa de amostragem de 44.1KHz e uma wave table de 44100 amostras (para facilitar as contas).

para gerar 1Hz:

Código: Selecionar todos
for(i=0;;i++) saida = table[i%44100];


a conta eh meio obvia, o valor de i incrementa indefinidamente, mas eh limitado na verdade a um valor entre 0 e 44099. se a tabela contem uma senoide, vc tem 1Hz na saida.

para gerar 2Hz:

Código: Selecionar todos
for(i;;i++) saida = table[(i*2)%44100];


aqui eh facil ver que ele varre a tabela de 2 em 2 valores, assim a contagem entre 0 e 44099 varre a tabela 2x, gerando entao 2Hz na saida.

e assim vai. provavelmente o limite eh 1/4 da frequencia de amostragem, pq vc precisa gera pelo menos a sequencia 0,+A,0,-A para ter a senoide completa. genericamente temos:

Código: Selecionar todos
for(i;;i++) saida = table[(i*f)%s];


onde f eh a frequencia e s a taxa de amostragem e tamanho da wave table.

um problema disso eh o rollover de i: quando o valor de i voltar a zero, a divisao nao eh de 44100 redondo e isso gera um segmento truncado. entao na pratica o melhor eh adotar wave tables transparentes a rollover, ou seja, com 256 amostras:

Código: Selecionar todos
for(i=0;;i++) saida = table[(unsigned char)i];


ou com 65536 amostras:

Código: Selecionar todos
for(i=0;;i++) saida = table[(unsigned short)i];


de modo que vc nao se preocupa com o rollover da wave table: unsigned char trunca para 8 bits o indice e unsigned short para 16 bits. obviamente, quanto maior a wave table utilizada, maior a qualidade do audio na saida. vc pode inclusive gerar wave tables em qq potencia de 2:

Código: Selecionar todos
for(i=0;;i++) saida = table[i&(s-1)];


onde s eh o tamanho da wave table.

porem precisa ajustar as frequencias. imaginando o primeiro caso, com 256 entradas, para gerar uma senoide de 1Hz com taxa de amostragem de 44.1KHz temos q repetir cada elemento da tabela umas 172x, o q eh feito com o seguinte algoritmo:

Código: Selecionar todos
for(i=0;;i++) saida = table[(unsigned char)((i*256)/44100)];


se vc fizer a simulacao disso, vai ver que essa conta faz com que a varredura da tabela varie de 0 a 255 no intervalo de 0 a 44099 amostras. quando entra a amostra 44100 (referente ao proximo segundo de audio), o indice eh zero e portanto a varredura recomeca, gerando exatamente 1Hz.

para gerar 2Hz, basta fazer o mesmo ajuste que fizemos lah em cima:

Código: Selecionar todos
for(i=0;;i++) saida = table[(unsigned char)((i*256*2)/44100)];


e assim temos genericamente:

Código: Selecionar todos
for(i=0;;i++) saida = table[(unsigned char)((i*256*f)/s)];


onde s eh a taxa de amostragem fixa do DAC e f a frequencia que vc quer gerar. nesse caso, a wavetable esta com 256 entradas. para 65536 entradas fica:

Código: Selecionar todos
for(i=0;;i++) saida = table[(unsigned short)((i*65536*f)/s)];


e para uma wavetable generica de tamanho w = 2^n:

Código: Selecionar todos
for(i=0;;i++) saida = table[((i*w*f)/s)&(w-1)];


isso deduzindo intuitivamente o negocio... detalhe que jah discutimos tudo isso em varios posts anteriores e esta ficando repetitivo o assunto! :)

lembro que a solucao para fazer o negocio funcionar polifonico (canais de saida[0] a saida[n]), com varias senoides em frequencias diferentes (frequencias f[0] a f[n]), mas mesma taxa de amostragem fixa (44.1KHz, por ex) era:

Código: Selecionar todos
interrupcao_timer_44k1hz()
{
  saida[0] = table[(unsigned char)((i*256*f[0])/44100)];
  ...
  saida[n] = table[(unsigned char)((i*256*f[n])/44100)];
  mixer(saida[0], ... , saida[n]);
  i++;
}


com isso ae vc sincroniza todas as senoides de f[n] diferentes na mesma taxa de amostragem e com isso vc consegue mixar elas. se forem instrumentos diferentes, eh soh ter tables diferentes para cada saida. outra coisa importante: o algoritmo em si nao encherga problemas com frequencias quebradas, mas isso requer ponto flutuante. por exemplo, se f[n] = 123.45, ele faz i*256*f/44100 tudo em ponto flutuante e no final trunca para inteiro para usar de offset no array... eh uma **** conta e provavelmente nao dah para fazer de saida num pic. eu recomendaria testar isso num PC antes, ver todos os detalhes e limitacoes, otimizar tudo ao maximo e soh entao sair procurar um processador adequado para isso. outro detalhe eh que o problema do rollover retorna (eh soh fazer a contarada que vc percebe o problema). uma solucao eh partir para ponto flutuante ou eliminar a possibilidade usando unsigned long: a 44.1KHz vc pode gerar um timestamp unico para 27 horas continuas de audio sem rollover. se vc precisa de mais, eh soh partir para o long long e com isso vc mantem continuidade por 1 milhao de anos! :)

tinha tb um post ainda com as discussoes variadas ae do mixer... tem dois tipos de mixagem q funcionam, um ideal para audio (nao tem escala automatica, portanto nao tem distorcao) e outro ideal para teleconferencia (tem escala automatica e gera distorcao).
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor fabim » 28 Fev 2010 07:31

complicado é você tchelo.

Eu só expliquei pra ele o que ele queria.
Utilizando-se uma tabela de amostras, poder gerar qualquer frequencia, em qualquer sample rate.
Tu escreveu um livro, e não disse nada...rsrss

Abraços
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor proex » 28 Fev 2010 08:28

Putzgrila, ninguém entendeu nada o que eu disse.

Uma senóide é formada pelo semiciclo positivo e semiciclo negativo.
Um som contínuo dessa senóide é apenas a repetição desses dois semiciclos.
Então não há necessidade se criar uma tabela de Wave com 1 segundo de duração.

Basta criar uma tabela apenas com o semiciclo positivo e o semiciclo negativo e reproduzir isso pelo tempo que achar necessário.

Nessa tabela temos que definir um ponteiro de inicio e um ponteiro de fim.
Quando a reprodução chegar ao fim, fazemos um Loop para o inicio. Essa funçao fica sendo executada enquanto a tecla ficar pressionada.

Ha, mas agora eu quero uma frequencia de 61,89Hz.

Então crie uma tabela com apenas o semiciclo positivo e o semiciclo negativo dessa frequencia e crie uma função nova para reproduzir ela, com seus respectivos ponteiros de inicio e fim.

Ha, mas agora eu quero uma frequencia de 72,45Hz.

Então crie uma tabela com apenas o semiciclo positivo e o semiciclo negativo dessa frequencia e crie uma função nova para reproduzir ela, com seus respectivos ponteiros de inicio e fim.

E assim sucessivamente para as outras frequencias.
Repetindo, o Sampling Rate continua fixo, o que muda é o tamanho da tabela em função da frequencia.

A vantagem desse metodo é que exige pouca memoria para as tabelas Wave.

Se vc estiver pensando em fazer um sintetizador com 88 teclas, vc precisará de 88 tabelas, cada uma contendo apenas o semiciclo positivo e semiciclo negativo de cada frequencia.

Basicamente é assim que os teclados profissionais trabalham mas lembre-se, essa é apenas a parte de geração de som, depois disso vem a parte de filtros e depois a parte dos geradores de envelope.

.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor vtrx » 28 Fev 2010 12:01

Se voce vai fazer uma bateria eletronica com efeitos de teclado e tals,estude e use o YM3812 ou YM2413(equivalente UM3567).
Vai te dar o mesmo trabalho para aprender a programar mas com resultado profissional,um16F628 é mais que suficiente.
Se pretende usar sample garvados,acho que não ha nessecidade de gerar senoides.
Agora se prentende apenas estudar a geração das senoides e afins então desconsidere oque citei.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor Vonnilmam » 28 Fev 2010 14:49

oi a todos,

meu amigo vtrx, o objetivo deste post é entender como gerar o espéctro de frequencias musicais (com precisão) baseado em "WAVW TABLES"!

Essa é na minha opnião uma técnica muito interessante!

Estamos colocando em questão o tratamento de uma senoide, porém essa regra pode valer para ambos os casos (me corrijam se eu estiver errado).

MEUS AMIGOS: Eu entendi, mas não compreendi, ainda!

A idéia do Marcelo é interessante, quando diz em utilizar ponto flutuante, agora vamos pensar no "HARDWARE" do negócio: Soponhando que eu consegui chegar numa formula ideal e correta afim de gerar 440hz com um sample rate de 44.100hz em 8bits "por enquanto", como seria a idéia do hardware que iria "MASTIGAR" o resultado do calculo, ex.: Se eu quero gerar uma frequencia (onda quadrada) de 10khz apartir de um clock de 1mhz eu teria que ter um divisor "HARDWARE" que receberia o valor de divisão "QUE FOI FEITO NO SOFTWARE (1mhz / 100 = 10khz)".....entendido!

Agora vamos falar em ponto flutuante (EU ACHO QUE A COISA VAI MESMO PENDER PARA ESSE LADO), imagine que para gerar uma frequancia de 446,82hz com sample rate de 44.100hz seria necessário "IPOTETICAMENTE" um resultado que originaria no seguinte numero: 65,07 esse número seria o resultante da "calculeira" realizada pelo SOFTWARE, pois bem, como é que eu consigo dividir um numero quebrado, sendo que um divisor só divide numeros inteiros...

Nooooosa, minha cabeça tá pegando fogo....caramba....

Olha só, a todos os colegas que estiverem interessados nas waves tables que eu utilizei para construir a bateria eletrônica, eu deixo a disposição, ok...eu extraí essas waves de um órgão eletrônico da yamaha, as amostras são feitas em 8bits com sampler de 22.050hz - mono....é uma forma de retribuir e de uma certa forma incentivar também....

Em relação a usar um pic ou outro mcu, não é o problema no momento, o problema é que eu desejo entender como essa birosca de técnica funciona, porque eu quero coloca-la em pratica...

Em relação a utilizar c.is dedicados, isso eu já utilizo atualmente, o detalhe da questão é saber como fazer...isso é coisa de doido, e eu tô ficando véio e ranzinza e incafifei com esse trem...

O proex, como eu gero essas senoides para cada frequencia?

Sabe eu comprei um programa que gerar senoides e também qualquer outro tipo de wave, quer seja pre-gravada ou captura externa, o interessante desse programa é que eu gera o formato PCM ou WAV mantendo o começo e o final sincronizados, entendeu?...porém ele faz a amostras em tempos de 1 segundo!

Os programas que utilizao são: www.aconas.com é um excelente editor e conversor wav pcm wav, http://andybridle.co.uk/adsyn.aspx que é um ótimo editor e também capturados de amostras, esse ultimo permite vc gerar waves com as notas já inseridas...



QUEM DESEJAR AS WAVES ME ENVIE UM EMAIL...OK,


Muito obrigado....
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor fabim » 01 Mar 2010 08:14

nossa marcelo, depois dessa me perdoa cara..

Eu você e o putex, explicamos algumas coisas, que estão certas de certas formas, e poderiam ser genericas e atender o menino, mesmo assim ele ainda não entendeu.
Vonnilman, o seu problema é que você não esta sabendo exatamente o que quer, e como deve perguntar , para poder entender..

Veja o qu eo putex explicou... ele só não explicou direitinho que não precisa gerar uma tabela de senoide pra cada frequencia. é apenas uma tabela, e universal,,, variando o tempo entre pontos desta tabela, você tambem varia a frequencia, que tambem mexe no sample rate, e etc...

Imagina por exemplo um som gravado por 1 segundo em 44.1.

Depois você vai exportar para 22.05...@@@

PErai, bom, se estou cortando o sample pelo menio, então o som era pra aumentar para 1 segundo @@@@, e a voz ficar destorcida, mais que extranho perde a qualidade mais o tempo de som continua fiel..

Claro,
imagina 44100 amostras de 16 bits.
Agora vai exportar para 22050 amostras,
você, neste caso, vai apenas pular uma amostra...

sim, isso mesmo.

Tabela22050[m] = tabela44100[n+2];
m = n;

Isso mesmo, como o som é em função de amostras, cuja fourrier dizia que 2 amostras por uma frequencia, você dessa forma irá perder frequencias altas...

Agora veja o seguinte. Neste caso, estamos falando de sinais complexos de tensão no tempo, que é o misto de varios sons, instrumentos, vozes, etc.

No seu caso, em explicito. Seria geração de senoides... que geram os sons claro..
Leia novamente o que o putex explicou lá encima..

imagina uma tabela com 20 valores!!!!
10 para semi + e 10 para semi - .

quero tipo fazer um gerador senoidal pra sei lá o que..

como alternar uma tabela enorme para poder mudar as frequencias..?

Como eu ja disse lá encima, não precisa disso.
basta determinar um tempo de scan dessa tabela, e usar um loop infinito de um ponteiro, que quando chegar no byte 19 ele volte para o 0.

lembra da conta ?
quero gerar 440hz.
1/440 = 0,0022727272727272727272727272727273
tenho 20 amostras pra fazer ai dentro desse resultado.
Então qual o tempo de scan de amostragem das amostras da tabela da tabela ?
0,0022727272727272727272727272727273 / 20 = 1,1363636363636363636363636363636e-4

Intão agora, tipo. putz fabim até ai entendi, mais qual seria o sample rate dessa bagaça ? 440*20 = 8800..


ááá fabim, tendi por tese.
Só que eu estou usando um DSP, com um DAC I2C, e setei o sample pra stereo em 44.1, e usando esse sample constante, eu quero ir mandando os bytes para gerar as frequencias.

Sim, sem problemas... é a mesma técnica, basta você ler o outro post meu, e complementar com esse.....

Cabo a tinta, da licensa que vou tomar café e comer pão com marba
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor proex » 01 Mar 2010 08:20

Nao Fabim o que eu disse é exatamente isso:

ELE TEM SIM QUE TER UMA TABELA PARA CADA FREQUENCIA, MANTENDO O SAMPLING FIXO.

SERIAM TABELAS CURTAS, CONTENDO APENAS O SEMICICLO POSITIVO E NEGATIVO.

Assim não precisa fazer calculeira nenhuma, basta ler a tabela correspondente á tecla que foi acionada.

.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor msamsoniuk » 01 Mar 2010 09:48

ueh, para fazer um gerador de 1 a 11025Hz vc vai ter 11025 tabelas? nao tem nexo quando vc pode ter 1 tabela e apenas mudar o sistema de varredura... e vc precisa ter a onda inteira, visto que nem sempre os semiciclos sao completamente simetricos.

proex escreveu:Nao Fabim o que eu disse é exatamente isso:

ELE TEM SIM QUE TER UMA TABELA PARA CADA FREQUENCIA, MANTENDO O SAMPLING FIXO.

SERIAM TABELAS CURTAS, CONTENDO APENAS O SEMICICLO POSITIVO E NEGATIVO.

Assim não precisa fazer calculeira nenhuma, basta ler a tabela correspondente á tecla que foi acionada.

.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x