Fehler & Features

Was fehlt Vocaluxe? Ihr habt eine Idee, Anregung, oder euch ist eine Funktion eingefallen, die Ihr gerne in Vocaluxe sehen würdet?

Moderatoren: brunzel, flokuep, US-Team

Re: Fehler & Feautures

Beitragvon Flamefire » 20.02.2013, 23:34

Praktisch daran wären Diskussionen zur Lösung, Zuweisungen, wer es macht und Fortschritt.
Abgesehen davon sollen User das auch dort einfach eintragen können. Über das Forum ist schön und gut, aber Bugtracker ist einfach geeigneter.
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon Flamefire » 21.02.2013, 14:16

Erstes Commit dazu: https://github.com/Flamefire/Vocaluxe/c ... a644ab22c3ef3dcd7db9813350ae08445bdd868
Bitte mal Kommentieren, wenn nötig. Aber sollte passen. Green Day-American Idiot z.b. läuft super!

Ich würde auch beim hinzufügen der Noten sicherstellen, dass die sortiert sind. Also in den Zeilen und die Zeilen selbst. Bei der Gelegenheit gleich das ganze hinzufügen etwas überarbeiten wo nötig. (Hauptsächlich im Bezug auf diesen Teil, aber damit fallen auch ständige Neuberechnungen der min/max Beats weg und so)
Damit hat man das als Basis und kann z.b. Binäre Suche in den Noten verwenden. Macht die Spiel-Loop dann doch etwas performanter.

Gegenstimmen?
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon Flamefire » 21.02.2013, 18:23

Und nächste Commits. Hab den XML-Reader mal etwas umgeschrieben. Jedesmal den navigator mitzugeben und das ganze mit dem try-except über das unnötige XMLDoc war doch etwas umständlich. Sieht jetzt sauberer aus, meiner Meinung nach.
Schritte sind so klein wie möglich und in extra Branches.
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon brunzel » 22.02.2013, 19:04

Ich habe das jetzt so übernommen. Gleichzeitig habe ich noch etwas in der VocaluxeLib aufgeräumt.

Das mit dem Tracker ist auf dem Weg: http://84.200.73.138/redmine/projects/vocaluxe
Benutzeravatar
brunzel
SuperStar
 
Beiträge: 1444
Registriert: 29.05.2007, 02:20
Geschlecht: Männlein

Re: Fehler & Feautures

Beitragvon Flamefire » 22.02.2013, 21:14

Alles klar. Habs mal kommentiert, da ein Fehler bei der Verwendung des XML-Readers und 1 Verbesserung vorhanden ist.
Kümmerst du dich drum, oder soll ich?
Werd mich erst mal an den Noten weiter betätigen.

PS: Im Redmine registriert und warte auf Freischaltung.
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon Darkice » 22.02.2013, 21:46

Bist freigeschaltet, leider kann ich keine automatische Freischaltung machen, da ich noch keinen Mailserver aufgesetzt habe.
Benutzeravatar
Darkice
Star
 
Beiträge: 166
Registriert: 14.05.2010, 19:09
Geschlecht: Männlein

Re: Fehler & Feautures

Beitragvon pinky » 22.02.2013, 21:50

Ich hab mich auch registriert. Ich nehme gern die Installer Teil. Ich habe schon ein Probe gemacht.
Benutzeravatar
pinky
Möchtegern
 
Beiträge: 51
Registriert: 22.03.2012, 22:55
Wohnort: Deutschland
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon brunzel » 22.02.2013, 22:45

Flamefire hat geschrieben:Alles klar. Habs mal kommentiert, da ein Fehler bei der Verwendung des XML-Readers und 1 Verbesserung vorhanden ist.
Kümmerst du dich drum, oder soll ich?


Habs schon. Hab auch noch was an der Base Klasse geändert. Es gibt da aber noch was zu tun: Die Datei IMenu.cs ist derzeit ein Sammelbecken für alles Mögliche. Das müsste mal aufgesplittet und sortiert werden. Vielleicht jeweils eigene Dateien für alle Strukturen und Enums.
Benutzeravatar
brunzel
SuperStar
 
Beiträge: 1444
Registriert: 29.05.2007, 02:20
Geschlecht: Männlein

Re: Fehler & Feautures

Beitragvon Flamefire » 23.02.2013, 00:27

Ok, sehr schön. Das mit dem XML-Reader schon gemacht?
Und hab mal noch ein commit, wo ich das Song-laden etwas refactored habe. Bin halt gerade dort am arbeiten, und das fällt mit ab.
Dabei ist mir aufgefallen, dass der load-Covers benchmark eher das laden der Songtexte misst. Außerdem lädt der die Songtexte wenn er auf das Cover zugreifen soll. Das hat er aber eigentlich schon im header...
Da mal gucken, ob das raus kann.
Hab dazu ebenfalls mal eine static factory method erstellt, die eine CSong instanz erstellt und den header lädt.
Ich stell dann nen pull-request, wenns fertig ist. Da kommt noch einiges...
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon brunzel » 23.02.2013, 01:54

Stell mal Songloading auf "Bei Bedarf"... Wie du siehst - keine Noten beim Singen. Deshalb war das bei den Covern drin.
Aber du hast Recht - es gehört nicht da rein.

Vielleicht sollte man das mit dem Bedarf einfach nur auf die Cover beschränken und die Noten dennoch immer laden. Sonst funktioniert das mit den Meldeys und Short Songs und Duetten nicht richtig....
oder diese Option ganz entfernen. Macht irgendwie keinen Sinn mehr.
Benutzeravatar
brunzel
SuperStar
 
Beiträge: 1444
Registriert: 29.05.2007, 02:20
Geschlecht: Männlein

Re: Fehler & Feautures

Beitragvon Flamefire » 23.02.2013, 15:16

Also eigentlich nur ein (hässlicher) Workaround, weil da jemand Designtechnisch nicht aufgepasst hat, und das Lyrics-laden mit in die Cover reingenommen hat ;)
Dass die lyrics dann im Song fehlen liegt dann einfach daran, dass bei LoadNextSong das Cover statt der Noten abgefragt wird...

Das mit den Covers auf Bedarf funktioniert nicht korrekt. Das Big-Cover wird trotzdem nicht angezeigt. Außerdem wird bei getVisibleSong der Song kopiert. Dadurch werden die Cover immer wieder aus der DB geladen ->Performance. Nimmt man das Kopieren raus, geht auch das Big-Cover wieder.

Ich bin dafür, dass die Noten beim start geladen werden (Schonmal wegen Filter, Duett etc.) Hab das auch vorerst so in ein commit gebracht und gepusht.
Werde mal noch die änderungen der CBase integrieren.

Wenn die Cover-loading optionen weg sollen (bin fast dagegen. nur die noten sollten geladen werden!) wird es einfacher. Ansonsten sollte eine statusanzeige für das noten-laden mit rein. Vl statt der cover optionen, wenn das abgestellt ist.

Dynamic cover loading ist gefährlich: Ist nicht threadsicher derzeit.

Habe auch ein paar Kommentare (mit "//Flamefire:") Da mal bitte durchsehen. Eine Änderung macht die Songs etwas threadunsicherer aber die aktuelle Variante ist Performance verschwendung vom feinsten. Und hat den Big-Cover-Bug
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Feautures

Beitragvon brunzel » 24.02.2013, 21:17

Flamefire hat geschrieben:Also eigentlich nur ein (hässlicher) Workaround, weil da jemand Designtechnisch nicht aufgepasst hat, und das Lyrics-laden mit in die Cover reingenommen hat ;)

Nun, das war wohl ich. Ist allerdings schon einige Zeit her (v0.0.5). Hab' damals noch mit den verschiedenen Cover-Lade-Methoden herumgespielt. Irgendwann ist es dann in Vergessenheit geraten.

Flamefire hat geschrieben:Das mit den Covers auf Bedarf funktioniert nicht korrekt. Das Big-Cover wird trotzdem nicht angezeigt. Außerdem wird bei getVisibleSong der Song kopiert. Dadurch werden die Cover immer wieder aus der DB geladen ->Performance. Nimmt man das Kopieren raus, geht auch das Big-Cover wieder.

Was genau meinst du damit?

Flamefire hat geschrieben:Ich bin dafür, dass die Noten beim start geladen werden (Schonmal wegen Filter, Duett etc.) Hab das auch vorerst so in ein commit gebracht und gepusht.
Werde mal noch die änderungen der CBase integrieren.

Ja, das ist wohl besser.

Flamefire hat geschrieben:Dynamic cover loading ist gefährlich: Ist nicht threadsicher derzeit.

Warum? Ich sehe da keine Probleme.


Ansonsten Klasse Arbeit bisher! Wurde mal Zeit, dass sich das mal ein echter (und ich vermute mal erfahrener) Informatiker anschaut. Ich selbst bin "nur" ein Elektro-Ingenieur, der sich das Programmieren selbst beigebracht hat. Deshalb bitte ich dich bei zukünftigen Entdeckungen von Murks-Code etwas nachsichtiger zu sein.
Benutzeravatar
brunzel
SuperStar
 
Beiträge: 1444
Registriert: 29.05.2007, 02:20
Geschlecht: Männlein

Re: Fehler & Features

Beitragvon Flamefire » 24.02.2013, 21:46

Also System bisher: Wenn auf ein Cover zugegriffen wird, wird geschaut, ob die Texture schon geladen wurde und wenn nicht, wird die geladen.
Was ich mit dem Big-Cover meinte: Wenn er die Texture bei Bedarf lädt, wird das Big-Cover nicht angezeigt. Konnte aber keinen Fehler finden, was das betrifft. Texture wird geladen und entsprechend zugewiesen.

getVisibleSong() sieht so aus:
return new CSong(foundSong);

--> Er kopiert den Song. Wenn jetzt also auf der Kopie das Cover geladen wurde, hat die Kopie das Cover. Das Original nicht. Beim nächsten Draw ruft er getVisibleSong nochmal auf --> Kopie vom Original ohne Cover --> Cover wird wieder geladen. Und damit Performance Probleme. (Vocaluxe läuft auf unsrem kleinem netbook mit nur 20FPS, ist zwar kein Maßstab, aber trotzdem...)
Ich glaube nicht, dass Kopien nötig sind. Wir wollen ja immer das Original und Veränderungen auch dort übernehmen. Wenn nicht, sollte das explizit kopiert werden, richtig?

Wegen dynamic:
Er lädt alle Cover in einem thread wärend u.U. die Cover bereits im Mainthread (on request) geladen werden --> Mögliches doppeltes Laden. Könnte sein, dass durch den GC es keine Probleme gibt, aber sinnvoll finde ich das nicht. Ich denke OnDemand und AtStart reicht aus.

Was Murks-Code angeht: Ist ja nix böse gemeint. Mir gehts ja um konstruktive Kritik.
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Re: Fehler & Features

Beitragvon brunzel » 25.02.2013, 08:54

Flamefire hat geschrieben:Also System bisher: Wenn auf ein Cover zugegriffen wird, wird geschaut, ob die Texture schon geladen wurde und wenn nicht, wird die geladen.
Was ich mit dem Big-Cover meinte: Wenn er die Texture bei Bedarf lädt, wird das Big-Cover nicht angezeigt. Konnte aber keinen Fehler finden, was das betrifft. Texture wird geladen und entsprechend zugewiesen.

BigCover gab es auch noch nie. Es war für was anderes gedacht: Erst wird das verkleinerte Cover aus der DB geladen (ist performanter und braucht weniger RAM). Und dann wird mit der hochauflösenden Version von der Festplatte übergeblendet (wie be USDX). Wenn die Auswahl geändert wird, dann wird die hochauflösende Textur wieder entladen. Dieser Code muss aber erst noch geschrieben werden.
Deshalb wurde beim BigCover bisher einfach nur das SmallCover aufgerufen. Auf einem PC mit viel RAM kann man auch einfach die Cover-Texturgröße erhöhen.


Flamefire hat geschrieben:--> Er kopiert den Song. Wenn jetzt also auf der Kopie das Cover geladen wurde, hat die Kopie das Cover. Das Original nicht. Beim nächsten Draw ruft er getVisibleSong nochmal auf --> Kopie vom Original ohne Cover --> Cover wird wieder geladen. Und damit Performance Probleme.[..]
Ich glaube nicht, dass Kopien nötig sind. Wir wollen ja immer das Original und Veränderungen auch dort übernehmen. Wenn nicht, sollte das explizit kopiert werden, richtig?

Die Kopie wird eigentlich nur für die Medley-Geschichte gebraucht, da hier die Noten geändert werden. Und später vielleicht für den Editor.
Du kannst da gerne einen Vorschlag machen, wie man das eleganter lösen kann.

Flamefire hat geschrieben: (Vocaluxe läuft auf unsrem kleinem netbook mit nur 20FPS, ist zwar kein Maßstab, aber trotzdem...)

Schon mal versucht, die Videos zu deaktivieren? Die fressen auf so einem Gerät ca. 80% der Performance. Die Videos werden nämlich nur von der CPU dekodiert. Und dann müssen die fertigen Bilder auch noch mindestens 24x/s zur Grafikkarte übertragen werden. Je nach Treiber werden die geladenen Texturen dann auch noch in ein anderes Farbsystem konvertiert. Das ist alles nicht sehr effizient, macht aber bei halbwegs modernen Grafikkarten (selbst auf einer GMA950 läufts flüssig) keine Probleme. Bei Netbooks treffen aber eine sehr schwache CPU auf Intel-Typisch schwache Grafiktreiber.
Benutzeravatar
brunzel
SuperStar
 
Beiträge: 1444
Registriert: 29.05.2007, 02:20
Geschlecht: Männlein

Re: Fehler & Features

Beitragvon Flamefire » 25.02.2013, 14:05

Ok, etwas unklar ausgedrückt. Das BigCover im Song ist tatsächlich nicht in Verwendung. Es wird immer nur auf das SmallCover zugegriffen.
Ich meinte aber das BigCover-Feld in der Songauswahl. Also oben links. Habe hier erstmal geändert, dass der auf BigCover zugreift, was derzeit (bei nicht gesetztem BigCover) das SmallCover lädt.
Und ein Problem bei dem Song kopieren (was ich meinte) war, dass das Cover (bei uns smallCover) nicht im BigCover-Feld in der Songauswahl angezeigt wurde sondern einfach leer blieb.

Ok. Vorschlag: Man bekommt immer den Originalsong. Möchte man eine Kopie, erzeugt man sich eine mittels new Song(getVisibleSong())
Aber im allgemeinen möchte man das original. Besonders, da bei jedem Draw ereignis getVisibleSong aufgerufen wird. Es wird also 60x/s ein neues Song Objekt erstellt und die Listen kopiert. Nicht optimal, oder ;)
Das beim Medley schau ich mir an, dass der dort auch das Original nicht kaputt macht. Aber so weit finde ich das ohne Kopie deutlich besser.
Benutzeravatar
Flamefire
Star
 
Beiträge: 146
Registriert: 16.12.2007, 11:28
Geschlecht: Bin mir nicht sicher

Vorherige

Zurück zu Vocaluxe - Feature Request

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron