Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: MPD-client in C++  (gelezen 1655 keer)

Offline Double12

  • Lid
MPD-client in C++
« Gepost op: 2009/07/06, 17:11:02 »
Ik wil graag een grafische MPD -client schrijven in C++. Weet iemand hoe ik dit het beste kan aanpakken? Zal ik voor het aansturen van de MPD-server rechtstreeks de API van MPD aanspreken of libmpdclient gebruiken?
De API lijkt me vrij ingewikkeld, en ik moet dan met die basale API-functies functies gaan schrijven voor bepaalde taken, die dan weer door mijn programma kunnen worden aangeroepen. Eigenlijk is dat een beetje dubbel werk, aangezien alle andere MPD-clients ook zo'n interface aan functies moeten schrijven. Daarom mijn idee om libmpdclient te gebruiken, waaruit ik dan de functies direct kan aanroepen. Maar ik ben bang dat die niet in de repositories van de meeste distributies zit, wat er onpraktisch is bij het distribueren van een programma.

Als geen van beide lukt, kan ik ook nog een minder fraaie oplossing kiezen, namelijk een soort wrapper maken die de command-line MPD-client mpc commando's laat uitvoeren.

Alvast bedankt. :)

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: MPD-client in C++
« Reactie #1 Gepost op: 2009/07/06, 17:40:30 »
libmpdclient lijkt me het makkelijkste en meest flexibele.
Die minder fraaie oplossing zou ik niet doen.

En uit interesse, waarom wil je een eigen GUI ontwerpen? Wat ontbreekt er aan de huidige?
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Double12

  • Lid
Re: MPD-client in C++
« Reactie #2 Gepost op: 2009/07/07, 13:53:22 »
Dan moet ik wel libmpdclient distribueren met mijn programma, maar dat komt dan wel.

Je weet misschien dat ik een tijd geleden bezig was met een media player voor EDE. Dat project is, hoewel redelijk vergevorderd, wellicht wat ambitieus. Ik gebruik nu zelf veel MPD en vind het fantastisch. Een EDE-client hiervoor schrijven lijkt me een leuk projectje, en makkelijker te maken en te onderhouden omdat je zelf niet met de geluidsaansturing bezig hoeft te zijn (daarvoor zorgt de MPD-server).

Er zijn zoals jij zegt een aantal goede MPD-clients, maar niet oneindig veel. Er zijn goede command line clients en een stuk of 10 geslaagde GTK+-clients (ik gebruik nu zelf Sonata), maar daarbuiten is er bijna niks. Voor mijn KDE4-desktop kon ik bijvoorbeeld alleen QtMPC vinden, een project dat nog hevig in ontwikkeling is.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: MPD-client in C++
« Reactie #3 Gepost op: 2009/07/07, 13:58:44 »
Is het misschien een goed idee om ook wat documentatie te schrijven over MPD?
Ik heb het zelf ook geïnstalleerd, om eens te proberen.

Zo makkelijk is het niet, om MPD automatisch te laten starten en dan ook nog eens Pulseaudio te laten gebruiken. ALSA leverde problemen op omdat andere programma's geen geluid meer konden maken.

Offline Double12

  • Lid
Re: MPD-client in C++
« Reactie #4 Gepost op: 2009/07/07, 14:24:48 »
Is het misschien een goed idee om ook wat documentatie te schrijven over MPD?
Ik heb het zelf ook geïnstalleerd, om eens te proberen.

Zo makkelijk is het niet, om MPD automatisch te laten starten en dan ook nog eens Pulseaudio te laten gebruiken. ALSA leverde problemen op omdat andere programma's geen geluid meer konden maken.
Goed plan, het is handig om mensen op weg te helpen hoe ze snel MPD kunnen configureren. Het artikel kan kort blijven met veel gebruik van de terminal, omdat de meeste mensen die MPD gaan gebruiken toch al vrij gevorderd zijn.

Na het starten van MPD wordt MPD bij mij elke keer automatisch opgestart bij het opstarten van de computer. Hij doet dat alleen niet als je de pid_file parameter uit /etc/mpd.conf weghaalt.
Ik heb geen audio_output ingesteld in /etc/mpd.conf, hij gebruikt nu vanzelf ALSA en dat werkt voor mij. Wel heb ik in /etc/mpd.conf de mixer ingesteld op ALSA en het kanaal op Master, zodat als je in een MPD-client het volume verandert, dat het Master-volume aanpast.

EDIT: Ik heb nu iets heel stoers gedaan met MPD dat ook beslist in het artikel moet. Op mijn ene computer heb ik de MPD server draaien op een bepaalde poort. Op een andere computer draai ik een client die verbindt met de ene computer. Zo kan ik gewoon op afstand besturen wat de eerste computer afspeelt! Je kunt zo ook een oude computer zonder beeldscherm aansluiten op een stereo-installatie en die aansturen met je werkcomputer.

Een andere leuke mogelijkheid van MPD is dat je in plaats van audio output naar bijv. ALSA of PulseAudio, je audio output op een IceCast-stream zet. Je kunt dan overal via internet luisteren naar je eigen "radio".
« Laatst bewerkt op: 2009/07/07, 15:52:45 door Double12 »

Offline Double12

  • Lid
Re: MPD-client in C++
« Reactie #5 Gepost op: 2009/07/12, 22:20:05 »
Johan, ik ben een artikel begonnen over MPD op de wiki. Any help would be appreciated! ;)
http://forum.ubuntu-nl.org/documentatie/mpd/

katoemba

  • Gast
Re: MPD-client in C++
« Reactie #6 Gepost op: 2009/07/18, 15:44:45 »
Je kan het beste libmpdclient gebruiken, die biedt alle functies op een eenvoudige manier aan. Libmpdclient bestaat uit een .c en .h file die je meecompileert, er zijn dus geen problemen bij de verspreiding. Ik gebruik het in combinatie met Objective-C in MPoD.