piz midi plugins (windows/linux/mac)

Official support for: thepiz.org
Post Reply New Topic
RELATED
PRODUCTS

Post

aliester_crowley wrote:Oh, I have a request:

I'm trying to duplicate some of the functionality of midiStrum natively in Plogue Bidule using its stock math and midi modules. Insertpizhere, could you explain some of the math behind the variables and how they intermodulate and mebbe link me to downloadable source code for the plugin? I'm specifically interested in Speed, Max Time, VelToSpeed, VelRamp, and Accel.

Thanks!
here is the source: http://thepiz.org/xt/midiStrum_src.zip

i haven't looked at it lately, but i think this is how it works...

for each note in a chord, let x be the "position" of the note within the chord, from 0 to 1 (i.e. the first note would have x=0, and for the last note x=1).

then the actual delay of each note is:
Delay = (1 - VelToSpeed*StrumVelocity) * (Accel*0.3*sin(PI*x)+x) * (Speed*MaxTime)

in other words, Accel distributes the notes within the total delay time, which is determined by Max Time, Speed, and VelToSpeed*StrumVelocity.

StrumVelocity here is the velocity of the strum note, normalized to the 0 to 1 range.

VelRamp just creates an incremental change in output velocity over the course of the strum. the starting point may or may not be related to the strum velocity. something like this, for each successive chord note:
OutputVelocity += roundToInt((VelRamp) * (x*127-64))
this would of course have to be limited between 1 and 127.

hope this helps.
wrongtastic, baby
tucson's number one gothic rock band since 1995

Post

Thanks soooooo much iph! Your info will save me hours of diddling about with poorly remembered highschool math. Cheers!

Post

I've been playing around with the Eckel midi generator ( http://www.kvraudio.com/get/3543.html )which has led me to wishing there was some way to extract specific notes from specific locations along a timeline to apply note duration processing to.For example I could grab a C3 from only the second and fourth beats (or any variation) and adjust the duration of these note ons without effecting any other C3 notes...This would also be great for processing midi from my Monome.
Any ideas?

I've also been hunting without any luck for a delay/arpeggiator that could process incoming notes in a similar x000xx0x00xx etc fashion as Eckel? Midi Probabability kind of hits it but it seems too random in the little bit I've played around to suit my taste.Or maybe I haven't dug deep enough?

Post

yes, midiProbability would be the closest thing i have... it can be done, but it would be complicated, even for your first simple example.

to affect only a certain note on the second and fourth beats:
- you would first have to filter out that note, for example channelize it with midiNotchFilter.
- then send it to midiProbability; set Step=2, StepShift=50%, Prob=100%, Mode=Channelize, and InputChan to the output channel of midiNotchFilter.
- send the channelized notes from midiProbability to the note duration processor (maybe my "lengher" plugin).

it shouldn't do anything random if Prob is either 0% or 100%, but i guess there could be bugs.

for more complicated patterns, it would get very difficult. i can envision something with a piano roll which would act as a mask over incoming notes, to only process certain notes at certain locations. seems like a good idea.
wrongtastic, baby
tucson's number one gothic rock band since 1995

Post

Piano roll could work but how about a processing delay approach where a slider would set the amount of beat based delay until a note length processing event should occur? In theory it would seem that with an approach like this, one instance of a plugin could be used to process multiple incoming notes as each note control would only need three sliders, one for note selection, one for delay time until event processing and one for setting the final note duration.
Of course I could see this being practical for other types of events too, for example having a chord triggered with the same method would be awesome...

edit:Oh yeah I was going to suggest something with midipolyphony where it could "learn" which incoming notes were to be split and continue sending each note to a seperate midi channel even if the notes were received at different times.

Post

Hi, IPZ
I had forgotten about MidiProbability, and it is an excellent plugin : thanks a lot for making it.
Do you plan to slap a simple GUI on it at some point ?

ALso, sorry about not coming back to you about the Midi2sysex plugin you've done on my request : i am still struggling with some Vista bugs, and so i haven't foud much time to play with my Tx81Z.
But asap, i'll let you know how fine it works.

Thanks again, and once more.

Post

sinkmusic wrote:Hi, IPZ
I had forgotten about MidiProbability, and it is an excellent plugin : thanks a lot for making it.
Do you plan to slap a simple GUI on it at some point ?
yes, possibly with more slots, and maybe some kind of visual overview of all the slots.
ALso, sorry about not coming back to you about the Midi2sysex plugin you've done on my request : i am still struggling with some Vista bugs, and so i haven't foud much time to play with my Tx81Z.
But asap, i'll let you know how fine it works.
thanks, it would be good to know if it actually works. if it does i'll make it more user-friendly and add support for other devices.
wrongtastic, baby
tucson's number one gothic rock band since 1995

Post

insertpizhere wrote:
sinkmusic wrote:Hi, IPZ
I had forgotten about MidiProbability, and it is an excellent plugin : thanks a lot for making it.
Do you plan to slap a simple GUI on it at some point ?
yes, possibly with more slots, and maybe some kind of visual overview of all the slots.
:scared: Please be very careful with this one ;)...


Seriously though IPH, perhaps there is a way to also incorporate preset morphing like in MA2? GUI is optional.

I was also wondering if it would be possible to be add an option to turn off quantizing all together and have timing in percent or seconds (not sure if I asked for this already). Basically this would be great for midiprobability, midiswing or any other plugin that uses quantized steps.

Thanks for considering freedom.
Image
stay juicy!

Post

Optomadic wrote:Seriously though IPH, perhaps there is a way to also incorporate preset morphing like in A2? GUI is optional.
it could be done, but i would rather not do it without a GUI. a lot of hosts won't update their GUI when a plugin changes its own parameters.
I was also wondering if it would be possible to be add an option to turn off quantizing all together and have timing in percent or seconds (not sure if I asked for this already). Basically this would be great for midiprobability, midiswing or any other plugin that uses quantized steps.
i suppose i could add timing in seconds, at least to midiProbability. for midiSwing it doesn't make as much sense to me. if you mean percent as in percentage of the selected note value, that might work...
wrongtastic, baby
tucson's number one gothic rock band since 1995

Post

Hey IPH,

I was wondering if you make an offspring from MIDIlooper code. What I need is a simple MIDI logger. Basically it would work almost exactly the same as MIDIlooper now except instead of playing back the MIDI loop it would just output the recorded MIDI to a file(incremently named per loop).

So it would work like this.

- The amount of bars to be recorded would be set.
- Record would be the same except it would automatically stop & start new recording iteration at the end of the loop (based on amount of bars parameter).
- Sync mode (ppq host 0) would be the optimal sync choice.
- Each loop iteration would auto create a new file (eg loop1.mid, loop2.mid, loop3.mid, ....).

Thats pretty much it, everything else would be optional. It does not even need to record CC just notes. I need this for quick capture of passages directly to MIDI file.

I figured it would not be too hard as MIDIlooper already has these features built in.

Let me know what do you think.

Thanks for any consideration.
Image
stay juicy!

Post

Just wanted to bump this and ask if the sourcecode was avalible (perhaps at your site, going to check..). I'd like take a swing at it in VSTSDK (or at least take a long long stare :hihi:)

edit:

wait, did you use juce for all of the MIDI plugins?

Please let me know this..

ttys
Image
stay juicy!

Post

all my source code is available by request. you're the first to ask for midiLooper, so i don't have it quite ready at the moment. i'll make sure it works and then upload it soon.

most of them are not done with juce, but midiLooper is because i intended to have a GUI.

you're right, it shouldn't be too hard to do what you want, but i am going to be pretty busy for the next few months.
wrongtastic, baby
tucson's number one gothic rock band since 1995

Post

Hmm, maybe then you can just lead me in the right direction with your code?

I'm assuming you meant the ones done in SE weren't rewritten for juce (for clarity sake)?

I took a look at some sc supplied by Aciddose for his vst logger with similar implementation but got lost pretty fast.

It would be nice if you could attach in code notes and or external schematics outlining sections letting me know what goes where plz.

Thanks again.
Image
stay juicy!

Post

what i mean is that all my plugins without a GUI (except midiLooper) only use the vst sdk and not juce. i use juce to get a nice cross-platform GUI.

the code of midiLooper is very messy if i remember correctly. i wouldn't expect anyone to understand it, including myself... however, i'll see what i can do.
wrongtastic, baby
tucson's number one gothic rock band since 1995

Post

:lol: Thats not good.

One thing I noticed is that a version of ML did output a .mid

Can you confirm this and how do make it work? Do I have to have to certain foldername in the working dir or something?

Perhaps I will use it as is until I figure out the sc :shrug:
Image
stay juicy!

Post Reply

Return to “Insert Piz Here”