- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 241

Thema: wav Dateien: Programieren von Wiedergabe und Aufnahme

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    HaWe
    Gast
    so, ich habe mal auf nem Arduino die Rauschglättung simuliert (geht dort einfacher mit Grafik etc):

    Simulations-Code (automatische Erkennung der Rauschbandbreite) :

    Code:
    // ver 0005
    
    void arrayinit(int16_t * array, int16_t arrlen) {
      char     sbuf[128];
      int16_t  bias, minr, maxr, baseline;
    
    
      // simulated noisy word-command or signal
      for (int i=0; i<arrlen; ++i) {    
        array[i] = 128 + random(10)- 5;  // simulated noise  +/- 5;      
      }
      for (int i=33; i<arrlen-101; ++i) {  // simulated word/signal +/- 100
        array[i] = 128 + random(200) - 100;      
      }
    
      curlf();
      sprintf(sbuf, "arrayinit[0] vorher %d ", array[0] );  
      Serial.println(sbuf);
      lcdprint(sbuf);
      
      
    
      // calculate baseline from last 100 array cells:
    
      //init
      baseline=array[arrlen-90];
      minr=array[arrlen-90]-1;
      maxr=array[arrlen-90]+1;
      
      // auto-adjust:  
      for (int i=arrlen-100; i<arrlen; ++i) {    
        // mean baseline
        baseline = round ( ( 0.5*(float)array[i]  + 0.5*(float)baseline )) ;
    
        // smoothed out max noise
        if (array[i] >= baseline) maxr = round ( ( 0.8*(float)array[i]  + 0.2*(float)maxr )) ;
    
        // smoothed out min noise
        if (array[i] <= baseline) minr = round ( ( 0.8*(float)array[i]  + 0.2*(float)minr ))  ;       
      }
     
      bias =  max(baseline-minr-2, maxr+2-baseline)  ;  // 
      
      curlf();
      sprintf(sbuf, "baseline %d ", baseline );  
      Serial.println(sbuf);
      lcdprint(sbuf);
    
      curlf();
      sprintf(sbuf, "bias %d ", bias );  
      Serial.println(sbuf);
      lcdprint(sbuf);
    
    
      // mit /ohne Rauschglättung (auskommentieren)
     
      for (int i=0; i<arrlen; ++i) {
         if( (array[i]>baseline ) && (array[i] <= baseline + bias)) array[i] = baseline ; // little higher value => drop to baseline
         else
         if( (array[i]<baseline ) && (array[i] >= baseline - bias)) array[i] = baseline ; // little lower value => rise to baseline
      }
      
      
      
      curlf();
      sprintf(sbuf, "arrayinit[0] nachher %d ", array[0] );  
      lcdprint(sbuf);
      Serial.println(sbuf);
     
    
    }
    klappt!

    leider ist das Bildhochladen hier im Forum extremst kompliziert und vom Speicherplatz zu eingeschränkt,
    ich habe es daher hier zum direkten Vergleich hochgeladen:

    http://www.mindstormsforum.de/viewto...p=69409#p69409

    - - - Aktualisiert - - -

    deine lib habe ich jetzt noch etwas in ifndef eingekapselt, um doppeltes Linken zu vermeiden:


    Code:
    #ifndef __DIASOUND_HPP__
    #define __DIASOUND_HPP__
    
    
    
    /// dein diaSound-lib Code
    
    
    
    #endif
    Geändert von HaWe (05.06.2016 um 18:43 Uhr)

Ähnliche Themen

  1. Video Aufnahme (+12std.)
    Von highdef im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 8
    Letzter Beitrag: 03.06.2011, 11:08
  2. led ein/aus programieren
    Von anthony im Forum PIC Controller
    Antworten: 6
    Letzter Beitrag: 15.07.2008, 18:44
  3. hex-dateien in bin-dateien umwandeln
    Von roboterheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 02.10.2007, 21:25
  4. Richtiges Drehen einer Flasche/Dose zur Aufnahme
    Von ähM_Key im Forum Mechanik
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 16:43
  5. Automatische Audio-Aufnahme
    Von the_Ghost666 im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 11.09.2005, 21:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests