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

Effects chapter #64

Merged
merged 5 commits into from
Apr 15, 2018
Merged

Effects chapter #64

merged 5 commits into from
Apr 15, 2018

Conversation

Be-ing
Copy link
Contributor

@Be-ing Be-ing commented Feb 26, 2018

Add a new chapter describing how to use the effects system. Information about specific effects and their parameters are left to tooltips in the GUI.

@ferranpujolcamins
Copy link
Contributor

The section "An Overview of the Mixxx Interface" describes the LateNight skin. The effects section has screenshots of the Deere skin. You may consider to include an explicit statement saying that you are explaining effects on Deere.

@ferranpujolcamins
Copy link
Contributor

You might also consider to label the controls that appear on the screenshots. This way it will be easy for users to know which knob is the metaknob for example. Also it will be easier to relate the metaknob when the effect unit is folded with the metaknob when the unit is expanded.

@kazakore
Copy link

kazakore commented Mar 4, 2018

source/chapters/user_interface.rst

  • Effect units can be freely assigned to different decks as well as other inputs."
    ++ Effect units can be freely assigned to each deck, as well as the Aux and Microphone inputs.

(Is it worth mentioning here that further routing options are available? It is mentioned on the main Effects page that you can route it to more than mentioned here but as the controls aren't on the default UI I can understand why not to go into it here...)

source/chapters/effects.rst

  • The buttons for routing other inputs to effect units are in different locations +(or may not be present)+ depending on the skin +although the action is always possible, eg via a midi controller.+

  • The mix knob crossfades between the dry signal (input to the unit) and the wet signal (output of the last effect in the unit). This adjusts the level of all 3 effects in the unit together. When the knob is fully left, no sound will be heard from the effect unit. When the knob is fully right, only the output of the effect unit will be heard without any of the dry input signal.
    ++ The Mix knob adjusts the balance between the dry (input) signal and the wet, effected signal at the output at the end of the total effects chain. With the knob fully anticlockwise you will hear only the original signal, with it fully to the right you will only hear the effect. How this affects the sound will vary greatly with types of effects in use but it can often be considered as the control to set the level (volume) of the effects at output. +

(Should we list at the beginning of this section that type of effects that Mixxx currently comes packaged with? Feels it would be nice to pad out the one line intro a little. I do agree that we definitely don't need to go into details of controls for each though.)

signal (output of the last effect in the unit). This adjusts the level of all 3
effects in the unit together. When the knob is fully left, no sound will be
heard from the effect unit. When the knob is fully right, only the output of
the effect unit will be heard without any of the dry input signal.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: The Mix knob only works for effects with not group delay. If it is uses on effects with a group delay like filter or EQs it will introduce a kind of phaser effect.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did actually wonder about this the other day. Obviously any effect takes time to do the processing, this would usually be compensated for within a DAW (Plugin Delay Compensation , or PDC) but things can get a little complicated when effects may be turned on/off and when the live performance aspects means additional delay is best kept to a minimum. How did you decide to dea with this? Use no PDC but make sure to use effects that introduce minimal processing delay? Have a small but fixed PDC amount to hopefully cover most outcomes without overly affecting timing at output. From the above comment it obviously isn't calculated for the actual effects path in use and i would guess you have gone for the minimal delay possible due to the importance of this with live performance...
It may be worth something revisting and thinking about for v2.2 anyway. I didn't know which effects would exhibit the symptoms the worst but the current system seemed reasonable with a very quick test with some random effects in the chain anyway.

Copy link
Contributor Author

@Be-ing Be-ing Mar 21, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We cannot do delay compensation because effect units have inputs that are switchable during performance. Changing which channels have a delay applied during a performance would cause an audible gap in the signal which would be heard as a pop. We can do it for microphone inputs because the channels that are compensated cannot change during performance.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually it's the delay compensation that prevents the pop/click as it is applied all the time when the effect is in the chain whether the effect is currently active or not (within a DAW anyway.) Having no compensation and turning on and off effects then there is noting which takes into account that the new signal path, with the now enable effect, takes longer to process. The question is whether the delay amount is fixed and always constant, or if it's based on effects loads into some or all FX chains (as theoretically you could have all four chains affecting one deck) or if a fixed value to hopefully cover most bases, but not actually calculated, may be used.

There are also ways in which delay time can be reduced, such as a certain amount of look ahead processing (which assumes no parameters changed) and a minor delay (1-2ms max) between changing a parameter and the difference actually reaching the audible output used in conjunction with the look-ahead processing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have two deal with two types of delays. The time that it takes to process the effects.
This is included in the Mixxx audio buffer of default 20 ms.
In this the samples are fetched, processed and pushed to the soundcard.
If there is enough time to process also the samples inside all chained effects everything works nice.
A Daw application with external effects deal with it, as described above.

The other delay effect us the group delay of an effect.
Unfortunately in most iif filters, this is not constant for all frequencies.
This is also called phase shift.
For a working Mixxx knob, the dry signal has to be processed with a allpass filter with the same phase shift. This is very advanced and currently not implemented.
Is the phase shift 180° the frequency is killed producing an unwanted phase effect.
Yo can try it yourself if you use the mix knob along with a linked reily effect in Mixxx.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have often wondered what the 21.3ms Audio Buffer reported near the top at the Audio Preferences page referred to ...

This is the chunk of samples Mixxx processes at once. If the processing takes longer than this time you get underflows. The Latency usage meter in the skins gives some hints if this is the case,

System Reported Latency

This works quite well in case of ALSA.
In the Jack case that seems to be broken. This is probably because Mixxx uses Jack via Portaudio which is quite hacky. If you do not need to interface with other Jack Apps. I recommend using ALSA directly.
I have started to work on a native Jack integration, but unfortunately the work has stalled.
See: https://bugs.launchpad.net/mixxx/+bug/1172299

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Back to the manual, how about adding this:
"Note that equalizer and filter effects create a phase shift. If the mix knob is anywhere in the middle between dry and wet and any of these effects are enabled in the unit, there will be comb filtering. For more background information, read Equalizers and Phase Shift."

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there will be additional unintended comb filtering.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't assume with certainty what the user intends. For all we know someone might want the comb filtering. I don't know why someone would want this, but people want Mixxx to do all sorts of things.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there will be additional probably unintended comb filtering.

Thats the essence of the warning, that this is probably unintended and surprising.

Effects (except for Reverb) that have a length of time as a parameter are
synchronized to the tempo of decks. When these effects are in a unit which is
assigned to a channel that Mixxx does not know the tempo of (any channel other
than a normal deck), the :ref:`master-sync` tempo is used.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually working?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this has not been implemented yet. I can remove it for now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder to remove.

@Be-ing
Copy link
Contributor Author

Be-ing commented Mar 20, 2018

Thanks everyone for the review. I'll finish this up soon.

@kazakore:

Is it worth mentioning here that further routing options are available?

In the Effects chapter, yes. In the overview chapter, I don't think so.

I don't really like the language of "adjusting the balance" for the mix knob because that could be confused with adjusting the stereo balance.

@kazakore
Copy link

@Be-ing I can understand that. I think then that "adjusting the mix of" would be better than the "crossfades between" of the original text. It also emphasises why it's called the Mix knob.

@rryan
Copy link
Member

rryan commented Apr 8, 2018

test this please

2 similar comments
@rryan
Copy link
Member

rryan commented Apr 9, 2018

test this please

@rryan
Copy link
Member

rryan commented Apr 9, 2018

test this please

@esbrandt esbrandt mentioned this pull request Apr 14, 2018
37 tasks
Copy link
Member

@rryan rryan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Effects (except for Reverb) that have a length of time as a parameter are
synchronized to the tempo of decks. When these effects are in a unit which is
assigned to a channel that Mixxx does not know the tempo of (any channel other
than a normal deck), the :ref:`master-sync` tempo is used.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder to remove.

@Be-ing
Copy link
Contributor Author

Be-ing commented Apr 15, 2018

Do not merge quite yet, I will retake the screenshots.

@Be-ing Be-ing merged commit 4d5704d into mixxxdj:manual-2.1.x Apr 15, 2018
@@ -3,7 +3,7 @@

# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXBUILD = sphinx-build-3
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is this related to the PR?
This change breaks the build for me
The 'sphinx-build-3' command was not found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants