Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New in 2.3: Add hotcue colors post #83

Merged
merged 17 commits into from
Aug 25, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
65af480
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add first draft
Holzhaus May 7, 2020
ee6830d
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Fix wording
Holzhaus May 7, 2020
03b70e0
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add controller details
Holzhaus May 8, 2020
d940705
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add minor wording fixes
Holzhaus May 8, 2020
1b1c08f
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Mention color change COs
Holzhaus May 8, 2020
a798255
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add replace dialog se…
Holzhaus May 8, 2020
517cfa3
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add various wording f…
Holzhaus May 8, 2020
29cdd33
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add missing bits
Holzhaus May 8, 2020
4d7b5a7
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Improve phrasing
Holzhaus May 8, 2020
7905e51
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Remove developer info
Holzhaus May 15, 2020
1a89996
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Improve control naming
Holzhaus May 15, 2020
1e45b20
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add hotcue label text
Holzhaus Jul 23, 2020
eb50b26
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Improve controller se…
Holzhaus Aug 21, 2020
64a19d1
pages/news/2020-XX-XX-new-in-2-3-hotcue-colors: Add screenshots
Holzhaus Aug 21, 2020
ed2bce2
pages/news/2020-08-25-new-in-2-3-hotcue-colors: Add date
Holzhaus Aug 21, 2020
a4c26bf
pages/news/2020-08-25-new-in-2-3-hotcue-colors: Fix wording issues
Holzhaus Aug 25, 2020
3b2f215
pages/news/2020-08-25-new-in-2-3-hotcue-colors: Fix list formatting
Holzhaus Aug 25, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 143 additions & 0 deletions pages/news/2020-08-25-new-in-2-3-hotcue-colors.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
title: New in 2.3: Color your Hotcues
author: Holzhaus
date: 2020-08-25 12:00:00

{% extends "post.html" %}

{% block post %}

{% load markup %}
{% filter markdown:"extra" %}

Hotcues are a neat thing and one of the major benefits of digital DJing.
On analogue vinyl decks, you had had to put stickers to mark the different sections of a song and physically pick up, move and drop the needle to move to it.
With the move to digital DJ setups, a new way to navigate tracks emerged: Hotcues now allow you to "bookmark" different spots in a track and quickly move to these positions in the blink of an eye, even while track is playing on the PA.

Mixxx has supported them for more than 10 years now:
Initial support for numbered hotcues has been added in 2009.

However, it can be challenging to remember the correct number in the heat of the moment.
Accidently pressing the wrong hotcue pad is not something you or your audience want to hear.

## Better Hotcue Labels

In 2015, support for hotcue labels was added to mitigate this problem.
These can be arbitrary text that is shown on the waveforms.
However, these were only shown on the scrolling waveforms, so you could not see them unless the track was close to that position.
Also, it was cumbersome to edit labels because this was buried in the track Properties dialog that was only accessible from the library.

In Mixxx 2.3, we overhauled the way you can interact with hotcues using the mouse:
It's now possible to see the labels on the overview waveforms.
You can edit them directly from the waveform by right clicking.

If you have long, descriptive labels on hotcues that are close together, Mixxx will elide the labels so they don't overlap.
You can still see the full label by hovering your mouse over an elided label.
Mixxx will hide any other labels this would be drawn over so the text is legible.

![Hotcue labels on overview waveforms]({% static "/images/news/hotcue-colors-labels.png" %})

## Color your Hotcues

But Mixxx 2.3 has yet another next major improvement for hotcues in the pipeline:
Hotcues can now have individual colors to make them visually distinguishable.

How you color code your hotcues is up to you - one example would be to set red cues 16 beats before the drop or chorus, yellow 8 beats before it and color the start of vocals blue.

![Hotcue buttons and color picker]({% static "/images/news/hotcue-colors-picker.png" %})

## Pick the colors YOU like

By default, you can pick a color from the Mixxx Hotcue Color palette.
That palette contains 9 colors that are easy to distinguish.

Personal preferences differ though, and it's probably impossible to suit everyones taste.
This is why - unlike most other DJ software - you are not restricted to the single predefined color palette we picked.

If you previously used Serato DJ Pro, Rekordbox, Traktor or VirtualDJ and like their color palettes better ours, we've got you covered.
You can also use one of their palettes instead.

![Hotcue color palette selection]({% static "/images/news/hotcue-colors-palette-combobox.png" %})

But it doesn't stop there:
We also added a powerful color palette editor that can be used to rearrange and customize these palettes and even design *your own palette* using any RGB colors you like.

![Hotcue color palette editor]({% static "/images/news/hotcue-colors-palette-editor.png" %})

## Automatic Coloring

When setting a hotcue, a single default color is assigned that you can select in the preferences.
You can then go ahead and change the color to your liking.

While assigning a custom color to cue points after you set them is a nice feature, coloring all your cue points this way can be tedious and a lot of extra work.
If you want, Mixxx 2.3 can color new hotcues automatically for you - based on the hotcue number.

A small example:
Say you want to set a cue point before the main vocal part, and you want it colored "blue".
You can configure Mixxx to always assign "blue" to the hotcues number 5, and then just set hotcue number 5 at the desired position - done.

If you do this, that also means that a hotcue of the same type (e.g. "before main vocals") does not only have the same color but is also assigned to the same hotcue pad.
Hence, the possibility of getting confused during a gig is reduced even more than when just using colors as visual aid.

## Bulk replace old hotcue colors

At some point, you might feel like your current scheme for color code hotcues lacking and unintuitive.
Maybe you simply don't like the colors anymore and would like to switch to a different palette.
Or you realize that you find the colorful hotcue buttons actually distracting and want to get rid of them.
If that happens, you may want to bulk replace the colors of existing hotcue in your library.

We're not aware that any of our competitors in the DJ software market have such an option - Mixxx 2.3 has.
You can find a dialog for replacing colors on the "Colors" page in the preferences window.

It allows bulk replacing hotcue colors for hotcues in your library and can be used to

- replace colors by hotcue number ("Set the color of all hotcues with number 5 to blue"),
- replace colors by current color ("Set the color of all red hotcues to blue"),
- combine the two conditions ("Set the color of all red hotcues with index 5 to blue"),
- negate them ("Set the color of all hotcues that are red but don't have number 5 to blue") or
- just replace all hotcue colors in your library unconditionally ("Set the color of all hotcues to blue").

![Hotcue color replace dialog]({% static "/images/news/hotcue-colors-replace.png" %})

## Support for colored hotcues on controllers

You're a controller mapping creator and wondered how to make use of hotcue colors on your controller?
Then don't worry - we designed this feature with controller support in mind.

When it comes to hotcue buttons, there are 4 types of controllers:

1. Controllers without hotcue buttons
2. Controllers with uncolored buttons
3. Controllers with colored hotcue buttons that allow setting an arbitrary RGB color
4. Controllers with colored hotcue buttons that only allow setting certain, predefined colors

For controllers of types 1 and 2, nothing changes (obviously).

For type 3, we made the RGB color of a hotcue accessible in controller scripts, so you can go ahead and implement support for it.
If your controller mapping uses our JavaScript Components library, this is quite simple:
You only need to implement the `HotcueButton::sendRGB(color)` method, that sends the 3-byte RGB color value to the controller (e.g. via a MIDI-SysEx message, depending on your hardware).

What about type 4?
Controllers that only allow choosing from a predefined color set were probably designed that way because they were sold with a software that does not allow assigned arbitrary colors to hotcues.
You can think of these predefined colors as a list, and usually you can set the pad color of these controllers by sending the color's index in that list as MIDI value.
For example, red could be color 1, blue is color 2, yellow is color 3, green is color 4 and so on.

We added a `ColorMapper` class that you can use to establish a mapping between these IDs and can be used to get the appropriate MIDI value for a given color.

But what happens if you set a hotcue to a color that isn't supported by the controller?
Obviously, it's not possible to show the exact same color on your controller if the hardware simply doesn't support it - but don't worry, we've got you covered.

In this case, `ColorMapper` returns the ID of the color that is *most similar* to the color you put in.
As an example, the hotcue color in Mixxx could be a darker shade of blue - ColorMapper will simply return the color for the regular blue color in this case, because it's the best match.

![Hotcue colors on a controller]({% static "/images/news/hotcue-colors-controller.gif" %}){: style="width: 100%" }

Seems complicated?
It doesn't have to be.
If your mapping already uses our JavaScript Components library, you can just create a `ColorMapper` object, and it to the `HotcueButton` and your colored hotcue pads should start working!

We also added [controls](https://mixxx.org/wiki/doku.php/mixxxcontrols) to to make it possible assign a different color to an existing hotcue from your controller - for example, the mapping for the Roland DJ-505 uses the PARAMETER -/+ buttons next to the hotcue pads to cycle through the color palette for most recently activated hotcue.

Refer to our wiki if you want to integrate it into your controller mapping and check out the video below:

{% endfilter %}
{% endblock %}
Binary file added static/images/news/hotcue-colors-controller.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/news/hotcue-colors-labels.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/news/hotcue-colors-picker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/news/hotcue-colors-replace.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.