Merge lp:~oberling/mixxx/feature_first-beat-in-bar into lp:~mixxxdevelopers/mixxx/trunk

Proposed by Stephan Bergemann
Status: Needs review
Proposed branch: lp:~oberling/mixxx/feature_first-beat-in-bar
Merge into: lp:~mixxxdevelopers/mixxx/trunk
Diff against target: 660 lines (+97/-12)
29 files modified
mixxx/res/skins/Deere1280x1024-SXGA/skin.xml (+2/-0)
mixxx/res/skins/Deere1280x800-WXGA/skin.xml (+2/-0)
mixxx/res/skins/Deere1366x768-WXGA/skin.xml (+2/-0)
mixxx/res/skins/Deere1440x900-WXGA+/skin.xml (+2/-0)
mixxx/res/skins/Deere1920x1080-FullHD/skin.xml (+2/-0)
mixxx/res/skins/Deere1920x1200-WUXGA/skin.xml (+2/-0)
mixxx/res/skins/DeereSamplegrid1280x800-WXGA/skin.xml (+2/-0)
mixxx/res/skins/LateNight1280x1024-SXGA/skin.xml (+2/-0)
mixxx/res/skins/LateNight1280x800-WXGA/skin.xml (+2/-0)
mixxx/res/skins/LateNight1366x768-WXGA/skin.xml (+2/-0)
mixxx/res/skins/LateNightBlues1280x1024-SXGA/skin.xml (+2/-0)
mixxx/res/skins/LateNightBlues1280x800-WXGA/skin.xml (+2/-0)
mixxx/res/skins/LateNightBlues1366x768-WXGA/skin.xml (+2/-0)
mixxx/res/skins/Outline1024x600-Netbook/skin.xml (+2/-0)
mixxx/res/skins/Outline1024x768-XGA/skin.xml (+2/-0)
mixxx/res/skins/Outline800x480-WVGA/skin.xml (+2/-0)
mixxx/res/skins/Phoney1600x1200-UXGA/skin.xml (+2/-0)
mixxx/res/skins/Phoney1680x1050-WSXGA/skin.xml (+2/-0)
mixxx/res/skins/PhoneyDark1600x1200-UXGA/skin.xml (+2/-0)
mixxx/res/skins/PhoneyDark1680x1050-WSXGA/skin.xml (+2/-0)
mixxx/res/skins/Shade1024x600-Netbook/skin.xml (+2/-0)
mixxx/res/skins/Shade1024x768-XGA/skin.xml (+2/-0)
mixxx/res/skins/ShadeDark1024x600-Netbook/skin.xml (+2/-0)
mixxx/res/skins/ShadeDark1024x768-XGA/skin.xml (+2/-0)
mixxx/src/track/beatgrid.cpp (+17/-5)
mixxx/src/track/beatmap.cpp (+11/-3)
mixxx/src/track/beats.h (+1/-0)
mixxx/src/waveform/renderers/waveformrenderbeat.cpp (+19/-4)
mixxx/src/waveform/renderers/waveformrenderbeat.h (+1/-0)
To merge this branch: bzr merge lp:~oberling/mixxx/feature_first-beat-in-bar
Reviewer Review Type Date Requested Status
Daniel Schürmann Abstain
Review via email: mp+155096@code.launchpad.net

Commit message

Added a highlight on every first beat in a bar.

Description of the change

Added a highlight on every first beat in a bar.
This fixes one part of bug #753301 as it gives a usefull visual indicator for mixing tracks.
I also added a color for this highlighted beat to each existing theme.

To post a comment you must log in.
3337. By Stephan Bergemann <email address hidden>

fixed firstBeatInBar-Calculation in BeatMap

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Stephan,

Thank you very much for your branch.
From the coding side it looks good.
Except expression in mixxx/src/waveform/renderers/waveformrenderbeat.cpp line 110 should be combined with the expressions above.

Form the visual point of view IMHO the first beat bar is too highlighted (too red and bold). I would prefer an additional icon on the normal bars. I hope Jus, our design maintainer can also help out here.

While this is a good step to the final goal, I would not merge this branch yet because of the missing detection support.

Kind regards,
Daniel

review: Needs Fixing
3338. By Stephan Bergemann <email address hidden>

made first beat bar less bold; added a little efficiency;

Revision history for this message
Stephan Bergemann (oberling) wrote :

Hi Daniel,

thanks a lot for the review and kind advices.

I made the first beat bar a little less thick and integrated my if-clause with the existing ones. As i'm no designer i just chose the colors that fitted the most for me - may Jus feel free to change them all :-) .

I just don't get what you mean by "missing detection support". The missing phase-sync from the cited bug report was already implemented before my branch. At least one can click on sync and when not in vinyl control mode it should sync the bpm as well as the phase to the nearest detected beat. However it does not sync to the first beat of a bar - that's right. Was that what you meant?

Kind regards,
Stephan

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Stephan,

thank you again. IMHO it looks fine now.

Please don’t kill me if the following paragraphs are totally rubbish :-) ...

I am not an expert in music theory but for a lot of my tracks it feels to me that the new downbeat makers are simply placed at the wrong position.

I have just read:
http://en.wikipedia.org/wiki/Beat_%28music%29
http://en.wikipedia.org/wiki/Bar_%28music%29

As far as I understand (please correct me) a downbeat marker should be placed at least at theme changes or when a chorus starts. Maybe there is an unwritten law that the first beat in a track is always a downbeat like assumed in your patch, but for some of the tracks in my collection this is true but not for the rest.

I cannot evaluate how useful you patch is in the current state. Is the four beat assumption true in general? Do we need a facility to correct the first beat in a bar and the number of beats per bar?

I hope we can answer these questions soon.

Kind regards,

Daniel

review: Abstain
Revision history for this message
Stephan Bergemann (oberling) wrote :

Hi Daniel,

sorry for that taking so long - lots of other stuff to do first.
I thought for some time about your suggestions:
I totally agree with you, that it would be nice to have the "first beat in a bar" adjustable. At the moment it's just the first ever stroke in the grid corresponding to the audio file (which doesn't have to be the first beat of the track - however it (at least for my tracks) is in 90% ;-) ).
The first beat in a bar in my understanding (and if i understood correctly also in your understanding) describes the downbeat (thats also the definition of Downbeat in the wikipedia article "Beat_(music)").

There are a few steps i could try to implement from that point:
* add a "first_downbeat" to the stored track informations
* store the first beat really on a beat (and not the first ever grid-element in the audio file) - that would be quiet hard to distinguish i guess (silent intros and stuff)
* bloat the beat detection to be really highly sophisticated and also detect bars, intros outtros, repeated parts and stuff - that would involve detecting where bars start and end and also a the writing of a PhD thesis :-D

All those changes would however that would (as far as i see) result in the need of a recreateion of the database and i don't know if that would raise my chances of getting this branch merged ;-) .
That's the main reason why i didn't do it that way in the first place.

As of the four beat assumption: this is adjustable but defaults to 4 (see the Constructors of the BeatGridIterator and BeatMapIterator) in the current state of development to give an idea.
When extending this idea we would have to think about storing this information as well in the Trackinformation.
And... in general (although i can not remember having seen that in other DJ Software) all the beat detection is voulnerable to time changes.

Kind regards,
Stephan

> Hi Stephan,
>
> thank you again. IMHO it looks fine now.
>
> Please don’t kill me if the following paragraphs are totally rubbish :-) ...
>
> I am not an expert in music theory but for a lot of my tracks it feels to me
> that the new downbeat makers are simply placed at the wrong position.
>
> I have just read:
> http://en.wikipedia.org/wiki/Beat_%28music%29
> http://en.wikipedia.org/wiki/Bar_%28music%29
>
> As far as I understand (please correct me) a downbeat marker should be placed
> at least at theme changes or when a chorus starts. Maybe there is an unwritten
> law that the first beat in a track is always a downbeat like assumed in your
> patch, but for some of the tracks in my collection this is true but not for
> the rest.
>
> I cannot evaluate how useful you patch is in the current state. Is the four
> beat assumption true in general? Do we need a facility to correct the first
> beat in a bar and the number of beats per bar?
>
> I hope we can answer these questions soon.
>
> Kind regards,
>
> Daniel

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Stephan,

first of all: I am sure your branch will get merged.

I personaly not like informaton that "might" be right. So the bars schould not be displayed by default if they are not valid. But you might introduce a waveform preference to enable them.

An other option is to introduce a new Cue point type "first bar". The database schma already supports different cue point types. lp:~smstewart91/mixxx/advanced_autodj makes use of it. I think it is common for many DJs to place the normal cue point at this place so you might deal with it.
We could probably adjust it by rightclick to the "Adjust Beatgrid" button.

The third option is to activate the bar detection which already lives in the mixxx source. mixxx/vamp-plugins/plugins/BarBeatTrack.cpp I dont know the current state but maybe Vittorio or RJ might help here.

Kind regards

Daniel

Unmerged revisions

3338. By Stephan Bergemann <email address hidden>

made first beat bar less bold; added a little efficiency;

3337. By Stephan Bergemann <email address hidden>

fixed firstBeatInBar-Calculation in BeatMap

3336. By Stephan Bergemann <email address hidden>

added new colour to every theme

3335. By Stephan Bergemann <email address hidden>

added red highlight for first beat of each bar

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'mixxx/res/skins/Deere1280x1024-SXGA/skin.xml'
--- mixxx/res/skins/Deere1280x1024-SXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/Deere1280x1024-SXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -3958,6 +3958,7 @@
3958 <SignalLowColor></SignalLowColor>3958 <SignalLowColor></SignalLowColor>
3959 <SignalColor>#0099FF</SignalColor>3959 <SignalColor>#0099FF</SignalColor>
3960 <BeatColor>#ffffff</BeatColor>3960 <BeatColor>#ffffff</BeatColor>
3961 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
3961 <BeatHighlightColor></BeatHighlightColor>3962 <BeatHighlightColor></BeatHighlightColor>
3962 <PlayPosColor>#00FF00</PlayPosColor>3963 <PlayPosColor>#00FF00</PlayPosColor>
3963 <EndOfTrackColor>#EA0000</EndOfTrackColor>3964 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -5057,6 +5058,7 @@
5057 <SignalLowColor></SignalLowColor>5058 <SignalLowColor></SignalLowColor>
5058 <SignalColor>#E17800</SignalColor>5059 <SignalColor>#E17800</SignalColor>
5059 <BeatColor>#ffffff</BeatColor>5060 <BeatColor>#ffffff</BeatColor>
5061 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
5060 <BeatHighlightColor></BeatHighlightColor>5062 <BeatHighlightColor></BeatHighlightColor>
5061 <PlayPosColor>#00FF00</PlayPosColor>5063 <PlayPosColor>#00FF00</PlayPosColor>
5062 <EndOfTrackColor>#EA0000</EndOfTrackColor>5064 <EndOfTrackColor>#EA0000</EndOfTrackColor>
50635065
=== modified file 'mixxx/res/skins/Deere1280x800-WXGA/skin.xml'
--- mixxx/res/skins/Deere1280x800-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/Deere1280x800-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -3958,6 +3958,7 @@
3958 <SignalLowColor></SignalLowColor>3958 <SignalLowColor></SignalLowColor>
3959 <SignalColor>#0099FF</SignalColor>3959 <SignalColor>#0099FF</SignalColor>
3960 <BeatColor>#ffffff</BeatColor>3960 <BeatColor>#ffffff</BeatColor>
3961 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
3961 <BeatHighlightColor></BeatHighlightColor>3962 <BeatHighlightColor></BeatHighlightColor>
3962 <PlayPosColor>#00FF00</PlayPosColor>3963 <PlayPosColor>#00FF00</PlayPosColor>
3963 <EndOfTrackColor>#EA0000</EndOfTrackColor>3964 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -5057,6 +5058,7 @@
5057 <SignalLowColor></SignalLowColor>5058 <SignalLowColor></SignalLowColor>
5058 <SignalColor>#E17800</SignalColor>5059 <SignalColor>#E17800</SignalColor>
5059 <BeatColor>#ffffff</BeatColor>5060 <BeatColor>#ffffff</BeatColor>
5061 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
5060 <BeatHighlightColor></BeatHighlightColor>5062 <BeatHighlightColor></BeatHighlightColor>
5061 <PlayPosColor>#00FF00</PlayPosColor>5063 <PlayPosColor>#00FF00</PlayPosColor>
5062 <EndOfTrackColor>#EA0000</EndOfTrackColor>5064 <EndOfTrackColor>#EA0000</EndOfTrackColor>
50635065
=== modified file 'mixxx/res/skins/Deere1366x768-WXGA/skin.xml'
--- mixxx/res/skins/Deere1366x768-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/Deere1366x768-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -3958,6 +3958,7 @@
3958 <SignalLowColor></SignalLowColor>3958 <SignalLowColor></SignalLowColor>
3959 <SignalColor>#0099FF</SignalColor>3959 <SignalColor>#0099FF</SignalColor>
3960 <BeatColor>#ffffff</BeatColor>3960 <BeatColor>#ffffff</BeatColor>
3961 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
3961 <BeatHighlightColor></BeatHighlightColor>3962 <BeatHighlightColor></BeatHighlightColor>
3962 <PlayPosColor>#00FF00</PlayPosColor>3963 <PlayPosColor>#00FF00</PlayPosColor>
3963 <EndOfTrackColor>#EA0000</EndOfTrackColor>3964 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -5057,6 +5058,7 @@
5057 <SignalLowColor></SignalLowColor>5058 <SignalLowColor></SignalLowColor>
5058 <SignalColor>#E17800</SignalColor>5059 <SignalColor>#E17800</SignalColor>
5059 <BeatColor>#ffffff</BeatColor>5060 <BeatColor>#ffffff</BeatColor>
5061 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
5060 <BeatHighlightColor></BeatHighlightColor>5062 <BeatHighlightColor></BeatHighlightColor>
5061 <PlayPosColor>#00FF00</PlayPosColor>5063 <PlayPosColor>#00FF00</PlayPosColor>
5062 <EndOfTrackColor>#EA0000</EndOfTrackColor>5064 <EndOfTrackColor>#EA0000</EndOfTrackColor>
50635065
=== modified file 'mixxx/res/skins/Deere1440x900-WXGA+/skin.xml'
--- mixxx/res/skins/Deere1440x900-WXGA+/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/Deere1440x900-WXGA+/skin.xml 2013-03-24 00:04:23 +0000
@@ -3958,6 +3958,7 @@
3958 <SignalLowColor></SignalLowColor>3958 <SignalLowColor></SignalLowColor>
3959 <SignalColor>#0099FF</SignalColor>3959 <SignalColor>#0099FF</SignalColor>
3960 <BeatColor>#ffffff</BeatColor>3960 <BeatColor>#ffffff</BeatColor>
3961 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
3961 <BeatHighlightColor></BeatHighlightColor>3962 <BeatHighlightColor></BeatHighlightColor>
3962 <PlayPosColor>#00FF00</PlayPosColor>3963 <PlayPosColor>#00FF00</PlayPosColor>
3963 <EndOfTrackColor>#EA0000</EndOfTrackColor>3964 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -5057,6 +5058,7 @@
5057 <SignalLowColor></SignalLowColor>5058 <SignalLowColor></SignalLowColor>
5058 <SignalColor>#E17800</SignalColor>5059 <SignalColor>#E17800</SignalColor>
5059 <BeatColor>#ffffff</BeatColor>5060 <BeatColor>#ffffff</BeatColor>
5061 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
5060 <BeatHighlightColor></BeatHighlightColor>5062 <BeatHighlightColor></BeatHighlightColor>
5061 <PlayPosColor>#00FF00</PlayPosColor>5063 <PlayPosColor>#00FF00</PlayPosColor>
5062 <EndOfTrackColor>#EA0000</EndOfTrackColor>5064 <EndOfTrackColor>#EA0000</EndOfTrackColor>
50635065
=== modified file 'mixxx/res/skins/Deere1920x1080-FullHD/skin.xml'
--- mixxx/res/skins/Deere1920x1080-FullHD/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/Deere1920x1080-FullHD/skin.xml 2013-03-24 00:04:23 +0000
@@ -4986,6 +4986,7 @@
4986 <SignalLowColor></SignalLowColor>4986 <SignalLowColor></SignalLowColor>
4987 <SignalColor>#0099FF</SignalColor>4987 <SignalColor>#0099FF</SignalColor>
4988 <BeatColor>#ffffff</BeatColor>4988 <BeatColor>#ffffff</BeatColor>
4989 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
4989 <BeatHighlightColor></BeatHighlightColor>4990 <BeatHighlightColor></BeatHighlightColor>
4990 <PlayPosColor>#00FF00</PlayPosColor>4991 <PlayPosColor>#00FF00</PlayPosColor>
4991 <EndOfTrackColor>#EA0000</EndOfTrackColor>4992 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -6085,6 +6086,7 @@
6085 <SignalLowColor></SignalLowColor>6086 <SignalLowColor></SignalLowColor>
6086 <SignalColor>#E17800</SignalColor>6087 <SignalColor>#E17800</SignalColor>
6087 <BeatColor>#ffffff</BeatColor>6088 <BeatColor>#ffffff</BeatColor>
6089 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
6088 <BeatHighlightColor></BeatHighlightColor>6090 <BeatHighlightColor></BeatHighlightColor>
6089 <PlayPosColor>#00FF00</PlayPosColor>6091 <PlayPosColor>#00FF00</PlayPosColor>
6090 <EndOfTrackColor>#EA0000</EndOfTrackColor>6092 <EndOfTrackColor>#EA0000</EndOfTrackColor>
60916093
=== modified file 'mixxx/res/skins/Deere1920x1200-WUXGA/skin.xml'
--- mixxx/res/skins/Deere1920x1200-WUXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/Deere1920x1200-WUXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -4986,6 +4986,7 @@
4986 <SignalLowColor></SignalLowColor>4986 <SignalLowColor></SignalLowColor>
4987 <SignalColor>#0099FF</SignalColor>4987 <SignalColor>#0099FF</SignalColor>
4988 <BeatColor>#ffffff</BeatColor>4988 <BeatColor>#ffffff</BeatColor>
4989 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
4989 <BeatHighlightColor></BeatHighlightColor>4990 <BeatHighlightColor></BeatHighlightColor>
4990 <PlayPosColor>#00FF00</PlayPosColor>4991 <PlayPosColor>#00FF00</PlayPosColor>
4991 <EndOfTrackColor>#EA0000</EndOfTrackColor>4992 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -6085,6 +6086,7 @@
6085 <SignalLowColor></SignalLowColor>6086 <SignalLowColor></SignalLowColor>
6086 <SignalColor>#E17800</SignalColor>6087 <SignalColor>#E17800</SignalColor>
6087 <BeatColor>#ffffff</BeatColor>6088 <BeatColor>#ffffff</BeatColor>
6089 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
6088 <BeatHighlightColor></BeatHighlightColor>6090 <BeatHighlightColor></BeatHighlightColor>
6089 <PlayPosColor>#00FF00</PlayPosColor>6091 <PlayPosColor>#00FF00</PlayPosColor>
6090 <EndOfTrackColor>#EA0000</EndOfTrackColor>6092 <EndOfTrackColor>#EA0000</EndOfTrackColor>
60916093
=== modified file 'mixxx/res/skins/DeereSamplegrid1280x800-WXGA/skin.xml'
--- mixxx/res/skins/DeereSamplegrid1280x800-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/DeereSamplegrid1280x800-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -5622,6 +5622,7 @@
5622 <SignalLowColor></SignalLowColor>5622 <SignalLowColor></SignalLowColor>
5623 <SignalColor>#0099FF</SignalColor>5623 <SignalColor>#0099FF</SignalColor>
5624 <BeatColor>#ffffff</BeatColor>5624 <BeatColor>#ffffff</BeatColor>
5625 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
5625 <BeatHighlightColor></BeatHighlightColor>5626 <BeatHighlightColor></BeatHighlightColor>
5626 <MarkerColor>#00FF00</MarkerColor>5627 <MarkerColor>#00FF00</MarkerColor>
5627 <PlayPosColor>#00FF00</PlayPosColor>5628 <PlayPosColor>#00FF00</PlayPosColor>
@@ -6723,6 +6724,7 @@
6723 <SignalLowColor></SignalLowColor>6724 <SignalLowColor></SignalLowColor>
6724 <SignalColor>#E17800</SignalColor>6725 <SignalColor>#E17800</SignalColor>
6725 <BeatColor>#ffffff</BeatColor>6726 <BeatColor>#ffffff</BeatColor>
6727 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
6726 <BeatHighlightColor></BeatHighlightColor>6728 <BeatHighlightColor></BeatHighlightColor>
6727 <MarkerColor>#00FF00</MarkerColor>6729 <MarkerColor>#00FF00</MarkerColor>
6728 <PlayPosColor>#00FF00</PlayPosColor>6730 <PlayPosColor>#00FF00</PlayPosColor>
67296731
=== modified file 'mixxx/res/skins/LateNight1280x1024-SXGA/skin.xml'
--- mixxx/res/skins/LateNight1280x1024-SXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/LateNight1280x1024-SXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -2817,6 +2817,7 @@
2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>
2818 <SignalColor>#0099FF</SignalColor>2818 <SignalColor>#0099FF</SignalColor>
2819 <BeatColor>#ffffff</BeatColor>2819 <BeatColor>#ffffff</BeatColor>
2820 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2820 <BeatHighlightColor></BeatHighlightColor>2821 <BeatHighlightColor></BeatHighlightColor>
2821 <PlayPosColor>#00FF00</PlayPosColor>2822 <PlayPosColor>#00FF00</PlayPosColor>
2822 <EndOfTrackColor>#EA0000</EndOfTrackColor>2823 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -2871,6 +2872,7 @@
2871 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>2872 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>
2872 <SignalColor>#E17800</SignalColor>2873 <SignalColor>#E17800</SignalColor>
2873 <BeatColor>#ffffff</BeatColor>2874 <BeatColor>#ffffff</BeatColor>
2875 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2874 <BeatHighlightColor></BeatHighlightColor>2876 <BeatHighlightColor></BeatHighlightColor>
2875 <PlayPosColor>#00FF00</PlayPosColor>2877 <PlayPosColor>#00FF00</PlayPosColor>
2876 <EndOfTrackColor>#EA0000</EndOfTrackColor>2878 <EndOfTrackColor>#EA0000</EndOfTrackColor>
28772879
=== modified file 'mixxx/res/skins/LateNight1280x800-WXGA/skin.xml'
--- mixxx/res/skins/LateNight1280x800-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/LateNight1280x800-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -2817,6 +2817,7 @@
2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>
2818 <SignalColor>#0099FF</SignalColor>2818 <SignalColor>#0099FF</SignalColor>
2819 <BeatColor>#ffffff</BeatColor>2819 <BeatColor>#ffffff</BeatColor>
2820 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2820 <BeatHighlightColor></BeatHighlightColor>2821 <BeatHighlightColor></BeatHighlightColor>
2821 <PlayPosColor>#00FF00</PlayPosColor>2822 <PlayPosColor>#00FF00</PlayPosColor>
2822 <EndOfTrackColor>#EA0000</EndOfTrackColor>2823 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -2871,6 +2872,7 @@
2871 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>2872 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>
2872 <SignalColor>#E17800</SignalColor>2873 <SignalColor>#E17800</SignalColor>
2873 <BeatColor>#ffffff</BeatColor>2874 <BeatColor>#ffffff</BeatColor>
2875 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2874 <BeatHighlightColor></BeatHighlightColor>2876 <BeatHighlightColor></BeatHighlightColor>
2875 <PlayPosColor>#00FF00</PlayPosColor>2877 <PlayPosColor>#00FF00</PlayPosColor>
2876 <EndOfTrackColor>#EA0000</EndOfTrackColor>2878 <EndOfTrackColor>#EA0000</EndOfTrackColor>
28772879
=== modified file 'mixxx/res/skins/LateNight1366x768-WXGA/skin.xml'
--- mixxx/res/skins/LateNight1366x768-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/LateNight1366x768-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -2817,6 +2817,7 @@
2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>
2818 <SignalColor>#0099FF</SignalColor>2818 <SignalColor>#0099FF</SignalColor>
2819 <BeatColor>#ffffff</BeatColor>2819 <BeatColor>#ffffff</BeatColor>
2820 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2820 <BeatHighlightColor></BeatHighlightColor>2821 <BeatHighlightColor></BeatHighlightColor>
2821 <PlayPosColor>#00FF00</PlayPosColor>2822 <PlayPosColor>#00FF00</PlayPosColor>
2822 <EndOfTrackColor>#EA0000</EndOfTrackColor>2823 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -2871,6 +2872,7 @@
2871 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>2872 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>
2872 <SignalColor>#E17800</SignalColor>2873 <SignalColor>#E17800</SignalColor>
2873 <BeatColor>#ffffff</BeatColor>2874 <BeatColor>#ffffff</BeatColor>
2875 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2874 <BeatHighlightColor></BeatHighlightColor>2876 <BeatHighlightColor></BeatHighlightColor>
2875 <PlayPosColor>#00FF00</PlayPosColor>2877 <PlayPosColor>#00FF00</PlayPosColor>
2876 <EndOfTrackColor>#EA0000</EndOfTrackColor>2878 <EndOfTrackColor>#EA0000</EndOfTrackColor>
28772879
=== modified file 'mixxx/res/skins/LateNightBlues1280x1024-SXGA/skin.xml'
--- mixxx/res/skins/LateNightBlues1280x1024-SXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/LateNightBlues1280x1024-SXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -2817,6 +2817,7 @@
2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>
2818 <SignalColor>#FBC400</SignalColor>2818 <SignalColor>#FBC400</SignalColor>
2819 <BeatColor>#ffffff</BeatColor>2819 <BeatColor>#ffffff</BeatColor>
2820 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2820 <BeatHighlightColor></BeatHighlightColor>2821 <BeatHighlightColor></BeatHighlightColor>
2821 <PlayPosColor>#00FF00</PlayPosColor>2822 <PlayPosColor>#00FF00</PlayPosColor>
2822 <EndOfTrackColor>#EA0000</EndOfTrackColor>2823 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -2871,6 +2872,7 @@
2871 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>2872 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>
2872 <SignalColor>#FB9A00</SignalColor>2873 <SignalColor>#FB9A00</SignalColor>
2873 <BeatColor>#ffffff</BeatColor>2874 <BeatColor>#ffffff</BeatColor>
2875 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2874 <BeatHighlightColor></BeatHighlightColor>2876 <BeatHighlightColor></BeatHighlightColor>
2875 <PlayPosColor>#00FF00</PlayPosColor>2877 <PlayPosColor>#00FF00</PlayPosColor>
2876 <EndOfTrackColor>#EA0000</EndOfTrackColor>2878 <EndOfTrackColor>#EA0000</EndOfTrackColor>
28772879
=== modified file 'mixxx/res/skins/LateNightBlues1280x800-WXGA/skin.xml'
--- mixxx/res/skins/LateNightBlues1280x800-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/LateNightBlues1280x800-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -2817,6 +2817,7 @@
2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>
2818 <SignalColor>#FBC400</SignalColor>2818 <SignalColor>#FBC400</SignalColor>
2819 <BeatColor>#ffffff</BeatColor>2819 <BeatColor>#ffffff</BeatColor>
2820 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2820 <BeatHighlightColor></BeatHighlightColor>2821 <BeatHighlightColor></BeatHighlightColor>
2821 <PlayPosColor>#00FF00</PlayPosColor>2822 <PlayPosColor>#00FF00</PlayPosColor>
2822 <EndOfTrackColor>#EA0000</EndOfTrackColor>2823 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -2871,6 +2872,7 @@
2871 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>2872 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>
2872 <SignalColor>#FB9A00</SignalColor>2873 <SignalColor>#FB9A00</SignalColor>
2873 <BeatColor>#ffffff</BeatColor>2874 <BeatColor>#ffffff</BeatColor>
2875 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2874 <BeatHighlightColor></BeatHighlightColor>2876 <BeatHighlightColor></BeatHighlightColor>
2875 <PlayPosColor>#00FF00</PlayPosColor>2877 <PlayPosColor>#00FF00</PlayPosColor>
2876 <EndOfTrackColor>#EA0000</EndOfTrackColor>2878 <EndOfTrackColor>#EA0000</EndOfTrackColor>
28772879
=== modified file 'mixxx/res/skins/LateNightBlues1366x768-WXGA/skin.xml'
--- mixxx/res/skins/LateNightBlues1366x768-WXGA/skin.xml 2013-02-16 15:03:32 +0000
+++ mixxx/res/skins/LateNightBlues1366x768-WXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -2817,6 +2817,7 @@
2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>2817 <BgPixmap>style/style_bg_waveform1.png</BgPixmap>
2818 <SignalColor>#FBC400</SignalColor>2818 <SignalColor>#FBC400</SignalColor>
2819 <BeatColor>#ffffff</BeatColor>2819 <BeatColor>#ffffff</BeatColor>
2820 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2820 <BeatHighlightColor></BeatHighlightColor>2821 <BeatHighlightColor></BeatHighlightColor>
2821 <PlayPosColor>#00FF00</PlayPosColor>2822 <PlayPosColor>#00FF00</PlayPosColor>
2822 <EndOfTrackColor>#EA0000</EndOfTrackColor>2823 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -2871,6 +2872,7 @@
2871 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>2872 <BgPixmap>style/style_bg_waveform2.png</BgPixmap>
2872 <SignalColor>#FB9A00</SignalColor>2873 <SignalColor>#FB9A00</SignalColor>
2873 <BeatColor>#ffffff</BeatColor>2874 <BeatColor>#ffffff</BeatColor>
2875 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
2874 <BeatHighlightColor></BeatHighlightColor>2876 <BeatHighlightColor></BeatHighlightColor>
2875 <PlayPosColor>#00FF00</PlayPosColor>2877 <PlayPosColor>#00FF00</PlayPosColor>
2876 <EndOfTrackColor>#EA0000</EndOfTrackColor>2878 <EndOfTrackColor>#EA0000</EndOfTrackColor>
28772879
=== modified file 'mixxx/res/skins/Outline1024x600-Netbook/skin.xml'
--- mixxx/res/skins/Outline1024x600-Netbook/skin.xml 2013-02-01 17:26:08 +0000
+++ mixxx/res/skins/Outline1024x600-Netbook/skin.xml 2013-03-24 00:04:23 +0000
@@ -616,6 +616,7 @@
616 <SignalLowColor>#FF0035</SignalLowColor>616 <SignalLowColor>#FF0035</SignalLowColor>
617 <SignalColor>#19ABFB</SignalColor>617 <SignalColor>#19ABFB</SignalColor>
618 <BeatColor>#191919</BeatColor>618 <BeatColor>#191919</BeatColor>
619 <FirstBeatInBarColor>#000000</FirstBeatInBarColor>
619 <BeatHighlightColor></BeatHighlightColor>620 <BeatHighlightColor></BeatHighlightColor>
620 <PlayPosColor>#00FF00</PlayPosColor>621 <PlayPosColor>#00FF00</PlayPosColor>
621 <Align></Align>622 <Align></Align>
@@ -674,6 +675,7 @@
674 <SignalLowColor>#FF0035</SignalLowColor>675 <SignalLowColor>#FF0035</SignalLowColor>
675 <SignalColor>#FF0000</SignalColor>676 <SignalColor>#FF0000</SignalColor>
676 <BeatColor>#191919</BeatColor>677 <BeatColor>#191919</BeatColor>
678 <FirstBeatInBarColor>#000000</FirstBeatInBarColor>
677 <BeatHighlightColor></BeatHighlightColor>679 <BeatHighlightColor></BeatHighlightColor>
678 <PlayPosColor>#00FF00</PlayPosColor>680 <PlayPosColor>#00FF00</PlayPosColor>
679 <Align></Align>681 <Align></Align>
680682
=== modified file 'mixxx/res/skins/Outline1024x768-XGA/skin.xml'
--- mixxx/res/skins/Outline1024x768-XGA/skin.xml 2013-02-01 17:26:08 +0000
+++ mixxx/res/skins/Outline1024x768-XGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -616,6 +616,7 @@
616 <SignalLowColor>#FF0035</SignalLowColor>616 <SignalLowColor>#FF0035</SignalLowColor>
617 <SignalColor>#19ABFB</SignalColor>617 <SignalColor>#19ABFB</SignalColor>
618 <BeatColor>#191919</BeatColor>618 <BeatColor>#191919</BeatColor>
619 <FirstBeatInBarColor>#000000</FirstBeatInBarColor>
619 <BeatHighlightColor></BeatHighlightColor>620 <BeatHighlightColor></BeatHighlightColor>
620 <PlayPosColor>#00FF00</PlayPosColor>621 <PlayPosColor>#00FF00</PlayPosColor>
621 <Align></Align>622 <Align></Align>
@@ -674,6 +675,7 @@
674 <SignalLowColor>#FF0035</SignalLowColor>675 <SignalLowColor>#FF0035</SignalLowColor>
675 <SignalColor>#FF0000</SignalColor>676 <SignalColor>#FF0000</SignalColor>
676 <BeatColor>#191919</BeatColor>677 <BeatColor>#191919</BeatColor>
678 <FirstBeatInBarColor>#000000</FirstBeatInBarColor>
677 <BeatHighlightColor></BeatHighlightColor>679 <BeatHighlightColor></BeatHighlightColor>
678 <PlayPosColor>#00FF00</PlayPosColor>680 <PlayPosColor>#00FF00</PlayPosColor>
679 <Align></Align>681 <Align></Align>
680682
=== modified file 'mixxx/res/skins/Outline800x480-WVGA/skin.xml'
--- mixxx/res/skins/Outline800x480-WVGA/skin.xml 2013-02-01 17:26:52 +0000
+++ mixxx/res/skins/Outline800x480-WVGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -616,6 +616,7 @@
616 <SignalLowColor>#FF0035</SignalLowColor>616 <SignalLowColor>#FF0035</SignalLowColor>
617 <SignalColor>#19ABFB</SignalColor>617 <SignalColor>#19ABFB</SignalColor>
618 <BeatColor>#191919</BeatColor>618 <BeatColor>#191919</BeatColor>
619 <FirstBeatInBarColor>#000000</FirstBeatInBarColor>
619 <BeatHighlightColor></BeatHighlightColor>620 <BeatHighlightColor></BeatHighlightColor>
620 <PlayPosColor>#00FF00</PlayPosColor>621 <PlayPosColor>#00FF00</PlayPosColor>
621 <Align></Align>622 <Align></Align>
@@ -674,6 +675,7 @@
674 <SignalLowColor>#FF0035</SignalLowColor>675 <SignalLowColor>#FF0035</SignalLowColor>
675 <SignalColor>#FF0000</SignalColor>676 <SignalColor>#FF0000</SignalColor>
676 <BeatColor>#191919</BeatColor>677 <BeatColor>#191919</BeatColor>
678 <FirstBeatInBarColor>#000000</FirstBeatInBarColor>
677 <BeatHighlightColor></BeatHighlightColor>679 <BeatHighlightColor></BeatHighlightColor>
678 <PlayPosColor>#00FF00</PlayPosColor>680 <PlayPosColor>#00FF00</PlayPosColor>
679 <Align></Align>681 <Align></Align>
680682
=== modified file 'mixxx/res/skins/Phoney1600x1200-UXGA/skin.xml'
--- mixxx/res/skins/Phoney1600x1200-UXGA/skin.xml 2013-01-31 19:48:57 +0000
+++ mixxx/res/skins/Phoney1600x1200-UXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -210,6 +210,7 @@
210 <SignalLowColor></SignalLowColor>210 <SignalLowColor></SignalLowColor>
211 <SignalColor>#0080FF</SignalColor>211 <SignalColor>#0080FF</SignalColor>
212 <BeatColor>#454C53</BeatColor>212 <BeatColor>#454C53</BeatColor>
213 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
213 <BeatHighlightColor></BeatHighlightColor>214 <BeatHighlightColor></BeatHighlightColor>
214 <PlayPosColor>#FD0564</PlayPosColor>215 <PlayPosColor>#FD0564</PlayPosColor>
215 <EndOfTrackColor>#EA0000</EndOfTrackColor>216 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -267,6 +268,7 @@
267 <SignalLowColor></SignalLowColor>268 <SignalLowColor></SignalLowColor>
268 <SignalColor>#E17000</SignalColor>269 <SignalColor>#E17000</SignalColor>
269 <BeatColor>#454C53</BeatColor>270 <BeatColor>#454C53</BeatColor>
271 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
270 <BeatHighlightColor></BeatHighlightColor>272 <BeatHighlightColor></BeatHighlightColor>
271 <PlayPosColor>#FD0564</PlayPosColor>273 <PlayPosColor>#FD0564</PlayPosColor>
272 <EndOfTrackColor>#EA0000</EndOfTrackColor>274 <EndOfTrackColor>#EA0000</EndOfTrackColor>
273275
=== modified file 'mixxx/res/skins/Phoney1680x1050-WSXGA/skin.xml'
--- mixxx/res/skins/Phoney1680x1050-WSXGA/skin.xml 2013-01-31 19:48:57 +0000
+++ mixxx/res/skins/Phoney1680x1050-WSXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -210,6 +210,7 @@
210 <SignalLowColor></SignalLowColor>210 <SignalLowColor></SignalLowColor>
211 <SignalColor>#0080FF</SignalColor>211 <SignalColor>#0080FF</SignalColor>
212 <BeatColor>#454C53</BeatColor>212 <BeatColor>#454C53</BeatColor>
213 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
213 <BeatHighlightColor></BeatHighlightColor>214 <BeatHighlightColor></BeatHighlightColor>
214 <PlayPosColor>#FD0564</PlayPosColor>215 <PlayPosColor>#FD0564</PlayPosColor>
215 <EndOfTrackColor>#EA0000</EndOfTrackColor>216 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -267,6 +268,7 @@
267 <SignalLowColor></SignalLowColor>268 <SignalLowColor></SignalLowColor>
268 <SignalColor>#E17000</SignalColor>269 <SignalColor>#E17000</SignalColor>
269 <BeatColor>#454C53</BeatColor>270 <BeatColor>#454C53</BeatColor>
271 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
270 <BeatHighlightColor></BeatHighlightColor>272 <BeatHighlightColor></BeatHighlightColor>
271 <PlayPosColor>#FD0564</PlayPosColor>273 <PlayPosColor>#FD0564</PlayPosColor>
272 <EndOfTrackColor>#EA0000</EndOfTrackColor>274 <EndOfTrackColor>#EA0000</EndOfTrackColor>
273275
=== modified file 'mixxx/res/skins/PhoneyDark1600x1200-UXGA/skin.xml'
--- mixxx/res/skins/PhoneyDark1600x1200-UXGA/skin.xml 2013-01-31 19:48:57 +0000
+++ mixxx/res/skins/PhoneyDark1600x1200-UXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -209,6 +209,7 @@
209 <SignalLowColor></SignalLowColor>209 <SignalLowColor></SignalLowColor>
210 <SignalColor>#0099FF</SignalColor>210 <SignalColor>#0099FF</SignalColor>
211 <BeatColor>#CCCCCC</BeatColor>211 <BeatColor>#CCCCCC</BeatColor>
212 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
212 <BeatHighlightColor></BeatHighlightColor>213 <BeatHighlightColor></BeatHighlightColor>
213 <PlayPosColor>#00FF00</PlayPosColor>214 <PlayPosColor>#00FF00</PlayPosColor>
214 <EndOfTrackColor>#EA0000</EndOfTrackColor>215 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -266,6 +267,7 @@
266 <SignalLowColor></SignalLowColor>267 <SignalLowColor></SignalLowColor>
267 <SignalColor>#CC6600</SignalColor>268 <SignalColor>#CC6600</SignalColor>
268 <BeatColor>#CCCCCC</BeatColor>269 <BeatColor>#CCCCCC</BeatColor>
270 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
269 <BeatHighlightColor></BeatHighlightColor>271 <BeatHighlightColor></BeatHighlightColor>
270 <PlayPosColor>#00FF00</PlayPosColor>272 <PlayPosColor>#00FF00</PlayPosColor>
271 <EndOfTrackColor>#EA0000</EndOfTrackColor>273 <EndOfTrackColor>#EA0000</EndOfTrackColor>
272274
=== modified file 'mixxx/res/skins/PhoneyDark1680x1050-WSXGA/skin.xml'
--- mixxx/res/skins/PhoneyDark1680x1050-WSXGA/skin.xml 2013-01-31 19:48:57 +0000
+++ mixxx/res/skins/PhoneyDark1680x1050-WSXGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -209,6 +209,7 @@
209 <SignalLowColor></SignalLowColor>209 <SignalLowColor></SignalLowColor>
210 <SignalColor>#0099FF</SignalColor>210 <SignalColor>#0099FF</SignalColor>
211 <BeatColor>#CCCCCC</BeatColor>211 <BeatColor>#CCCCCC</BeatColor>
212 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
212 <BeatHighlightColor></BeatHighlightColor>213 <BeatHighlightColor></BeatHighlightColor>
213 <PlayPosColor>#00FF00</PlayPosColor>214 <PlayPosColor>#00FF00</PlayPosColor>
214 <EndOfTrackColor>#EA0000</EndOfTrackColor>215 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -266,6 +267,7 @@
266 <SignalLowColor></SignalLowColor>267 <SignalLowColor></SignalLowColor>
267 <SignalColor>#CC6600</SignalColor>268 <SignalColor>#CC6600</SignalColor>
268 <BeatColor>#CCCCCC</BeatColor>269 <BeatColor>#CCCCCC</BeatColor>
270 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
269 <BeatHighlightColor></BeatHighlightColor>271 <BeatHighlightColor></BeatHighlightColor>
270 <PlayPosColor>#00FF00</PlayPosColor>272 <PlayPosColor>#00FF00</PlayPosColor>
271 <EndOfTrackColor>#EA0000</EndOfTrackColor>273 <EndOfTrackColor>#EA0000</EndOfTrackColor>
272274
=== modified file 'mixxx/res/skins/Shade1024x600-Netbook/skin.xml'
--- mixxx/res/skins/Shade1024x600-Netbook/skin.xml 2013-03-15 14:15:30 +0000
+++ mixxx/res/skins/Shade1024x600-Netbook/skin.xml 2013-03-24 00:04:23 +0000
@@ -3386,6 +3386,7 @@
3386 <SignalLowColor></SignalLowColor>3386 <SignalLowColor></SignalLowColor>
3387 <SignalColor>#191F24</SignalColor>3387 <SignalColor>#191F24</SignalColor>
3388 <BeatColor>#FFFFFF</BeatColor>3388 <BeatColor>#FFFFFF</BeatColor>
3389 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
3389 <BeatHighlightColor></BeatHighlightColor>3390 <BeatHighlightColor></BeatHighlightColor>
3390 <PlayPosColor>#00FF00</PlayPosColor>3391 <PlayPosColor>#00FF00</PlayPosColor>
3391 <EndOfTrackColor>#EA0000</EndOfTrackColor>3392 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -4730,6 +4731,7 @@
4730 <SignalLowColor></SignalLowColor>4731 <SignalLowColor></SignalLowColor>
4731 <SignalColor>#191F24</SignalColor>4732 <SignalColor>#191F24</SignalColor>
4732 <BeatColor>#FFFFFF</BeatColor>4733 <BeatColor>#FFFFFF</BeatColor>
4734 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
4733 <BeatHighlightColor></BeatHighlightColor>4735 <BeatHighlightColor></BeatHighlightColor>
4734 <PlayPosColor>#00FF00</PlayPosColor>4736 <PlayPosColor>#00FF00</PlayPosColor>
4735 <EndOfTrackColor>#EA0000</EndOfTrackColor>4737 <EndOfTrackColor>#EA0000</EndOfTrackColor>
47364738
=== modified file 'mixxx/res/skins/Shade1024x768-XGA/skin.xml'
--- mixxx/res/skins/Shade1024x768-XGA/skin.xml 2013-03-15 14:15:30 +0000
+++ mixxx/res/skins/Shade1024x768-XGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -3386,6 +3386,7 @@
3386 <SignalLowColor></SignalLowColor>3386 <SignalLowColor></SignalLowColor>
3387 <SignalColor>#191F24</SignalColor>3387 <SignalColor>#191F24</SignalColor>
3388 <BeatColor>#FFFFFF</BeatColor>3388 <BeatColor>#FFFFFF</BeatColor>
3389 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
3389 <BeatHighlightColor></BeatHighlightColor>3390 <BeatHighlightColor></BeatHighlightColor>
3390 <PlayPosColor>#00FF00</PlayPosColor>3391 <PlayPosColor>#00FF00</PlayPosColor>
3391 <EndOfTrackColor>#EA0000</EndOfTrackColor>3392 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -4730,6 +4731,7 @@
4730 <SignalLowColor></SignalLowColor>4731 <SignalLowColor></SignalLowColor>
4731 <SignalColor>#191F24</SignalColor>4732 <SignalColor>#191F24</SignalColor>
4732 <BeatColor>#FFFFFF</BeatColor>4733 <BeatColor>#FFFFFF</BeatColor>
4734 <FirstBeatInBarColor>#bc0a0a</FirstBeatInBarColor>
4733 <BeatHighlightColor></BeatHighlightColor>4735 <BeatHighlightColor></BeatHighlightColor>
4734 <PlayPosColor>#00FF00</PlayPosColor>4736 <PlayPosColor>#00FF00</PlayPosColor>
4735 <EndOfTrackColor>#EA0000</EndOfTrackColor>4737 <EndOfTrackColor>#EA0000</EndOfTrackColor>
47364738
=== modified file 'mixxx/res/skins/ShadeDark1024x600-Netbook/skin.xml'
--- mixxx/res/skins/ShadeDark1024x600-Netbook/skin.xml 2013-03-15 14:15:30 +0000
+++ mixxx/res/skins/ShadeDark1024x600-Netbook/skin.xml 2013-03-24 00:04:23 +0000
@@ -3386,6 +3386,7 @@
3386 <SignalLowColor>#FF0035</SignalLowColor>3386 <SignalLowColor>#FF0035</SignalLowColor>
3387 <SignalColor>#FF8000</SignalColor>3387 <SignalColor>#FF8000</SignalColor>
3388 <BeatColor>#E4E4E4</BeatColor>3388 <BeatColor>#E4E4E4</BeatColor>
3389 <FirstBeatInBarColor>#fefefe</FirstBeatInBarColor>
3389 <BeatHighlightColor></BeatHighlightColor>3390 <BeatHighlightColor></BeatHighlightColor>
3390 <PlayPosColor>#00FF00</PlayPosColor>3391 <PlayPosColor>#00FF00</PlayPosColor>
3391 <EndOfTrackColor>#EA0000</EndOfTrackColor>3392 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -4730,6 +4731,7 @@
4730 <SignalLowColor>#FF0035</SignalLowColor>4731 <SignalLowColor>#FF0035</SignalLowColor>
4731 <SignalColor>#FF8000</SignalColor>4732 <SignalColor>#FF8000</SignalColor>
4732 <BeatColor>#E4E4E4</BeatColor>4733 <BeatColor>#E4E4E4</BeatColor>
4734 <FirstBeatInBarColor>#fefefe</FirstBeatInBarColor>
4733 <BeatHighlightColor></BeatHighlightColor>4735 <BeatHighlightColor></BeatHighlightColor>
4734 <PlayPosColor>#00FF00</PlayPosColor>4736 <PlayPosColor>#00FF00</PlayPosColor>
4735 <EndOfTrackColor>#EA0000</EndOfTrackColor>4737 <EndOfTrackColor>#EA0000</EndOfTrackColor>
47364738
=== modified file 'mixxx/res/skins/ShadeDark1024x768-XGA/skin.xml'
--- mixxx/res/skins/ShadeDark1024x768-XGA/skin.xml 2013-03-15 14:15:30 +0000
+++ mixxx/res/skins/ShadeDark1024x768-XGA/skin.xml 2013-03-24 00:04:23 +0000
@@ -3386,6 +3386,7 @@
3386 <SignalLowColor>#FF0035</SignalLowColor>3386 <SignalLowColor>#FF0035</SignalLowColor>
3387 <SignalColor>#FF8000</SignalColor>3387 <SignalColor>#FF8000</SignalColor>
3388 <BeatColor>#E4E4E4</BeatColor>3388 <BeatColor>#E4E4E4</BeatColor>
3389 <FirstBeatInBarColor>#fefefe</FirstBeatInBarColor>
3389 <BeatHighlightColor></BeatHighlightColor>3390 <BeatHighlightColor></BeatHighlightColor>
3390 <PlayPosColor>#00FF00</PlayPosColor>3391 <PlayPosColor>#00FF00</PlayPosColor>
3391 <EndOfTrackColor>#EA0000</EndOfTrackColor>3392 <EndOfTrackColor>#EA0000</EndOfTrackColor>
@@ -4730,6 +4731,7 @@
4730 <SignalLowColor>#FF0035</SignalLowColor>4731 <SignalLowColor>#FF0035</SignalLowColor>
4731 <SignalColor>#FF8000</SignalColor>4732 <SignalColor>#FF8000</SignalColor>
4732 <BeatColor>#E4E4E4</BeatColor>4733 <BeatColor>#E4E4E4</BeatColor>
4734 <FirstBeatInBarColor>#fefefe</FirstBeatInBarColor>
4733 <BeatHighlightColor></BeatHighlightColor>4735 <BeatHighlightColor></BeatHighlightColor>
4734 <PlayPosColor>#00FF00</PlayPosColor>4736 <PlayPosColor>#00FF00</PlayPosColor>
4735 <EndOfTrackColor>#EA0000</EndOfTrackColor>4737 <EndOfTrackColor>#EA0000</EndOfTrackColor>
47364738
=== modified file 'mixxx/src/track/beatgrid.cpp'
--- mixxx/src/track/beatgrid.cpp 2012-11-20 00:40:18 +0000
+++ mixxx/src/track/beatgrid.cpp 2013-03-24 00:04:23 +0000
@@ -7,16 +7,19 @@
7static const int kFrameSize = 2;7static const int kFrameSize = 2;
88
9struct BeatGridData {9struct BeatGridData {
10 double bpm;10 double bpm;
11 double firstBeat;11 double firstBeat;
12 int beatsPerBar;
12};13};
1314
14class BeatGridIterator : public BeatIterator {15class BeatGridIterator : public BeatIterator {
15 public:16 public:
16 BeatGridIterator(double dBeatLength, double dFirstBeat, double dEndSample)17 BeatGridIterator(double dBeatLength, double dFirstBeat, double dEndSample, double dGlobalFirstBeat, int dBeatsPerBar = 4)
17 : m_dBeatLength(dBeatLength),18 : m_dBeatLength(dBeatLength),
18 m_dCurrentSample(dFirstBeat),19 m_dCurrentSample(dFirstBeat),
19 m_dEndSample(dEndSample) {20 m_dEndSample(dEndSample),
21 m_dFirstBeat(dGlobalFirstBeat),
22 m_dBeatsPerBar(dBeatsPerBar) {
20 }23 }
2124
22 virtual bool hasNext() const {25 virtual bool hasNext() const {
@@ -29,10 +32,18 @@
29 return beat;32 return beat;
30 }33 }
3134
35 virtual bool isFirstInBar() const {
36 if(m_dCurrentSample >= m_dFirstBeat)
37 return (((int)(((m_dCurrentSample - m_dFirstBeat) / m_dBeatLength)+.5)-1) % m_dBeatsPerBar) == 0;
38 return false;
39 }
40
32 private:41 private:
33 double m_dBeatLength;42 double m_dBeatLength;
34 double m_dCurrentSample;43 double m_dCurrentSample;
35 double m_dEndSample;44 double m_dEndSample;
45 double m_dFirstBeat;
46 int m_dBeatsPerBar;
36};47};
3748
38BeatGrid::BeatGrid(TrackInfoObject* pTrack, const QByteArray* pByteArray)49BeatGrid::BeatGrid(TrackInfoObject* pTrack, const QByteArray* pByteArray)
@@ -188,7 +199,8 @@
188 if (curBeat == -1.0) {199 if (curBeat == -1.0) {
189 return NULL;200 return NULL;
190 }201 }
191 return new BeatGridIterator(m_dBeatLength, curBeat, stopSample);202 double firstBeat = findNextBeat(0);
203 return new BeatGridIterator(m_dBeatLength, curBeat, stopSample, firstBeat);
192}204}
193205
194bool BeatGrid::hasBeatInRange(double startSample, double stopSample) const {206bool BeatGrid::hasBeatInRange(double startSample, double stopSample) const {
195207
=== modified file 'mixxx/src/track/beatmap.cpp'
--- mixxx/src/track/beatmap.cpp 2012-05-07 05:30:14 +0000
+++ mixxx/src/track/beatmap.cpp 2013-03-24 00:04:23 +0000
@@ -29,9 +29,11 @@
2929
30class BeatMapIterator : public BeatIterator {30class BeatMapIterator : public BeatIterator {
31 public:31 public:
32 BeatMapIterator(BeatList::const_iterator start, BeatList::const_iterator end)32 BeatMapIterator(BeatList::const_iterator start, BeatList::const_iterator end, BeatList::const_iterator first, int beatsPerBar = 4)
33 : m_currentBeat(start),33 : m_currentBeat(start),
34 m_endBeat(end) {34 m_endBeat(end),
35 m_firstBeat(first),
36 m_beatsPerBar(beatsPerBar) {
35 // Advance to the first enabled beat.37 // Advance to the first enabled beat.
36 while (m_currentBeat != m_endBeat && !m_currentBeat->enabled()) {38 while (m_currentBeat != m_endBeat && !m_currentBeat->enabled()) {
37 m_currentBeat++;39 m_currentBeat++;
@@ -51,9 +53,15 @@
51 return beat;53 return beat;
52 }54 }
5355
56 virtual bool isFirstInBar() const {
57 return (m_currentBeat - m_firstBeat) % m_beatsPerBar == 0;
58 }
59
54 private:60 private:
55 BeatList::const_iterator m_currentBeat;61 BeatList::const_iterator m_currentBeat;
56 BeatList::const_iterator m_endBeat;62 BeatList::const_iterator m_endBeat;
63 BeatList::const_iterator m_firstBeat;;
64 int m_beatsPerBar;
57};65};
5866
59BeatMap::BeatMap(TrackPointer pTrack, const QByteArray* pByteArray)67BeatMap::BeatMap(TrackPointer pTrack, const QByteArray* pByteArray)
@@ -248,7 +256,7 @@
248 if (curBeat >= lastBeat) {256 if (curBeat >= lastBeat) {
249 return NULL;257 return NULL;
250 }258 }
251 return new BeatMapIterator(curBeat, lastBeat);259 return new BeatMapIterator(curBeat, lastBeat, m_beats.begin());
252}260}
253261
254bool BeatMap::hasBeatInRange(double startSample, double stopSample) const {262bool BeatMap::hasBeatInRange(double startSample, double stopSample) const {
255263
=== modified file 'mixxx/src/track/beats.h'
--- mixxx/src/track/beats.h 2013-01-19 12:15:22 +0000
+++ mixxx/src/track/beats.h 2013-03-24 00:04:23 +0000
@@ -14,6 +14,7 @@
14 virtual ~BeatIterator() {}14 virtual ~BeatIterator() {}
15 virtual bool hasNext() const = 0;15 virtual bool hasNext() const = 0;
16 virtual double next() = 0;16 virtual double next() = 0;
17 virtual bool isFirstInBar() const = 0;
17};18};
1819
19// Beats is a pure abstract base class for BPM and beat management classes. It20// Beats is a pure abstract base class for BPM and beat management classes. It
2021
=== modified file 'mixxx/src/waveform/renderers/waveformrenderbeat.cpp'
--- mixxx/src/waveform/renderers/waveformrenderbeat.cpp 2012-12-10 02:44:06 +0000
+++ mixxx/src/waveform/renderers/waveformrenderbeat.cpp 2013-03-24 00:04:23 +0000
@@ -39,6 +39,14 @@
39 }39 }
40 m_highBeatColor = WSkinColor::getCorrectColor(m_highBeatColor);40 m_highBeatColor = WSkinColor::getCorrectColor(m_highBeatColor);
4141
42 m_firstBeatInBarColor = Qt::red;
43 QString firstInBar = WWidget::selectNodeQString(node, "FirstBeatInBarColor");
44 if (firstInBar != "") {
45 m_firstBeatInBarColor.setNamedColor(firstInBar);
46 }
47 m_firstBeatInBarColor = WSkinColor::getCorrectColor(m_firstBeatInBarColor);
48
49
42 if (m_beatColor.alphaF() > 0.99)50 if (m_beatColor.alphaF() > 0.99)
43 m_beatColor.setAlphaF(0.8);51 m_beatColor.setAlphaF(0.8);
4452
@@ -55,6 +63,7 @@
55 BeatsPointer trackBeats = trackInfo->getBeats();63 BeatsPointer trackBeats = trackInfo->getBeats();
56 if (!trackBeats)64 if (!trackBeats)
57 return;65 return;
66 double firstBeatOfTrack = trackBeats->findNextBeat(0);
5867
59 const int trackSamples = m_waveformRenderer->getTrackSamples();68 const int trackSamples = m_waveformRenderer->getTrackSamples();
60 if (trackSamples <= 0) {69 if (trackSamples <= 0) {
@@ -83,19 +92,25 @@
83 beatPen.setWidth(1.5);92 beatPen.setWidth(1.5);
84 QPen highBeatPen(m_highBeatColor);93 QPen highBeatPen(m_highBeatColor);
85 highBeatPen.setWidth(1.5);94 highBeatPen.setWidth(1.5);
95 QPen firstBeatInBarPen(m_firstBeatInBarColor);
96 firstBeatInBarPen.setWidth(2.5);
8697
87 while (it->hasNext()) {98 while (it->hasNext()) {
88 int beatPosition = it->next();99 int beatPosition = it->next();
89 m_waveformRenderer->regulateVisualSample(beatPosition);100 m_waveformRenderer->regulateVisualSample(beatPosition);
90 double xBeatPoint = m_waveformRenderer->transformSampleIndexInRendererWorld(beatPosition);101 double xBeatPoint = m_waveformRenderer->transformSampleIndexInRendererWorld(beatPosition);
91102
103 if (it->isFirstInBar()) {
104 painter->setPen(firstBeatInBarPen);
105 }
92 //NOTE: (vRince) RJ should we keep this ?106 //NOTE: (vRince) RJ should we keep this ?
93 if (m_beatActive && m_beatActive->get() > 0.0 &&107 else if (m_beatActive && m_beatActive->get() > 0.0 &&
94 abs(xBeatPoint - m_waveformRenderer->getWidth()/2) < 20)108 abs(xBeatPoint - m_waveformRenderer->getWidth()/2) < 20) {
95 painter->setPen(highBeatPen);109 painter->setPen(highBeatPen);
96 else110 } else {
97 painter->setPen(beatPen);111 painter->setPen(beatPen);
98112 }
113
99 painter->drawLine(QPointF(xBeatPoint, 0.f),114 painter->drawLine(QPointF(xBeatPoint, 0.f),
100 QPointF(xBeatPoint,115 QPointF(xBeatPoint,
101 (float)m_waveformRenderer->getHeight()));116 (float)m_waveformRenderer->getHeight()));
102117
=== modified file 'mixxx/src/waveform/renderers/waveformrenderbeat.h'
--- mixxx/src/waveform/renderers/waveformrenderbeat.h 2012-09-19 21:04:53 +0000
+++ mixxx/src/waveform/renderers/waveformrenderbeat.h 2013-03-24 00:04:23 +0000
@@ -20,6 +20,7 @@
20 private:20 private:
21 QColor m_beatColor;21 QColor m_beatColor;
22 QColor m_highBeatColor;22 QColor m_highBeatColor;
23 QColor m_firstBeatInBarColor;
23 ControlObjectThreadMain* m_beatActive;24 ControlObjectThreadMain* m_beatActive;
2425
25 DISALLOW_COPY_AND_ASSIGN(WaveformRenderBeat);26 DISALLOW_COPY_AND_ASSIGN(WaveformRenderBeat);