bandpass

Salve ragazzi sono nuovo a scrivere qui ma comunque bazico da un bel pò con arduino. Sto lavorando su un duemilanove per creare un mixer professionale semi digitale. Ora invoco il vostro aiuto su come creare un band pass tale k automaticamente arduino agisca da multiplexer tipo equalizzatore. rammendo già che ho sistemato la prima parte di programma affinchè io abbia 8 entrate di cui 4 diitali e 4 analogiche e un uscita ch sarà annessa a apposista scheda per le uscite audio. ma tornando al mio problema principale spero mi potiate aiutare realizzare qualcosa che letto il segnale in entrata lo filtra lo diciamo "aggiusta" e poi lo mette su linea di uscita! GRAZIEEEEEEEEE :) :) ;)

…rammendo già che ho sistemato la prima parte di programma…

Sapevo di programmazione spaghetti like ma questa è la prima volta che sento di programmazione rammendata! :smiley:

Battuta a parte, quello che credo ti serva è un DSP (Digital Signal Processor) che lavori a 44kHz su due canali stereo con almeno 12 bit.

Arduino da solo non credo sia la scelta migliore.

Bhè si mi sono espresso male dicendo che ho rammendato la prima parte del programma comunque seriamente non si ptrebbe creare un qualche sorta di dsp per arduino qualcosa si lite che comunque abbia giusto le finalità di cio che vorrei riuscire a fare? mi appello a voi perché per queste cose non so ancora dove mettere mani o comunque dove trovare le librerie e via dicendo.

Peppe93: Bhè si mi sono espresso male dicendo che ho rammendato la prima parte del programma comunque seriamente non si ptrebbe creare un qualche sorta di dsp per arduino qualcosa si lite che comunque abbia giusto le finalità di cio che vorrei riuscire a fare? mi appello a voi perché per queste cose non so ancora dove mettere mani o comunque dove trovare le librerie e via dicendo.

Forse usando la due riesci a fare qualcosa ma non so a che livello. Arduino è una cosa un DSP un altra (DSP-> Digital Signal Processor) ovvero un altro processore, ci sono dei DsPIC con DSP integato mi pare ma non ne conosco di Atmel ne di tantomeno compatibili con arduino, se non vuoi impararti un nuovo linguaggio, ide e architettura, ti conviene farlo in analogica ma allora diventa davvero dura a livello circuitale :P https://www.google.it/search?q=analog+mixer+schematic&client=opera&hs=0YU&channel=suggest&tbm=isch&tbo=u&source=univ&sa=X&ei=wwT0UbzhI7L74QSe0YGgCQ&ved=0CDQQsAQ&biw=1366&bih=645#facrc=_&imgdii=_&imgrc=OjaX0b3_y0_aVM%3A%3BEhbkI51C_1GVJM%3Bhttp%253A%252F%252Fjoebrown.org.uk%252FLineMixer%252FLineMixerSchematic.PNG%3Bhttp%253A%252F%252Fwww.joebrown.org.uk%252Fwp%252F%253Fp%253D3217%3B913%3B498

A livello hardware, dubito che arduino possa starci dietro … ad esempio, parlando di componenti DSP per audio, questo qui http://www.analog.com/static/imported-files/data_sheets/ADAU1761.pdf “viaggia” a 28/56bit e 50MIPS, e negli esempi per avere un sampling a 48KHz lo cloccano a circa 50MHz …

Altro DSP dedicato per l’audio e’ il “belasigna 250” della on-semi http://www.onsemi.com/pub/Collateral/BELASIGNA250-D.PDF

O anche questo http://www.ti.com/lit/gpn/tms320vc5402 … se dai un’occhiata alla struttura, quasi ti spaventi … “… Three Separate 16-Bit Data Memory Buses and One Program Memory Bus, 40-Bit Arithmetic Logic Unit (ALU), Including a 40-Bit Barrel Shifter and Two Independent 40-Bit Accumulators, 17- ×17-Bit Parallel Multiplier Coupled to a 40-Bit Dedicated Adder for Non-Pipelined Single-Cycle Multiply/Accumulate (MAC) Operation, Compare, Select, and Store Unit (CSSU) for the Add/Compare Selection of the Viterbi Operator, Exponent Encoder to Compute an Exponent Value of a 40-Bit Accumulator Value in a Single Cycle, Two Address Generators With Eight Auxiliary Registers and Two Auxiliary
Register Arithmetic Units (ARAUs), Data Bus With a Bus-Holder Feature , Extended Addressing Mode for 1M ×16-Bit Maximum Addressable External Program Space, 4K x 16-Bit On-Chip ROM, 16K x 16-Bit Dual-Access On-Chip RAM …” eccetera …

Ho come il sospetto che arduino non ci stia dietro … :wink:

Etemenanki: Ho come il sospetto che arduino non ci stia dietro ... ;)

Che brutta notizia mi dai :) Ma come Arduino viene "spacciato" per la soluzione definitiva per tutte le applicazioni e non riesce nemmeno a manipolare un "banale" segnale audio :grin:

p.s. Dentro i dsPIC c'è si un core dsp, però come potenzialità non è nemmeno lontanamente paragonabile ad un vero dsp come servirebbe per questa applicazione. Serve un buon ADC sigma delta multistadio da 16 bit @96ksps e un buon DAC multistadio 16 bit molto veloce per l'acquisizione, manipolazione e riproduzione dei segnali audio, tutte cose che non ci sono dentro Arduino UNO, DUE e nemmeno nel futuristico TRE, però esistono ic specifici per le applicazioni audio, quali mixer e dsp, che si possono controllare via I2C da Arduino che farebbe da elemento di controllo di un hardware esterno relativamente complesso.

:) dopo un paio di orette che sono stato ad aalizzare i vari dsPIC penso che con le mie conoscenze di elettronica potrei riuscire a costruire un bandpass collegato opportunamente a un processore dsPIC30 e quindi avere nel complesso un outmultiplexer. ora xò devo chiedervi un atra cosa ragazzi il dipic v anchesso programmato? ( però in ide in questo caso se non erro). :astonished:

Si che va programmato con MPLABo altri compilatori, ti serve poi un programmatore apposito, e dimentica le librerie di arduino ed i linguaggi simil wiring :D

:~ :~ :~ mi sa che dovro lasciare stare questa visione digitalizzata... nella notte pensavo invece se creassi semplici filtri crossover digitali all'interno? cioe che ad esempio il pin 1 entrata analog o digitale viene filtrato prima e poi mandato in uscita? xò non che taglia completamente suoni high o low ma che diciamo li setta in automatico come se facesse un fade automatico? secondo voi si può fare qualcosa di simile o no? inotre avevo visto cose tio con l'integrato 4051 simili su quello voi come la vedete la possibilità d laorarci? ditemi voi :P :disappointed_relieved:

Peppe.: :~ :~ :~ mi sa che dovro lasciare stare questa visione digitalizzata... nella notte pensavo invece se creassi semplici filtri crossover digitali all'interno?

Se ancora non ti è chiaro Arduino non ha abbastanza potenza di calcolo per manipolare un segnale audio, l'ADC è da solo 10 bit e lavora a 10 ksps, assolutamente inutile per l'audio, non ha un DAC per riprodurre il segnale Audio, i suoi pin sono solo out digitali, non analogici.

mi stai dicendo che tutti i vari progetti audio fatti con arduino che si trovano in rete sono solo delle bufale? vabbe mi sa che ho sbagliato a postare questo mio problema qui.dato che nella sezione in inglese hanno preparato a come ho potuto capire qualche cosa di similare con tanto di librerie dsp solo che purtroppo sn incompetente in lingua :~

Peppe.: dato che nella sezione in inglese hanno preparato a come ho potuto capire qualche cosa di similare con tanto di librerie dsp solo che purtroppo sn incompetente in lingua :~

Link a questo progetto nella sezione Inglese ? Sicuro di non aver travisato la cosa visto che hai problemi con l'inglese ?

nono tranquillo ho letto di un post che da partiva dai post italiani in cui uno chiedeva se il progetto di una libreria dsp fosse finita e poi c'era un re indirizzamento alla parte inglese dove vi erano diversi link. mha vabbe vi ringrazio comunque a tutti per la disponibilità che avete avuto nello spiegarmi queste cose e tutti i vari meandri di arduino per quanto concerne l'audio!!! :) :) :)

http://forum.arduino.cc/index.php?topic=162192.0 comunque qui è dove ho letto quella cosa!

Peppe.: nono tranquillo ho letto di un post che da partiva dai post italiani in cui uno chiedeva se il progetto di una libreria dsp fosse

E infatti hai travisato la cosa, il primo link porta ad una discussione per una libreria che fa la fft, ci puoi realizzare un semplice analizzatore di spettro audio, max 5 khz di banda, ma nulla a che vedere con la manipolazione di un segnale audio. Idem per il secondo link dove la cosa è trasportata sulla DUE dove comunque hai sempre il limite del ADC che non è idoneo per applicazioni audio.

ah okei scusa allora tanto vabbe vi ringrazio davvero tanto per la disponibilità e per le esplicazioni. se v venisse in mente un modo a qualcuno sno sempre aperto a nuove idee. :)

#include<PWM.h>;
void setPwmFrequency(int pin, int divisor) {
  byte mode;
  if(pin == 5 || pin == 6 || pin == 9 || pin == 4) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 64: mode = 0x03; break;
      case 256: mode = 0x04; break;
      case 1024: mode = 0x05; break;
      default: return;
    }
    if(pin == 5 || pin == 6) {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    } else {
      TCCR1B = TCCR1B & 0b11111000 | mode;
    }
  } else if(pin == 3 || pin == 11) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 32: mode = 0x03; break;
      case 64: mode = 0x04; break;
      case 128: mode = 0x05; break;
      case 256: mode = 0x06; break;
      case 1024: mode = 0x7; break;
      default: return;
    }
    TCCR2B = TCCR2B & 0b11111000 | mode;
  }
}

int analogPin_uno = 0;
int analogPin_due = 1;
int analogPin_tre = 2;
int analogPin_qua = 3; 

int val_uno =0;
int val_due =0;
int val_tre =0;
int val_qua =0;

void setup() {
    
    
    pinMode(5 ,INPUT);     // entrate digitali
        
    pinMode(6, INPUT);

    pinMode(4, INPUT);

    pinMode(9 ,INPUT);
    
  
    pinMode(11, OUTPUT);   // pin uscita    

    Serial.begin(9600);

 
}

void loop() {
  
  digitalWrite (4 , HIGH);
  digitalWrite (5 , HIGH);
  digitalWrite (6 , HIGH);  // entrata pwm attiva
  digitalWrite (9 , HIGH); // entrata pwm attiva
  digitalWrite (11, HIGH); // uscita attiva pwm

  val_uno = analogRead(analogPin_uno);
  Serial.println(val_uno);
  
  val_due= analogRead(analogPin_due);
  Serial.println(val_due);

  
  val_tre = analogRead(analogPin_tre);
  Serial.println(val_tre);

  
  val_qua = analogRead(analogPin_qua);
  Serial.println(val_qua);
 

  

     
}

questo è quello che ho scritto io ai fni di avere 4 entrate digitali e 4 analogiche con un ucita che sarà annessa a un secondo hardware creato appositamente per amplificare il suono.
nella prima parte ho scritto una parte di controllo ai fini di far si che le uscite lavorino sempre sulla stessa frequenza in automatico.
accetto consigli e correzioni da voi. :slight_smile: :slight_smile:

Speri di ricevere risposte se proponi il tuo sketch in un altra discussione? Quel sketch non fa minimamente quello che doverebbe fare secondo la descrizione. Per favore spiega precisamente cosa vuoi fare.

Ciao Uwe

ecco visto che hai scritto a tutte e due le parti uwe ora sai che dovrebbe fare e comunque questa e quella che avevo aperto per primo di post.
comunque avevo messo lo schetch solo per sapere se qualcuno mi poteva dare una mano e non che si fa gli inellettuali per far sentire inferiori gli altri.
comunque tornando al progetto io vorrei solo fare un piccolo software per arduino che permetta ai segnali in entratta e in uscita di essere modulati in frequenze senza l’uso di manopole tasti e quant altro. comunque chi è di potere chiuda questo post che e meglio!!!