-
Obineg
@oid
i wonder what you think what this feedbackloop should be good for. -
Obineg
the image from fishcrystal contains an important, basic part of the answer in that plot: the math required for a multi-point-crossfader is identical to the math in a "equal-power" stereo panner.
using modulation -> list -> modulo -> cos function, as seen above, is a nice short data rate implementation.
if you want to use signals, where you dont have lists, you can optimize that principle further by using buffers and then only use +- offsets when reading out the function for the different inputs. -
Obineg
if you have a function or graph with more than one dimension, like in your example or in the usual chaotic attractors, you would simply take these dimensions individually and derive 3 signals from it.
then you can take only one of them, or mix them against each othe, or sum them, or multiply them squared or whatever you wish.
in order to do so, you would simply rebiuld the code so that it produces values betwee -1 and 1, (which can get tricky when used a low resolution arithmecis before), and when it works, you´d make a version with signal objects (which is often simpler than you thought)
-
Obineg
i would say "no" - there is no known generator or filter which is polyphonic by nature.
even if you code your own external at one point you always have to iterate the list into single values.
for example you could use a vexpr object instead of 4 mtofs, but there is no method how to make a polyphonic phase accumulator.
if you would try to make one, you would soon find out that it does not make too much sense to process accumulators in vectors when you need to have single outlets anyway, since audio connections have a fixed rate and bitdepht and can not be used to carry more than one signal.
of course inside pd you can yourself freely *where *you do that, (as opposed to MIDI, where every communication is serial.)
-
Obineg
oh, i wasnt aware of that at all. so one could say there is basically no main thread? when the scheduler cant be turned off.:)
(scheduling events works fine: metro 1 -> click~ at vectorsizes 32 does what it is supposed to - in max it required the hp-thread to be available or it would produce hiccup.)
-
Obineg
short answer: you have to make sure that the data runs in the high priority thread.
pd and max have a main thread, a high priority thread (overdrive), and an audio thread (among others)
how to do that in C++ is surely documented in the SDK examples, but i will not be of much help here.
maybe compare the source code of [+ ] vs. [delay], the latter outputs to the high priority thread if one exists.
-
Obineg
@jamcultur said:
Thanks. That might be what I need, but I need to do some more research on MIDI MPE messages. I'd like to find a MIDI MPE sample file that I could download. I see that Max/MSP added some new objects for MPE, mpeconfig, mpeparse, mpeformat, polymidiin, and others. I'm going to look to see what they're doing.
a file would not be as helpful as simply looking into the specs. the basic "polyphony" releated stuff is relatively simple, the only prerequisite would be that midiin and midiout do not filter out numbers they dont know.
max´s mpeparse or midiparse are quite useful, but it is not really difficult to write your own, it is basically sorting numbers.
-
Obineg
if the duration is the same for all notes, there is no need to process them as numbers, you could as well store and trigger the list as such.
you will benefit from that in many other situations, for example it then will also work with an arbitrary number of list elements.
at least you can remove all but one pipe objects in that patch.
another alternative design would be to add the duration to each note, as it will be required to do that when assembling te midi events anyway. if you do it this way, you will also add the option to use different durations for each list member, something which cen get quite relevant for musical events.
alltogether i would say you dont need that patch at all to do what you want, you basically only need to bang the messagebox and then do the midi formatting.
-
Obineg
in theory by upsampling the whole process.
but in most cases you would then also need to play the input faster into it.
-
Obineg
@ddw_music said:
I don't have the link handy, but one commentator called GPT a "mansplaining machine" -- often wrong, but projecting absolute confidence in its answers.
then it is evident: chatGPT is a politician.
-
Obineg
@ddw_music said:
@Obineg said:
chatGPT is more intelligent than 90% of the world population
It's not. It makes up answers that sound correct, but not based on real understanding.
90% of the humans are not even able to give answers which sound correct.
-
Obineg
that is how it is: chatGPT is more intelligent than 90% of the word population, but unfortunately that means nothing.
i mean we drive sport-offroad-cars in the city, we build houses with flat roofs, and we litter the ocean with plastic bottles, what could a machine learn from us?
-
Obineg
a digital poles and zeros filter always offers 3 or 6 db/oct, depending on the use case, and you switch to a higher order by switches and gates which lets you choose to put filters in series or not.
this is more or less identical in both worlds.
if you actually want to use a "multiple switch" (i.e. many switches) to do that on a hardware surface is another question (you rather want to have a switch with 4 stages) but the internal logic in the circuit is always the same.
you *can *use a digital enviroment to design circuits which look *similar *to electric components, but of course one prerequisite would be that you *know *these analog components already. (and then it is questionable why you would need a computer program to simulate it?)
i am not really a pd user and i dont know which distribution has what gate and switch objects - but we can easily replace it using multiplications with 0 and 1.
this way it is even simpler to understand what happens.
-
Obineg
@kosuke16 said: that I didn't have to learn anything
very well tracked down.
and now... build your own version.
framework:
- first take care about what it should mean when midi note events come in. don´t forget to handle a possible third key pressed down.
- build the trillo events to output.
- connect the two parts.
-
Obineg
you can learn about things, play around, make single sounds, make songs, make performance patches or build actual software "products".
the proposed "one song one patch" use case is quite common.
-
Obineg
pd or standalone max are a bit simpler because you at least get rid of the routing chaos in ableton and roll your own in wysiwyg style.
how to code something mainly depends on what it is.
there are stereo matrix formats, there is ambisonics, there is vbap, there are other methods of cicular panning, you can just alternate between channels and treat them as 4 mono systems... what do you want to do?
-
Obineg
code 4*5
ah, found the code tag. but you already fixed my post.
-
Obineg
escaping each of them sounds like a lot of work. i think one can guess that $f12 was 1 times 2 - and the other are ones are not needed anyway.
yes, for signal expr~ you can use min(max()()), i copied this from my datarate max patch.
of course both is likewise difficult to read for a beginner.
outside of expr~ you might also be able to optimize the code further with pong and modulo.
but i like to start out verbose and linear, then optimize later.
he has yet to get rid of this snapshot nonsense.
-
Obineg
okay this sucks, how do i get this forum to display an asterax?