<?xml version="1.0" encoding="UTF-8"?>
<tickets type="array">
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-05-04T17:06:52-07:00</created-on>
  <description>Die Intel Grafiktreiber scheinen ein Problem mit der gro&#223;en Anzahl von Texturen zu haben, die TFTFont anlegt. Hier ein Auszug einer Mail von Tobydox:
&lt;pre&gt;&lt;code&gt;
hab mich mit den Intel-Leuten mal &#252;ber das Problem mit USDX und dem Intel-Grafiktreiber unter Linux unterhalten. Die haben den Bug z.T. auch in anderen Programmen (auch wenn er da nicht so drastisch auftritt). Irgendwie kommt der Treiber nicht damit klar, dass USDX f&#252;r jeden Glyph der verschiedenen Fonts eine neue Textur anlegt (was immerhin &#252;ber 2000 sind) (dazu auch ein Kommentar von einem Intel-Entwickler: &quot;Of course, if the app is doing that many small textures then it should really really be doing texture atlasing.  But that wouldn't justify our behavior being that bad&quot;
&lt;/code&gt;&lt;/pre&gt;

Es gibt zwar f&#252;r Linux einen Workaround, aber evtl. ist die Texturanzahl auch der Grund daf&#252;r, dass bei Intel-Grafik unter Windows im minimiertem Zustand der Speicherverbrauch in die H&#246;he schie&#223;t.

Das Font-Rendering basiert auf einem NEHE Tutorial, in dem auch eine Textur pro Glyph genutzt wurde. In USDX wurde es auch dabei belassen, da der Speicherverbrauch trotz Verschnitts sehr gering ist.
Wenn jemand darauf Lust hat, kann er sich ja an FTGL (http://ftgl.svn.sourceforge.net/viewvc/ftgl/trunk/src/FTFont/FTTextureFont.cpp?revision=1214&amp;view=markup) orientieren, da dort wird Texture Atlasing verwendet.
Es w&#228;re sch&#246;n gewesen, wenn man FTGL direkt h&#228;tte benutzen k&#246;nnen. Aber da es nur C++ Header gibt und man einen Wrapper h&#228;tte schreiben m&#252;ssen, die Fonts zudem noch sehr unscharf bei Skalierungen sind und die Spiegelungseffekte (nur mit Multitexturing) und andere grafischen Spielereien von USDX gar nicht m&#246;glich waren, hatte ich eine eigene Implementierung in UFont.pas gestartet.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1384447</id>
  <importance type="integer">116</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">116</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Add Texture Atlasing for the TFTFont class</summary>
  <updated-at type="datetime">2010-08-24T07:53:14-07:00</updated-at>
  <working-hours type="float">3.0</working-hours>
  <working-hour type="float" warning="deprecated">3.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2008-01-15T07:44:58-07:00</created-on>
  <description>We still have some polluted areas were polish variables appear, this should be changed to enhance the overall readability of the source.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96657</id>
  <importance type="integer">8</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">8</number>
  <priority type="integer">4</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Translate polish variables to something readable</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-12-31T02:10:25-07:00</created-on>
  <description>Ability to replay captured voice after singing.

Attached is a proof of concept. It records the voice and replays it if 'R' is pressed in the score screen.
The patch is an ugly hack and does not free resources.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">2845131</id>
  <importance type="integer">126</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer"></milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">126</number>
  <priority type="integer">4</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Voice replay after singing</summary>
  <updated-at type="datetime">2010-12-31T02:10:25-07:00</updated-at>
  <working-hours type="float">4.0</working-hours>
  <working-hour type="float" warning="deprecated">4.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-08-23T09:51:00-07:00</created-on>
  <description>the recording works at first and stops working after a random time. The buffer content seems not to be cleared, the note that was sung when the bug appears is sung until the recording is stopped. The oscilloscope shows the same line over and over. (the line that was shown when the bug appears.

Some further (german) descriptions:
[[url:http://forum.ultra-star.de/viewtopic.php?f=41&amp;t=7190|link]]</description>
  <from-support type="integer">0</from-support>
  <id type="integer">483174</id>
  <importance type="integer">90</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">90</number>
  <priority type="integer">2</priority>
  <reporter-id>bM4BO6W3Sr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>recording bug with new versions of alsa on linux</summary>
  <updated-at type="datetime">2010-08-24T04:17:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2008-01-16T06:18:40-07:00</created-on>
  <description></description>
  <from-support type="integer">0</from-support>
  <id type="integer">96664</id>
  <importance type="integer">15</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">15</number>
  <priority type="integer">3</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Special chars don't work (incl. German &quot;Umlaute&quot;, Polish letters,..)</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-12-06T09:49:35-07:00</created-on>
  <description>If a song starts, the first few seconds the sound is really bad and crackly. In contrast to that, the preview is good.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">726193</id>
  <importance type="integer">94</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ,azIMU861Sr3jj8abIlDkbG,df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">94</number>
  <priority type="integer">3</priority>
  <reporter-id>azIMU861Sr3jj8abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Crackly sound playback at start of song</summary>
  <updated-at type="datetime">2011-09-21T13:33:21-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>azIMU861Sr3jj8abIlDkbG</id><login>s_alexander</login><login_name warning="deprecated">s_alexander</login_name><name>s_alexander</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-04-10T06:30:40-07:00</created-on>
  <description>Synchronization in USDX is still very buggy. Without synchronization as in USDX 1.0.1 audio, video and lyrics will be out of synch half of the song. Especially audio and video were not very synchronous with 1.0.1 on my windows system. This was due to the fact that audio is played by bass and video by ffmpeg both using different timers.


For USDX 1.1 I tried to solve this issue by synching lyrics, audio and video. This is mostly based on the approach on an ffmpeg tutorial:
http://dranger.com/ffmpeg/

IIRC I used the lyrics time (which is generated by a timer) as a master clock. The audio clock is synched against this master clock and video is synchronized against the audio clock.
There are some problems with this solution:
* this solution works good if only bass is used (without ffmpeg)
* this sometimes causes the audio to crackle as some bytes of the audio stream have to be skipped in order to keep up with the lyric timer
* the ffmpeg audio and video timestamps do not seem to be of high quality. IIRC there even were some audio timestamps with a time earlier than the previous timestamp
* on my linux system the soundcard consumes much more bytes than it should. For example in 44.1kHz mode it consumes 44150 samples instead of 44100 and so the audio stream will be played too fast and it has to be stopped for some time to be synched with the lyrics timer. This is a very nasty and noticeable problem on my system as it causes crackling etc.

There are two solutions for this problem:
1. disable synchronisation (and audio/video will be out of synch again) [not recommended but a quick fix]
2. synch lyrics and video to audio:
__* make audio the master clock
__* the lyrics clock was uses as a master in the current synch approach as I didn't know if the scoring algorithm poses problems if the lyrics time changes (and I still don't  know)
__* we have to make sure that audio timestamps have a good quality:
_____* they have to be monotone (a timestamp following another is not allowed to have a lesser value than the previous one)
_____* the timestamps do not have to jitter so the scoring and the lyric display are appropriately. This means a timestamp contains the correct audio postion with only a little tolerated difference.
_____* NOTE: FFmpeg produces very bad timestamps for Ogg-Vorbis files, for example 'Dead Smiling Pirates - I 18' (already the first timestamp is wrong), MP3 timestamps are better in general. So always test synch approaches with ogg-vorbis files.
__* NOTE: The ffmpeg demo player which is part of the ffmpeg distribution disables synching if the timestamp quality is too bad. This could be done in USDX too.
3. in my opinion the synch against audio will always cause crackling so my first approach should be abandoned (sorry). This could only be done if we could dynamically increase/decrease the frequency of the audio stream to make it slightly faster or slower. But changing the resampling frequency dynamically is not possible with ffmpeg or SDL (those are currently used), it is only possible with libsamplerate (it was not used as it was too slow).
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1251921</id>
  <importance type="integer">105</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">105</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Fix synchronization</summary>
  <updated-at type="datetime">2011-09-21T11:16:28-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2010-04-15T06:17:17-07:00</created-on>
  <description>Seems to appear again.
# in 6 player game (maybe screens = 2 issue)
# in party mode</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1278789</id>
  <importance type="integer">107</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">107</number>
  <priority type="integer">3</priority>
  <reporter-id>bM4BO6W3Sr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>infinite score raising bug (again)</summary>
  <updated-at type="datetime">2010-09-15T03:33:46-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-06-27T02:45:14-07:00</created-on>
  <description>A strange sound bug seems to appear as reported on facebook...:
&quot;Some times, after starting USDX, there is no sound at all, but if I then restart USDX using admninistrative mode, it usually works without any problems.
The strangest thing is, that I have disabled UAC, so I don&#180;t see what the administrative mode changes.
This is the only bug which happend to me so far, but it happens frequentlly. This bug appears only on 1.1 if I use the challenge mode I haven't had any bug at all yet.&quot;

... and forum:
http://ultrastardeluxe.xtremeweb-hosting.net/viewtopic.php?f=17&amp;t=1091</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1639175</id>
  <importance type="integer">121</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>bw7mrMWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">121</number>
  <priority type="integer">3</priority>
  <reporter-id>bw7mrMWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Sound bug?</summary>
  <updated-at type="datetime">2010-09-15T03:32:58-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bw7mrMWSmr3iBhabIlDkbG</id><login>Canni</login><login_name warning="deprecated">Canni</login_name><name>Canni</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2010-04-15T06:21:14-07:00</created-on>
  <description>correctly set default skin and color from theme file on first start and when changing themes</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1278821</id>
  <importance type="integer">108</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26192</milestone-id>
  <notification-list>bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">108</number>
  <priority type="integer">4</priority>
  <reporter-id>bM4BO6W3Sr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Set default skin and color</summary>
  <updated-at type="datetime">2010-08-24T07:31:05-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">true</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">true</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2008-01-15T08:04:14-07:00</created-on>
  <description>The options are somewhat unstructured at the moment, we should check what is really needed and throw out the garbage (Solmisation?!).</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96660</id>
  <importance type="integer">11</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ,bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">11</number>
  <priority type="integer">1</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Options structure</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">70.0</working-hours>
  <working-hour type="float" warning="deprecated">70.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2008-07-21T05:18:30-07:00</created-on>
  <description>Several flaws make it mandatory to rewrite or expand the song loading procedure. Because of the new threaded loading of songs there occurred an issue that stops USDX 1.1 to be released:

(A) Not all songs are read, covers of several songs are mixed up while loading is done

(B) Several flaws are known that will crash USDX when malformed TXT are read
    see trac tickets:* 16, #17 (further ones at sf.net:bugs)

(C) XML files can be loaded, but we should prefer a XML lib for reading instead of a self written one

(D) Encoding is a problem on Linux, file path's can contain UTF-8 and ISO (mount)
    it should be tested if the file path contains such encodings

(E) TXT encoding needs UTF-8 capability, something like &quot;* Encoding:&quot; in the TXT files are necessary to display special characters (&#228;&#246;&#252; in UTF-8..)
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96708</id>
  <importance type="integer">59</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG,bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">59</number>
  <priority type="integer">1</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Songloading component needs rewrite</summary>
  <updated-at type="datetime">2011-09-21T11:18:48-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>azIMU861Sr3jj8abIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2009-12-07T10:28:04-07:00</created-on>
  <description>In editor the first playback of a note is correct and the second is shifted a few seconds forward.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">729105</id>
  <importance type="integer">95</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>azIMU861Sr3jj8abIlDkbG</notification-list>
  <number type="integer">95</number>
  <priority type="integer">3</priority>
  <reporter-id>azIMU861Sr3jj8abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Sound position fails</summary>
  <updated-at type="datetime">2010-08-24T05:28:30-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>azIMU861Sr3jj8abIlDkbG</id><login>s_alexander</login><login_name warning="deprecated">s_alexander</login_name><name>s_alexander</name></assigned-to>
  <reporter><id>azIMU861Sr3jj8abIlDkbG</id><login>s_alexander</login><login_name warning="deprecated">s_alexander</login_name><name>s_alexander</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2009-12-08T12:51:00-07:00</created-on>
  <description>changing this setting in the options should cause a reload so, that the categories are there without restart

(or at least there should a warning, that the user has to restart)</description>
  <from-support type="integer">0</from-support>
  <id type="integer">734091</id>
  <importance type="integer">96</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>azIMU861Sr3jj8abIlDkbG,bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">96</number>
  <priority type="integer">3</priority>
  <reporter-id>azIMU861Sr3jj8abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>enable/disable categories without restart</summary>
  <updated-at type="datetime">2011-09-21T06:57:22-07:00</updated-at>
  <working-hours type="float"></working-hours>
  <working-hour type="float" warning="deprecated"></working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>azIMU861Sr3jj8abIlDkbG</id><login>s_alexander</login><login_name warning="deprecated">s_alexander</login_name><name>s_alexander</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">true</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">true</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-04-10T05:18:24-07:00</created-on>
  <description>In the options screen there should be separated options for fullscreen and windowed mode.
* The windowed mode options should contain some useful standard resolutions (already done in usdx)
* The fullscreen mode options should only contain valid resolutions enumerated by SDL</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1251871</id>
  <importance type="integer">103</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">103</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Separate resolutions for fullscreen and windowed mode</summary>
  <updated-at type="datetime">2010-08-24T07:22:50-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-04-28T04:54:24-07:00</created-on>
  <description>Pressing CTRL + ['A'-'Z'] does not work as SDL handles these key-presses as special keys and maps them to the char-codes 1-31. 
For example CTRL+'C' is 0x03. See http://www.bbdsoft.com/ascii.html for the mapping.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1356269</id>
  <importance type="integer">112</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">112</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>&quot;CTRL + char&quot; key presses not working</summary>
  <updated-at type="datetime">2010-08-24T07:46:45-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>aGS69OC8er3ABvab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2010-06-17T11:34:03-07:00</created-on>
  <description>Rework the preferences for Mac OS X, so it uses the platformspecific carbon/cocoa API according to the Guidelines</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1602101</id>
  <importance type="integer">117</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ</notification-list>
  <number type="integer">117</number>
  <priority type="integer">3</priority>
  <reporter-id>aGS69OC8er3ABvab7jnrAJ</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Rework preferences on Mac OS X</summary>
  <updated-at type="datetime">2010-08-24T08:45:50-07:00</updated-at>
  <working-hours type="float">20.0</working-hours>
  <working-hour type="float" warning="deprecated">20.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></assigned-to>
  <reporter><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>aGS69OC8er3ABvab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2010-06-17T11:41:37-07:00</created-on>
  <description>paths on Mac OS X can be improved in the following way:
1) default themes, visuals, languages and plugins should be in the application bundle in addition to the folders in Application Support.
2) resources, sounds and fonts should only be in the application bundle
3) some cleanup for Application Support, i.e. no Info.plist, no COPYING.txt
4) checking for duplicates (songs, themes, languages, plugins) and ask user, whether they should be removed</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1602121</id>
  <importance type="integer">118</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ</notification-list>
  <number type="integer">118</number>
  <priority type="integer">3</priority>
  <reporter-id>aGS69OC8er3ABvab7jnrAJ</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>extending and changing paths on Mac OS X</summary>
  <updated-at type="datetime">2010-08-24T08:45:50-07:00</updated-at>
  <working-hours type="float">30.0</working-hours>
  <working-hour type="float" warning="deprecated">30.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></assigned-to>
  <reporter><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>aGS69OC8er3ABvab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2010-06-17T11:43:16-07:00</created-on>
  <description>Add a dialog to add folders to the selection of song paths. Definitely for Mac OS X, maybe other platforms, too.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1602125</id>
  <importance type="integer">119</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ</notification-list>
  <number type="integer">119</number>
  <priority type="integer">3</priority>
  <reporter-id>aGS69OC8er3ABvab7jnrAJ</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Option to add songs paths</summary>
  <updated-at type="datetime">2010-08-24T08:45:50-07:00</updated-at>
  <working-hours type="float">20.0</working-hours>
  <working-hour type="float" warning="deprecated">20.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></assigned-to>
  <reporter><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>aGS69OC8er3ABvab7jnrAJ</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2010-06-22T02:12:30-07:00</created-on>
  <description>enable projectM for Mac OS X. The current state is documented here:

http://ultrastardeluxe.xtremeweb-hosting.net/wiki/doku.php?id=development:how_to_compile_usdx_using_the_makefile_on_mac_os_x#projectm 
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1618479</id>
  <importance type="integer">120</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ</notification-list>
  <number type="integer">120</number>
  <priority type="integer">3</priority>
  <reporter-id>aGS69OC8er3ABvab7jnrAJ</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Mac OS X: enable projectM</summary>
  <updated-at type="datetime">2010-08-24T08:49:52-07:00</updated-at>
  <working-hours type="float">40.0</working-hours>
  <working-hour type="float" warning="deprecated">40.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></assigned-to>
  <reporter><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2010-06-27T02:46:56-07:00</created-on>
  <description>As reported in several forums and on facebook:
The videogap and some other edits in txt file requires a restart of game
(previous version allowed to edit it without the need to restart it)</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1639177</id>
  <importance type="integer">122</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>bw7mrMWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">122</number>
  <priority type="integer">3</priority>
  <reporter-id>bw7mrMWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Refresh videogap &amp; co</summary>
  <updated-at type="datetime">2010-09-15T03:31:51-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bw7mrMWSmr3iBhabIlDkbG</id><login>Canni</login><login_name warning="deprecated">Canni</login_name><name>Canni</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">13</component-id>
  <created-on type="datetime">2010-07-11T23:55:10-07:00</created-on>
  <description>Update the headers of libpng (lib/libpng/png.pas) from 1.2.* to 1.4.*

relevant docs:  http://libpng.sourceforge.net/ANNOUNCE-1.4.1.txt</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1730401</id>
  <importance type="integer">124</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ,bhPqD2DHSr376ieJe5cbCb</notification-list>
  <number type="integer">124</number>
  <priority type="integer">3</priority>
  <reporter-id>aGS69OC8er3ABvab7jnrAJ</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Update libpng headers to 1.4.*</summary>
  <updated-at type="datetime">2011-01-03T10:48:02-07:00</updated-at>
  <working-hours type="float">40.0</working-hours>
  <working-hour type="float" warning="deprecated">40.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2008-01-16T08:58:26-07:00</created-on>
  <description>Finish/Repair beats-per-minute change..</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96677</id>
  <importance type="integer">28</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG,bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">28</number>
  <priority type="integer">4</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>BPM change in txt</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">true</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">true</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2010-08-15T03:10:24-07:00</created-on>
  <description>If the name of a song contains a backslash, which is possible on Mac/Linux, the program crashes without an obvious hint about what is wrong. It should report an error, give a warning, maybe skip the song, ... but continue. Although this is probably a rare case, it did already happen and it was terrible to find out the reason.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1897727</id>
  <importance type="integer">125</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>aGS69OC8er3ABvab7jnrAJ</notification-list>
  <number type="integer">125</number>
  <priority type="integer">4</priority>
  <reporter-id>aGS69OC8er3ABvab7jnrAJ</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Crash with backslash in song name</summary>
  <updated-at type="datetime">2010-08-24T09:59:01-07:00</updated-at>
  <working-hours type="float">16.0</working-hours>
  <working-hour type="float" warning="deprecated">16.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>aGS69OC8er3ABvab7jnrAJ</id><login>kamischi</login><login_name warning="deprecated">kamischi</login_name><name>kamischi</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2009-03-02T01:32:58-07:00</created-on>
  <description>The editor should get a few updates
to make it easier to create and edit songs.

Some fixes like character support
and changing at least the M and D keys
to a double combination like STRG + M  or STRG + D
to avoid unwanted changes by pressing. D and S.
(and the functions D and M should be fixed)

There&#180;s also a feature which I suggest to help
people creating more songs.

Corvus did the feature &quot;Save Player Notes&quot;
But that did not work very well so I suggest the following:

What about copying the nice bar we have in the Record screen
to the editor ? So people can sing that note, get the information which note it is
and then set it manually ?

http://img87.imageshack.us/img87/7104/0001.png</description>
  <from-support type="integer">0</from-support>
  <id type="integer">294174</id>
  <importance type="integer">83</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">127651</milestone-id>
  <notification-list>bw7mrMWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">83</number>
  <priority type="integer">5</priority>
  <reporter-id>bw7mrMWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Editor fixes and updates</summary>
  <updated-at type="datetime">2010-08-24T03:02:19-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bw7mrMWSmr3iBhabIlDkbG</id><login>Canni</login><login_name warning="deprecated">Canni</login_name><name>Canni</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-16T08:12:39-07:00</created-on>
  <description>Keeping things clean is hard at the moment. Game plugins use textures from the skin, their language strings have to be attached to the USDX internal language.ini and so on. To have the possibility for an autoupdater we need to have a clean and easy structure.


Things to do:
*  Make a &quot;libraries&quot; folder
*  stuff all core .dlls (i.e. sdl.dll, sqlite.dll,..) in there
*  Merge &quot;themes&quot; and &quot;skins&quot; folder (kill &quot;skins&quot; folder, and copy it's content to &quot;themes&quot;)
*  usdx_root/themes/deluxe/ &lt;- this folder has all the textures and it's skin.ini(s)
*  usdx_root/themes/deluxe.ini &lt;- no need to change that
*  sounds folder should be within the themes, cause sounds should be customizable
*  Game plugins
*  plugins need to have their own textures, sounds and language settings
*  usdx_root/plugins(/game)/blind &lt;- the root folder of the plugin &quot;sing blind&quot;
*  usdx_root/plugins(/game)/blind/blind.dll &lt;- the actual plugin
*  usdx_root/plugins(/game)/blind/english.txt &lt;- the plugins language strings
*  usdx_root/plugins(/game)/blind/german.txt &lt;- -&quot;&quot;-
*  usdx_root/plugins(/game)/blind/pointer.png &lt;- texture this plugin utilizes
*  usdx_root/plugins(/game)/blind/blind.xml &lt;- this one contains the version of the plugin, it's used textures, and it's settings
*  the last one assures that we could do an autoupdate (i.e. new languages, increased stability, and foremost it's easy to uninstall)

----
More ideas?</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96668</id>
  <importance type="integer">19</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">19</number>
  <priority type="integer">1</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>New folder structure</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2008-01-16T08:57:28-07:00</created-on>
  <description>Update the graphic display mode (resolution and fullscreen) while game is running. To switch between fullscreen and windowed should be [Alt]+[tab], cause this is quite common in other programs.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96676</id>
  <importance type="integer">27</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">27</number>
  <priority type="integer">2</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Runtime change: resolution and fullscreen</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-03-02T17:59:33-07:00</created-on>
  <description>Please can the make file also make a few more targets for users..

EG.. something like &quot;make binary-tgz&quot; would be nice..

will also extend this in the future to include &quot;make rpm&quot;
but at this point I hant looked at the rpm build chain and we should focus on other stuff
for the moment :)

but I suspect the &quot;make binary-tgz&quot; would be simple.

I would like it to be basicly the same directory structure as the deb file.
but in tgz form.. so a user can download and extract the tgz and play.

so its similar to our ZIP file that we provide for windows.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96689</id>
  <importance type="integer">40</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bxjsFEWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">40</number>
  <priority type="integer">2</priority>
  <reporter-id>bxjsFEWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Changes to make file - &quot;Make binary-tgz&quot;</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bxjsFEWSmr3iBhabIlDkbG</id><login>jaybinks</login><login_name warning="deprecated">jaybinks</login_name><name>jaybinks</name><email>jaybinks@users.sourceforge.net</email></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2008-01-15T07:40:42-07:00</created-on>
  <description>This is not finished yet, because Blindy is unsure if his animations suit the needs of Whiteshark.
[[BR]]
[[BR]]
Issues to be solved:[[BR]]

1. There's also a problem with outlined fonts, if zoomed out a overlapping bug appears.[[BR]]

2. Precise description how the effects should look like[[BR]]
----
- flash/blink if lyrics continues directly[[BR]]
- P1, P2, .. Statics at Lyrics[[BR]]
- (Scroll Effect)[[BR]]
- Fade Lyrics out when song/lyrics is/are finished[[BR]]
(http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1770715&amp;group_id=191560&amp;atid=937875)</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96656</id>
  <importance type="integer">7</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">7</number>
  <priority type="integer">3</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Lyric animations</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">8</component-id>
  <created-on type="datetime">2008-01-16T06:37:06-07:00</created-on>
  <description>The party mode is a lot of fun. But the last time we played in three teams with 2 players each the sequence was quite strange. A possible player sequence was 1-1-2-2-2-2-1. The shares are good, but a rotating order (or a limit of one repetition) would be better than full randomness.
----
(blakharaz | sf.tracker)
http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1777977&amp;group_id=191560&amp;atid=937875</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96667</id>
  <importance type="integer">18</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">18</number>
  <priority type="integer">3</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>less randomness of the party modes</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">8</component-id>
  <created-on type="datetime">2008-01-16T08:14:15-07:00</created-on>
  <description>- Player can choose the disciplines in party mode (no random choice)

- Play modi in single player
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96669</id>
  <importance type="integer">20</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">20</number>
  <priority type="integer">3</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Select game mode in party</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-16T08:27:08-07:00</created-on>
  <description>Any ideas how to structure that stuff?
My idea would be a separate folder called &quot;profiles&quot; with subfolder for the players and their avatar pictures.

Like:[[BR]]
usdx_root/profiles/mog &lt;- the root folder for me[[BR]]
usdx_root/profiles/mog/mog.xml &lt;- my name, my settings (the avatar picture i chose)[[BR]]
usdx_root/profiles/mog/pic.png &lt;- the avatar[[BR]]
[[BR]]
Instead of choosing the profile with a cryptic keystroke (strg+f1) we could offer a profile browser</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96670</id>
  <importance type="integer">21</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">21</number>
  <priority type="integer">3</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>User profiles</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-16T08:54:17-07:00</created-on>
  <description>Some user experience problems with &quot;non-compliant&quot; mpeg1-files:


The video is not displayed. Reconverting and disabling the audio stream worked for most of the users. This problem seems to be quite random and seems only to happen with some mpeg files. Maybe it has to do with the audio stream, maybe not. We should figure that out.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96675</id>
  <importance type="integer">26</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">26</number>
  <priority type="integer">3</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Enhance video support for non-compliant mpeg1-files</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-03-06T22:45:39-07:00</created-on>
  <description>This is a good example of using SDL_AddTimer
to get a fixed frame rate ( We need to decide on what is good here )
and how to use SDL_WaitEvent to handle the looping..

http://cairographics.org/SDL/SDLClock.c

I believe we should implement something very similar to this in USDX</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96691</id>
  <importance type="integer">42</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bxjsFEWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">42</number>
  <priority type="integer">3</priority>
  <reporter-id>bxjsFEWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Re Implement Timer loops in USDX</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bxjsFEWSmr3iBhabIlDkbG</id><login>jaybinks</login><login_name warning="deprecated">jaybinks</login_name><name>jaybinks</name><email>jaybinks@users.sourceforge.net</email></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2008-03-10T17:33:08-07:00</created-on>
  <description>TLine and TLines together are the same as TSentence. It is useless to have two definitions of the same with another name. Its better to remove one and use everywhere the same.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96693</id>
  <importance type="integer">44</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>azIMU861Sr3jj8abIlDkbG</notification-list>
  <number type="integer">44</number>
  <priority type="integer">3</priority>
  <reporter-id>azIMU861Sr3jj8abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Remove declaration of TLine and TLines in UMusic.pas and use TSentence from ModiSDK.pas</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>azIMU861Sr3jj8abIlDkbG</id><login>s_alexander</login><login_name warning="deprecated">s_alexander</login_name><name>s_alexander</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2009-06-01T08:35:03-07:00</created-on>
  <description>The record screen is built up depending on soundcards...
You can set up each soundcard and assign players.

Wouldn&#180;t it make more sense to do that player based ?

Player 1: -&gt; Assign Soundcard, Input and Channel
Player 2: -&gt; Assign Soundcard, Input and Channel
Player 3: and so on
Player 4:
Player 5:
Player 6:

So you can set up recording for each PLAYER and not for each SOUNDCARD ?</description>
  <from-support type="integer">0</from-support>
  <id type="integer">389109</id>
  <importance type="integer">87</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bw7mrMWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">87</number>
  <priority type="integer">3</priority>
  <reporter-id>bw7mrMWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Reorder Record screen</summary>
  <updated-at type="datetime">2010-08-24T03:37:43-07:00</updated-at>
  <working-hours type="float"></working-hours>
  <working-hour type="float" warning="deprecated"></working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bw7mrMWSmr3iBhabIlDkbG</id><login>Canni</login><login_name warning="deprecated">Canni</login_name><name>Canni</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-04-28T05:30:43-07:00</created-on>
  <description>Much time is spent to adjust the FFmpeg pascal header files. Maybe we could implement the FFmpeg decoding/resampling/playback stuff in C and link USDX to the resulting DLL. Brunzel started using Acinerella for this purpose. The problem with this library is that it still needs much work to keep it up to date and it is not part of any linux distribution. 

That means the C code Acinerella lib has to be compiled on linux by the USDX Makefile which is a pain as the build chains of C and FPC are rather different (see the projectM C-Wrapper).
If a C library is used, the USDX build mechanism should be changed from Autotools (autoconf, configure, make, ...) to CMake. I already started a CMake branch for USDX. It is very easy to combine Pascal and C code with it (see projectM). The CMake branch was nearly complete, only the Mac OS X Bundle creation stuff is missing.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1356371</id>
  <importance type="integer">113</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">113</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Move FFmpeg code to C</summary>
  <updated-at type="datetime">2010-08-24T07:46:47-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2010-04-28T05:46:34-07:00</created-on>
  <description>The available shortcuts keys and names shown at the bottom of the screen are not defined by the application but by the theme. This is very nasty as for each new shortcut all themes have to be adjusted.
Instead it should be possible to define the shortcuts in the constructor of the screen, like

Shortcuts.Add([MOD_ALT, MOD_SHIFT, 'K'], SOME_SHORTCUT_DESCRIPTION)

For the character keys there should only be one blank key image. The keyname can then be rendered on it at runtime so there is no need to have an image for every single character.
This would speed up development, provide a better documentation for the users and eases theme creation and maintenance.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1356447</id>
  <importance type="integer">114</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">114</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Define available shortcuts by the application not the theme</summary>
  <updated-at type="datetime">2010-08-24T07:46:48-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2010-04-28T06:27:09-07:00</created-on>
  <description>The GNU gettext library is the standard for translating applications to other languages. There are many tools like poedit that assist a translator.

Some links:
- http://www.gnu.org/software/gettext/ (gettext homepage)
- http://www.gnu.org/software/gettext/manual/gettext.html#Pascal (gettext manual, Pascal section)
- http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs/de (FPC + gettext)
- http://dxgettext.po.dk/ (Delphi + gettext)

These are the steps for getting gettext to work:
1. mark strings as localized, either by
1.1. defining them as a resourcestring
1.2. marking them by a _() function
2. extract the marked strings to a .po file (
3. copy the .po to a localized file, e.g. ultrastardx.po -&gt; ultrastardx.de.po and translate the strings
4. compile the .po files into .mo files
5. load the .mo file of the user specified language from the application (the language selection is not fixed during runtime)

Remarks to 1)
- The gettext manual proposes the &quot;resourcestring&quot; approach for pascal
- The xgettext tool is not able to parse pascal code for _() functions. This is only possible for C/C++/C#/PHP/Java/Perl and almost all other languages except Pascal.
- The Lazarus IDE has integrated support for the creation of .po-files from resourcestrings. If Lazarus is not available we can still use  &quot;rstconv -i *.rst -o *.po&quot; (rstconv is part of FPC) for this task from a Makefile.
- dxgettext is a command-line tool that is able to parse pascal code with either resourcestrings, _() &quot;markers&quot; or both. In addition it has great Delphi support. There are linux + mac versions too but they are not included in any linux repository (Ubuntu etc.) so we have to compile them ourselves (using the pre-compiled linux binaries is not a good idea).

Remarks to 4)
- compilation of .po to .mo files can be done with msgfmt, either by a Makefile or by adding it into the post-compile action of the lazarus compilation options of the USDX project file
- poedit is able to compile .po files to .mo too and could be used for delphi, dxedit will probably work too
- the .mo files seem to be machine (win, linux, mac, x86, x86_64) dependent so compiling them once and checking them into svn will probably not work
- Maybe it is possible to use the .po files directly, that would make things easier especially on windows. They are not as fast as the .mo files but probably still faster than the current .ini approach of USDX

Questions:
- Should we use &quot;resourcestring&quot; or a _() function? Although the latter one seems to be the better approach it does not work without dxgettext and might be a struggle to get it to work on non-windows systems.
- How do we create those .mo files with least effort on windows? (This is not a problem for systems with &quot;native&quot; Makefile support)
- which pascal headers should we use? The FPC or the dxgettext ones?

Proposal 1:
- Use &quot;resourcestring&quot; to mark strings
- Windows users should use either Lazarus or Delphi + dxgettext
- Add rstconv and msgfmt calls to the Makefile so Linux + Mac users can go on as usual

Proposal 2:
- Use _() to mark strings
- Windows users HAVE to install dxgettext (and have to integrate it into the windows file-explorer by this)
- Linux + Mac:
  - copy the dxgettext code into the USDX tools dir
  - add a rule to build dxgettext to the Makefile
  - start dxgettext on the USDX sourcecode from the Makefile

Somebody should open an SVN  branch an experiment a little bit with gettext.
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">1356615</id>
  <importance type="integer">115</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">115</number>
  <priority type="integer">3</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Use gettext</summary>
  <updated-at type="datetime">2010-08-24T07:46:50-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-15T06:51:09-07:00</created-on>
  <description>To some people it's uncommon to enter the options screen to change the amount of players. Let's add a select slide there, so player amount can be changed on runtime.




Other subtasks that would appear if we do that are:

1.  Input configuration

1.1 Equalizer near the player, visualize that this player has a working input device

1.2 A button that opens a dialog box/screen to select that players audio device (wizard?)

1.3 Make sure this device isn't used by any other player

1.4 This should work for the party player selection too</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96651</id>
  <importance type="integer">2</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG,bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">2</number>
  <priority type="integer">4</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>1</status>
  <status-name>Accepted</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Amount of players can be changed in &quot;change name&quot; screen</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">12</component-id>
  <created-on type="datetime">2008-01-15T07:50:24-07:00</created-on>
  <description>uSingNotes instead of the four uDraw procedures</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96658</id>
  <importance type="integer">9</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">9</number>
  <priority type="integer">4</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Draw notes as a separate class</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-15T08:14:50-07:00</created-on>
  <description>At the moment it's not cognizable if a new high score was made.



Possible improvements:

- Avatar picture near the playername

- See scores from other difficulties (select slide?)

- Team top5, party scores are saved and can be shown

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96661</id>
  <importance type="integer">12</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">12</number>
  <priority type="integer">4</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Top5 screen</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-28T10:19:37-07:00</created-on>
  <description>USDX uses Midi for kar/midi-file to txt-conversion and for playback of the notes in the editor. The current MIDI implementation does not work in Linux or MacOSX.
If this feature is needed, platform independent MIDI support should be added to USDX.
Timidity++ probably is the best approach to achieve this (supports MIDI-playback and MIDI (or kar) file-reading). There also exists a game-library named allegro (it is similar to SDL) that supports MIDI playback and file-reading, but this would be too much overhead.

Timidity++ has been ported to Linux/Windows and MacOSX.
If Timidity++ (&quot;&quot;:http://timidity.sourceforge.net) should be used, we would need pascal header-files first. I already searched for pascal header-files but didn't found any. An example program would be nice too.

Maybe someone would like to do this.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96685</id>
  <importance type="integer">36</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">36</number>
  <priority type="integer">4</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Midi-Support for linux</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-03-06T17:13:01-07:00</created-on>
  <description>Playlist support in 
/UltrastarDeluxe/trunk/Game/Code/Classes/UPlaylist.pas
seems to be working fine for now, but in the future I think it should be re-done.

Arrays are not ideal for this sort of thing, and TList descendants should be used 
this would have simplified the playlist sorting that was done in CS* 925 and would 
provide much nicer memory management.

My proposal is that the Playlist array be replaced by a TPlayList class that descends from TList.

Also the Playlist class should extend to support other playlist formats such as those used by winamp ( pls ) and possibly other popular music players.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96690</id>
  <importance type="integer">41</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bxjsFEWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">41</number>
  <priority type="integer">4</priority>
  <reporter-id>bxjsFEWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>ReWrite Playlists</summary>
  <updated-at type="datetime">2010-08-24T02:10:02-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bxjsFEWSmr3iBhabIlDkbG</id><login>jaybinks</login><login_name warning="deprecated">jaybinks</login_name><name>jaybinks</name><email>jaybinks@users.sourceforge.net</email></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-03-12T02:42:59-07:00</created-on>
  <description>We need to pass the voice data from the input- to the output-devices so the players can hear what they sing. This is a nice feature in loud or large rooms. It is necessary for the linux version too because there are no helper tools for this feature (or is there any?).

The problem might be the latency between input and output. Especially Vista is known to have bad latency. Decreasing latency will probably decrease sound-quality (like it did in UltraStar V0.5.3).

See: http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1791197&amp;group_id=191560&amp;atid=937875
</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96694</id>
  <importance type="integer">45</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">45</number>
  <priority type="integer">4</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>4</status>
  <status-name>Test</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Live-Voice/Voice-Passthrough/Voice-Echo</summary>
  <updated-at type="datetime">2011-04-07T10:40:25-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-03-31T23:32:03-07:00</created-on>
  <description>this is quite low priority but..

we should abstract playlists to a standard interface so that we can use the
native playlist format on different systems..

such as .pls .asx ( Winamp / media player )
maybe Itunes playlists
and possibly we should even implement http://www.xspf.org/specs/

thoughts ?</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96697</id>
  <importance type="integer">48</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bxjsFEWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">48</number>
  <priority type="integer">4</priority>
  <reporter-id>bxjsFEWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Plugable Playlist formats</summary>
  <updated-at type="datetime">2010-08-24T02:10:03-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bxjsFEWSmr3iBhabIlDkbG</id><login>jaybinks</login><login_name warning="deprecated">jaybinks</login_name><name>jaybinks</name><email>jaybinks@users.sourceforge.net</email></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-05-05T08:33:46-07:00</created-on>
  <description>When the Escape button is pressed, then nothing should be saved</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96701</id>
  <importance type="integer">52</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">52</number>
  <priority type="integer">4</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Options - leave without saving</summary>
  <updated-at type="datetime">2010-08-24T02:10:03-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id>bM4BO6W3Sr3iBhabIlDkbG</assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">10</component-id>
  <created-on type="datetime">2008-07-13T01:33:19-07:00</created-on>
  <description>The DirWatch unit observes the song-dirs for changes on the song (and lyrics?) files. If USDX displays the Song-Screen USDX crashes if a song-file is changed. Probably because of a race-condition between the main and the DirWatch-thread. Both of them access the CatSongs array concurrently. 

To fix this problem either CatSongs must be locked or the DirWatch thread just signals changes instead of accessing CatSongs directly. The later one is the preferred solution and can be achieved with SDL_PushEvent/SDL_WaitEvent that will issue a RefreshSongList() performed by the main thread.</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96705</id>
  <importance type="integer">56</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG,bM4BO6W3Sr3iBhabIlDkbG</notification-list>
  <number type="integer">56</number>
  <priority type="integer">4</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>DirWatch crashes</summary>
  <updated-at type="datetime">2010-08-24T02:10:03-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to><id>bM4BO6W3Sr3iBhabIlDkbG</id><login>Whiteshark</login><login_name warning="deprecated">Whiteshark</login_name><name>Whiteshark</name></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">true</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">true</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-15T06:54:43-07:00</created-on>
  <description>Speed things up when a processor with multiple cores is in use</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96652</id>
  <importance type="integer">3</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">3</number>
  <priority type="integer">5</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Seperate thread for video frame decoding</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-01-15T08:25:20-07:00</created-on>
  <description>Just a reminder for blindy:

- Throw all textures into RAM (extra thread)

- When done, create OpenGL textures in main thread

- Free RAM

</description>
  <from-support type="integer">0</from-support>
  <id type="integer">96662</id>
  <importance type="integer">13</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bPVVKWPhSr3jQYabIlDkbG</notification-list>
  <number type="integer">13</number>
  <priority type="integer">5</priority>
  <reporter-id>bPVVKWPhSr3jQYabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Loading screen</summary>
  <updated-at type="datetime">2010-08-24T02:10:01-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bPVVKWPhSr3jQYabIlDkbG</id><login>mogguh</login><login_name warning="deprecated">mogguh</login_name><name>mogguh</name></reporter>
<custom-fields>
</custom-fields>
<CustomFields deprecated="use custom-fields">
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer"></component-id>
  <created-on type="datetime">2008-12-03T23:42:36-07:00</created-on>
  <description>Allow to change the sample rate of microphone ports
in recording options if possible cause some stereo
mic ins need a lower sample rate than 44100 hz to
work as stereo mic (tested with 9600 hz)

tested with Realtek ALC262 soundcard (notebook).
needs testing with other stereo mic in soundcards !</description>
  <from-support type="integer">0</from-support>
  <id type="integer">217443</id>
  <importance type="integer">72</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bw7mrMWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">72</number>
  <priority type="integer">5</priority>
  <reporter-id>bw7mrMWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Sample rate</summary>
  <updated-at type="datetime">2010-08-24T02:38:18-07:00</updated-at>
  <working-hours type="float"></working-hours>
  <working-hour type="float" warning="deprecated"></working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bw7mrMWSmr3iBhabIlDkbG</id><login>Canni</login><login_name warning="deprecated">Canni</login_name><name>Canni</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">11</component-id>
  <created-on type="datetime">2009-03-01T06:02:18-07:00</created-on>
  <description>We already got 35 songs we&#180;re allowed to distribute (1.3.2009).
I guess it&#180;s time for competing Sony&#180;s SingStore and offering
the possibility to download songs *ingame*.

Features that the UltraStore should contain:
- Song / Video preview, browsing functions
- Download songs 

- Provider: Ultrastar deluxe as song provider (certificated)
but with the ability to add other song service providers
from where (free/cc-songs) could be downloaded.

Based on the idea of Sony&#180;s SingStore, [[url:http://ultrastardeluxe.xtremeweb-hosting.net/viewtopic.php?f=13&amp;t=310&amp;p=1593|this project in our forum]]
and the [[url:http://usdx.free.fr/ultrastore/dev.php|projects website]].</description>
  <from-support type="integer">0</from-support>
  <id type="integer">293773</id>
  <importance type="integer">81</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26193</milestone-id>
  <notification-list>bw7mrMWSmr3iBhabIlDkbG</notification-list>
  <number type="integer">81</number>
  <priority type="integer">5</priority>
  <reporter-id>bw7mrMWSmr3iBhabIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>UltraStore</summary>
  <updated-at type="datetime">2010-08-24T03:02:10-07:00</updated-at>
  <working-hours type="float"></working-hours>
  <working-hour type="float" warning="deprecated"></working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>bw7mrMWSmr3iBhabIlDkbG</id><login>Canni</login><login_name warning="deprecated">Canni</login_name><name>Canni</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">2</component-id>
  <created-on type="datetime">2008-08-27T05:36:50-07:00</created-on>
  <description>plugins need to have their own textures, sounds and language settings

    * usdx_root/plugins(/game)/blind &#8592; the root folder of the plugin &#8220;sing blind&#8221;
    * usdx_root/plugins(/game)/blind/blind.dll &#8592; the actual plugin
    * usdx_root/plugins(/game)/blind/english.txt &#8592; the plugins language strings
    * usdx_root/plugins(/game)/blind/german.txt &#8592; &#8221; &#8221;
    * usdx_root/plugins(/game)/blind/pointer.png &#8592; texture this plugin utilizes
    * sdx_root/plugins(/game)/blind/blind.xml &#8592; this one contains the version of the plugin, it&#8217;s used textures, and it&#8217;s settings
    * the last one assures that we could do an autoupdate (i.e. new languages, increased stability, and foremost it&#8217;s easy to uninstall)

(Note: this item was copied from http://ultrastardeluxe.xtremeweb-hosting.net/wiki/doku.php?id=development:devmain)</description>
  <from-support type="integer">0</from-support>
  <id type="integer">124687</id>
  <importance type="integer">63</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26194</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">63</number>
  <priority type="integer">5</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Plugins with own textures, sounds and language settings</summary>
  <updated-at type="datetime">2010-08-24T02:14:56-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
<ticket>
  <assigned-to-id></assigned-to-id>
  <completed-date type="datetime"></completed-date>
  <component-id type="integer">3</component-id>
  <created-on type="datetime">2008-08-27T05:40:54-07:00</created-on>
  <description>Copied from http://ultrastardeluxe.xtremeweb-hosting.net/wiki/doku.php?id=development:devmain
Proposed by Jaybinks

Merge skins into one zip-file. The data will be extracted when needed at runtime </description>
  <from-support type="integer">0</from-support>
  <id type="integer">124688</id>
  <importance type="integer">64</importance>
  <is-story type="boolean">false</is-story>
  <milestone-id type="integer">26194</milestone-id>
  <notification-list>df4_4sXhOr3ir6abIlDkbG</notification-list>
  <number type="integer">64</number>
  <priority type="integer">5</priority>
  <reporter-id>df4_4sXhOr3ir6abIlDkbG</reporter-id>
  <space-id>aSBth2Ph8r3iOrabIlDkbG</space-id>
  <status type='integer'>0</status>
  <status-name>New</status-name>
  <story-importance type="integer">0</story-importance>
  <summary>Skins as zip-files</summary>
  <updated-at type="datetime">2010-08-24T02:14:56-07:00</updated-at>
  <working-hours type="float">0.0</working-hours>
  <working-hour type="float" warning="deprecated">0.0</working-hour>
  <estimate type="string">None</estimate>
  <total-estimate type="float">0.0</total-estimate>
  <invested-hours type="float">0.0</invested-hours>
  <assigned-to></assigned-to>
  <reporter><id>df4_4sXhOr3ir6abIlDkbG</id><login>hennymcc</login><login_name warning="deprecated">hennymcc</login_name><name>hennymcc</name></reporter>
<custom-fields>
<custom-field type="List" name="Is a subtask" id="969">false</custom-field>
</custom-fields>
<CustomFields deprecated="use custom-fields">
<CustomField type="List" name="Is a subtask" id="969">false</CustomField>
</CustomFields>
</ticket>
</tickets>

