/// <summary>
/// Inicializa los canales de sonido.
/// </summary>
///<param name="initSoundXML">Ubicación del fichero xml.</param>
///<returns>Boleano que representa si la operación se realizó exitosamente.</returns>
bool CSoundManager::Init (const std::string& initSoundXML)
{
	m_bIsOk = BASS_Init(1, 44100, BASS_DEVICE_3D, 0, NULL) ? true : false;
 

	if (m_bIsOk == true)
	{
		// Parsea el xml
		m_bIsOk = Load(initSoundXML);

		if (m_bIsOk == true)
		{
			m_bIsOk = BASS_Set3DPosition(NULL, NULL, NULL, NULL) ? true : false; 
				
			if (m_bIsOk == true)
			{
				m_bIsOk = BASS_Set3DFactors(1.0, 1.0, 1.0) ? true : false;
				BASS_Apply3D();

				if (m_bIsOk == true)
				{					
					// Asigna el master volume. Usar 1 para volumen máximo
					//m_bIsOk = BASS_SetVolume(1.0f) ? true : false;

					if (m_bIsOk == true)
					{
						m_bIsOk = BASS_Start() ? true : false;

						if (m_bIsOk == true)
						{
							std::string msg_info = "CSoundManager::Init: Sonidos cargados exitosamente.";
							LOGGER->AddNewLog(ELL_INFORMATION, msg_info.c_str());
							return m_bIsOk;
						}
					}
				}
			}
		}
	}
	std::string msg_error = "CSoundManager::Init: Error cargando sonidos.";
	LOGGER->AddNewLog(ELL_INFORMATION, msg_error.c_str());
	return m_bIsOk;
}
Esempio n. 2
0
File: 3dtest.c Progetto: adius/FeetJ
int main(int argc, char* argv[])
{
	regex_t fregex[2];

	gtk_init(&argc,&argv);

	// check the correct BASS was loaded
	if (HIWORD(BASS_GetVersion())!=BASSVERSION) {
		Error("An incorrect version of BASS was loaded");
		return 0;
	}

	// Initialize the output device with 3D support
	if (!BASS_Init(-1,44100,BASS_DEVICE_3D,NULL,NULL)) {
		Error("Can't initialize device");
		return 0;
	}

	{
		BASS_INFO i;
		BASS_GetInfo(&i);
		if (i.speakers>2) {
			GtkWidget *dialog=gtk_message_dialog_new(NULL,0,
				GTK_MESSAGE_QUESTION,GTK_BUTTONS_YES_NO,"Multiple speakers were detected. Would you like to use them?");
			if (gtk_dialog_run(GTK_DIALOG(dialog))==GTK_RESPONSE_NO)
				BASS_SetConfig(BASS_CONFIG_3DALGORITHM,BASS_3DALG_OFF);
			gtk_widget_destroy(dialog);
		}
	}

	// Use meters as distance unit, real world rolloff, real doppler effect
	BASS_Set3DFactors(1,1,1);

	// initialize GUI
	glade=glade_xml_new(GLADE_PATH"3dtest.glade",NULL,NULL);
	if (!glade) return 0;
	win=GetWidget("window1");
	if (!win) return 0;
	glade_xml_signal_autoconnect(glade);
	g_signal_connect(gtk_tree_view_get_selection(GTK_TREE_VIEW(GetWidget("channels"))),"changed",G_CALLBACK(ListSelectionChange),NULL);

	{ // setup list
		GtkTreeView *list=GTK_TREE_VIEW(GetWidget("channels"));
		GtkTreeViewColumn *col=gtk_tree_view_column_new();
		gtk_tree_view_append_column(list,col);
		GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
		gtk_tree_view_column_pack_start(col,renderer,TRUE);
		gtk_tree_view_column_add_attribute(col, renderer, "text", 0);
		GtkListStore *liststore=gtk_list_store_new(1,G_TYPE_STRING);
		gtk_tree_view_set_model(list,GTK_TREE_MODEL(liststore));
		g_object_unref(liststore);
	}

	{ // initialize file selector
		GtkFileFilter *filter;
		filesel=gtk_file_chooser_dialog_new("Open File",GTK_WINDOW(win),GTK_FILE_CHOOSER_ACTION_OPEN,
			GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,GTK_STOCK_OPEN,GTK_RESPONSE_ACCEPT,NULL);
		filter=gtk_file_filter_new();
		gtk_file_filter_set_name(filter,"Streamable files (wav/aif/mp3/mp2/mp1/ogg)");
		regcomp(&fregex[0],"\\.(mp[1-3]|ogg|wav|aif)$",REG_ICASE|REG_NOSUB|REG_EXTENDED);
		gtk_file_filter_add_custom(filter,GTK_FILE_FILTER_FILENAME,FileExtensionFilter,&fregex[0],NULL);
		gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel),filter);
		filter=gtk_file_filter_new();
		gtk_file_filter_set_name(filter,"MOD music files (mo3/xm/mod/s3m/it/mtm/umx)");
		regcomp(&fregex[1],"\\.(mo3|xm|mod|s3m|it|umx)$",REG_ICASE|REG_NOSUB|REG_EXTENDED);
		gtk_file_filter_add_custom(filter,GTK_FILE_FILTER_FILENAME,FileExtensionFilter,&fregex[1],NULL);
		gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel),filter);
		filter=gtk_file_filter_new();
		gtk_file_filter_set_name(filter,"All files");
		gtk_file_filter_add_pattern(filter,"*");
		gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel),filter);
	}

	g_timeout_add(TIMERPERIOD,Update,NULL);

	UpdateButtons();

	gtk_main();

	gtk_widget_destroy(filesel);
	regfree(&fregex[0]);
	regfree(&fregex[1]);

	BASS_Free(); // close output

    return 0;
}
Esempio n. 3
0
File: 3dtest.c Progetto: adius/FeetJ
void DopplerChanged(GtkRange *range, gpointer data)
{
	// change the doppler factor
	double value=gtk_range_get_value(range);
	BASS_Set3DFactors(-1,-1,pow(2,(value-10)/5.0));
}
Esempio n. 4
0
File: 3dtest.c Progetto: adius/FeetJ
void RolloffChanged(GtkRange *range, gpointer data)
{
	// change the rolloff factor
	double value=gtk_range_get_value(range);
	BASS_Set3DFactors(-1,pow(2,(value-10)/5.0),-1);
}