Witam, borykam się z małym (?) problemem, otóż napisałem taki mini sampler który po naciśnięciu klawiszy odgrywa przypisane im dźwięki. Znajdują się one na dysku komputera oczywiście. Dźwięki przypisałem manualnie w kodzie i wprowadziłem ścieżke do obiektu biblioteki audiere:

AudioDevicePtr audiodevice(OpenDevice());

sound['R'] = OpenSoundEffect(audiodevice, "C:/Users/samsung/Desktop/Synth Effects/FX-RISEUP.wav", audiere::MULTIPLE);

objaśnienie, sound to mapa która wiąże klawisz z dźwiękiem. Obydwie linijki znajdują się w konstruktorze klasy która dzidziczy z wxFrame: public i znajdują się tam również przyciski do utworzenia, panel i jakieś pola tekstowe, wxFileDialog i wxListBox (korzystam z wxWidgets).

Chciałem, żeby w programie użytkownik sam mógł wybrać jaki plik przypisze do klawisza, w tym celu napisałem taką funkcję składową:

void bito_blaster::WybierzPlik(wxCommandEvent& event){
	
	okno_wyboru->ShowModal();
	string path = okno_wyboru->GetPath();
	string klawisze = "ASDFHJKLXCBN";
	wxString path2 = MakePath(path);
	if(lista_klawiszy->GetSelection() != -1){
	sound[klawisze[lista_klawiszy->GetSelection()]] = OpenSoundEffect(audiodevice, path2,
	audiere::MULTIPLE);
	
tekst->SetLabel("Wybrales klawisz: " + num2str(lista_klawiszy->GetSelection()) + "\n sciezka: " + path2);
	}
	else { tekst->SetLabel("WYBIERZ KLAWISZ DO PRZYPISANIA");}
} 

//tekst - pomocniczy tekst do sprawdzania czy wszystko ok
//lista_klawiszy - wxListBox wybierasz klawisz do ktorego bedzie przypisane
*okno_wyboru- wxFileDialog - wybierasz plik, funkcja getPath zwraca dobrą *ścieżkę, sprawdzałem
*(MakePath() zwraca string i jedynie zamienia \ na / w ścieżce, bo takie ukośniki *są wymagane)

Niestety jak wywołuje w programie funkcje WybierzPlik, to następnie po naciśnięciu klawisza do którego przypisałem dźwięk program się zawiesza. Co mogę robić źle? To jakiś problem z pamięcią, w złym miejscu konstruuje jakiś z obiektów klasy audiere do odtwarzania dźwięku? Co może być nie tak, proszę o pomoc.