Esempio n. 1
0
	void Player::Enqueue (const QStringList& paths, bool sort)
	{
		QList<AudioSource> parsedSources;
		for (const auto& path : paths)
			parsedSources << AudioSource (path);
		Enqueue (parsedSources, sort);
	}
Esempio n. 2
0
	void PreviewHandler::handlePendingReady ()
	{
		auto pending = qobject_cast<Media::IPendingAudioSearch*> (sender ());

		QList<AudioSource> sources;
		QSet<QUrl> urls;
		QSet<SamenessCheckInfo> infos;
		for (const auto& res : pending->GetResults ())
		{
			if (urls.contains (res.Source_))
				continue;
			urls.insert (res.Source_);

			const SamenessCheckInfo checkInfo
			{
				res.Info_.Album_.toLower ().trimmed (),
				res.Info_.Title_.toLower ().trimmed (),
				res.Info_.Length_
			};
			if (infos.contains (checkInfo))
				continue;
			infos << checkInfo;

			Player_->PrepareURLInfo (res.Source_, MediaInfo::FromAudioInfo (res.Info_));
			sources << AudioSource (res.Source_);
		}

		if (!sources.isEmpty ())
			Player_->Enqueue (sources, Player::EnqueueNone);

		CheckPendingAlbum (pending);
	}
Esempio n. 3
0
void Plugin::Handle (Entity e)
{
    auto player = PlayerTab_->GetPlayer ();

    if (e.Mime_ == "x-leechcraft/power-state-changed")
    {
        if (e.Entity_ == "Sleeping")
        {
            player->SavePlayState (true);
            player->setPause ();
        }
        else if (e.Entity_ == "WokeUp")
        {
            player->RestorePlayState ();
            Core::Instance ().GetRadioManager ()->HandleWokeUp ();
        }

        return;
    }

    QString path = e.Entity_.toString ();
    const QUrl& url = e.Entity_.toUrl ();
    if (path.isEmpty () &&
            url.isValid () &&
            url.scheme () == "file")
        path = url.toLocalFile ();

    if (e.Parameters_ & Internal)
    {
        /* TODO
        auto obj = Phonon::createPlayer (Phonon::NotificationCategory, path);
        obj->play ();
        connect (obj,
        		SIGNAL (finished ()),
        		obj,
        		SLOT (deleteLater ()));
        		*/
        return;
    }

    if (!(e.Parameters_ & FromUserInitiated))
        return;

    player->Enqueue ({ AudioSource (url) }, false);

    if (e.Additional_ ["Action"] == "AudioEnqueuePlay")
        player->AddToOneShotQueue (url);
}
Esempio n. 4
0
File: main.cpp Progetto: kanc/UTAD
int main(int argc, char* argv[]) 
{
	Screen &screen = Screen::Instance();
	const Renderer &render = Renderer::Instance();

	screen.Open(800, 600, false);

	//inicamos el motor de sonido
	AudioEngine::Instance().Init();

	//cargamos recursos
	AudioBuffer* wav = ResourceManager::Instance().LoadAudioBuffer("data/music.wav");
	AudioSource source = AudioSource(wav);
	Font* fuente = ResourceManager::Instance().LoadFont("data/arial16_2.png");
				
	float x,y,pitch;
	x = screen.GetWidth() / 2;
	y = screen.GetHeight() / 2;
	pitch = 1;
	source.SetGain(2);

	//sitamos el listener en el centro de la pantalla
	Listener::Instance().SetPosition(x, y, 0);	
		
	while (screen.IsOpened()  &&  !screen.KeyPressed(GLFW_KEY_ESC)) 
	{		
		render.Clear();

		//actualizamos la posicion del source y su pitch
		source.SetPosition(x, y, 0);
		source.SetPitch(pitch);

		if (!source.IsPlaying())
			source.Play();
		
		if (screen.KeyPressed(GLFW_KEY_LEFT))
			x-=50 * screen.ElapsedTime();
		else if (screen.KeyPressed(GLFW_KEY_RIGHT))
			x+=50 * screen.ElapsedTime();
		else if (screen.KeyPressed(GLFW_KEY_UP))
			pitch+= screen.ElapsedTime();
		else if (screen.KeyPressed(GLFW_KEY_DOWN))
			pitch-= screen.ElapsedTime();
		else if (screen.KeyPressed(GLFW_KEY_SPACE))
		{
			x = screen.GetWidth() / 2;
			pitch = 1;
		}

		x = WrapValue(x, screen.GetWidth());		

		//pintamos texto informativo y posicion de la fuente
		render.SetColor(255,125,0,255);
		render.DrawEllipse(x,y,10,10);

		render.SetColor(255,255,255,255);
		render.DrawText(fuente, String("cursor izquierda : desplazar fuente a la izquierda"),10,10);
		render.DrawText(fuente, String("cursor derecha : desplazar fuente a la derecha"),10,30);
		render.DrawText(fuente, String("cursor arriba : aumentar pitch"),10,50);
		render.DrawText(fuente, String("cursor abajo : disminuir pitch"),10,70);
		render.DrawText(fuente, String("espacio : resetear pitch y posicion"),10,90);
		render.DrawText(fuente, String("pitch: ") + String::FromFloat(pitch),10,110);
		render.DrawText(fuente, String("(Listener)"),(screen.GetWidth() / 2) - fuente->GetTextWidth(String("(Listener)")) / 2,  screen.GetHeight() / 2 + 20);

        screen.Refresh();
	}

	//paramos el source
	source.Stop();

	//paramos motor audio y liberamos recursos
	AudioEngine::Instance().Finish();
	ResourceManager::Instance().FreeResources();
		
	return 0;
}