-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
tooltips.cpp
914 lines (742 loc) · 38.3 KB
/
tooltips.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
#include "skin/tooltips.h"
Tooltips::Tooltips() {
addStandardTooltips();
}
Tooltips::~Tooltips() {
}
QString Tooltips::tooltipForId(QString id) const {
// We always add a separator at the end.
QString joined = m_tooltips.value(id, QStringList()).join(tooltipSeparator());
if (joined.length() > 0) {
joined += tooltipSeparator();
}
return joined;
}
QString Tooltips::tooltipSeparator() const {
return "\n";
}
QList<QString>& Tooltips::add(QString id) {
return m_tooltips[id];
}
void Tooltips::addStandardTooltips() {
QString dropTracksHere = tr("Drop tracks from library, external file manager, or other decks/samplers here.");
QString resetToDefault = tr("Reset to default value.");
QString leftClick = tr("Left-click");
QString rightClick = tr("Right-click");
QString scrollWheel = tr("Scroll-wheel");
QString loopActive = "(" + tr("loop active") + ")";
QString loopInactive = "(" + tr("loop inactive") + ")";
QString effectsWithinUnit = tr("Effects within the chain must be enabled to hear them.");
add("waveform_overview")
<< tr("Waveform Overview")
<< tr("Shows information about the track currently loaded in this channel.")
<< tr("Jump around in the track by clicking anywhere on the waveform.")
<< dropTracksHere;
QString scratchMouse = tr("Use the mouse to scratch, spin-back or throw tracks.");
add("waveform_display")
<< tr("Waveform Display")
<< tr("Shows the loaded track's waveform near the playback position.")
<< QString("%1: %2").arg(leftClick, scratchMouse)
<< QString("%1: %2").arg(rightClick, tr("Drag with mouse to make temporary pitch adjustments."))
<< QString("%1: %2").arg(scrollWheel, tr("Scroll to change the waveform zoom level."))
<< dropTracksHere;
add("waveform_zoom_up")
<< tr("Waveform Zoom Out");
add("waveform_zoom_down")
<< tr("Waveform Zoom In");
add("waveform_zoom_set_default")
<< tr("Waveform Zoom")
<< QString("%1").arg(resetToDefault);
add("spinny")
<< tr("Spinning Vinyl")
<< tr("Rotates during playback and shows the position of a track.")
<< scratchMouse
<< tr("Right click to show cover art of loaded track.")
<< dropTracksHere
<< tr("If Vinyl control is enabled, displays time-coded vinyl signal quality (see Preferences -> Vinyl Control).");
add("pregain")
<< tr("Gain")
<< tr("Adjusts the pre-fader gain of the track (to avoid clipping).")
<< QString("%1: %2").arg(rightClick, resetToDefault);
QString clippingHelp = tr("(too loud for the hardware and is being distorted).");
add("channel_PeakIndicator")
<< tr("Channel Peak Indicator")
<< tr("Indicates when the signal on the channel is clipping,")
<< clippingHelp;
add("channel_PeakIndicatorL")
<< tr("Channel L Peak Indicator")
<< tr("Indicates when the left signal on the channel is clipping,")
<< clippingHelp;
add("channel_PeakIndicatorR")
<< tr("Channel R Peak Indicator")
<< tr("Indicates when the right signal on the channel is clipping,")
<< clippingHelp;
add("master_PeakIndicator")
<< tr("Master Peak Indicator")
<< tr("Indicates when the signal on the master output is clipping,")
<< clippingHelp;
add("master_PeakIndicatorL")
<< tr("Master L Peak Indicator")
<< tr("Indicates when the left signal on the master output is clipping,")
<< clippingHelp;
add("master_PeakIndicatorR")
<< tr("Master R Peak Indicator")
<< tr("Indicates when the right signal on the master output is clipping,")
<< clippingHelp;
add("channel_VuMeter")
<< tr("Channel Volume Meter")
<< tr("Shows the current channel volume.");
add("channel_VuMeterL")
<< tr("Channel L Volume Meter")
<< tr("Shows the current channel volume for the left channel.");
add("channel_VuMeterR")
<< tr("Channel R Volume Meter")
<< tr("Shows the current channel volume for the right channel.");
add("microphone_VuMeter")
<< tr("Microphone Volume Meter")
<< tr("Shows the current microphone volume.");
add("microphone_PeakIndicator")
<< tr("Microphone Peak Indicator")
<< tr("Indicates when the signal on the microphone is clipping,")
<< clippingHelp;
add("sampler_VuMeter")
<< tr("Sampler Volume Meter")
<< tr("Shows the current sampler volume.");
add("sampler_PeakIndicator")
<< tr("Sampler Peak Indicator")
<< tr("Indicates when the signal on the sampler is clipping,")
<< clippingHelp;
add("preview_VuMeter")
<< tr("Preview Deck Volume Meter")
<< tr("Shows the current Preview Deck volume.");
add("preview_PeakIndicator")
<< tr("Preview Deck Peak Indicator")
<< tr("Indicates when the signal on the Preview Deck is clipping,")
<< clippingHelp;
add("master_VuMeterL")
<< tr("Master Channel L Volume Meter")
<< tr("Shows the current master volume for the left channel.");
add("master_VuMeterR")
<< tr("Master Channel R Volume Meter")
<< tr("Shows the current master volume for the right channel.");
add("channel_volume")
<< tr("Volume Control")
<< tr("Adjusts the volume of the selected channel.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
// Legacy control.
add("master_volume")
<< tr("Master Volume")
<< tr("Adjusts the master output volume.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("master_gain")
<< tr("Master Gain")
<< tr("Adjusts the master output gain.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("booth_gain")
<< tr("Booth Gain")
<< tr("Adjusts the booth output gain.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("crossfader")
<< tr("Crossfader")
<< tr("Determines the master output by fading between the left and right channels.")
<< QString("%1: %2").arg(rightClick, resetToDefault)
<< tr("Change the crossfader curve in Preferences -> Crossfader");
add("balance")
<< tr("Balance")
<< tr("Adjusts the left/right channel balance on the master output.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
// Legacy control.
add("headphone_volume")
<< tr("Headphone Volume")
<< tr("Adjusts the headphone output volume.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("headphone_gain")
<< tr("Headphone Gain")
<< tr("Adjusts the headphone output gain.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("headMix")
<< tr("Headphone Mix")
<< tr("Crossfades the headphone output between the master mix and cueing (PFL or Pre-Fader Listening) signal.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("headSplit")
<< tr("Headphone Split Cue")
<< tr("If activated, the master signal plays in the right channel, while the cueing signal "
"plays in the left channel.")
<< tr("Adjust the Headphone Mix so in the left channel is not the pure cueing signal.");
add("orientation")
<< tr("Crossfader Orientation")
<< tr("Set the channel's crossfader orientation.")
<< tr("Either to the left side of crossfader, to the right side or to the center (unaffected by crossfader)");
add("show_microphone")
<< tr("Microphone")
<< tr("Show/hide the Microphone section.");
add("show_samplers")
<< tr("Sampler")
<< tr("Show/hide the Sampler section.");
add("show_vinylcontrol")
<< tr("Vinyl Control")
<< tr("Show/hide the Vinyl Control section.")
<< tr("Activate Vinyl Control from the Menu -> Options.");
add("show_previewdeck")
<< tr("Preview Deck")
<< tr("Show/hide the Preview deck.");
add("show_coverart")
<< tr("Cover Art")
<< tr("Show/hide Cover Art.");
add("toggle_4decks")
<< tr("Toggle 4 Decks")
<< tr("Switches between showing 2 decks and 4 decks.");
add("show_library")
<< tr("Show Library")
<< tr("Show or hide the track library.");
add("show_effects")
<< tr("Show Effects")
<< tr("Show or hide the effects.");
add("maximize_library")
<< tr("Maximize Library")
<< tr("Maximize the track library to take up all the available screen space.");
add("show_mixer")
<< tr("Toggle Mixer")
<< tr("Show or hide the mixer.");
add("microphone_volume")
<< tr("Microphone Volume")
<< tr("Adjusts the microphone volume.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("microphone_pregain")
<< tr("Microphone Gain")
<< tr("Adjusts the pre-fader microphone gain.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("microphone_talkover")
<< tr("Microphone Talk-Over")
<< tr("Hold-to-talk or short click for latching to")
<< tr("mix microphone input into the master output.");
add("talkover_duck_mode")
<< tr("Microphone Talkover Mode")
<< tr("Off: Do not reduce music volume")
<< tr("Auto: Automatically reduce music volume when microphones are in use. Adjust the amount the music volume is reduced with the Strength knob.")
<< tr("Manual: Reduce music volume by a fixed amount set by the Strength knob.");
add("talkover_duck_strength")
<< tr("Microphone Talkover Ducking Strength")
<< tr("Behavior depends on Microphone Talkover Mode:")
<< tr("Off: Does nothing")
<< tr("Auto: Sets how much to reduce the music volume when microphones are in use.")
<< tr("Manual: Sets how much to reduce the music volume, regardless of volume of microphone inputs.");
QString changeAmount = tr("Change the step-size in the Preferences -> Interface menu.");
add("rate_perm_up_rate_perm_up_small")
<< tr("Raise Pitch")
<< QString("%1: %2").arg(leftClick, tr("Sets the pitch higher."))
<< QString("%1: %2").arg(rightClick, tr("Sets the pitch higher in small steps."))
<< changeAmount;
add("rate_perm_down_rate_perm_down_small")
<< tr("Lower Pitch")
<< QString("%1: %2").arg(leftClick, tr("Sets the pitch lower."))
<< QString("%1: %2").arg(rightClick, tr("Sets the pitch lower in small steps."))
<< changeAmount;
add("rate_temp_up_rate_temp_up_small")
<< tr("Raise Pitch Temporary (Nudge)")
<< QString("%1: %2").arg(leftClick, tr("Holds the pitch higher while active."))
<< QString("%1: %2").arg(rightClick, tr("Holds the pitch higher (small amount) while active."))
<< changeAmount;
add("rate_temp_down_rate_temp_down_small")
<< tr("Lower Pitch Temporary (Nudge)")
<< QString("%1: %2").arg(leftClick, tr("Holds the pitch lower while active."))
<< QString("%1: %2").arg(rightClick, tr("Holds the pitch lower (small amount) while active."))
<< changeAmount;
add("filterLow")
<< tr("Low EQ")
<< tr("Adjusts the gain of the low EQ filter.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("filterMid")
<< tr("Mid EQ")
<< tr("Adjusts the gain of the mid EQ filter.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("filterHigh")
<< tr("High EQ")
<< tr("Adjusts the gain of the high EQ filter.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
QString eqKillLatch = tr("Hold-to-kill or short click for latching.");
add("filterHighKill")
<< tr("High EQ Kill")
<< tr("Holds the gain of the high EQ to zero while active.")
<< eqKillLatch;
add("filterMidKill")
<< tr("Mid EQ Kill")
<< tr("Holds the gain of the mid EQ to zero while active.")
<< eqKillLatch;
add("filterLowKill")
<< tr("Low EQ Kill")
<< tr("Holds the gain of the low EQ to zero while active.")
<< eqKillLatch;
QString tempoDisplay = tr("Displays the tempo of the loaded track in BPM (beats per minute).");
add("visual_bpm")
<< tr("Tempo")
<< tempoDisplay;
add("visual_key")
//: The musical key of a track
<< tr("Key")
<< tr("Displays the current musical key of the loaded track after pitch shifting.");
add("bpm_tap")
<< tr("BPM Tap")
<< tr("When tapped repeatedly, adjusts the BPM to match the tapped BPM.");
add("beats_adjust_slower")
<< tr("Adjust BPM Down")
<< tr("When tapped, adjusts the average BPM down by a small amount.");
add("beats_adjust_faster")
<< tr("Adjust BPM Up")
<< tr("When tapped, adjusts the average BPM up by a small amount.");
add("beats_translate_earlier")
<< tr("Adjust Beats Earlier")
<< tr("When tapped, moves the beatgrid left by a small amount.");
add("beats_translate_later")
<< tr("Adjust Beats Later")
<< tr("When tapped, moves the beatgrid right by a small amount.");
add("beats_translate_curpos")
<< tr("Adjust Beatgrid")
<< QString("%1: %2").arg(leftClick, tr("Adjust beatgrid so the closest beat is aligned with the current play position."))
<< QString("%1: %2").arg(rightClick, tr("Adjust beatgrid to match another playing deck."));
add("beats_translate_match_alignment")
<< tr("Adjust Beatgrid")
<< tr("Adjust beatgrid to match another playing deck.");
//this is a special case, in some skins we might display a transparent png for bpm_tap on top of visual_bpm
add("bpm_tap_visual_bpm")
<< tr("Tempo and BPM Tap")
<< tempoDisplay
<< tr("When tapped repeatedly, adjusts the BPM to match the tapped BPM.");
add("show_spinny")
<< tr("Spinning Vinyl")
<< tr("Show/hide the spinning vinyl section.");
add("keylock")
<< tr("Keylock")
<< tr("Prevents the pitch from changing when the rate changes.")
<< tr("Toggling keylock during playback may result in a momentary audio glitch.");
add("hotcue_toggle")
<<tr("Changes the number of hotcue buttons displayed in the deck");
// Show Rate Control
add("rate_toggle")
<<tr("Toggle visibility of Rate Control");
// Used in cue/hotcue/loop tooltips below.
QString quantizeSnap = tr("If quantize is enabled, snaps to the nearest beat.");
add("quantize")
<< tr("Quantize")
<< tr("Toggles quantization.")
<< tr("Loops and cues snap to the nearest beat when quantization is enabled.");
// Reverse and reverseroll (censor)
add("reverse")
<< tr("Reverse")
<< QString("%1: %2").arg(leftClick, tr("Reverses track playback during regular playback."))
<< QString("%1: %2").arg(rightClick, tr("Puts a track into reverse while being held (Censor)."))
<< tr("Playback continues where the track would have been if it had not been temporarily reversed.");
// Currently used for samplers
add("play_start")
<< tr("Play/Pause")
<< QString("%1: %2").arg(leftClick, tr("Starts playing from the beginning of the track."))
<< QString("%1: %2").arg(rightClick, tr("Jumps to the beginning of the track and stops."));
// Currently used for decks
QString cueSet = tr("Places a cue point at the current position on the waveform.");
add("play_cue_set")
<< tr("Play/Pause")
<< QString("%1: %2").arg(leftClick, tr("Plays or pauses the track."))
<< QString("%1: %2").arg(rightClick, cueSet);
QString whilePlaying = tr("(while playing)");
QString whileStopped = tr("(while stopped)");
QString cueWhilePlaying = tr("Stops track at cue point, OR go to cue point and play after release (CUP mode).");
QString cueWhileStopped = tr("Set cue point (Pioneer/Mixxx/Numark mode), set cue point and play after release (CUP mode) "
"OR preview from it (Denon mode).");
QString cueHint = tr("Hint: Change the default cue mode in Preferences -> Interface.");
add("cue_default_cue_gotoandstop")
<< tr("Cue")
<< QString("%1 %2: %3").arg(leftClick, whilePlaying, cueWhilePlaying)
<< QString("%1 %2: %3").arg(leftClick, whileStopped, cueWhileStopped)
<< cueHint
<< quantizeSnap
<< QString("%1: %2").arg(rightClick, tr("Seeks the track to the cue point and stops."));
add("cue_gotoandplay_cue_default")
<< tr("Play")
<< QString("%1: %2").arg(leftClick, tr("Plays track from the cue point."))
<< QString("%1 %2: %3").arg(rightClick, whilePlaying, cueWhilePlaying)
<< QString("%1 %2: %3").arg(rightClick, whileStopped, cueWhileStopped)
<< cueHint
<< quantizeSnap;
add("pfl")
<< tr("Headphone")
<< tr("Sends the selected channel's audio to the headphone output,")
<< tr("selected in Preferences -> Sound Hardware.");
add("mute")
<< tr("Mute")
<< tr("Mutes the selected channel's audio in the master output.");
add("back_start")
<< tr("Fast Rewind")
<< QString("%1: %2").arg(leftClick, tr("Fast rewind through the track."))
<< QString("%1: %2").arg(rightClick, tr("Jumps to the beginning of the track."));
add("fwd_end")
<< tr("Fast Forward")
<< QString("%1: %2").arg(leftClick, tr("Fast forward through the track."))
<< QString("%1: %2").arg(rightClick, tr("Jumps to the end of the track."));
// Ghetto-Sync (TM)
add("beatsync_beatsync_tempo")
<< tr("Old Synchronize")
<< tr("(This skin should be updated to use Master Sync!)")
<< QString("%1: %2").arg(leftClick, tr("Syncs the tempo (BPM) and phase to that of the other track, "
"if BPM is detected on both."))
<< QString("%1: %2").arg(rightClick, tr("Syncs the tempo (BPM) to that of the other track, "
"if BPM is detected on both."))
<< tr("Syncs to the first deck (in numerical order) that is playing a track and has a BPM.")
<< tr("If no deck is playing, syncs to the first deck that has a BPM.")
<< tr("Decks can't sync to samplers and samplers can only sync to decks.");
// Awesome-Sync (TM)
add("sync_enabled")
<< tr("Enable Master Sync")
<< tr("Tap to sync the tempo to other playing tracks or the master clock.")
<< tr("Hold for at least a second to enable sync lock for this deck.")
<< tr("Decks with sync locked will all play at the same tempo, and decks that also have "
"quantize enabled will always have their beats lined up.");
// TODO(owen): find a better phrase for "the other deck"
add("sync_reset_key")
<< tr("Sync and Reset Key")
<< QString("%1: %2").arg(leftClick, tr("Sets the pitch to a key that allows a harmonic transition "
"from the other track. Requires a detected key on both involved decks."))
<< QString("%1: %2").arg(rightClick, tr("Resets the key to the original track key."));
add("sync_master")
<< tr("Enable Sync Clock Master")
<< tr("When enabled, this device will serve as the master clock for all other decks.");
add("rate")
<< tr("Speed Control")
<< tr("Changes the track playback speed (affects both the tempo and the pitch). If keylock is enabled, only the tempo is affected.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("pitch")
<< tr("Pitch Control")
<< tr("Changes the track pitch independent of the tempo.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("pitch_up")
<< tr("Pitch Control")
<< tr("Changes the track pitch independent of the tempo.")
<< QString("%1: %2").arg(leftClick, tr("Increases the pitch by one semitone."))
<< QString("%1: %2").arg(rightClick, tr("Increases the pitch by 10 cents."));
add("pitch_down")
<< tr("Pitch Control")
<< tr("Changes the track pitch independent of the tempo.")
<< QString("%1: %2").arg(leftClick, tr("Decreases the pitch by one semitone."))
<< QString("%1: %2").arg(rightClick, tr("Decreases the pitch by 10 cents."));
add("pitch_adjust")
<< tr("Pitch Adjust")
<< tr("Adjust the pitch in addition to the speed slider pitch.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("rate_display")
<< tr("Pitch Rate")
<< tr("Displays the current playback rate of the track.");
add("repeat")
<< tr("Repeat")
<< tr("When active the track will repeat if you go past the end or reverse before the start.");
add("eject")
<< tr("Eject")
<< tr("Ejects track from the player.");
add("hotcue")
<< tr("Hotcue")
<< QString("%1: %2").arg(leftClick, tr("If hotcue is set, jumps to the hotcue."))
<< tr("If hotcue is not set, sets the hotcue to the current play position.")
<< quantizeSnap
<< QString("%1: %2").arg(rightClick, tr("If hotcue is set, clears the hotcue."));
// Status displays and toggle buttons
add("toggle_recording")
<< tr("Record Mix")
<< tr("Toggle mix recording.");
// Status displays and toggle buttons
add("recording_duration")
<< tr("Recording Duration")
<< tr("Displays the duration of the running recording.");
// For legacy reasons also add tooltips for "shoutcast_enabled".
for (const char* key : {"shoutcast_enabled", "broadcast_enabled"}) {
add(key)
<< tr("Enable Live Broadcasting")
<< tr("Stream your mix over the Internet.")
<< tr("Provides visual feedback for Live Broadcasting status:")
<< tr("disabled, connecting, connected, failure.");
}
add("passthrough_enabled")
<< tr("Enable Passthrough")
<< tr("When enabled, the deck directly plays the audio arriving on the vinyl input.");
add("vinylcontrol_enabled")
<< tr("Enable Vinyl Control")
<< tr("When disabled, the track is controlled by Mixxx playback controls.")
<< tr("When enabled, the track responds to external vinyl control.");
add("vinylcontrol_status")
<< tr("Vinyl Status")
<< tr("Provides visual feedback for vinyl control status:")
<< tr("Green for control enabled.")
<< tr("Blinking yellow for when the needle reaches the end of the record.")
<< tr("Blue for passthrough enabled.");
add("vinylcontrol_mode")
<< tr("Vinyl Control Mode")
<< tr("Absolute mode - track position equals needle position and speed.")
<< tr("Relative mode - track speed equals needle speed regardless of needle position.")
<< tr("Constant mode - track speed equals last known-steady speed regardless of needle input.");
add("vinylcontrol_cueing")
<< tr("Vinyl Cueing Mode")
<< tr("Determines how cue points are treated in vinyl control Relative mode:")
<< tr("Off - Cue points ignored.")
<< tr("One Cue - If needle is dropped after the cue point, track will seek to that cue point.")
<< tr("Hot Cue - Track will seek to nearest previous hot cue point.");
add("loop_in")
<< tr("Loop-In Marker")
<< QString("%1: %2").arg(leftClick + " " + loopInactive,
tr("Sets the track Loop-In Marker to the current play position."))
<< quantizeSnap
<< QString("%1: %2").arg(leftClick + " " + loopActive,
tr("Press and hold to move Loop-In Marker."))
<< QString("%1: %2").arg(rightClick, tr("Jump to Loop-In Marker."));
add("loop_out")
<< tr("Loop-Out Marker")
<< QString("%1: %2").arg(leftClick + " " + loopInactive,
tr("Sets the track Loop-Out Marker to the current play position."))
<< quantizeSnap
<< QString("%1: %2").arg(leftClick + " " + loopActive,
tr("Press and hold to move Loop-Out Marker."))
<< QString("%1: %2").arg(rightClick, tr("Jump to Loop-Out Marker."));
add("loop_halve")
<< tr("Loop Halve")
<< tr("Halves the current loop's length by moving the end marker.")
<< tr("Deck immediately loops if past the new endpoint.");
add("loop_double")
<< tr("Loop Double")
<< tr("Doubles the current loop's length by moving the end marker.");
add("beatloop_size")
<< tr("Beatloop Size")
<< tr("Select the size of the loop in beats to set with the Beatloop button.")
<< tr("Changing this resizes the loop if the loop already matches this size.");
add("beatloop_halve")
<< tr("Halve the size of an existing beatloop, or halve the size of the next beatloop set with the Beatloop button.");
add("beatloop_double")
<< tr("Double the size of an existing beatloop, or double the size of the next beatloop set with the Beatloop button.");
//beatloop and beatlooproll
add("beatloop_activate")
<< tr("Beatloop")
<< QString("%1: %2").arg(leftClick, tr("Start a loop over the set number of beats."))
<< quantizeSnap
<< QString("%1: %2").arg(rightClick, tr("Temporarily enable a rolling loop over the set number of beats."))
<< tr("Playback will resume where the track would have been if it had not entered the loop.");
add("beatjump_size")
<< tr("Beatjump/Loop Move Size")
<< tr("Select the number of beats to jump or move the loop with the Beatjump Forward/Backward buttons.");
add("beatjump_forward")
<< tr("Beatjump Forward")
<< QString("%1: %2").arg(leftClick + " " + loopInactive, tr("Jump forward by the set number of beats."))
<< QString("%1: %2").arg(leftClick + " " + loopActive, tr("Move the loop forward by the set number of beats."))
<< QString("%1: %2").arg(rightClick + " " + loopInactive, tr("Jump forward by 1 beat."))
<< QString("%1: %2").arg(rightClick + " " + loopActive, tr("Move the loop forward by 1 beat."));
add("beatjump_backward")
<< tr("Beatjump Backward")
<< QString("%1: %2").arg(leftClick + " " + loopInactive, tr("Jump backward by the set number of beats."))
<< QString("%1: %2").arg(leftClick + " " + loopActive, tr("Move the loop backward by the set number of beats."))
<< QString("%1: %2").arg(rightClick + " " + loopInactive, tr("Jump backward by 1 beat."))
<< QString("%1: %2").arg(rightClick + " " + loopActive, tr("Move the loop backward by 1 beat."));
add("loop_exit")
<< tr("Loop Exit")
<< tr("Turns the current loop off.")
<< tr("Works only if Loop-In and Loop-Out marker are set.");
add("reloop_toggle")
<< tr("Reloop")
<< QString("%1: %2").arg(leftClick, tr("Toggles the current loop on or off."))
<< tr("If the loop is ahead of the current position, looping will start when the loop is reached.")
<< tr("Works only if Loop-In and Loop-Out Marker are set.")
<< QString("%1: %2").arg(rightClick, tr("Enable loop, jump to Loop-In Marker, and stop playback."));
add("slip_mode")
<< tr("Slip Mode")
<< tr("When active, the playback continues muted in the background during a loop, reverse, scratch etc.")
<< tr("Once disabled, the audible playback will resume where the track would have been.");
add("track_time")
<< tr("Track Time")
<< tr("Displays the elapsed and/or remaining time of the track loaded.")
<< tr("Click to toggle between time elapsed/remaining time/both.");
add("track_duration")
<< tr("Track Duration")
<< tr("Displays the duration of the loaded track.");
QString trackTags = tr("Information is loaded from the track's metadata tags.");
add("track_artist")
<< tr("Track Artist")
<< tr("Displays the artist of the loaded track.")
<< trackTags
<< dropTracksHere;
add("track_title")
<< tr("Track Title")
<< tr("Displays the title of the loaded track.")
<< trackTags
<< dropTracksHere;
add("track_album")
<< tr("Track Album")
<< tr("Displays the album name of the loaded track.")
<< trackTags;
add("track_key")
//: The musical key of a track
<< tr("Track Key")
<< tr("Displays the musical key of the loaded track.")
<< trackTags;
add("text")
<< tr("Track Artist/Title")
<< tr("Displays the artist and title of the loaded track.")
<< trackTags
<< dropTracksHere;
add("time")
<< tr("Clock")
<< tr("Displays the current time.");
add("audio_latency_usage")
<< tr("Audio Latency Usage Meter")
<< tr("Displays the fraction of latency used for audio processing.")
<< tr("A high value indicates that audible glitches are likely.")
<< tr("Do not enable keylock, effects or additional decks in this situation.");
add("audio_latency_overload")
<< tr("Audio Latency Overload Indicator")
<< tr("Indicates that the audio buffer is too small to do all audio processing.");
add("coverart")
<< tr("Cover Art")
<< tr("Displays cover artwork of the loaded track.")
<< QString("%1: %2").arg(rightClick, tr("Displays options for editing cover artwork."));
add("starrating")
<< tr("Star Rating")
<< tr("Assign ratings to individual tracks by clicking the stars.");
// Effect Unit Controls
add("EffectUnit_clear")
<< tr("Clear Unit")
<< tr("Clear effect unit.");
add("EffectUnit_show_parameters")
<< tr("Show Effect Parameters")
<< tr("Show/hide parameters for effects in this unit.");
add("EffectUnit_enabled")
<< tr("Toggle Unit")
<< tr("Enable or disable this whole effect unit.");
add("EffectUnit_mix")
<< tr("Mix")
<< tr("Adjust the mixing of the dry (input) signal with the wet (output) signal of the effect unit")
<< tr("D/W mode: Crossfade between dry and wet")
<< tr("D+W mode: Add wet to dry")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("EffectUnit_mix_mode")
<< tr("Mix Mode")
<< tr("Adjust how the dry (input) signal is mixed with the wet (output) signal of the effect unit") + "\n"
<< tr("Dry/Wet mode (crossed lines): Mix knob crossfades between dry and wet\n"
"Use this to change the sound of the track with EQ and filter effects.") + "\n"
<< tr("Dry+Wet mode (flat dry line): Mix knob adds wet to dry\n"
"Use this to change only the effected (wet) signal with EQ and filter effects.");
add("EffectUnit_super1")
<< tr("Super Knob")
<< tr("Controls the Meta Knob of all effects in this unit together.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("EffectUnit_next_chain")
<< tr("Next Chain")
<< tr("Load next effect chain preset into this effect unit.");
add("EffectUnit_prev_chain")
<< tr("Previous Chain")
<< tr("Load previous effect chain preset into this effect unit.");
add("EffectUnit_chain_selector")
<< tr("Next/Previous Chain")
<< tr("Load next or previous effect chain preset into this effect unit.");
add("EffectUnit_group_enabled")
<< tr("Assign Effect Unit")
<< tr("Assign this effect unit to the channel output.")
<< effectsWithinUnit;
add("EffectUnit_headphones_enabled")
<< tr("Assign Effect Unit")
<< tr("Route the headphone channel through this effect unit.")
<< effectsWithinUnit;
add("EffectUnit_master_enabled")
<< tr("Assign Effect Unit")
<< tr("Route the master mix through this effect unit.")
<< effectsWithinUnit;
add("EffectUnit_BusLeft_enabled")
<< tr("Assign Effect Unit")
<< tr("Route the left crossfader bus through this effect unit.")
<< effectsWithinUnit;
add("EffectUnit_BusRight_enabled")
<< tr("Assign Effect Unit")
<< tr("Route the right crossfader bus through this effect unit.")
<< effectsWithinUnit;
add("EffectUnit_deck_enabled")
<< tr("Assign Effect Unit")
<< tr("Route this deck through the indicated effect unit.")
<< effectsWithinUnit;
add("EffectUnit_sampler_enabled")
<< tr("Assign Effect Unit")
<< tr("Route this sampler through the indicated effect unit.")
<< effectsWithinUnit;
add("EffectUnit_microphone_enabled")
<< tr("Assign Effect Unit")
<< tr("Route this microphone through the indicated effect unit.")
<< effectsWithinUnit;
add("EffectUnit_auxiliary_enabled")
<< tr("Assign Effect Unit")
<< tr("Route this auxiliary input through the indicated effect unit.")
<< effectsWithinUnit;
// Effect Slot Controls
add("EffectSlot_clear")
<< tr("Clear")
<< tr("Clear the current effect.");
add("EffectSlot_enabled")
<< tr("Enable Effect")
<< tr("The effect unit must also be assigned to a deck or other sound source to hear the effect.");
add("EffectSlot_next_effect")
<< tr("Next")
<< tr("Switch to the next effect.");
add("EffectSlot_prev_effect")
<< tr("Previous")
<< tr("Switch to the previous effect.");
add("EffectSlot_effect_selector")
<< tr("Next or Previous")
<< tr("Switch to either the next or previous effect.");
add("EffectSlot_metaknob")
<< tr("Meta Knob")
<< tr("Controls linked parameters of this effect")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("EffectSlot_focus")
<< tr("Effect Focus Button")
<< QString("%1: %2").arg(leftClick, tr("Focuses this effect."))
<< QString("%1: %2").arg(rightClick, tr("Unfocuses this effect."))
<< tr("Refer to the web page on the Mixxx wiki for your controller for more information.");
add("EffectSlot_parameter")
<< tr("Effect Parameter")
<< tr("Adjusts a parameter of the effect.")
<< QString("%1: %2").arg(rightClick, resetToDefault);
add("EffectSlot_parameter_link_type")
<< tr("Meta Knob Link")
<< tr("Set how this parameter is linked to the effect's Meta Knob.")
<< tr("Inactive: parameter not linked")
<< tr("Active: parameter moves with Meta Knob")
<< tr("Left side active: parameter moves with left half of Meta Knob turn")
<< tr("Right side active: parameter moves with right half of Meta Knob turn")
<< tr("Left and right side active: parameter moves across range with half of Meta Knob turn and back with the other half");
add("EffectSlot_parameter_inversion")
<< tr("Meta Knob Link Inversion")
<< tr("Inverts the direction this parameter moves when turning the effect's Meta Knob.");
add("EffectSlot_button_parameter")
<< tr("Equalizer Parameter Kill")
<< tr("Holds the gain of the EQ to zero while active.")
<< eqKillLatch;
// Quick Effect Rack Controls
add("QuickEffectRack_super1")
<< tr("Quick Effect Super Knob")
<< tr("Quick Effect Super Knob (control linked effect parameters).")
<< QString("%1: %2").arg(rightClick, resetToDefault)
<< tr("Hint: Change the default Quick Effect mode in Preferences -> Equalizers.");
add("QuickEffectRack_enabled")
<< tr("Toggle")
<< tr("Toggle the current effect.")
<< eqKillLatch;
// Equalizer Rack Controls
add("EqualizerRack_effect_parameter")
<< tr("Equalizer Parameter")
<< tr("Adjusts the gain of the EQ filter.")
<< QString("%1: %2").arg(rightClick, resetToDefault)
<< tr("Hint: Change the default EQ mode in Preferences -> Equalizers.");
add("EqualizerRack_effect_button_parameter")
<< tr("Equalizer Parameter Kill")
<< tr("Holds the gain of the EQ to zero while active.")
<< eqKillLatch;
add("skin_settings")
<< tr("Skin Settings Menu")
<< tr("Show/hide skin settings menu");
// Sampler Bank Controls
add("SaveSamplerBank")
<< tr("Save Sampler Bank")
<< tr("Save the collection of samples loaded in the samplers.");
add("LoadSamplerBank")
<< tr("Load Sampler Bank")
<< tr("Load a previously saved collection of samples into the samplers.");
}