2016-03-29 7 views
0

This filter hat diese beiden Funktionen:Wie kann ich die Prozessfunktion dieses C# Bandpassfilters aufrufen?

public BandpassFilter(int sampleRate, double frequency) //line 248 

public float Process(float input) //line 155 

Also ich ein Testskript thusly geschrieben haben:

sin = new float[44100]; 
    for (var i = 0; i < 44100; ++i) 
    { 
     sin[i] = Mathf.Sin(i/100); 
    } 

    BiQuad1.BandpassFilter(44100, 440); 

    for ( i = 0; i < 44100; ++i) 
    { 
     sin[i] = BiQuad1.Process(sin[i]); 
    } 

Alles läuft gut, bis ich versuche, die BiQuad1.Process Funktion zu nutzen, es sagt einen Fehler:

Prozess ist kein Mitglied von BiQuad1,

und am Ende der Schleife erneut ein Fehler Warnung:

Aktiva/BiQuad1.cs (17,1): Fehler CS1529: Eine using-Klausel müssen alle anderen Namespace-Elemente außer extern alias Erklärungen

voraus vielleicht muss ich auch die Funktionen GaindB und BiQuad void verwenden?

+0

Ihre using-Klausel wird höchstwahrscheinlich NACH Ihrer Namespace-Deklaration platziert. Platziere es am Anfang deiner Datei – Eminem

+0

Betrachte die Quelle, sollte das nicht sein 'var filter = new BiQuad1.BandpassFilter (44100, 440);', dann 'sin [i] = filter.Process (sin [i]); '? – entropic

+0

Nicht sicher, was BiQuad1 auch ist ... es erscheint nicht als Klasse oder Namespace in der referenzierten .cs-Datei ... – T3am5hark

Antwort

1

Sie versuchen, eine Instanzmethode als statische Klassenmethode aufzurufen. Sie müssen eine Instanz eines Filters erstellen und seine Prozessmethode wie folgt aufrufen:

sin = new float[44100]; 
    for (var i = 0; i < 44100; ++i) 
    { 
     sin[i] = Mathf.Sin(i/100); 
    } 

    var bandpass = new BandpassFilter(44100, 440); 

    for ( i = 0; i < 44100; ++i) 
    { 
     sin[i] = bandpass.Process(sin[i]); 
    } 
Verwandte Themen