[Code] Musikplayer Programmieren

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von sloader, 4. November 2009 .

  1. 4. November 2009
    Musikplayer Programmieren

    Hallo Leute,

    ich und ein Kollege wollen ein Projekt starten, wir wollen einen Musikplayer like Winamp etc. machen, also anfangen was eig eh klar ist im Kleinen...

    Wir sind keine schlechten GFXer, wir sind fähig alle Programmiersprachen viel besser zu lernen etc.
    WIr habn in ein paar Sprachen schon kleine Kenntnisse.
    Wir habn genug Motivation um so etwas zu schaffen...

    So meine Frage, was für Sprachen bzw. was brauchn wir dafür alles??


    Mfg. sloader

    //bieten von bewertungen ist nicht erlaubt.
     
  2. 4. November 2009
    AW: Kleines Projekt

    mhh also um nen music player zu programmieren braucht ihr verschiedene kentnisse
    erstens eine vernünftige sprache ich würde c++, c# oder java empfehlen java wäre sinnvoll falls ihr platformübergreifend programmieren wollt (für win und linx zb.) aber ist auch langsamer. python wäre auch noch ne variante ist aber nicht unbedingt so verbreitet.

    dann müsst ihr euch wissen über audio-formate aneignen um mp3s, wavs etc dekodieren zu können und dann an die audioausgabe des betriebssystems zu schicken (was auch nicht ganz einfach ist)

    für ne grafische oberfläche bieten sich dann mehrere varianten an zb. wxwidgets (opensource) die verschiedenen win gui-varianten oder speziell bei java die eigene gui

    allgemein gesagt ist ein musicplayer schon ne nette herausforderung aber sicherlich mit genug engagement machbar ich wünsche viel erfolg und bei weiteren fragen helf ich im rahmen meiner kentnisse gern weiter ^^
     
  3. 4. November 2009
    AW: Kleines Projekt

    So ein Quatsch... Ihr müsst nicht in Java programmieren, falls euer Musikplayer auch unter Linux oder Mac OS funktionieren soll.

    Wie schon gesagt: Es wäre sinnvoll, dies in einer höheren Programmiersprache zu machen. Ich rate zu C++ und QT4 (Gui). Der Nachteil an QT4 ist nur, dass ich leider den Quellcode mitveröffentlichen müsst, allerdings ist QT4 für sowas auch sehr gut geeignet. Alternative zu QT4 wäre GTK, allerdings weiß ich nicht, wie es da mit den Veröffentlichungen aussieht.

    Der Vorteil an QT4 ist, dass es auf vielen System portierbar ist, also auf Linux, Windows und Mac. Außerdem könte es auch möglich sein, es auf ein Symbian-Handy läuft.

    hmm... wie das genau abläuft, weiß ich nicht, aber googelt erstmal danach... vielleicht gibt es eine interessante Bibliothek, die euch ein paar lästige Arbeit abnimmt. (vlt. CLAM: ..::CLAM::.. C++ Library for Audio and Music )
     
  4. 4. November 2009
    AW: Kleines Projekt

    also was den part angeht könnt ihr euch ja einfach ma den quelltext vom vlc player reinziehn, der benutzt zwar eigene codecs und nich die vom system, aber ist a)win+qt b)linux, windows, mac, solaris... c) opensource...mfg coach

    PS: gtk+ wär mir zwar lieber als gnome-use, aber da müsst ihr schauen, was euch besser gefällt, rechte sind afaik bei gtk+ nochma lockerer als bei qt, weil die ja von nokia übernommen wurden. achja, nochwas: es gibt massig open source player, also schaut euch ruhig ma mehrere quelltexte an...
     
  5. 4. November 2009
    AW: Kleines Projekt

    aber nur den von qt, nicht den eigenen. btw ist mp3s decodieren im vergleich zum codieren sehr sehr simpel. zu gebinn kann man ja fmod oä importieren, auch wenn dann irgendwo die herausforderung flöten geht.

    ka was du damit sagen willst, aber viel spaß mit brain , whitespace und befunge.
     
  6. 4. November 2009
    AW: Kleines Projekt

    Das stimmt aber wenn man spezielle Audio-Schnittstellen ansteuern muss und da wird man bei nem Musicplayer nicht rumkommen muss man bei C++ etc. schon einiges Betriebssystem spezifisch programmieren bzw über defines etc. beide Platformen berücksichtigen fürs Kompilieren das war von mir so geschrieben um einen einfacheren Weg Platformübergreifend zu programmieren vorzuschlagen
     
  7. 4. November 2009
    AW: Kleines Projekt

    Muss man auch nicht, wenn man Liberaries verwendet, die nicht System-Spezifisch sind.
     
  8. 4. November 2009
    AW: Kleines Projekt

    ich würde es ganz klar in C# machen.

    als ich noch im Abi war, hatten wir ein Projekt gemacht Musikplayer machen blabla
    und ich fande es mit C# iwie am einfachsten.
     
  9. 4. November 2009
    AW: Kleines Projekt

    Klar scheint es mit C# bzw. Java am einfachsten, weil diese Programmiersprachen einfach am meisten Convenience bieten. Das meiste könnt ihr allerdings wirklich mit C bzw. C++ rausholen. Mit C# und Java wärt ihr ab einem gewissen Zeitpunkt am Ende der Möglichkeiten angelangt.

    Was ihr also benötigt (für den Anfang)

    • Eine Programmiersprache: ich würde hier wie gesagt C/C++ empfehlen. Wenn ihr aber unbedingt wollt, könnt ihr auch Java, C#, Python oder ähnliche nehmen
    • Ein GUI-Framework: Besonders bei C und C++ wichtig. Schaut euch einfach mal folgende an: GTK+, QT, WXWidgets, WPF (Windows gebunden), Windows Forms (ebenfalls Windows gebunden)
    • Decoder: Zum Decodieren der Mediendateien könnt ihr am Anfang am besten auf einen fertigen Decoder setzen, da das Entwickeln eines solchen wirklich nicht einfach ist. Mein Tipp: Schaut euch hierzu mal FFmpeg an, damit kann man schon eine ganze Menge anstellen
    • Ein Konzept: Ein wichtiges Konzept und die richtige Planung ist für ein großes Projekt unerlässlich. Je mehr Arbeit ihr in die Konzeption und Planung im Vorfeld steckt, desto besser wird euer Projekt laufen und desto weniger Fehler schleichen sich später ein. Und vor allen Dingen kann man mit ziemlicher Sicherheit sagen, dass ihr ohne gute Planung mit dem Projekt schnell im Sand verlauft, also nehmt euch ruhig die Zeit dafür!

    Wenn das Ganze dann auch noch erfolgreich werden soll, müsst ihr für euer Konzept noch ein bisschen kreativer sein. Denn MP3-Player-Software gibt es schon wie Sand am Meer. Was sollte mich also dazu bewegen, gerade eure Software zu nutzen? Da müsst ihr dann ansetzen.
    Wenn das Projekt nur zu Übungszwecken sein soll, könnt ihr den einzigartigen Aspekt natürlich außen vor lassen
     
  10. 5. November 2009
    AW: Kleines Projekt

    Hallo!

    "Musikplayer" hoert sich zwar einfach an (und wenn man so einen "Musikplayer" mal startet, denkt man "OK, np, 5 Knoepfe und ein paar Optionen" - dem ist nicht wirklich so ), aber ein gutes Interface zu designen und zu bauen, alle kleinen Funktionen und Kniffe dann wirklich fehlerfrei und funktionierend zu implementieren ist in der Tat nichts 'kleines'.

    Etwas 'kleines' waere ein Programm zur Berechnung von mathematischen Funktionen oder ein Bietemaker, aber ein Musikspieler ist schon etwas 'schwierigeres'.

    Man kann das natuerlich auch minimalistisch angehen. AFAIK kann man das schoen mit GTK+/GLib (bzw. die implementierten Libraries, z.B. gstreamer) ohne grossen Aufwand umsetzen, aber der 'Lerneffekt' bzw. der Mehrwert des Programms ist eher gering.

    Anstatt den 1500m-Berg eine Autostunde weg zu besteigen, fangt doch am besten mal mit dem Huegel nebenan an

    Mfg,

    Kolazomai
     
  11. 5. November 2009
    AW: Kleines Projekt

    Hallo,

    ich würde dir eher von C/C++ abraten. Gerade am Anfang ist es schwieriger da was gescheites auf die Beine zu stellen. Selbst der Urvater von C++ meint das die Programmiersprache langsam zu überladen und unübersichtlich geworden ist.

    Wenn du auch in Zukunft kleinere Projekte machen willst, würde ich dir Java empfehlen.
    Zu jedem Thema kannst du dir schon vorgefertigte Libarys einbinden, sei es ob du irgendwas mit Datenbanken machen willst oder halt einen Mp3Player bauen
    Such mal in google nach dem Thema, finden sich bestimmt ein paar Tutorials.

    Eine grafische Oberfläche ist in Java ebenso easy mit Swing zu verwirklichen.

    Falls du dich für Java entscheidest und noch Fragen hast --> PM

    -Tak
     
  12. 5. November 2009
    AW: Kleines Projekt

    ich hab mir selbst mal in #c nen kleinen mediaplayer geschrieben. das war eigentlich nur aus jucks. und zwar hab ich das mit directx gemacht. da gibts ne play()-methode die du aufrufst und schon spielt er das auch ab.
    einziges problem: wie immer der speicherverbrauch ^^

    aber für einen ernsthaften mediaplayer würde ich auch nicht die directx-api nutzen ;D
     
  13. 6. November 2009
    AW: Kleines Projekt

    C++ ist nicht einfach! Dennoch, raten würde ich es auch. Lernt es richtig, nicht nur halb Gut OOP ist in anderen Sprachen auch vorhanden, aber Polymorphie zum Beispiel kenne ich nur aus C++. Außerdem solltet ihr auch Ahnung von Pointeroperationen haben und nicht nur alles fertig gebaut nutzen. Java zumindest nutzt nur Referenzen, C# weiß ich leider nicht mehr.

    Zur GUI, wenn ihr nur für Windows programmiert, nehmt MFC, ansonsten QT
     
  14. 7. November 2009
    AW: Kleines Projekt

    Polymorphie gibts auch in java
    trotzdem stimme ich dir zu! wer C(++) wirklich kann den erschreckt eigentlich keine programmiersprache mehr xD
    das thema mit pointern ist garnicht mal soooo schwer wenn man mal dahinter steigt. es lohnt sich also sich mal C(++) anzuschauen....
     
  15. 7. November 2009
    AW: Kleines Projekt

    entschuldige ich meinte mehrfachvererbung, nicht polymorphie.
     
  16. 8. November 2009
    AW: Musikplayer Programmieren

    Java arbeitet leider mit referenzen und du kannst nicht direkt auf den Speicher zugreifen was nicht immer für Java spricht. Ob du mit Java oder mit C++ arbeitest ist Geschmackssache aber auch wo du eher mit klar kommst ist ein Faktor. Achja, Microsoft hat CSharp erfunden und wollte damit die Konkurrenz zu Java eröffnen. Naya nur so am Rande.
     
  17. 9. November 2009
    AW: Kleines Projekt

    ja die gibts nicht in java. jedoch kann man das ganze durch interfaces umgehen. durch polymorphie eben xD

    btw hab ich gehört dass es bei mehrfachvererbung ziemliche probleme geben kann wenn z.b. beide oberklassen funktionen mit dem selben namen + parameter haben. noch komplizierter soll es dann werden wenn beide oberklassen nochmal von einer oberklasse erben mit genau der selben methode ^^ nennt sich diamantenproblem oder so. nur so am rande xD

    vllt kann mir jemand sagen wie c++ dieses prob löst (per pm da off-topic)
     
  18. 9. November 2009
    AW: Kleines Projekt

    Ihr überschätzt euch komplett.
    Schon eine ordentliche GUI ist der pure overkill für einen Anfänger (und damit meine ich nicht mal eine wie bei Winamp oder WMP). Und dann noch mp3-Dekodierung
    Lernt erstmal eine Sprache ordentlich (ich empfehle C++), dann ein GUI-Toolkit wie z.B. Qt, gtkmm oder wxWidgets und zum Schluss würde ich euch erstmal FMOD zur Musikwiedergabe ans Herz legen. Eigene Dekodierroutinen könnt ihr irgendwann zum Schluss implementieren, falls ihr Lust auf trockene Mathematik bekommt (bei mp3: Modifizierte diskrete Kosinustransformation).
    Eure GFX-Fähigkeiten werden euch auch nicht weit bringen. Bis ihr die in eine GUI à la Winamp/WMP umsetzen könnt müsst ihr eines der GUI-Toolkits schon gut beherrschen

    mfg r90
     
  19. 10. November 2009
    AW: Kleines Projekt

    Wenn man eine Vererbung nach diesem Schema implementiert:
    http://upload.wikimedia.org/wikipedia/commons/8/8e/Diamond_inheritance.svg

    Dann wird die Ableitung von B und C zu A als virtuell deklariert, so dass D nur eine A-Basisklasse hat.
     
  20. 10. November 2009
    AW: Musikplayer Programmieren

    Ihr könnt auch die bass.dll von un4seen als Basis verwenden, dann ist braucht ihr eigentlich fast nur mehr eine GUI dazu machen.
     
  21. 10. November 2009
    AW: Musikplayer Programmieren

    Genau das wollte ich auch grade anbringen. Das geile ist: Ihr könnt euch eine Programmiersprache aussuchen, ist für viele von grund aus ausgelegt

    Desweiteren muss ich dazu sagen das wir zur Zeit auch im Schulprojekt einen solchen Player programmieren und ebenfalls die BASS.dll verwenden und mit MFC arbeiten.


    Grüße
     
  22. 11. November 2009
    AW: Kleines Projekt

    achso.. also existiert für die klasse D nur die Klasse A...?! wenn dem so ist heißt dass dann doch auch dass D nicht auf die funktionalität von B bzw. C zugreifen kann oder?
     
  23. 12. November 2009
    AW: Kleines Projekt

    Doch, D kann schon auf B und C zugreifen.

    Wenn man keine virtuelle Vererbung einsetzen würde, dann hätten B und C jeweils unterschiedliche A-Basisklassen. Mit virtueller Vererbung gibt es dann nur eine gemeinsame A-Basisklasse.

    Ich hab das oben vllt. bisschen falsch formuliert.
     
  24. 18. November 2009
    AW: Musikplayer Programmieren

    Falls ihr einen Anhaltspunkt für eure GUI sucht, kann ich euch QT samt Tutorial ans Herz legen: http://doc.trolltech.com/4.5/phonon-musicplayer.html

    Brauch das für ein Programm, was ich gerade schreibe(hab hier auch schon mehrmals deswegen rumgeheult ). Als Grundlage ist das bestimmt nicht schlecht und irgendwo müsst ihr ja Anfangen ^^
     
  25. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.