Salve ragazzi,
mi serviva una dll che eseguiva un suono .wav modificandone la frequenza.
Quindi scartato SoundPlayer perchè non ha dei parametri per la frequenza ho utilizzato device+buffer.
Provando con diversi file .wav però non riesco a sentire il suono impostato
Provate voi richiamando la funzione s_play(filename, frequenza) perchè io non riesco a capire quale sia il problema.
PS: lasciate perdere i tipi di variabile in entrata e uscita, mi servono così.
codice:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Media; //solo per utilizzo prova soundplayer using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.DirectSound; using System.Runtime.InteropServices; //per dllimport //DLL namespace SoundFreq { public class SFclass { //Globali public Device sounddevice; public SecondaryBuffer ssound; [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetDesktopWindow(); public double s_play(String filename, Double freq) { sounddevice = new Device(); sounddevice.SetCooperativeLevel(GetDesktopWindow(), CooperativeLevel.Normal); //OK mettere this come primo argomento se si è su un windows form BufferDescription description = new BufferDescription(); description.ControlFrequency = true; //per modificare frequenza description.ControlPositionNotify = true; description.ControlEffects = false; ssound = new SecondaryBuffer(filename, description, sounddevice); //File trovato ssound.Frequency = System.Convert.ToInt32(freq); //devo passare per forza di cose un double ssound.SetCurrentPosition(0); ssound.Play(0, BufferPlayFlags.Looping); //Questa qui sotto funge /* SoundPlayer s; s = new SoundPlayer(filename); //s.Load(); s.Play(); */ //------ return 1; } public void s_stop() { ssound.Stop(); } public void s_set_freq(Double freq) { ssound.Frequency = System.Convert.ToInt32(freq); } } }
eppure non mi pare di aver dimenticato nulla...

Rispondi quotando