Midihub Pipes Suggestions

Great stuff, thanks. I see that now.

When I was exploring I’d put the LFO first in the pipe so I didn’t see the other options. Thanks for clarifying :slight_smile:

1 Like

a live time quantizer would be great to have … it would delay notes and set them on a defined time 1/16 , 1/8,1/4 and so on

I tried using the delay effect… but it didn’t place the notes quantized

3 Likes

Hi, I wrote an email a while back but didn’t see a reply so thought I’d suggest some things here.
I still haven’t received my Midihub but I’ve taken a look at the software and can suggest a few things.
Some of them might likely be already implemented with a pipe or combination of pipes.

  1. Simply convert to and from 14bit NRPN and 7bit CCs.
  2. Ramp/Env generator or a property of the LFO generator called single cycle.
    This could be used for portomento for example, by sending it to pitch bend for some uses/devices or a CC for other devices. Also - Can we add pitch bend as an “into” selection of the Transform object?
  3. I’m unsure how much storage is available, but a “table” pipe or, if your’re familiar with Max/MSP something like a “coll”. You could limit it to 128 stored 7bit values.
    This could be used to make very specialized scaling/remapping of incoming data. And could even serve as a very rudimentary sequencer.
3 Likes

Sample and hold LFO type

4 Likes

A similar effect can be achieved via microtunings - the memory holds 128 notes pitch mappings, you could import a specially prepared .scl file to achieve the exact mapping you want to have.

It would be SO useful to be able to convert between NRPN and CC, this would open up a lot of possibilities with my studio that aren’t currently possible to me.

Also wondering what potential there is in Logic functions? For example: Every 4 times the note C4 is played (____) happens. I love using these kinds of things in my music and would like to be able to completely ditch the computer and all the problems in brings to my music experience.

Ordered a Midihub today and am very excited for what’s already on offer and it’s very exciting to see how active you all are in supporting it! Will definitely be recommending you :slight_smile:

4 Likes

Could you provide some examples of what the (____) part could be? :slight_smile:

2 Likes

I realise now that this pipe would be a complex one to implement as the list of variables would ideally need to be quite big an from a UI point of view I’m not sure how it’d best be done…

I’m going to have a think about what some good variables would be in practise but a few examples of what (____) could be and how it could be used:

Patch change message - after a certain amount of whatever chosen variable the patch on a synthesizer could advance by one.

CC message - My sequencer responds to these in various ways but a great example is the use of CC 69 for selecting sequences (mute states etc.) so you could use this for your music to progress through it’s various stages in algorithmic ways.

CC message then looped back to control the parameter of another pipe (or maybe this could be implemented more directly somehow?) Having your LFO speeds or amounts increase / decrease as your song progresses / changes could be interesting / useful.

Anyway, those are just a few, I’ll think about this more and come back with better suggestions.

2 Likes

At the moment there is not a “time line” implemented in the way a sequencer progress its midi data through time. But there are suggestions - feature requests that propose such a workflow, note as steps, root notes, start, stop, loops, intervals etc. In general there has to be some kind of a basic sequencer pipe [with a start and a possible end point] to handle messages through time in order to add more functions like program changes to act progressivelly. Just a guess.

For the loopback control there might be a future update to include this function internally. This will expand capabilities and more complex paths will open.

2 Likes

I would like to suggest a different note remap pipe that allowed the user to specify a list of output notes for any chosen input notes. Also, a toggle switch to optionally filter out any incoming notes for which note-to-list relations weren’t specified.

I think 16 slots for incoming notes and a list of up to 8 notes for each should be flexible enough.

At the moment this is possible to achieve with Note Range Filter (set to a single note) and Harmonize, but the patch becomes difficult to navigate when multiple such combinations are created. With the proposed pipe custom chords / voicings / inversions could be easily assigned to single incoming notes and managed from the same property page.

What do you think?

1 Like

How would you plan to use such feature? How often would you want to change the note mappings?

A specially crafted Micro Scale can be used to specify the note pitches for the entire range of MIDI notes (0-127), so it could be used to remap the notes as desired. Building chords and filtering would still have to be done by separate pipes.

Some special layout of a Micro Scale may enable simplifying the pipelines for making chords, enabling reuse of the same harmonizer pipes.

1 Like

I would use the feature to define note to chord relations. For example:
C4 (60) → C4 Major chord (60, 64, 67)
C#4 (61) → C4 Major 7th no fifth (60, 64, 71)
D4 (62) → D4 Minor 7th no third (62, 69, 72)

To complicate things a little, let’s say some chords are 3-voice, some 4-voice, some 5-voice, etc…

The Harmonizer allows only a static upper interval structure, (which can be quantized to a scale), but this is limiting.

Another example:

C4 → CMaj7
C#4 → CMin7

These chords do not belong to the same (diatonic) scale, but they may be desired in a chord progression.

This is sort of do-able with Harmonizer / Scale Quantizer, but I would have to create mapping for the type of the scale, and switch to a minor scale to play my CMin7… so it’s pretty complicated…

Thus I suggest a tool to specify custom note to chord relations based on midi note numbers. What do you think?

Also, I do not intend to be able to change these mappings in live use. Only when developing the pipeline

3 Likes

When I said “mapping”, I was thinking of mapping one note to multiple notes, so it’s probably better to think of it as “chord building”.

1 Like

It’s a good idea, we’ll have to think about what’s the best way to have this implemented. We may have to include some sort of special UI to make the input of these chord mappings convenient.

Would you expect only these particular note keys to produce the chords, and C3 would simply be ignored?

2 Likes

Is this about a per “key chord mapping” ? I use novation launchpad pro mk3 and the chord mode looks like this. You could take a look at this and get some ideas out of it.

1 Like

I am open to both, so a toggle would be best IMO.

As long as the UI allows to set arbitrary list of numbers as the output chord. I imagine two columns in the properties pane: incoming note, output note(s). Maybe that toggle switch too.

The only other desired feature would be to allow input as note number and/or note string (“c#4”). Same for displaying the data, but you have this in place for other pipes already.

What UI do you have in mind?

Hi all, just setting up my new Midihub for the first time, excited to see what I can do with it.

Apologies if I’m not using the votes for features correctly, not quite sure how to vote for a specific feature request in a post that has several suggestions… (if I’ve missed something please let me know :slight_smile:

As has been mentioned above a couple of times:
Velocity to CC please.
I was a little disappointed to not see that in the possible transformations, it seems like a pretty fundamentally useful one to me!

Also a suggestion - in my initial setups, I’m doing quite a lot of channel filtering. Say I want a pipe to only operate on events that are on channel 16 (for example). Rather than having to make a channel filter that discards 1-15, it would be convenient if I could just say ‘select channel 16’ - it would do the same thing, but be faster and more intuitive to work with, imho.

Anyway - thanks for a great tool that I’m looking forward to diving into…

3 Likes

This feature is there!

2 Likes

For that, just use a Channel Range Filter and set the range to ‘16’, untick the ‘Drop In Range’ argument, so it only keeps messages in Ch. 16.

1 Like

Haha thanks so much for pointing out my error - great news. I misunderstood the documents and didn’t try it yet - THANKS and sorry to bother you!