Autor Beitrag
sepi12345
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 20.10.10 18:34 
Ich würde gerne Signale des Mikrofons stichprobenartig aufnehmen und diese dann in eine Liste speichern.
Diese Werte sollten dann zb. mit der Fourier-Transformation in eine Frequenz umgewandelt werden.
Ich brauche soquasi die Daten die zb. Audacity anzeigt.
Mein Problem besteht jetzt nicht in der Transformation sondern, dass ich eben nicht an die Werte des Mikrofons komme.
Ich habe bereits einige Lösungsansätze probiert:
1. bass.dll für .Net:
Laut dem Delphi-Forum sollte dies problemlos funktionieren.. allerdings finde ich keine wirkliche Anleitung. die Dokumentation ist auch eher dürftig.
Hier nun mein eigener Ansatz:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public String getActTon()
{
    float value=0;
    BASS_RECORDINFO info = Bass.BASS_RecordGetInfo();
    
    return Convert.ToString(info.freq);   //dies sollte meiner Meinung nach sowieso nicht funktionieren (es gibt keine momentane Frequenz...)
}

Habe bereits probiert über diesen "ref value" die daten herauszubekommen.
Bass.BASS_ChannelGetAttribute(stream,BASSAttribute.BASS_ATTRIB_VOL,ref value);
Beide Lösungen liefern immer 0 zurück..
2. über die winmm.dll: (habe dieses bsp. im internet gefunden www.codeproject.com/...video/cswavrec.aspx)
hier ist der Code leider etwas komplexer und besteht aus Ein- und Ausgabe..
Meiner Ansicht nach ist dies der wichtige Punkt:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
private IntPtr m_WaveIn;
private WaveNative.WaveHdr m_Header;
public bool Record()
{
  lock(this)
  {
                m_RecordEvent.Reset();
                m_Recording = WaveNative.waveInAddBuffer(m_WaveIn, ref m_Header, Marshal.SizeOf(m_Header)) == WaveNative.MMSYSERR_NOERROR;
                if (mainForm != null)
                {
                    mainForm.updateLastBuffer(m_WaveIn.ToInt32()); //hier versuche ich die Daten vom Eingang zu holen allerdings kommt hier immer der selbe Wert zurück
                }
                return m_Recording;
  }
}

bei diesem Beispiel funktioniert tadellos.. also er lest die Daten ein und gibt sie auf dem Lautsprecher wieder aus..

Ich hoffe, ich habe mein Problem gut erklärt und hoffe auf produktive Antworten.
Jegliche Art von Lösung ist erwünscht ;)

Lg

Moderiert von user profile iconKha: C#-Tags hinzugefügt
sepi12345 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 21.10.10 15:26 
Bin draufgekommen, dass die Daten im Header stehen (also m_HeaderData) dies ist ein byte[] :D
werd mich nochmal mal melden falls ich probleme habe..