Guidance, please.

Michael Caverly's icon

Michael Caverly

3月 16 2024 | 6:00 午前

I am very new to Max/MSP, and would like a little help.

I followed an excellent tutorial from Cycling 74 to make a Polyphonic Synth (PS) patcher and managed to recreate it on my laptop. I toyed around using different oscillators and adding filters, and then I found a tutorial on the Karplus-Strong algorithm (KS). I tried it out and am deeply in love with the tone and the simplicity of the algorithm, and started thinking about how it might be incorporated into the PS unit.

I thought that, if I could encapsulate the KS patcher into a sub-patch and then bring it into the PS like it was another oscillator in the poly~ abstraction. It gets MIDI note & velocity.

Looking at the structure of the KS made me think about the inlet & outlet issues, and that is where I broke down.

I would like to know if this approach is reasonable one. I feel ridiculously out of my depth with Max, but I have had some experience with coding Javascript, CSS and PHP, and have also dabbled a bit with N.I Reaktor;- but Max/MSP has blown my mind.

Rgards,

Mikey

Source Audio's icon

Source Audio

3月 16 2024 | 7:34 午前

sorry, I am watching no you tube videos.

upload what you have done ,

then one can try to help you.

in principle, you use poly~ , load your subpatch set for that task,

and that's it.

All you need to do is to replace oscillator

that was in that original you tube,

with that in 2nd youtube.

MakePatchesNotWar's icon

MakePatchesNotWar

3月 16 2024 | 8:50 午前

Seconding Source Audio's request for a patch so we can see what the problem is.

"then bring it into the PS like it was another oscillator in the poly~ abstraction. It gets MIDI note & velocity."

The assumption that a patch loaded into poly~ will automatically accommodate it to receive midi and velocity is incorrect. You have to do this yourself and if you're unsure what an inlet is receiving or what data(or numbers rather) is going through a cable(or inlet) just hook up a print or number~ (for signals) to it.

If memory serves correct i think our good buddy Sam also has a video where he uses poly~ in a patch? Might be worth looking that up as well as it may give more insight. And yes, Max blows all our minds... Happy patching!

Michael Caverly's icon

Michael Caverly

3月 16 2024 | 3:49 午後

Thank you very much fellows. I hope this helps

p0lyph0ny.maxpat
Max Patch
p0lyph0ny_abstract.maxpat
Max Patch
KSA.maxpat
Max Patch

MakePatchesNotWar's icon

MakePatchesNotWar

3月 16 2024 | 5:40 午後

Coming back to your original question, i think your approach is reasonable but i would suggest slowing it down a bit. Since you mention being very new to max i think you're biting off quite a lot here. Not saying it's too much to chew but there's just a lot to digest...

I've made some adjustments to the patch. See the comments

p0lyph0ny.maxpat
Max Patch
p0lyph0ny_abstract.maxpat
Max Patch
KSA.maxpat
Max Patch

Michael Caverly's icon

Michael Caverly

3月 16 2024 | 8:46 午後

That is the exact the level of detail I was looking for. Thank you :)

MakePatchesNotWar's icon

MakePatchesNotWar

3月 17 2024 | 1:17 午後

Glad to help, no problem!

Michael Caverly's icon

Michael Caverly

3月 17 2024 | 4:18 午後

I am hugely grateful for all the help with this patcher from MAKEPATCHESNOTWAR, I'm not sure this is the right place to do it but would also like to thank , Oliver Thurley, Sam (aka dude837), and Robin Parmer, to name but a few.

Getting know Max/MSP from ground zero has been tough, but rewarding. I wish to share something from the Dictionary of my Macbook; the word "Abstraction"

abstraction | əbˈstrakʃ(ə)n |
noun [mass noun]
1 the quality of dealing with ideas rather than events: topics will vary in degrees of abstraction.
• [count noun] something which exists only as an idea: the question can no longer be treated as an academic abstraction.
2 freedom from representational qualities in art: geometric abstraction has been a mainstay in her work.
• [count noun] an abstract work of art: critics sought the meaning of O'Keeffe's abstractions | a series of black-and-white abstractions.
3 a state of preoccupation: she sensed his momentary abstraction.
4 the process of considering something independently of its associations or attributes: the question cannot be considered in abstraction from the historical context in which it was raised.
5 the process of removing something, especially water from a river or other source: the abstraction of water from springs and wells | [count noun] : abstractions from the Lowther in Cumbria.

Michael Caverly's icon

Michael Caverly

3月 21 2024 | 10:38 午後

I have watched (too) many Max tutorials, and have tried to avoid taking on too much at once. However

I would like to develop the poly~ KSA to include other oscillators; and then include basic submix controls, and then what about LF - oh ... wait! ... go back a bit - the other oscillators.

I have to begin with the slight caveat that, for me, MSP requires analysis of the language in terms of the diction and syntax - and of course; the meaning.

  • MAKEPATCHESNOTWAR hit the nail spot-on the head using three very simple, but brilliant, 'bits': the p0lyph0ny.maxpat (master), as in the notein-and-out bit, then the poly~ sub-patcher, and the p0lyph0ny poly~ abstraction. now If I wanted to add other oscillators, to which 'bit' should the additions be included in?

  • My gut feeling is that

    extra oscillators should go inside the poly~ abstraction. But other modulators, like gain, pan, LFO, and filter(s) in the p0lyph0ny.maxpat part.

  • I don't expect to want polyphonic EQ or filtering, so ... should they occur in the master?

  • I have also seen a few gen~ examples that look, and sound, most excellent; but I'll stick with Max/MSP for now.

Regards,

Michael.

MakePatchesNotWar's icon

MakePatchesNotWar

3月 22 2024 | 8:33 午前

Remember that all i did was replace the [tri] in your original patch with the KSAsubpatch so the gut feeling was right and that's where any additional oscillators should go as well.

The question with using poly~ is where you want variation to apply. Poly just offers the opportunity to run the same patch in parallel so that decision is up to you. To some extent this applies to MC as well witht eh difference that Poly really runs its subpatches in parallel while MC allows you to run multiple channels in parallel in the same patch

Michael Caverly's icon

Michael Caverly

7月 21 2024 | 3:01 午後

I have been playing around inside of Max/MSP trying explore the META-Level of the language.

I feel like I have made some progress with the vision I have for the KSA; Tried messing with extra oscillators and filters, but mostly with my development 'aims' and 'processes'. I haven't touched the KSA original code; it is simply beautiful.

I understand some coding conventions from HTML/CSS/PHP/javascript fields; and would like to adopt similar principles WRT Max/MSP. I would like to suggest some new file-names.

The top-level that holds the code for KSA, I now call "p0lyF0n1K"

The poly~ abstraction, I call "p0lyF0n14L", and the subpatch of that is now; a

"p0lyF0n".

I include my files.

p0LyF0n1K.maxpat
Max Patch
p0Lyf0n14L.maxpat
Max Patch
p0lyF0n.maxpat
Max Patch

My aim for the KSA 'vision' that I have, is stream-lined down to just ONE 'oscillator' and no additional filters (yet).

I know some of the syntax is quirky, but it has been motivational, I'd like to know if my dev-method is reasonable and valid, or not?

For the next step, I would like to develop the inclusion of a umenu object then for my

QUESTION: Can variables be included is the inspector of umenu to facilitate things like oscillator/filter selection.

Roman Thilenius's icon

Roman Thilenius

7月 21 2024 | 11:09 午後

everything you set for an object instance as its initial state via inspector will remain permanent and usually saves you to use one of the alternatives (especially sending messages from a loadbang into it.)


your next step is to get voicing with poly working.

i would ignore all the "note", "midievent", "notemessage" and "midinote" stuff which you can see in the helpfile and try to understadn and apply the target message instead.

using "target" will enable you to use any fantasy data format you want to control things in your poly.
one would fo example send incoming note values around in circles (1,2,3,4,1,2,3,4...) and then you are ready to add a [thispoly~] object to turn poly voices on with every note event and off again when the envelope ha finished.

Michael Caverly's icon

Michael Caverly

7月 22 2024 | 7:53 午後

Thank you, Roman, that's helpful. To give you an idea of my experience with Max/MSP, and with software emulations of any kind: I'm currently 54 years old, and only started using my own DAW system about 15 years ago. I didn't know anything about Max/MSP until early spring of this year, and it had me in its grip after a few days.

I have university experience (Information Systems), and often think I will be able to pick up on things like Max/MSP very quickly; but I have also been very wrong about that.

You mention using "target" but I don't get that bit. Typing that into a Max object only gives me the option for [mc.target] but there are no other [mc] objects in any of the patches, is multi channel a good route to take with it?

The [poly~] works fine on my system; I hope there wasn't an issue with my upload ...

It's in the [p0lyf0n14L] part, and it uses [thispoly~]

Roman Thilenius's icon

Roman Thilenius

7月 22 2024 | 11:39 午後

"target" is a message, we use "these buddies" to denote them in the forums. :)

you´ll find a somewhat unlucky example of its usage in the second tab of the [poly~] helpfile.

when i think about it... when you need midi note off messages, too, it is actually not that easy as i promised. :(

but to get a feeling for what it does, try this.

automatic round robin can be organized with objects like [cycle] or with the help of a counter.

Michael Caverly's icon

Michael Caverly

7月 23 2024 | 11:02 午前

Thank you, thank you very much indeed! I'll try it, and try it again, and again; and may continue to post on this thread when I feel ready to progress.