Sound Player a zasoby (odtwarzanie dźwięku w funkcji)

Odpowiedz Nowy wątek
2014-12-12 20:18
0

Cześć błagam o pomoc, bo już kompletnie nie mam pomysłu jak to rozwiązać.

Chodzi konkretnie o odtwarzanie dźwięku w aplikacji, korzystając z zasobów.
Odtwarzać chce dźwięki .wav jednak problem jest gdy chce to robić w funkcji, której jako parametr podaje nazwę odtwarzanego pliku.

W przypadku funkcji ZlaOdp sprawa jest prosta. Ustawiam strumień na odpowiedni zasób - w tym przypadku dźwięk Niestety.wav i wszystko gra jak należy.

 
public void ZlaOdp(string zadanie, string przyklad, string imie, string nazwisko, string badanie)
        {
            player.Stop();
            player.Stream = global::Projekt.Properties.Resources.Niestety;
            player.Load();
            player.Play();
 
          using (StreamWriter writer = new StreamWriter("C://Badania/" + imie + nazwisko +"_" + badanie+".txt", true))
            {
                writer.WriteLine(zadanie + " " + przyklad + "Niepoprawna odpowiedź " + DateTime.Now);
                writer.Close();
            }
            WindowZlaOdp windowzlaodp = new WindowZlaOdp();
            windowzlaodp.ShowDialog();
        }

jednak w innej funkcji chciałabym podawać nazwę pliku jako parametr. Próbowałam tego na wiele sposobów, ale koniecznie chciałabym zrobić przez zasoby, a nie np. przez SoundLocation (nie odtwarza się wtedy na innym komputerze..)
Aktualnie mam napisaną funkcję tak, jednakże co chwilę to zmieniam i już się pogubiłam... Teraz całkiem wywala mi błąd:
The wave header is corrupt

 
 public void Glosnik(string plik)
        {
            dzwiek = "::global.MojaKontrolka.Propertis.Resources." + plik;
            byte[] data = Encoding.ASCII.GetBytes(dzwiek);
            MemoryStream stream = new MemoryStream(data, 0, data.Length);
            stream.Position = 0;
            player.Stream = null;
            player.Stream = stream;
            player.Load();
            player.Play();
        }

Przy takim rozwiązaniu nie wyskakuje błąd, jednak zamiast mojego dźwięku, słychać dźwięk systemowy... :(

 
       public void Glosnik(string plik)
    {
      dzwiek = "global::MojaKontrolka.Properties.Resources." + plik;
      player.Stop();
      assembly = Assembly.GetExecutingAssembly();
      player = new SoundPlayer(assembly.GetManifestResourceStream(dzwiek));
      player.Play();
    }

Nie proszę o pomoc.. ja o nią błagam :)
Ktoś pomoże?

edytowany 1x, ostatnio: dluga92, 2014-12-12 20:19

Pozostało 580 znaków

2014-12-12 20:37
1
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Play(Properties.Resources.Yamaha);
        }
 
        void Play(UnmanagedMemoryStream sound)
        {
            SoundPlayer sp = new SoundPlayer();
            sp.Stream = sound;
            sp.Play();
        }
Dziękuję ślicznie za pomoc! :) Jesteś moim guru :) Teraz działa jak należy. - dluga92 2014-12-12 20:48

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0