Skip to content

Analysis ​

Analysis nodes let you see what is going on inside your patch. Drop a waveform display, a frequency view, or a level meter onto the graph (or onto the front panel) to watch a signal live, or use the Print node to list the Data messages coming in while you track down a problem. These nodes only look at the signal, they never change how it sounds, and the visual ones can be restyled and placed on the front panel for live monitoring.

Oscilloscope ​

Draws the shape of an audio signal as it happens, so at a glance you can spot a signal sitting off-centre, distortion from a level that is too hot, a lopsided waveform, and how the shape changes over time. The drawing adjusts to how far you zoom (a filled-in outline when zoomed out, smooth detailed waves when zoomed in), and the body can be placed on the front panel. Up to four signals can be drawn at once, each in its own colour.

Oscilloscope

ParameterRangeDefaultDescription
Time/div (ms)0.05 to 1,000 ms5 msMilliseconds per division. There are 8 divisions across the display, so this sets the horizontal time scale.
Gain0.1 to 101.0Visual gain applied to the trace. Scales the waveform vertically without changing the audio.
Freezeon / offoffFreezes the current display so you can study it.

Inputs: In, In 2, In 3, In 4 (audio, one trace each; only In passes on to Out); plus pins for Time/div, Gain and Freeze, and an Appearance pin that accepts a JSON style object.

Outputs: Out (audio, pass-through of the input).


CV Scope ​

A display for CV and Data signals, so you can watch how a control or modulation value moves over time. It listens to a full CV stream at its input and draws its recent history, and the body is ready to place on the front panel for live monitoring.

CV Scope

ParameterRangeDefaultDescription
Window10 to 10,000 points10,000How much recent history fits on screen, counted in captured points. Small values spread a fast wobble across the width; large values squeeze a long stretch of movement into the same space.
Zoom0.1 to 1.01.0Vertical zoom applied to the trace, without changing the signal.
Freezeon / offoffFreezes the current display so you can study it.
Range0 to 201.0Vertical range used to map the trace.

Inputs: In 1, In 2, In 3, In 4 (CV or values, one trace each, in its own colour); Appearance, an Appearance Changer's text, which changes its colours.

Outputs: None. The CV Scope only displays the signal.


Pitch Detector ​

Listens to a monophonic signal and follows its pitch, reporting the same reading four ways so it can drive a synth voice, a tuner display, or both at once. The body is a tuner: the note name, how far off it is in cents, and the frequency in Hz, and it can be placed on the front panel.

Pitch Detector

ParameterRangeDefaultDescription
Min Freq20 to 2,000 Hz50 HzLowest note to look for. Keeping it near the instrument's real range makes the tracking steadier.
Max Freq50 to 8,000 Hz2,000 HzHighest note to look for.
Threshold0 to 10.02How loud the input has to be to count as a note rather than silence.
Min Confidence0 to 10.5The lowest reading on the Confidence output that still counts as a note. Watch that output on the sound you are tracking and set this just below what you see: too high and the Gate never opens, too low and noise reads as a note.
Glide0 to 500 ms20 msSmoothing between notes. It works on the note number, so the same time means the same musical distance in any register.
ModeAccurate / FastAccurateAccurate analyses a longer window and reaches lower notes; Fast reacts sooner and loses the bottom of the range.
Hold Last Noteon / offonKeeps the last reading while the input is silent instead of dropping to zero. Usually what you want when driving an oscillator.
Tuning300 to 600 Hz440 HzThe pitch of the A that the note name and the cents readout are measured against. 440 is the modern standard; orchestras often use 442 and baroque ensembles 415. The Hz output never depends on it.

Inputs: Audio In (audio); plus a hybrid input pin for every parameter above (Min Freq, Max Freq, Threshold, Confidence, Glide, Mode, Hold), each taking either a plain value or a CV stream, a Tuning pin that takes a value, and an Appearance pin that accepts a JSON style object.

Outputs: Hz (frequency), Note (MIDI note number with decimals, so a slide stays smooth), Gate (1 while a note is tracked) and Confidence (0 to 1, how periodic the input looked). All four are CV, so each one carries a value and a full-rate signal at once: wire Hz straight into an oscillator's frequency, or into a display, without a converter in between.

Confidence appears twice, and they are two sides of the same number: the Confidence output is the measurement, how periodic the input looked from 0 to 1, and it is drawn as the CONF bar in the tuner. Min Confidence is the bar you set for it: while the measurement stays above it, the Gate is open and the readings are treated as a real note. A clean solo instrument sits high, breath and noise sit low; at the very top of its range nothing passes at all.

Note how Hold Last Note reads against it: when a reading is rejected (too quiet, or below Min Confidence) the Gate closes, but Hz and Note keep the last note they trusted rather than diving to zero, which is what you want when they are driving an oscillator. The tuner says HOLD while it is showing a frozen note, so it is never mistaken for a live one. Turn Hold Last Note off and the outputs fall to zero instead.

Two more things worth knowing. It is monophonic: on a chord it locks onto whatever is most periodic. And it has some latency by nature, because a period has to be heard before it can be measured, so the lowest notes are always the slowest to read (about 43 ms of window in Accurate, 21 ms in Fast, at 48 kHz). The node keeps running even with nothing wired into its input, so its outputs and the tuner are alive from the moment you drop it in.


Analyzer ​

A frequency display with four inputs that shows which pitches make up your sound, drawing each input as its own coloured line. Low notes sit on the left and high notes on the right, while louder content reaches higher up, so you can compare up to four signals side by side on a panel-ready display.

Analyzer

ParameterRangeDefaultDescription
Refresh Rate12 to 60 Hz30 HzHow often the display redraws, in frames per second.
Response10 to 1,500 ms140 msSmoothing time for the measured spectrum. Higher values look smoother but react more slowly.
Amp Range48 to 96 dB96 dBVisible amplitude range in dB, measured down from the 0 dBFS top line to the analyzer floor.

Inputs: Input 1, Input 2, Input 3, Input 4 (audio); plus Data input pins for Refresh Rate, Response, Amp Range, and an Appearance pin that accepts a JSON style object.

Outputs: None. The Analyzer only displays the signal.


Meter ​

A level meter for keeping an eye on how loud your audio is. It shows the current peak plus a marker that hangs at the loudest recent level, lights up when the signal is too hot (clipping), and is ready to place on the front panel for live performance. You can draw it standing up or lying down, and it can show the current value as a number too.

Meter

ParameterRangeDefaultDescription
Floor dB-96 to -12 dB-48 dBLower dB limit used to map the meter range.
Peak Hold (ms)0 to 4,000 ms900 msHow long the peak marker stays before it starts to fall.
Show Valueon / offoffShows the current peak value as text over the meter.
OrientationVertical / HorizontalVerticalDraws the meter vertically or horizontally. On the front panel the widget turns with it, width for height
Segment Count2 to 9616How many segments the Segments fill style splits the lane into.
Scale Marks0 to 24 dB0 (off)How far apart the marks are, in decibels. A gap, not a count, so a small number draws many marks.
Scale Mark Width0.5 to 41Thickness of those lines.
Scale Mark Colourcolourfollows the borderColour of the scale marks.
ChannelsMerged / StereoMergedOne lane for the pair, or a lane each. Stereo also splits every output pin into an L and an R.
Meter ModePeak / RMSPeakWhat the bar itself shows. It does not decide what is measured: Peak and RMS are both worked out every block either way.

One segment per dB. Set Segment Count to the same number as your Floor and each segment is worth exactly one decibel: 72 segments with a -72 dB floor, 48 with -48, and so on. The ceiling is 96 because that is as far down as the floor goes, so the trick works wherever you set it. (Suggested on the forum by Danny.)

Scale marks. Set Scale Marks to 6 and the meter draws a line every 6 dB, at -6, -12, -18 and so on down to the floor. The number is the gap between marks rather than how many you get, so a small value draws a lot of them: 1 puts a line at every single decibel and fills a short meter, while 24 leaves a single mark. Spacing them in decibels is what keeps them on round values and keeps them put when you change the Floor. They are drawn over the level rather than under it, because a scale you cannot see while the meter is lit is a scale you cannot read when you need it, and they work with any fill style. Leave Scale Mark Colour empty and they follow the border colour.

Peak and RMS at the same time. Meter Mode only chooses what the bar draws. Both measurements are made every block regardless, and both leave the node on their own pins, so one Meter can drive a gate from its peak and a level readout from its RMS without a second Meter in the patch.

What RMS means here. The RMS reading is the average loudness over the last third of a second or so. It rises and falls smoothly where Peak jumps, a steady sine reads 3 dB under its peak as it should, and the number is the same whatever audio buffer size you run. To steer something from a level (an auto gain, a ducker) rather than read it, use Sig To RMS: the same measurement as a signal, with a Window you choose.

Inputs: In (audio); plus an Appearance pin that accepts a JSON style object to restyle the meter externally.

Outputs: Level, Peak, RMS (Data, in dB). Level follows Meter Mode; Peak and RMS are always themselves. Silence reads as Floor dB rather than minus infinity, so the cable always carries a number you can do arithmetic on. With Channels set to Stereo each of the three becomes a pair, Level L and Level R and so on.


Stereo Image ​

A stereo image and phase display. It draws a vectorscope so you can see the width and phase of a stereo signal at a glance: a vertical line means the signal is mono, a round cloud means it is wide, and a horizontal line means the two sides are out of phase. A meter underneath reads the phase correlation from +1 (mono) through 0 (wide) down to -1 (out of phase), with the value shown as a number. The audio passes straight through, so you can drop it inline on a stereo bus, and the body can be restyled and placed on the front panel.

Stereo Image

ParameterRangeDefaultDescription
Enableon / offonTurns signal capture on or off.
Persistence0 to 10.5How long the scatter trail fades. Higher leaves a longer trail.
Dot Size0.5 to 41.6Size of the dots in the scatter.
Connect Dotson / offoffJoins the scatter samples with a line, so the trace reads as one continuous shape instead of a spray of dots.
Show Phase Baron / offonShows or hides the phase correlation meter under the scope.
Value Size6 to 2810Text size of the correlation value.
Label Size6 to 289Text size of the L, R and M axis labels.

Inputs: In L, In R (audio); plus a Data input pin for Enable, and an Appearance pin that accepts a JSON style object.

Outputs: Out L, Out R (audio, pass-through of the input).


Print ​

A simple running log for tracking down problems. Connect any Data output to its input and every message that arrives is printed as a new line, so you can see exactly which values and events are moving through your patch. The recent lines are kept with the node and you can scroll back through the list to inspect them.

Print

ParameterRangeDefaultDescription
Row Height24 to 60 px42 pxHow tall each message row is. The text grows with it: taller rows are easier to read, shorter ones fit more messages.

Inputs: In (Data). Accepts any message type: events, floats, integers, booleans, and text. Each message prints one new line.

Outputs: None.


Reactor Core ​

A visualiser rendered on the graphics card: a glowing plasma core that fires lightning bolts out toward the edges, driven by your sound. The low end of the signal gives the bolts their power and thickness, the mids move them around, and the highs add flicker and sparks. Sensitivity sets how strongly the sound drives it all, and the Bass, Mid and High Drive controls balance the three. The audio passes through unchanged, so you can drop it anywhere in a signal chain as pure eye candy for a performance.

Reactor Core

ParameterRangeDefaultDescription
Hue0 to 10Colour of the core and its bolts.
Speed0 to 31How fast the bolts flicker and travel.
Glow0 to 10.5Thickness and glow of the bolts.
Sensitivity0 to 21Overall amount the audio drives the visual.
Bolts1 to 166How many bolts fire.
Jitter0 to 10.5How jagged the bolts are.
Bass Drive0 to 10.8How much the low end powers and thickens the bolts.
Mid Drive0 to 10.6How much the mids move the bolts around.
High Drive0 to 10.8How much the highs add flicker and sparks.

Inputs: In (audio); plus modulation inputs for Hue, Speed, Glow and Sensitivity, each accepting a value or a CV signal.

Outputs: Out (audio, pass-through of the input).


Mandelbulb ​

A three-dimensional fractal rendered on the graphics card, ready to explore and animate. Every control is an input you can modulate with a value or a CV signal: shape the fractal with Power, Iterations, Bailout and the Julia switch with its X, Y and Z; move the view with Zoom, Yaw and Pitch; and set the look with Hue, Colour, Glow, Glow Colour, Light, Ambient, Saturation, Fog, Background, Bg Colour, Detail and Smooth. It makes no sound and never touches the audio, a purely visual node, and it can be placed on the front panel. There is no automatic rotation, so wire a slow LFO into Yaw to make it spin. Nothing in it moves by itself, so it is only drawn again when a control or its size changes; on the front panel it takes the widget's shape, and the node in the graph shows that same picture, whole, with dark bars at the sides when the node's box has another shape.

Mandelbulb

ParameterRangeDefaultDescription
Power2 to 128The strength of the folding that shapes the fractal. Changes the whole form.
Iterations1 to 168How many times the shape is refined. Higher is more intricate.
Bailout1.2 to 52How far the calculation is allowed to run. Alters the surface.
Juliaon / offoffSwitches to the Julia variant of the fractal.
Julia X / Y / Z-2 to 20The seed point of the Julia variant.
Zoom1.2 to 62.6Distance from the fractal.
Yaw / Pitch0 to 1 / -1 to 10 / 0.2Rotation around the fractal and the tilt of the view.
Hue / Colour0 to 10 / 0Base colour and how the colours spread across the surface.
Glow / Glow Colour0 to 10.4 / 0.6Edge glow amount and its colour.
Light / Ambient0 to 10.15 / 0.2Strength of the main light and of the overall base light.
Saturation0 to 10.4Colour intensity.
Fog0 to 10Fades the fractal into the background with distance.
Background / Bg Colour0 to 10.5 / 0Background brightness and its colour.
Detail0 to 10.5Rendering fineness.
Smoothon / offonSmooths the rendered surface.
Ignore Clickson / offoffIn the Inspector, under Appearance. On, a click on the picture on the front panel, while you play it, goes through to whatever sits under it. In the graph the picture never takes the mouse: a click on it selects and moves the node.

Inputs: one modulation input per control listed above, each accepting a value or a CV signal; Appearance, an Appearance Changer's text, which shows or hides it on the front panel.

Outputs: None. The Mandelbulb only draws itself.


Shader ​

New in MNodes 1.1.5

This node does not exist in older versions of MNodes. A project that uses it will not work there until you update.

A picture drawn by a small program that runs on the graphics card, once for every pixel, many times a second. The program is written the way the shaders on ShaderToy are, so most of the ones shared there can be pasted in and run, and the sound you connect to In A and In B reaches the code the same way music reaches a ShaderToy shader. Use it for visuals that move with the music, backgrounds and meters for the front panel, or anything you can draw with code. It makes no sound and never touches the audio.

Shader

Needs: a Shader node in the graph showing the Galaxy example with music playing, with a Shader Code node wired into its Code input beside it.

The code comes in on the Code input, and you write it in a Shader Code node wired into it, so the code and the picture sit side by side. Right-click the Shader's title and choose Edit Code to get a Shader Code node already wired and holding this Shader's code. A Shader with nothing wired into Code draws its own example, and it keeps the last code it received, so your project opens with the picture already there. If new code has a mistake, the last picture that worked keeps running.

What the code can use, besides everything GLSL has:

NameWhat it holds
fragCoordWhere the pixel is, from the bottom left, in the same units as iResolution.
iResolutionThe size of the picture: the node's own size (the widget's, once it is on the front panel), the same at any zoom.
iTime, iTimeDelta, iFrameSeconds since it started (at the pace Speed sets), the time since the last frame, and the number of frames drawn so far, which stops with the picture when Speed is 0.
iMouseWhere the mouse is while you drag on the picture, and where the drag started.
MouseX, MouseYWhere you last clicked or dragged on the picture, from 0 to 1 (0 at the left and at the bottom).
MouseWheelThe mouse wheel turned over the picture, added up: about 1 a notch, up is more, kept between -10 and 10 so that turning back always moves it at once. It glides to each new value rather than jumping. While the code uses it, the wheel over the picture is the shader's and does not zoom the graph. Restart sets it back to 0.
MouseDown, MouseRightDown, MouseMiddleDown1 while the left, right or middle button is held on the picture, 0 otherwise.
MouseClick, MouseRelease, MouseDoubleClick, MouseRightClick1 for one frame when the left button goes down, when it is let go, on a double-click, and when the right button goes down.
MouseOver, MouseHoverX, MouseHoverY1 while the pointer is over the picture, and where it is, 0 to 1 like MouseX and MouseY, with or without a button down.
KeyShift, KeyCtrl, KeyAlt1 while Shift, Ctrl (Cmd on a Mac) or Alt (Option) is held.
iDragHow far the picture has been dragged, all the drags added up (x and y, in the same units as iMouse). A new drag carries on from where the last one left it, so a view turned with it never jumps back. It works like the usual orbit view: across it goes round, from 0 to one picture width and on from 0 again, so a view can turn round and round and the number never grows, and up and down it stays within half the picture's height either way, so tilting stops at each end and dragging back moves it at once. Restart sets it back to 0.
iChannel0The sound on In A: the spectrum along its first row (low notes on the left) and the waveform along its second.
iChannel1The sound on In B, laid out the same way.
iChannel2, iChannel3Random noise, which many shaders use.
iWaveMore of the sound, as it is: the last 4096 samples of In A along its first row and of In B along its second, oldest on the left, from -1 to 1. That is 85 ms at 48 kHz, a whole cycle of even the lowest notes, so a scope can hold a low note still. texture(iWave, vec2(x, 0.25)).x reads In A across the picture (0.75 for In B), and texelFetch(iWave, ivec2(i, 0), 0).x reads sample i of In A exactly.
iDate, iSampleRateThe date and time of day, and the audio sample rate.
P1 to P60Numbers from the sliders or inputs of the same names: eight to start with, as many as P Count gives the Shader. The ones it does not have read 0.
ParameterRangeDefaultDescription
ResetbuttonStarts the animation again from the beginning.
P Count0 to 608In the Inspector, at the top of Controls. How many P the Shader has, each a row on the node and an input. A lower count takes the rows away, and the cables on them; their values stay, so raising it again brings them back.
Speed0 to 41How fast time runs for the shader. 0 freezes the picture.
P1 to P600 to 10Numbers the code reads by these names, as many as P Count says. What they do is up to the code: each example says at the top what its own do. A CV can take them past this range.
CodetextGalaxyThe shader itself: whatever last came in on Code. It can also be edited in the Inspector.
ResolutionFull / Half / QuarterFullHow many pixels it works out. Half and Quarter are softer but much lighter on the graphics card.
Frame Rate30 / 60 fps60Pictures per second, in step with the screen (on a 144 Hz screen 60 becomes 72, every second refresh). 30 halves the work.
Transparenton / offoffOn uses the alpha the code writes, so parts of the picture can let the front panel show through.
Ignore Clickson / offoffIn the Inspector, under Appearance. On, the picture leaves the mouse alone: in the graph a click or a drag on it selects and moves the node, and on the front panel, while you play it, it goes through to whatever sits under the picture. The shader then gets no mouse, and Mouse sends nothing.

The picture keeps its look at any zoom: the code measures everything against the node's own size, so zooming the graph or the Front Panel, or a sharper screen, only draws it with more detail. Dragging on the picture moves iMouse, adds to iDrag and sets MouseX and MouseY, so the node is moved by its title: in the Galaxy example, a drag turns the galaxy and the mouse wheel flies in towards the logo. Restart, next to Edit Code in the menu on the Shader's title, starts the animation again and puts the view back where it began. The right button on the picture never opens a menu: it is the shader's and the patch's. The picture stays as you leave it: the view you turned and zoomed is saved with the project, and closing the plugin's window and opening it again finds the picture where it was, still moving. The Shader can be placed on the front panel, and it goes with a plugin made with Export. On the front panel the picture takes the widget's shape, and the node in the graph shows that same picture, whole, with dark bars at the sides when the node's box has another shape: it is worked out once for both, and a click on either lands on the same spot. A picture that is not moving costs nothing: while nothing the code reads changes (Speed at 0, or a shader that does not use the time, a still mouse, silence), no new picture is drawn. The built-in examples were written for MNodes; shaders from ShaderToy keep their authors' licences, so check them before you share a patch that uses one.

Inputs: In A and In B (audio); Code, the shader as text; Reset, which restarts the animation on any message; Appearance, an Appearance Changer's text, which shows or hides it on the front panel; and Speed and P1 to P8 (up to P60 with P Count), each accepting a value or a CV signal.

Outputs: Mouse, everything the mouse does on the picture, one message each time something happens. Wire it into a Mouse Actions node and each part has an output of its own: where you clicked, the buttons, the clicks as events, the pointer, the wheel, the drags and the keys held. To make a part of the picture a button, test Mouse X and Mouse Y with an If when Click arrives. No sound comes out: the Shader only draws.


Shader Code ​

New in MNodes 1.1.5

This node does not exist in older versions of MNodes. A project that uses it will not work there until you update.

The code editor for the Shader node. Write or paste a shader, wire Code into a Shader's Code input, and the Shader takes the code at once; from then on the picture changes as you type: the code is checked a moment after you stop, and sent the moment it works. A mistake is shown under the code with its line number (click it to go there), nothing is sent, and the Shader keeps the last version that worked, so the picture never breaks while you are halfway through a line.

Shader Code connected to Scene in a complete Help example

New starts again from the smallest shader there is: the mainImage function, the picture's size in iResolution and a colour that moves with iTime, with a line saying what each part is; Ctrl + Z brings back what you had. Run (or Ctrl + Enter, Cmd + Enter on a Mac) checks and sends straight away. Examples has the built-in shaders to start from. The one you pick opens over your code, to read and to copy from, and your code changes only if you press Replace; Ctrl + Z then brings yours back. When the code is one you wrote, Replace and New ask first. With Preview on, as it starts, the Shader shows the example while it is open, and goes back to your code when you close it. While a file is followed that button says Copy, and copies the whole example to paste in your editor. The cross or Esc closes the example. Variables opens a help sheet over the code with the names the code can use: values MNodes hands the shader every frame, which the code reads by writing their name. They come in groups (Picture, Time, Controls, Sound, Mouse, Keys and More), each row the name as it is written, what it is in plain words and an Insert button that writes it where the cursor is, so several can go in one after another; the Sound rows write a whole line that works as it is, such as the bass of In A or its spectrum under the pixel being drawn. While a file is followed the button says Copy, to paste the name in your editor. The cross, Esc or Variables again close the sheet. Turn Live off to change several things before the picture follows, and use Run when you are ready. Text Size makes the code bigger or smaller, and so does Ctrl + mouse wheel over it (Cmd on a Mac). While you write, the usual editing keys act on the code, not on the graph: Ctrl + A selects all of it, Ctrl + C, X and V copy, cut and paste, and Ctrl + Z and Y undo and redo (Cmd on a Mac), inside a DAW too. One Shader Code node can feed several Shaders, and a Shader can take its code from anything that sends text.

To write the shader in another editor, such as VS Code, drop the file on File (or type its full path). From then on the node follows that file: it goes to the Shader at once, and again every time you save it there, and the editor here shows it without letting you change it. A mistake in it shows under the code, and the Shader keeps its last picture until the file works. Clear the path to write in MNodes again. Collect All & Export puts the file in the bundle, and the link keeps working wherever the bundle is opened; the code of every shader is saved inside the project anyway.

ParameterRangeDefaultDescription
FilefilenoneA text file to follow instead of typing here. It is sent at once, and again on every save.
Text Size9 to 2813How big the code is drawn.
CodetextGalaxyWhat is in the editor, saved with your project whether it works or not.
Liveon / offonOn, the code is sent whenever it works, a moment after you stop typing. Off, only Run and Examples send it.

Inputs: File, the path of a file to follow (any Event reads it again).

Outputs: Code, the shader as text, sent when it works (with Live on), on Run, when an example replaces the code, and every time the followed file is read. While an example is shown with Preview on, the example goes out instead, and the code again when it closes.


Mouse Actions ​

New in MNodes 1.1.5

This node does not exist in older versions of MNodes. A project that uses it will not work there until you update.

Splits what the mouse does on a Shader's picture, a Scene or a drawing on one into outputs of their own. Each sends everything the mouse does out of a single output, Mouse: wire it in here and you get where you clicked, the buttons, the clicks as events, where the pointer is, the wheel, the drags and the keys held, each on its own output. Use it to make parts of a picture into buttons, to play notes by clicking on it, or to drive anything with the mouse.

Mouse Actions

Needs: a Shader showing the Galaxy with its Mouse output wired into a Mouse Actions node, with Click and Mouse X wired on and the unused outputs hidden with H.

Each value goes out when it changes. A click, a release, a double-click and a right-click go out as an Event, after the values: Click arrives with Mouse X and Mouse Y already sent, so an If on them tells which part of the picture was clicked. A click sends Mouse X and Mouse Y even when they have not moved. Positions go from 0 to 1, 0 at the left and at the bottom, as on the XY Pad. Press H (Hide Unconnected) to keep only the outputs you have wired.

A drag can move a value in three ways, and each suits its own kind of thing. With ends, for what has a start and a finish, like a tilt, a zoom or a level: Drag Y and Wheel stop at theirs, and dragging back moves them at once. Going round, for what turns, like a rotation, a colour or a place in a loop: Drag X goes from 0 to 1 and on from 0 again, so it never grows. The movement alone, for what follows speed, like a scratch or a throw: Move X and Move Y say how far each step went, and nothing is kept. What comes in is text, so a Text node on the Mouse cable shows each message as it arrives.

OutputRangeDescription
Mouse X, Mouse Y0 to 1Where the left button last went down or dragged. Sent on every click, before Click. Saved with the project.
Down0 / 11 while the left button is held: a gate, to hold a note for as long as you press.
Click, Release, Double ClickEventWhen the left button goes down, when it is let go, and on a double-click.
Right Down, Right Click0 / 1, EventThe right button held, and an Event when it goes down (Ctrl + click on a Mac).
Middle Down0 / 1The middle button held.
Hover X, Hover Y, Over0 to 1, 0 / 1Where the pointer is, with or without a button down, and whether it is over the picture.
Wheel-10 to 10The mouse wheel turned over the picture, added up, about 1 a notch. A Shader takes the wheel only while its code reads MouseWheel. Saved with the project.
Drag X0 to 1Every drag across, as a turn: from 0 to 1 over one picture width, and on from 0 again, like a clock hand. It never grows and never stops: for what goes round, such as a rotation, a colour or a place in a loop. Saved with the project.
Drag Y-0.5 to 0.5Every drag up and down added up, 1 being the picture's height. It stops at each end, and as the end holds the value itself, dragging back moves it at once: for what has ends, such as a tilt or a level. Saved with the project.
Move X, Move YnumbersHow far each drag step went, in the picture's widths and heights, and 0 when you let go. Sent on every step and never added up: for what follows speed, such as a scratch or a throw.
Shift, Ctrl, Alt0 / 1Whether the key was held the last time the mouse did something (Ctrl is Cmd on a Mac, Alt is Option).

Inputs: Mouse, what the mouse does on a picture, from the Mouse output of a Shader or a Scene. Anything else is ignored.

Outputs: Mouse X, Mouse Y, Down, Click, Release, Double Click, Right Down, Right Click, Middle Down, Hover X, Hover Y, Over, Wheel, Drag X, Drag Y, Move X, Move Y, Shift, Ctrl and Alt, as in the table.

MNodes Documentation