I have never made a Macro...advice or help?

Discussion about: tracktion.com
RELATED
PRODUCTS

Post

So, I think a Macro might help me out quite a bit. I use a guitar synth MIDI controller for some of my work. The biggest problem that I have with it is that it spits out tiny "off" notes only a few ticks long that I need to go through and delete. It's a pain!
So, if I had a Macro that would select all of those useless tiny little notes that would be a huge help, but I am not too sure how to do that. Any help?
Thank you!
Mark Swanson, guitarist and luthier
Click to visit Swanson Guitars
http://www.MarkSwansonMusic.com

Post

As is usually the case, step zero is to open the Controls Panel at the bottom to what we like to call "Useful Mode".

Step 1: Select one of the troublesome notes.
Step 2: Click the "Select Notes" control in the Controls Panel.
Step 3: Select either "Select all notes with the same length" or "Select all notes with the same velocity" - whichever happens to make sense/work.
Step 4: Delete.
WF13 2026-02 Select Similar Notes Step 02.png
WF13 2026-02 Select Similar Notes Step 03.png
NOTE: This may be easier using the MIDI Event List, which may or may not exist depending on if you're using the Free or Pro version. Also, I am having to assume that there is some feature like note length or velocity that groups the notes, which was also unspecified. If they can't be selected by any specific feature then this will not be helpful.

TIP: The details that seem irrelevant often are very relevant.
You do not have the required permissions to view the files attached to this post.
Surely there must be consensus by now...

Post

If Mark is experiencing the same issue I sometimes have, selecting all notes with the same length or velocity won't help him.

I experience this with a hardware-based keyboard; what happens is (in my case), the keyboard is sending on multiple MIDI channels at once. On Channel 1, Waveform records notes of different lengths, velocities, and pitches as you'd expect.

But the keyboard will *also* transmit on channel 2, 3, and 4 at the same time, which results in these microscopic notes hidden under the channel 1 notes. They will be the same velocity and pitches as channel 1, but of various, super-tiny lengths (non-zero, and alas different from the others based on what the keyboard thinks I wanted to do).

The real solution is for me to remember to turn feature off on the keyboard; then, I only record on the channel I expect. No ghost notes. No hidden blips. But I don't think this is Mark's case.

So what I'm thinking in Mark's case is that his guitar controller is sending out 6 channels of MIDI--one per string--and the guitar controller is sensitive enough to pick up vibrations or resonances on open strings...and is sending these teeny-tiny notes along with the notes he wants to play. Each of these is on its own channel.

Where useful mode could work: if Mark selects the "primary" note and bounces it up one octave, he can likely make out a super tiny tick of a note where the original note was. Click on it and see if it's on the same MIDI channel. My hunch is, not. That's what I'm experiencing: Waveform defaults to record ALL MIDI events on the same recording track, even if they're on different channels. You can filter those out on the Waveform side during recording, although I've had issues with it happening anyway.

I suspect Mark could even set up his Waveform recording template so that each string records to a different channel and track within Waveform, so that channel 1 records to track 1, channel 2 to track 2, etc. That will prevent the problem going forward--provided he gets it to work reliably; I was never able to do this and simply default to preventing it on the hardware side.

But I also think Mark is looking for a macro to fix some tracks he's already recorded. Not sure how to do it via macro. But here's how I fix it when I forget to fix the output channel on my keyboard:

1. Open the track in the MIDI editor
2. Select the notes I've recorded based on the fact they're *longer* than a tick (I do this manually; not sure there's a way to select notes via macro logic, like "select all notes where note length > 100" for example)
3. Bounce the selected notes up 2 octaves
4. Select the swarm of little ghost notes that are in the original positions
5. Delete them
6. Select all the notes in the clip
7. Bounce them back down 2 octaves to their original positions

This headache is caused not by Waveform, but by the original MIDI specs, which allow you to record all 16 MIDI channels to the same track. The way to prevent it, again, is by filtering out channels 2-16 inclusive. But this has been unreliable for me, and I suspect would be for Mark--especially if his guitar controller is outputting on channels 1-6 at all times.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

Thanks for your help so far! Let me explain a little bit more.
The little off notes are of various sizes, all quite small but not all the same length.
And I am not sure if they are on the same channel or not, that setting is in my Roland synth controller and I haven't checked it. The setting will put all six strings on the same channel or put each string on its own channel. This doesn't seem to matter to the problem I am having, Waveform shows all the notes on the MIDI editor no matter which of the two settings I use.
If I go through the track and select all the notes I want, shift them two octaves and then select an area where all the small notes may be- I'd have to guess unless I zoom way in because the notes are too small to see otherwise- and delete all notes in the selected area that might help, but it's still a big pain.
If I simply had a function that would delete all notes under a selectable length that would be the greatest!
Mark Swanson, guitarist and luthier
Click to visit Swanson Guitars
http://www.MarkSwansonMusic.com

Post

Never had a chance to play with a MIDI guitar, but imagine the problem would exist if it were one channel per string or a single channel - although the controller in this case might be "smarter" if all on the same channel, as it wouldn't likely send multiple "note off" messages on one channel?

Filtering in Waveform probably wouldn't work channel-based, as you presumably don't want to limit yourself to one channel per string, and play everything on one string...

There are a number of "midi monitors" out there that will give you the nice detailed information on a track.
I use "Piz Midi Monitor 1.3" which gives you something like...

B0 00 00 3|3|111 Ch.1 CC #0 (Bank Select), Value: 0
B0 20 00 3|3|111 Ch.1 CC #32 (Bank Select (fine)), Value: 0
C0 1B 3|3|111 Ch.1 Program Change: 28
90 43 7F 3|3|111 Ch.1 Note On: G3 (67), Velocity: 127
80 43 00 3|3|222 Ch.1 Note Off: G3 (67), Velocity: 0
90 41 5B 3|3|396 Ch.1 Note On: F3 (65), Velocity: 91
90 40 7F 3|3|588 Ch.1 Note On: E3 (64), Velocity: 127
80 41 00 3|3|630 Ch.1 Note Off: F3 (65), Velocity: 0
90 3E 7F 3|3|809 Ch.1 Note On: D3 (62), Velocity: 127
80 40 00 3|3|813 Ch.1 Note Off: E3 (64), Velocity: 0
80 3E 00 3|4|202 Ch.1 Note Off: D3 (62), Velocity: 0
90 40 7F 3|4|460 Ch.1 Note On: E3 (64), Velocity: 127
80 40 00 3|4|833 Ch.1 Note Off: E3 (64), Velocity: 0

... Not sure what version the much nicer MIDI event monitor appeared; and is now a simple menu option within Waveform...

Now, the tricky part on scripting is identifying notes to filter; as the MIDI events are an ON message followed by an OFF message; and you have to interpret the length by subtracting the event time between the two. There is no "note on for 1 beat" message, just a Note on / velocity / time in Bar+beat+"tick"; and a corresponding OFF message after, with any number of things happening in the middle (channel, other notes, other midi channel messages...)
Waveform 13; Win10 desktop/8 Gig; Win11 Laptop; MPK261; VFX+disfunctional ESQ-1

Post

Mark Swanson wrote: Wed Feb 11, 2026 4:04 pm The little off notes are of various sizes, all quite small but not all the same length.
What about velocity?
Mark Swanson wrote: Wed Feb 11, 2026 4:04 pm And I am not sure if they are on the same channel or not, that setting is in my Roland synth controller and I haven't checked it.
Note that WF's MIDI clips are single channel. I believe that when it receives MIDI notes on different channels it records them as being the same channel in the MIDI clip. If these extra notes are actually being sent on a different channel then I recommend that you set up a virtual MIDI input that only receives one channel. (That won't help you with anything already recorded.)
Mark Swanson wrote: Wed Feb 11, 2026 4:04 pm If I simply had a function that would delete all notes under a selectable length that would be the greatest!
Yeah, I feel like more logical controls are something that WF is lacking. Maybe I'm remembering incorrectly but I feel like Cakewalk had them back in the 90s.

I will assume that you are using the Free version. With the Pro version you could use the MIDI Event Viewer, which would probably make it a lot easier to find and select the problematic notes.
You do not have the required permissions to view the files attached to this post.
Surely there must be consensus by now...

Post

If possible, better to avoid glitchy notes rather than trying to clean them up...
On an AI response from Google...

2. Adjust System Settings (GR-55/GR-20)

Lower Sensitivity: Reduce the string sensitivity globally and for specific strings in the GK settings menu.
Adjust Velocity/Low Velocity Cut: Increase the "Low Velocity Cut" to prevent soft, accidental touches from triggering the synth.
Use "Data Thin": Within the Guitar-to-MIDI settings, turn on "Data Thin" to reduce the amount of unnecessary MIDI data being sent.
Waveform 13; Win10 desktop/8 Gig; Win11 Laptop; MPK261; VFX+disfunctional ESQ-1

Post

Thanks for your replies, they are all helpful. I have the Roland GR-30. I don't know if it has the Velocity cut feature, but it does have the thin data feature and I do use it. I will check into this and make sure about the strings/channel question, but I do believe that in order to send pitch bend info that each string needs its own channel. Using pitch bend with a midi guitar is one of the most important features if you want to play with a human feel. Thinning the data really helps there, too. And of course, setting up the controller to have the right sensitivity is super important too, but still some of these pest notes still come in there.
Oh, and I use the Pro version. I have been using Waveform for quite a while now, but not too much with the guitar controller and I am finally trying to set it up to work reliably.
Mark Swanson, guitarist and luthier
Click to visit Swanson Guitars
http://www.MarkSwansonMusic.com

Post

pough wrote: Wed Feb 11, 2026 8:49 pm Note that WF's MIDI clips are single channel. I believe that when it receives MIDI notes on different channels it records them as being the same channel in the MIDI clip.
I don't think that's the case. I'll have to recreate my original problem (should be easy to do), but I've often experienced a Waveform MIDI clip recording all 16 channels into 1 clip, and notes of different channels are all mushed together. I recall being able to click on a note and seeing what channel it was on.

If Waveform provided a selection filter such as "select all notes on this channel," it would be super-easy to fix. With a macro, too! I reported this back with T6 or T7, but never got a response. Maybe though that's changed, which would be worse...because then all you could ever do is manually delete these ghost notes.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

Watchful wrote: Fri Feb 13, 2026 1:23 pm I don't think that's the case. I'll have to recreate my original problem (should be easy to do), but I've often experienced a Waveform MIDI clip recording all 16 channels into 1 clip, and notes of different channels are all mushed together. I recall being able to click on a note and seeing what channel it was on.
Please test this. I only have stringed instruments and basic single-channel MIDI keyboard so I don't have any way to input multi-channel MIDI notes. However, since MIDI clips themselves have a single channel that you can set and I am not able to see anywhere in the interface to set a note's channel, I think maybe you're recalling a different DAW.

Or maybe I can re-install Midinous to test, but I'd rather not. Someone asking here about this issue was the reason I learned how to set up filtered virtual MIDI inputs. It was the only way to get multi-channel MIDI data to save properly.
Surely there must be consensus by now...

Post

I'll test this and get back to you. I haven't really experienced the problem since I found a way around it. But it's easy to replicate.

I use a Yamaha Montage, and if you record MIDI from it into Waveform using a multichannel part, it records all notes on all channels. In other words, if I play a single note on a sound that utilizes 4 MIDI channels, I get four MIDI events recorded. Previously, one per channel. For example, if I hold an A4 note for four beats, there would be a four-beat A4 recorded in Waveform on channel 1. But if I delete or move that note, I see three tiny specks on the MIDI editor...a tiny A4 that's a millisecond long on channel 2, another A4 like that one channel 3, and a fourth A4 on channel 4.

That's used to trigger the Montage on playback to activate the sounds on those channels. But if I'm recording that part for a different synth (hardware or software), I want to delete those speck notes since they can screw up performances on other synths.

To your point, that may no longer be the case: Waveform may bump them all to channel 1. But it used to be the case. Let me test that this weekend and see what happens. I can also dump some sequenced data into Waveform; I generally don't use that feature, but predict it would respond exactly the same way.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

I use this one, as the pads on my keyboard are set to ch. 10, and the keys default to ch 1. Normally I have defined 2 virtuals for KeysNoPads on ch 1 and Pads (ch 10).

Just recorded a few notes and hit pads using the default with no filtering, and it mixes them, shown here in MidiMonitor
00:00:00.000 Note on C3 / 48: 36 Ch: 1 90 30 24
00:00:00.058 Note on E3 / 52: 34 Ch: 1 90 34 22
00:00:00.065 Note off C3 / 48: 0 Ch: 1 80 30 00
00:00:00.371 Note on C3 / 48: 46 Ch: 1 90 30 2e
00:00:00.406 Note off E3 / 52: 0 Ch: 1 80 34 00
00:00:00.568 Note off C3 / 48: 0 Ch: 1 80 30 00
00:00:02.333 Note on C2 / 36: 47 Ch: 10 99 24 2f
00:00:02.403 Channel pressure 127 Ch: 10 d9 7f
00:00:02.426 Channel pressure 117 Ch: 10 d9 75
00:00:02.449 Channel pressure 96 Ch: 10 d9 60
00:00:02.472 Channel pressure 69 Ch: 10 d9 45
00:00:02.496 Channel pressure 51 Ch: 10 d9 33
00:00:02.507 Channel pressure 43 Ch: 10 d9 2b
00:00:02.530 Channel pressure 18 Ch: 10 d9 12
00:00:02.542 Channel pressure 0 Ch: 10 d9 00
00:00:02.542 Note off C2 / 36: 0 Ch: 10 89 24 00

On playback I suppose I could run that through a rack and split them up; but the way it is on this track is that the events DO keep the channel numbers; just that they would rely on the VST to filter, if you didn't use something like Waveform's MIDI Filter to allow only channel 1, or a rack with the vst also using the same MIDI filter.

Interesting test for myself- I had forgotten the pads are pressure sensitive, and you can see the data they spew out even on a "quick press and release" of pads.
Waveform 13; Win10 desktop/8 Gig; Win11 Laptop; MPK261; VFX+disfunctional ESQ-1

Post

Peter Widdicombe wrote: Sat Feb 14, 2026 4:38 pm Just recorded a few notes and hit pads using the default with no filtering, and it mixes them, shown here in MidiMonitor
00:00:00.000 Note on C3 / 48: 36 Ch: 1 90 30 24
00:00:00.058 Note on E3 / 52: 34 Ch: 1 90 34 22
00:00:00.065 Note off C3 / 48: 0 Ch: 1 80 30 00
00:00:00.371 Note on C3 / 48: 46 Ch: 1 90 30 2e
00:00:00.406 Note off E3 / 52: 0 Ch: 1 80 34 00
00:00:00.568 Note off C3 / 48: 0 Ch: 1 80 30 00
00:00:02.333 Note on C2 / 36: 47 Ch: 10 99 24 2f
00:00:02.403 Channel pressure 127 Ch: 10 d9 7f
00:00:02.426 Channel pressure 117 Ch: 10 d9 75
00:00:02.449 Channel pressure 96 Ch: 10 d9 60
00:00:02.472 Channel pressure 69 Ch: 10 d9 45
00:00:02.496 Channel pressure 51 Ch: 10 d9 33
00:00:02.507 Channel pressure 43 Ch: 10 d9 2b
00:00:02.530 Channel pressure 18 Ch: 10 d9 12
00:00:02.542 Channel pressure 0 Ch: 10 d9 00
00:00:02.542 Note off C2 / 36: 0 Ch: 10 89 24 00
So is this monitoring the output of the keyboard or the output of the recorded MIDI clip?

I realized that I have two MIDI keyboard and I can set them to different channels and record them both through the "All MIDI Ins" input. When I play them, they are on different channels. But after I record them together into one track, the MIDI clip sets all the recorded notes to be the same channel.
Surely there must be consensus by now...

Post

All right... called up a sound that outputs on channels 1-5. At first blush, it looks okay...
1.jpg
But zoom in on any note, and you see there are two more notes hidden there...
2.jpg
Each has a length of 0,0,1. Same velocity as the big note on top of it.

Zoom in even more, and there are two MORE notes, each on top of the other. See the tiny orange speck? Those are two separate notes. They have zero length, so I can't even click on them. I can drag my mouse across them to select them.
3.jpg
Pough is right that I can't get MIDI channel information on individual notes, only on the clip itself. In MIDI Channel Mode = Single channel, I believe these all get dumbed down to channel 1. Not sure in MPE mode though, as that should be preserving individual channel numbers. Otherwise, MPE doesn't function correctly.

Merging them works (select the batch and hit Ctrl+M), which would ALMOST be a quick fix for the problem. You still need to do this for individual notes, because if you "select all" and do Ctrl+M, you get this:
4.jpg
...which obviously destroys what you just recorded.

And "select all notes of the same length" doesn't work because, as you see in the second and third pictures, these ghost notes are of different lengths.

Anyway, I reported this to the Tracktion team back in the day to no avail. My suspicion is that this is the result of having an MPE-friendly DAW. You'd almost need a logical filter such as "select all notes where note_length < 0,0,5" in order for them to be selected at all. Then you could just hit delete to get rid of them.

So why not ignore them? Because these ghost notes can produce unwanted effects on other plugins or if you send them to different hardware synths. For example, on a drum part, this could create phasing or flanging sounds.

Again, my solution is to ensure I record these kinds of parts with a sound that outputs only on one channel. On a guitar controller, I don't think you really have that option.
You do not have the required permissions to view the files attached to this post.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

Oh, interesting. When MPE is off, MIDI monitor (just before the VST on the right) shows WHEN recording, that data is on midi channels 1 and 10. However, playing back, everything has been adjusted to channel 1; with some new things automatically added (like pressure and pitch wheel resets).

But here's where it gets REALLY interesting, When I do the same exercise with MPE enabled, recording is the same. This is one key hit; followed by one tap on a pad.

======== during record
00:01:15.781 Note on C3 / 48: 73 Ch: 1 90 30 49
00:01:15.897 Note off C3 / 48: 0 Ch: 1 80 30 00
00:01:18.138 Note on C2 / 36: 127 Ch: 10 99 24 7f
00:01:18.208 Channel pressure 98 Ch: 10 d9 62
00:01:18.219 Channel pressure 27 Ch: 10 d9 1b
00:01:18.231 Channel pressure 0 Ch: 10 d9 00
00:01:18.231 Note off C2 / 36: 0 Ch: 10 89 24 00

However, playback shows the same added pitch and pressure events as above, but the channels have changed ! Keys at ch 1 have become ch 2, and the pads from channel 10 have been translated to channel 3 (CH:3) ??
(don't get confused by the note. I hit C3 on keyboard, and pad was mapped to note C2 for MT PowerDrumkit 2 bass drum)

======= MIDI monitor during playback
00:01:15.762 Pitch wheel 8192 Ch: 2 e1 00 40
00:01:15.762 Channel pressure 0 Ch: 2 d1 00
00:01:15.762 Controler Sound Brightness: 64 Ch: 2 b1 4a 40
00:01:15.762 Note on C3 / 48: 73 Ch: 2 91 30 49
00:01:15.762 Channel pressure 0 Ch: 2 d1 00
00:01:15.762 Pitch wheel 8192 Ch: 2 e1 00 40
00:01:15.880 Note off C3 / 48: 0 Ch: 2 81 30 00
00:01:18.120 Pitch wheel 8192 Ch: 3 e2 00 40
00:01:18.120 Channel pressure 0 Ch: 3 d2 00
00:01:18.120 Controler Sound Brightness: 64 Ch: 3 b2 4a 40
00:01:18.120 Note on C2 / 36: 127 Ch: 3 92 24 7f
00:01:18.120 Channel pressure 0 Ch: 3 d2 00
00:01:18.120 Pitch wheel 8192 Ch: 3 e2 00 40
00:01:18.188 Channel pressure 98 Ch: 3 d2 62
00:01:18.207 Channel pressure 27 Ch: 3 d2 1b
00:01:18.213 Note off C2 / 36: 0 Ch: 3 82 24 00

So for those with multi-timbral source/destination for MIDI, it really looks like you have to FILTER on input and record to separate tracks, to preserve individual content ?? It seems the MIDI event information being fed into the VST actually comes from 2 independent sources...
1. On recording, the MIDI input is fed through to the VST directly.
2. Any previously recorded MIDI has been altered (during recording) and fed back on the altered channel (1; unless MPE was enabled ?).
Waveform 13; Win10 desktop/8 Gig; Win11 Laptop; MPK261; VFX+disfunctional ESQ-1

Post Reply

Return to “Tracktion”