Podmiana utworu

0

Witam. Otóż mam pewien problem z libką BASS.dll Nie wiem jak można odtworzyć nowy utwór na miejscu starego strumienia. Efekt miałby wyglądać tak:
Graj utwór 1 ->(Utwór 1 jest w połowie)-Przerwij go i zagraj Utwór 2 ->(Spełnił się warunek lub został wciśnięty klawisz)->Przestań grać utwór i dopal utwór z numerkiem 3 etc.
Warunki to nie problem, jednak nie wiem jak przerwać działanie strumienia w taki sposób aby można by na jego miejscu stworzyć nowy strumień. Gdy próbowałem po prostu użyć takiego zapisu```

current = BASS_CreateStreamFile(...); 

To utwór nie został przerwany - nic się z nim nie stało, gdy użyłem BASS_Free(current); przerwało odtwarzanie, lecz nowy się nie odtworzył, funkcja BASS_ErrorGetCode(); wskazała mi to:

BASS_ERROR_NOTAVAIL Only decoding channels (BASS_STREAM_DECODE) are allowed when using the "no sound" device. The BASS_STREAM_AUTOFREE flag is also unavailable to decoding channels.

I na tym miejscu teraz stoję - przeszukałem internet, lecz nie znalazłem nic co mogło by mi pomóc. Jedyne co udało mi się wywnioskować to to, że kanał jest dekodujący? Także byłbym wdzięczny za jakąkolwiek pomoc w tym problemie :)

0

Coś tu kombinujesz. Jeśli dobrze rozumiem, to jeśli utwór jeden przerwiesz w 15 sekundzie, to utwór 2 ma się zacząć w 15 sekundzie, tak? A co jeśli utwór dwa ma tylko 10 sekund?

Poza tym najłatwiej to sprawdzić, w którym momencie w utworze 1 jesteś, a potem załadować utwór dwa i przewinąć do tego właśnie momentu.

0

Problem jest z tym "Załaduj utwór dwa", ponieważ gdy wywołam 2x pod rząd funkcję aCMusic_Play() - ta uzywająca BASS'u, to muzyka nie jest zamieniana tylko dalej leci stary utwór.

0

Co robi aCMusic_Play()? To nie jest funkcja z BASS. Próbujesz najpierw zatrzymać odgrywany utwór?

0

Właśnie z tym jest problem - nie wiem jak... mam zmienną HSTREAM o nazwie stream. w funkcji aCMusic_Play() stream = BASS_CreateStreamFile(...); Działa to tylko za pierwszym razem - funkcja wygląda tak:

HSTREAM stream;
string Music_GetFolder(string f)
{
    return "_Work\\Data\\Music\\" + f;
}

void PlayMusic(string file, float vol)
{
	Init_Bass();
	string sound = Music_GetFolder(file);
//Nie wiem co dać tutaj, by czyściło strumień 
	stream = BASS_StreamCreateFile(false, sound.c_str(), 0, 0, BASS_UNICODE);
	BASS_ChannelPlay(stream, false);
}

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