Modulation Curve#

Modulation curves are used to map values based on two axis.

Curve Editing#

  • For more precise editing you can click the fullscreen Icon icon next to the curve to open a bigger Remapping curve window. This window can be scaled by left mouse button clicking and dragging the corners and the window can be closed by clicking the close icon icon in the top right corner or the exit fullscreen Icon icon next to the curve in the properties panel.

  • Double left mouse button click anywhere on the graph to insert another curve point.

  • left mouse button click and drag on a curve point to move it.

  • Select a curve point by left mouse button clicking on it.

  • Box-select curve points by left mouse button clicking and dragging.

  • Add or subtract from your curve point selection by using Ctrl + left mouse button clicking.

  • Select all curve points by pressing Ctrl + A

  • Delete selected curve points by using the Delete key. Or use the right-click menu of the point and select Delete.

  • Use the flip horizontal button or the right-click menu on the graph to select Flip Horizontally to flip all the curve points horizontally in the graph.

  • Use the flip vertical button or the right-click menu on the graph to select Flip Vertically to flip all the curve points vertically in the graph.

The Interpolation Mode defines the method of interpolating the values from one curve point to another.

You can change the Interpolation Mode of the curve points in the right-click menu.

Note that you can mix different interpolation modes on different curve points.
The interpolation mode of the first (or left) curve point will be used between two curve points with different interpolation modes.
There are a few options:
  • Bézier will interpolate the values based on the bézier handles. When using this mode you can see the bézier handles when selecting a single curve point. You can change the interpolation by LMB and dragging the dots at the end of the bézier handles. A flat part of the curve means the values change slowly and a steep part of the curve means the values change quickly.

  • Smooth will generate a smooth line from one curve point to another. This avoids having hard transitions.

  • Linear Values move linearly from one curve point to another. This is useful for getting very predictable results, but can result in robotic looking transitions.

  • Constant Values stay constant until the next curve point is reached. This results in jumping values.

When using the Bézier mode, there are a few handle types you can use also found in the right-click menu.
  • Aligned The handles can be moved freely and can have any direction and length. For this type, one handle is always in the inverted direction and has the same length as the other one.

  • Free The handles can be moved in any way separate from each other.

  • Auto Clamped This is the default behavior. For this type, the handles can never go beyond the previous or next curve point. Note that when changing the handles the type will be set to Aligned.

  • Auto Vectored This will point the left handle towards the previous curve point and the right handle towards the next curve point. Note that when changing the handles the type will be set to Free.

    You can always reset the bezier handles to default for the selected curve points by clicking on Reset Handle in the right-click menu.

Saving and Loading Curves#

Any modulation curve can be saved to your hard drive for later use!

When you use a specific custom curve often, you can save it and load it into any project.

Loaded curves can still be edited in the modulation curve editor so you can also use them as a starting point or custom preset.

  • Save or load a modulation curve by right mouse button clicking in the graph and selecting Save… or Load…

  • A file browser will pop up where you can navigate to the folder you want to save your curve to or load your curve from.

  • To save a curve, provide a filename and use the Save button in the file browser.

  • The .jfxcurve extension will be added automatically and your custom curve file will be saved to your hard drive.

  • To load a curve, select a file with the .jfxcurve extension in the file browser and use the Open button.

  • If you decide not to load or save a curve use the Cancel button in the file browser.

Curve Presets#

color presets

Clicking the button with the iconPreset icon icon will open the curve presets window. Here, you can organize, update, import, and export all your modulation curves!

The section on the left is a list of categories or folders that can contain curve presets:

  • all icon All contains all saved curve presets.

  • favorite icon Favorites contains all presets marked as favorite by toggling the star icon on it.

  • ungrouped icon Ungrouped contains all presets that are not within a folder. A preset will end up in ungrouped if it’s either moved there or added when the all icon All, favorite icon Favorites, or ungrouped icon Ungrouped category is selected.

  • folder icon Folders can be created by the user to organise curve presets. This is done using the add folder icon button in the bottom right corner. If a folder is selected, newly added presets will be put in that folder. You can rename or delete a folder by right mouse button clicking on it and selecting Rename or Delete. You can also move the folder position by left mouse button clicking and dragging it.

The section on the right is a list of modulation curve presets:

  • The active preset is marked with a dot icon grey dot next to the favorite icon icon.

  • The favorite icon icon can be toggled to favorite or unfavorite a curve preset.

  • left mouse button Clicking on a curve preset will apply it to the modulation curve parameter.

  • Shift + left mouse button clicking on a curve preset will apply it to the modulation curve parameter without closing the curve presets window.

  • You can left mouse button click and drag a curve preset to move it to a different position in the list.

The context menu which appears when clicking on a curve preset has the following options:

  • rename icon Rename: Allows you to type in a new name for the curve preset.

  • favorite icon Favorite/ unfavorite icon Unfavorite: Toggles if the curve preset is favorite or not. Using the favorite icon icon on the curve preset does the same thing.

  • update icon Update: Overwrites the curve preset with the current modulation curve parameter.

  • move to icon Move To…: Let’s you put a curve preset into a specific folder.

  • export icon Export…: Opens a file browser to store the curve as a JangaFX Curve (.jfxcurve) file in a desired location.

  • delete icon Delete: Removes the curve preset completely. This can’t be undone!

The search icon search function on the top lets you search for curve presets based on their names. It always searches through all the presets regardless of which folder they belong to.

The bottom of the window also has a couple of options:

  • add icon Adds the current modulation curve parameter as a curve preset and puts you into rename mode immediately to give your new curve preset a name.

  • add folder icon Adds a new folder to the curve presets window and puts you into rename mode immediately to give your new folder a name.

  • import icon Opens the file browser where you can select a JangaFX Curve (.jfxcurve) file to be added as a curve preset into the curve presets window.

Curve Generator#

Another way to create modulation curves is to make them procedually using the Curve Generator.

To open the Curve Generator right mouse button click within the graph and select Curve Generator… from the context menu.

With the Curve Generator window opened the curve is now controlled by the generator indicated with the visual glow over the graph.

Let’s look at the options for controlling our curve using the Generator tab:

override states
  • Resolution: Specifies the amount of points used to build the curve. More points can create more detailed curves, less points can make the curve easier to edit afterwards.

  • Seed: Different numbers give different random changes when using the Jitter (X/Y) parameter and will drop different curve points when using the Drop Chance parameter.

Note that the next four parameters are split into two columns both controlling a different waveform! The right column doesn’t affect the curve by default as the Gain parameter for that waveform is set to 0%!

  • Waveform: Type of function to determine the curve shape.
    • Sine: Sinewave, smooth oscillation up and down.

    • Saw: Oscillation over a modulo curve, the value will abruptly reset to the same value every cycle.

    • Pulse: Abruptly switches from a top value to a bottom value back and forth.

  • Frequency: Amount of waveform cycles within the 0% to 100% range.

  • Phase: Phase of the funtion. You can use this to move your waveform horizontaly.

  • Gain: Waveform intensity. At 100% the waveform will oscillate from 0% to 100% using the whole graph, at 0% the waveform will oscillate from 50% to 50% turning in to a straight line (these values can be offset by using the Offset parameter). Using the Gain parameter is like scaling your waveform in the vertical axis. This parameter is also used to mix the two different waveforms together.

  • Jitter (X/Y): Varies the position of the curve points. Note that this isn’t related to the waveform and affects all curvepoints. The left slider will randomly move the curve points horizontally over the graph, and the right slider will move the curve points vertically over the graph. Higher percentages result in the curve points moving further from their original positions, 100% will randomly move the curve points within a range of 0 to 100%. This parameter is useful to add some organic variation to the mathematically smooth shapes of the waveforms. To get a different randomization of the positions you can use a different value in the Seed parameter.

  • Drop Chance: The chance in percentage of the curve points being removed from the curve. This is useful to distribute the detail more randomly over the curve creating a more organic-looking curve. 0% means no curve points will be dropped 100% means all curve points will be dropped basically removing the curve. Different curve points will be dropped when using different values in the Seed parameter.

  • Offset: Offsets the vertical position of the whole curve. This can be used to move the modulation curve vertically. Curve point positions will be clipped within the 0% to 100% range.

  • Attenuation: Intensity of the modulation curve. This can be used to scale the whole curve vertically. For example, -100% will flip the curve vertically.

  • Apply Immediately: If this checkbox is checked, all changes made in the Curve Generator are immediately applied to the modulation curve so you can see the results in the viewport. If not checked, you can see the curve you’re creating in the graph but its effects won’t immediately be applied to your project whenever you change a parameter in the Curve Generator and if you click the close icon in the top right corner of the Curve Generator you would still have the modulation curve you started with before opening the Curve Generator window.

  • Reset: Sets all parameters in the Curve Generator to their default values creating a basic sinewave curve.

  • Apply: Applies the generated curve to the modulation curve in your project and closes the Curve Generator window.

Let’s look at the options for controlling our curve using the Expression tab:

The resolution parameter and the Apply Immediately, Reset, and Apply options are shared with the Generator tab, meaning they have the same functions and any changes made on one tab will be reflected on both.

  • Expression: You can create curves by entering mathematical expressions into this textbox. Utilize the x variable along with the supported math operators, constants, and functions, a comprehensive list of which is available on the Expressions page. Try 1-x, sin(x*pi*2)*0.5+0.5, sin(x*pi*4)*(1-x)*0.5+0.5, pow(x, 6), 1-pow(x, 6), x*((rand()+1)/2), or (sin(x*pi*2)+normal()*0.1)*0.5+0.5.

  • Range X,Y: Expressions generate infinite mathematical curves, a modulation curve needs to be a section of that curve to be used. This section is specified with these range parameters. It’s like zooming in or out on the curve created by the expression.