1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
   |  
#include "stdafx.h"
#include "bass.h"
#include "bassmix.h"
#include <sstream> 
#include <string>  
#include <iostream>
#include <random>
#include <time.h>
 
 
class Play_list {
 
private:
	int rand_a_b(int a, int b);
	int* init_tableau(int a, int b);
	void melanger(int* tableau, int taille);
	std::string new_file_audio(std::string P_playlist, char P_separateur);
	void CALLBACK SyncProc(HSYNC handle, DWORD channel, DWORD data, void *user);
 
	std::string m_liste_fichier_audio;
	int m_nombre_fichier_audio; // Nombre total de fichiers audio dans la play list
	int* m_tab_playlist; // Tableau d'ordre de lecture de la playlist
	int cpt_tab; // Position interne de parcours de la playlist
 
public:
	void SynchroPlaylist(DWORD P_HDMixer, DWORD P_Flags, QWORD P_Param, DWORD P_Nb_File_audio, const char *P_PlayList, DWORD P_len_char, BOOL P_Lect_alea);
	int m_position_actuelle; // Position actuelle de lecture dans le tableau	
 
	DWORD m_mixer;
	DWORD m_source;
 
};
 
....
.....
 
// FUNCTION DE CALLBACK SPECIFIQUE BASS
//-------------------------------------
void CALLBACK Play_list::SyncProc(HSYNC handle, DWORD channel, DWORD data, void *user)
{
	HSTREAM l_next_stream=0;
	BOOL L_Return;
 
	std::string l_fic_audio = new_file_audio(m_liste_fichier_audio,';');
 
	l_next_stream = BASS_StreamCreateFile(false,l_fic_audio.c_str(),0,0,BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT);
	L_Return = BASS_Mixer_StreamAddChannel(m_mixer, l_next_stream, BASS_STREAM_AUTOFREE|BASS_MIXER_NORAMPIN);
	L_Return = BASS_ChannelSetPosition(m_mixer,0,BASS_POS_BYTE);
}
 
void Play_list::SynchroPlaylist(DWORD P_HDMixer, DWORD P_Flags, QWORD P_Param, DWORD P_Nb_File_audio, const char *P_PlayList, DWORD P_len_char, BOOL P_Lect_alea)
{
 
	srand(time(NULL));
	m_liste_fichier_audio = P_PlayList;
	m_nombre_fichier_audio = P_Nb_File_audio;
	m_tab_playlist=init_tableau(1,P_Nb_File_audio);
 
	...
 
	std::string First_Fic_Audio = new_file_audio(m_liste_fichier_audio,';');
 
	m_mixer = BASS_Mixer_StreamCreate(44100,2,BASS_MIXER_END);
 
	BASS_ChannelSetSync(m_mixer,BASS_SYNC_END|BASS_SYNC_MIXTIME,0,Play_list::SyncProc,0);
 
	m_source = BASS_StreamCreateFile(false,First_Fic_Audio.c_str(),0,0,BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT);  //1st file open	
	BASS_Mixer_StreamAddChannel(m_mixer,m_source,BASS_STREAM_AUTOFREE);
 
} | 
Partager