int DemoEntry(int argc, char *argv[])
	{
		gSoloud.init(SoLoud::Soloud::CLIP_ROUNDOFF | SoLoud::Soloud::ENABLE_VISUALIZATION);
		gSoloud.setGlobalVolume(0.75);
		gSoloud.setPostClipScaler(0.75);

		gSpeechbusHandle = gSoloud.play(gSpeechbus);
		gSfxbusHandle = gSoloud.play(gSfxbus);
		gMusicbusHandle = gSoloud.play(gMusicbus);

		gSpeech[0].setText("There is flaky pastry in my volkswagon.");
		gSpeech[1].setText("The fragmentation of empiricism is hardly influential in its interdependence.");
		gSpeech[2].setText("Sorry, my albatros is not inflatable.");
		gSpeech[3].setText("The clairvoyance of omnipotence is in fact quite closed-minded in its ecology.");
		gSpeech[4].setText("Cheese is quite nice.");
		gSpeech[5].setText("Pineapple Scones with Squash and Pastrami Sandwich");
		gSpeech[6].setText("The smart trader nowadays will be sure not to prorate OTC special-purpose entities.");
		gSpeech[7].setText("The penguins are in the toilets.");
		gSpeech[8].setText("Don't look, but there is a mountain lion stalking your children");
		gSpeech[9].setText("The train has already gone, would you like to hire a bicycle?");

		gSfxloop.load("audio/war_loop.ogg");
		gSfxloop.setLooping(1);
		gMusicloop.load("audio/algebra_loop.ogg");
		gMusicloop.setLooping(1);

		gSfxbus.play(gSfxloop);
		gMusicbus.play(gMusicloop);
		return 0;
	}
Exemple #2
0
void Sound_Inspect(Asset& asset, bool deselected) {
	static int handle;
	static SoLoud::Bus bus;

	if (deselected) {
		soloud.stopAll();
		return;
	}

	bus.setVisualizationEnable(true);
	SoLoud::AudioSource *src = (SoLoud::AudioSource*) asset.resource;
	
	ImGui::Text("Channels: %i", src->mChannels);
	ImGui::Text("Sample Rate: %0.f", src->mBaseSamplerate);
	
	int voice = soloud.getVoiceFromHandle(handle);
	if (ImGui::Button(voice == -1 ? "Play" : "Stop")) {
		if (voice != -1) {
			bus.stop();
		} else {
			soloud.stopAll();
			soloud.play(bus);
			handle = bus.play(*src);
		}
	}

	float *fft = bus.calcFFT();
	ImGui::PlotHistogram("##FFT", fft, 256 / 2, 0, nullptr, 0, 20, ImVec2(0, 160), 8);
}
	void DemoMainloop()
	{
		DemoUpdateStart();

		if (speechtick < DemoTick())
		{
			int h = gSpeechbus.play(gSpeech[speechcount % 10], (rand() % 200) / 50.0f + 2, (rand() % 20) / 10.0f - 1);
			speechcount++;
			gSoloud.setRelativePlaySpeed(h, (rand() % 100) / 200.0f + 0.75f);
			gSoloud.fadePan(h, (rand() % 20) / 10.0f - 1, 2);
			speechtick = DemoTick() + 4000;
		}

		float *buf = gSoloud.getWave();
		float *fft = gSoloud.calcFFT();

		ONCE(ImGui::SetNextWindowPos(ImVec2(500, 20)));
		ImGui::Begin("Output");
		ImGui::PlotLines("##Wave", buf, 256, 0, "Wave", -1, 1, ImVec2(264, 80));
		ImGui::PlotHistogram("##FFT", fft, 256 / 2, 0, "FFT", 0, 10, ImVec2(264, 80), 8);
		ImGui::Text("Speech bus volume : %d%%", (int)floor(gSoloud.getVolume(gSpeechbusHandle) * 100));
		ImGui::Text("Music bus volume  : %d%%", (int)floor(gSoloud.getVolume(gMusicbusHandle) * 100));
		ImGui::Text("Sfx bus volume    : %d%%", (int)floor(gSoloud.getVolume(gSfxbusHandle) * 100));
		ImGui::Text("Active voices     : %d", gSoloud.getActiveVoiceCount());
		ImGui::End();

		ONCE(ImGui::SetNextWindowPos(ImVec2(20, 20)));
		ImGui::Begin("Control");
		if (ImGui::SliderFloat("Speech bus volume", &gSpeechvol, 0, 2))
		{
			gSoloud.setVolume(gSpeechbusHandle, gSpeechvol);
		}
		if (ImGui::SliderFloat("Music bus volume", &gMusicvol, 0, 2))
		{
			gSoloud.setVolume(gMusicbusHandle, gMusicvol);
		}
		if (ImGui::SliderFloat("Sfx bus volume", &gSfxvol, 0, 2))
		{
			gSoloud.setVolume(gSfxbusHandle, gSfxvol);
		}
		ImGui::End();
		DemoUpdateEnd();
	}
namespace mixbusses
{

	SoLoud::Soloud gSoloud;			// SoLoud engine core
	SoLoud::Speech gSpeech[10];
	SoLoud::Wav gSfxloop, gMusicloop;
	SoLoud::Bus gSfxbus, gMusicbus, gSpeechbus;

	int gSfxbusHandle, gMusicbusHandle, gSpeechbusHandle;

	float gSfxvol = 1, gMusicvol = 1, gSpeechvol = 1;

	int DemoEntry(int argc, char *argv[])
	{
		gSoloud.init(SoLoud::Soloud::CLIP_ROUNDOFF | SoLoud::Soloud::ENABLE_VISUALIZATION);
		gSoloud.setGlobalVolume(0.75);
		gSoloud.setPostClipScaler(0.75);

		gSpeechbusHandle = gSoloud.play(gSpeechbus);
		gSfxbusHandle = gSoloud.play(gSfxbus);
		gMusicbusHandle = gSoloud.play(gMusicbus);

		gSpeech[0].setText("There is flaky pastry in my volkswagon.");
		gSpeech[1].setText("The fragmentation of empiricism is hardly influential in its interdependence.");
		gSpeech[2].setText("Sorry, my albatros is not inflatable.");
		gSpeech[3].setText("The clairvoyance of omnipotence is in fact quite closed-minded in its ecology.");
		gSpeech[4].setText("Cheese is quite nice.");
		gSpeech[5].setText("Pineapple Scones with Squash and Pastrami Sandwich");
		gSpeech[6].setText("The smart trader nowadays will be sure not to prorate OTC special-purpose entities.");
		gSpeech[7].setText("The penguins are in the toilets.");
		gSpeech[8].setText("Don't look, but there is a mountain lion stalking your children");
		gSpeech[9].setText("The train has already gone, would you like to hire a bicycle?");

		gSfxloop.load("audio/war_loop.ogg");
		gSfxloop.setLooping(1);
		gMusicloop.load("audio/algebra_loop.ogg");
		gMusicloop.setLooping(1);

		gSfxbus.play(gSfxloop);
		gMusicbus.play(gMusicloop);
		return 0;
	}

	int speechtick = 0;
	int speechcount = 0;

	void DemoMainloop()
	{
		DemoUpdateStart();

		if (speechtick < DemoTick())
		{
			int h = gSpeechbus.play(gSpeech[speechcount % 10], (rand() % 200) / 50.0f + 2, (rand() % 20) / 10.0f - 1);
			speechcount++;
			gSoloud.setRelativePlaySpeed(h, (rand() % 100) / 200.0f + 0.75f);
			gSoloud.fadePan(h, (rand() % 20) / 10.0f - 1, 2);
			speechtick = DemoTick() + 4000;
		}

		float *buf = gSoloud.getWave();
		float *fft = gSoloud.calcFFT();

		ONCE(ImGui::SetNextWindowPos(ImVec2(500, 20)));
		ImGui::Begin("Output");
		ImGui::PlotLines("##Wave", buf, 256, 0, "Wave", -1, 1, ImVec2(264, 80));
		ImGui::PlotHistogram("##FFT", fft, 256 / 2, 0, "FFT", 0, 10, ImVec2(264, 80), 8);
		ImGui::Text("Speech bus volume : %d%%", (int)floor(gSoloud.getVolume(gSpeechbusHandle) * 100));
		ImGui::Text("Music bus volume  : %d%%", (int)floor(gSoloud.getVolume(gMusicbusHandle) * 100));
		ImGui::Text("Sfx bus volume    : %d%%", (int)floor(gSoloud.getVolume(gSfxbusHandle) * 100));
		ImGui::Text("Active voices     : %d", gSoloud.getActiveVoiceCount());
		ImGui::End();

		ONCE(ImGui::SetNextWindowPos(ImVec2(20, 20)));
		ImGui::Begin("Control");
		if (ImGui::SliderFloat("Speech bus volume", &gSpeechvol, 0, 2))
		{
			gSoloud.setVolume(gSpeechbusHandle, gSpeechvol);
		}
		if (ImGui::SliderFloat("Music bus volume", &gMusicvol, 0, 2))
		{
			gSoloud.setVolume(gMusicbusHandle, gMusicvol);
		}
		if (ImGui::SliderFloat("Sfx bus volume", &gSfxvol, 0, 2))
		{
			gSoloud.setVolume(gSfxbusHandle, gSfxvol);
		}
		ImGui::End();
		DemoUpdateEnd();
	}
}