1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

MIDI + openGL auf Mac und Windows - aber welche Sprache?

    • Frage
  • Stephe
  • 7. Juni 2008 um 21:57
  • Unerledigt
  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    Punkte
    6.038
    Beiträge
    968
    • 7. Juni 2008 um 21:57
    • #1

    Ich kenn mich mit Programmiersprachen bzw. deren Lauffähigkeiten auf verschiedenen Plattformen wenig aus, deswegen hätt ich eine Frage:

    Es soll eine Software entwickelt werden, die MIDI-Daten empfangen kann und allerlei graphisches über OpenGL ausgibt. Das Problem dabei: es sollte sowohl auf Windows, als auch aufm Mac (und vielleicht auch auf Linux) rennen.
    VC++ fällt da schonmal aus, bei Java mach ich mir Sorgen wegen der Performance. vorallem weiß ich nicht was der Unterschied zwischen Java3D und JOGL ist. Soweit ich das verstanden hab ist JOGL die Basis für die aktuelle Java3D-Version, sofern diese überhaupt noch weiterentwickelt wird.

    Irgendwelche Tipps?

  • samyjr
    8
    samyjr
    Mitglied
    Reaktionen
    4
    Punkte
    609
    Beiträge
    117
    • 7. Juni 2008 um 22:45
    • #2
    Zitat von Stephe

    Soweit ich das verstanden hab ist JOGL die Basis für die aktuelle Java3D-Version, sofern diese überhaupt noch weiterentwickelt wird.

    hmm ... also Java3D hat als unterbau DirectX und/oder OpenGL ... je nachdem was auf den OS unterstützt wird ... zumindest war es früher so

    JOGL, soweit ich weiss, schleift nur alle funktion calls auf die OpenGL-dlls um und bietet halt die ganzen Interfaces etc. damit das möglich ist ... sogar shader support wird geboten (angeblich kann man auch CG (nividia C for graphics) mit jogl verwenden) ... ich glaub kaum das viel weniger performant ist, als wenn man die OpenGL functions über Java called, als gleich aus C/C++

  • fieselschweif
    5
    fieselschweif
    Mitglied
    Reaktionen
    1
    Punkte
    226
    Beiträge
    42
    • 8. Juni 2008 um 06:49
    • #3

    Portable OpenGL-Programme schreiben sollte keine Probleme bereiten, eher Sorgen machen würd ich mir da um den MIDI-Support - ich schätze mal die Files sollen auch abgespielt werden? (weil du nur sagtest "empfangen"...)
    Meiner Erfahrung nach sind MIDI Files unter Linux immer noch "a pain in the ass", wie das aufm Mac ist kann ich nicht sagen :winking_face:

    Aber warum fällt C++ aus? "VC++" ist ja nur eine Entwicklungsumgebung von Microsoft, aber mir der Sprache an sich kann man sehr wohl plattformunabhängig programmieren, wär ja schlimm wenn nicht!

    Grüße,
    fieselschweif

    http://happyvimming.blogspot.com/
    -----
    Etwas zusätzlichen Speicher gefällig?
    "Signetics 25120 - Fully Encoded, 9046xN Random Access Write-Only-Memory" (Datenblatt lesen!)

  • bjelli
    3
    bjelli
    Mitglied
    Punkte
    80
    Beiträge
    15
    • 8. Juni 2008 um 09:03
    • #4

    Vielleicht musst Du ja auch nicht "von null weg" programmieren, sondern kannst eine der realtime-multimedia-entwicklungsumgebungen verwenden:

    kommerziell, auf windows und Mac: Max/MSP

    http://en.wikipedia.org/wiki/Max_%28software%29

    oder lieber open source, auf Win+Mac+Unix: Pure Data (PD)

    http://en.wikipedia.org/wiki/Pure_Data

    Brigitte Jellinek - http://multimediatechnology.at/web-communities/
    Ich unterrichte in einem Medieninformatik-Studium (BSc, MSc) mit Schwerpunkt Web Development
    Meine Themen: Ruby on Rails, Javascript, SCRUM, git, Test Driven Development,...

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 8. Juni 2008 um 09:07
    • #5

    Als Programmiersprache wuerde ich, wie immer, die abstrakteste Sprache nehmen die Du findest. Wenn die Zeit knapp ist, dann besser die abstrakteste Sprache die Du bereits kennst. Und relativ populär sollte sie schon sein. Python, Ruby oder sowas. Auf jeden Fall würde ich mir zweimal überlegen, ob Du Dir hier wirklich Java oder sogar C++ antun musst. Die meisten Implementierungen von OpenGL sind sowieso in C implementiert.

    Als Plattform empfehle ich Java oder CPython.

    Fuer CPython gibt es z.B. http://pyopengl.sourceforge.net

    Fuer Java gibt es das schon angesprochene http://en.wikipedia.org/wiki/Java_OpenGL .

    lg, Benjamin Ferrari, bookworm.at

  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    Punkte
    6.038
    Beiträge
    968
    • 8. Juni 2008 um 11:19
    • #6

    Naja ich hätte da schon an Java gedacht, da ich damit doch schon einige Erfahrungen hab (Eprog, SE, DSLab, MM1), vorallem gäbe es da für MIDI das Java Media Framework für Windows, angeblich auch für Mac, ich hoffe das funzt da auch gscheit.

    Da das ganze im Rahmen eines Praktikums aufm VrVis stattfindet, kann ich da nicht irgendwas fertiges verwenden. Und Max/MSP/PD gehen da ein bissl in eine andere Richtung.
    Meine Zweifel hab ich bei Java halt immer in der Performance ;-), aber bei opengl müsst das ja anders sein, schließlich macht ja die Graka da die meiste Arbeit.

    2 Mal editiert, zuletzt von Stephe (8. Juni 2008 um 11:24)

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 8. Juni 2008 um 11:31
    • #7
    Zitat von Stephe

    Naja ich hätte da schon an Java gedacht, da ich damit doch schon einige Erfahrungen hab (Eprog, SE, DSLab, MM1)

    Dann ist Java sicher eine solide Option. Nicht, dass es kontraproduktiv waere eine abstraktere Sprache dazuzulernen. Aber das wuerde auf jeden Fall ersteinmal Zeit kosten.

    Zitat von Stephe


    vorallem gäbe es da für MIDI das Java Media Framework für Windows, angeblich auch für Mac, ich hoffe das funzt da auch gscheit.

    Java ist der Name fuer eine Programmiersprache, sowie fuer eine Softwareplattform. Das Java Media Framework ist Teil der Softwareplattform Java, d.h. Du kannst das mit jeder Programmiersprache benutzen, die es fuer Java gibt. Z.b. Java, aber auch Python, Ruby, Scala, Scheme und viele weitere.

    Und als Randnotiz: APIs fuer MIDI Verarbeitung gibt es eigentlich auf allen grösseren Softwareplattformen.

    lg, Benjamin Ferrari, bookworm.at

    5 Mal editiert, zuletzt von a9bejo (8. Juni 2008 um 11:43)

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 8. Juni 2008 um 12:49
    • #8
    Zitat von Stephe

    Meine Zweifel hab ich bei Java halt immer in der Performance ;-), aber bei opengl müsst das ja anders sein, schließlich macht ja die Graka da die meiste Arbeit.

    Vergiss die Gerüchte über die Performance von Java. Ich hab letztes Semester in der LVA Game Design ein komplettes 3D-OpenGL-Spiel in Java implementiert (mit jmonkeyengine und lwjgl), das ist einwandfrei gelaufen, obwohl ich mich um Performance überhaupt nicht gekümmert hab aus Zeitmangel (mein Profiler hat ergeben, dass die größte Performancebremse die Grafikkarte war, nicht der Java-Teil).
    Wenn dus ausprobieren willst, das Spiel ist hier: http://monitzer.com/moriarty/ (Java Webstart)

    Die MIDI-API ist unter Mac OS X, Windows und ich nehm an auch Linux völlig unterschiedlich, wenn du nicht sowas wie das Java Media Framework verwendest, musst du dich drauf einstellen, das ganze 3x zu programmieren.

    Übrigens könnte es sein, dass das ganze je nach Anforderungen am Mac sogar ohne textuelles Programmieren gehen würde mit dem Quartz Composer (Teil von den Developer Tools), der verwendet nämlich OpenGL für die Ausgabe, und unterstützt MIDI als input. Das ist mehr oder weniger eine graphische Programmiersprache, wo man einen Datenfluss mit der Maus zusammenklicken kann. Ist evtl ganz praktisch für einen Prototypen, aber unter Windows/Linux hast damit natürlich keine Chance.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

    Einmal editiert, zuletzt von hal (8. Juni 2008 um 12:52)

  • Stephe
    24
    Stephe
    Mitglied
    Reaktionen
    43
    Punkte
    6.038
    Beiträge
    968
    • 8. Juni 2008 um 13:14
    • #9

    Naja Gerüchte, Java ist bewiesenermaßen langsamer als so manch andere Sprache, aber egal. Es dürfte für die Zwecke reichen.
    Sofern JMF aufm Mac vernünftig funktioniert wird das auch eingesetzt. Windows hat außerdem eh Vorrang, erstens weil nur mein Kollege einen Mac hat und ich nicht, und außerdem werden wir am VrVis wahrscheinlich garkeinen Apfel zur Verfügung haben. Also fällt dieses Quartz-Tool sowieso weg.

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 8. Juni 2008 um 13:19
    • #10
    Zitat von Stephe

    Naja Gerüchte, Java ist bewiesenermaßen langsamer als so manch andere Sprache

    Es ist auch bewiesen worden, dass Java schneller als C++ ist (durch den Hotspot-Compiler). Glaube keiner Studie, die du nicht selbst gefälscht hast.

    Wo du noch aufpassen musst ist, dass das JMF am Mac nur eine beta oder sowas in der Art ist, teste das also mal vorher, bevor du da groß zum Programmieren anfängst.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 8. Juni 2008 um 15:28
    • #11
    Zitat von Stephe

    Naja Gerüchte, Java ist bewiesenermaßen langsamer als so manch andere Sprache, aber egal.

    Geruechte. Programmiersprachen haben praktisch sehr wenig bis gar keinen Einfluss auf die Geschwindigkeit einer Software. Und was Compiler betrifft: Da wird dir jeder Ruby/Python/Erlang/Smalltalkprogrammierer bestaetigen, dass die Softwareplatform Java eher zu den schnelleren Lösungen gehört.

    Wegen OptimizeLater ist das nicht besonders wichtig; Und wenn doch, dann würde ich jede Zeile Code in hochoptimiertem Assembler schreiben.

    lg, Benjamin Ferrari, bookworm.at

    3 Mal editiert, zuletzt von a9bejo (8. Juni 2008 um 17:31)

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 8. Juni 2008 um 18:42
    • #12
    Zitat von a9bejo

    Programmiersprachen haben praktisch sehr wenig bis gar keinen Einfluss auf die Geschwindigkeit einer Software.

    Naja, bei Java gehts ja nicht nur um die Programmiersprache, sondern um eine ganze Umgebung (Programmiersprache+Compiler+VM). Und die Umgebung kann sehrwohl einen Einfluss haben, siehe zB die lahme Krücke namens QuickBasic.

    Zitat

    Und wenn doch, dann würde ich jede Zeile Code in hochoptimiertem Assembler schreiben.

    Das ist heutzutage gar nicht mehr so einfach, da du auch so Dinge wie Caches, OoO und die Anzahl der processing Units eines bestimmten Typs berücksichtigen musst. Da kanns schon passieren, dass ein C/C++-Compiler (speziell die der Prozessorhersteller selber) dir effizienteren Code ausspucken, als du selber schreiben würdest.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 8. Juni 2008 um 19:34
    • #13
    Zitat von hal

    Naja, bei Java gehts ja nicht nur um die Programmiersprache, sondern um eine ganze Umgebung (Programmiersprache+Compiler+VM).

    Stephe hat aber ganz deutlich von der Sprache Java gesprochen, nicht von der Plattform:

    Zitat von Stephe


    Java ist bewiesenermaßen langsamer als so manch andere Sprache, aber egal.

    Ich weiss natuerlich wie er es gemeint hat: Darum hatte ich dann auch gleich meine Meinung zu gängigen Java Compilern und VMs dazu geschrieben.

    Zitat von hal


    Das ist heutzutage gar nicht mehr so einfach, da du auch so Dinge wie Caches, OoO und die Anzahl der processing Units eines bestimmten Typs berücksichtigen musst. Da kanns schon passieren, dass ein C/C++-Compiler (speziell die der Prozessorhersteller selber) dir effizienteren Code ausspucken, als du selber schreiben würdest.

    Sicher musst du für hoch optimierten Assemblercode sehr viel Zeit investieren. Aber Du musst ja auch viel mehr Zeit in dein C++ Programm investieren als in dein Java Programm, und in Dein Java Programm mehr als in Dein Ruby Programm. Ich sage nur das wenn Geschwindigkeit das kritische Kriterium ist, dann musst Du halt in den sauren Apfel beißen und andere Dinge vernachlässigen.

    In Wirklichkeit ist "schnell" natürlich meistens viel weniger interessant als "funktionell","günstig" oder "sicher". Und die meisten tatsächlichen Geschwindigkeitsprobleme hängen nicht einmal mit dem Compiler zusammen, sondern die Bottlenecks liegen im Algorithmus. Noch dazu beschränken die Geschwindigkeitsprobleme in der Regel auf weniger als 5% der Codebasis.

    Womit wir wieder bei OptimizeLater wären. Schreib das Zeug in der abstraktesten Sprache die Du kennst. Und wenn Du dann die Performance unzureichend ist - Dann such dir mit einem Profiler die 2% vom Code die ganze Performance versauen und lager die in gut optimierten C Code aus.


    PS: Ich kriege Moriarty's Empire am Mac/Java 5 leider nicht zum Laufen: Schwarzer Screen. Unter Linux/Java 6 laeuft es aber ganz prima ( und macht auch Spass! ).

    lg, Benjamin Ferrari, bookworm.at

    2 Mal editiert, zuletzt von a9bejo (8. Juni 2008 um 19:52)

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 8. Juni 2008 um 19:49
    • #14
    Zitat von a9bejo

    PS: Ich kriege Moriarty's Empire am Mac/Java 5 leider nicht zum Laufen: Schwarzer Screen. Unter Linux/Java 6 laeuft es aber ganz prima ( und macht auch Spass! ).

    Das Spiel funktioniert nur auf ATI- und Nvidia-Grafikkarten, diese GMA-Chips reichen nicht (ist auch eine Verarschung, was die unter OpenGL-Support verstehen). Vielleicht liegt da das Problem? Das ganze Spiel ist nämlich auf einem Mac entwickelt worden, sollte also da auch gehen.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung