• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Borland builder c++ sndPlaySound

Object Storage Arubacloud
0 głosów
712 wizyt
pytanie zadane 5 marca 2017 w C i C++ przez liledusty Obywatel (1,430 p.)
Witam, mam problem z funkcją sndPlaySound. Mam zaimplementowaną bibliotekę mmsystem oraz ścieżka do pliku wav jest w 100% poprawna. Przy próbie wywołania dźwięku odtwarza się dźwięk systemowy. Wiecie w czym może tkwić błąd?

1 odpowiedź

0 głosów
odpowiedź 5 marca 2017 przez j23 Mędrzec (194,920 p.)
wybrane 5 marca 2017 przez liledusty
 
Najlepsza

Co to znaczy, że masz "zaimplementowaną bibliotekę mmsystem"? mmsystem to biblioteka systemowa, więc jeśli piszesz na windowsa, to ona po prostu tam jest. Wystarczy załączyć odpowiedni nagłówek i dołączyć odpowiednią bibliotekę importów.

Co do problemu: pokaż kod i podaj format audio pliku wav.

 

komentarz 5 marca 2017 przez liledusty Obywatel (1,430 p.)

Jeśli chodzi o bibliotekę to złego słowa użyłem po protsu chodziło mi o #include "mmsystem.h".

Co do kodu: 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "mmsystem.h"

#include "Unit6.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm6 *Form6;
//---------------------------------------------------------------------------
__fastcall TForm6::TForm6(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm6::FormClose(TObject *Sender, TCloseAction &Action)
{
          Application->Terminate();
}
//---------------------------------------------------------------------------
void tclick()
{



}

void __fastcall TForm6::t1Click(TObject *Sender)
{
                  sndPlaySound("snd/ak47.wav", SND_ASYNC);
}
//-----------------------------------------------------

 

komentarz 5 marca 2017 przez j23 Mędrzec (194,920 p.)

W windowsowych ścieżkach backslashów powinieneś używać, czyli jeśli już, to: "snd\\ak47.wav". Ze ścieżkami względnymi różnie bywa. Sprawdź z pełną ścieżką.

 

p.s. nie podałeś formatu audio. 

komentarz 5 marca 2017 przez liledusty Obywatel (1,430 p.)
Niestety nic nie pomogło, podanie pełnej ścieżki również nie daje efektów. Co do formatu, przecież podałem ak47.WAV.
komentarz 5 marca 2017 przez j23 Mędrzec (194,920 p.)

Podałeś nazwę pliku z rozszerzeniem .wav, co mówi mi jedynie tyle, że jest to plik audio. Ten format pliku może zawierać dźwięk zakodowany w różny sposób, od PCM po mp3. W przypadku PCM może mieć różną rozdzielczość (8, 16, 24 itd.) i częstotliwość próbkowania. I o to właśnie się pytam. A pytam się dlatego, bo sndPlaySound to dość stara funkcja z czasów Win95 (jeśli nie Win 3.11) i być może nie radzi sobie z nowszymi formatami audio.

komentarz 5 marca 2017 przez liledusty Obywatel (1,430 p.)
Już rozumiem. Przed chwilą pobrałem dźwięk z 12 odcinka c++ Pana Zelenta i działa.

Jest jakaś inna podobna funkcja do sndPlaySound która obsługuje nowsze częstotliwości próbkowania?
komentarz 5 marca 2017 przez j23 Mędrzec (194,920 p.)
Podejrzewam, że to nie chodzi o częstotliwość próbkowania, tylko o rozdzielczość lub kodowanie. Najprościej będzie jeśli przekonwertujesz plik do standardowego formatu, czyli PCM/16-bits/44.1kHz. Funkcja powinna bez problemu odtworzyć taki format.

Do bardziej zaawansowanego odtwarzania plików audio możesz użyć DirectShow, ale jeśli jesteś początkujący, to to rozwiązanie może być trochę za skomplikowane. Możesz zawsze użyć jakichś zewnętrznych bibliotek audio, np. BASS - całkiem prosta w użyciu.
komentarz 5 marca 2017 przez liledusty Obywatel (1,430 p.)
Dziękuję za wyjaśnienie mi wszystkiego i za poświęcony czas. Potem to wszystko posprawdzam. Pozdrawiam

Podobne pytania

0 głosów
3 odpowiedzi 1,329 wizyt
pytanie zadane 30 sierpnia 2015 w C i C++ przez gniewko717 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 69 wizyt
+1 głos
2 odpowiedzi 208 wizyt

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...