Architect: Does anyone have a * macro/script

Official support for: loomer.co.uk
Post Reply New Topic
RELATED
PRODUCTS

Post

:hyper: Thanks for sharing! Looking at the manual, very impressed Alberto!

Post

(I'll re-post at a later time.)
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

cturner wrote: Thu Jan 31, 2019 8:27 pm (I'll re-post at a later time.)
Noo.. I was reading it carefully :) seems interesting...

Post

mannymang wrote: Thu Jan 31, 2019 1:00 am :hyper: Thanks for sharing! Looking at the manual, very impressed Alberto!
Thanks mannymang. I'll try to post some examples on how to use them.

Post

cturner wrote: Thu Jan 31, 2019 8:27 pm (I'll re-post at a later time.)
Oh man, I shouldn't have refreshed. Hope to see the post again!

Post

AZZIN wrote: Thu Jan 31, 2019 10:27 pm
mannymang wrote: Thu Jan 31, 2019 1:00 am :hyper: Thanks for sharing! Looking at the manual, very impressed Alberto!
Thanks mannymang. I'll try to post some examples on how to use them.
Yes please!

Post

Is there any interest here on the "Brecker Effect" or “Michael Brecker Effect”
https://www.google.com/search?ei=lJNTXI ... XkwbBb_Bs8

Post

AZZIN wrote: Thu Jan 31, 2019 10:05 pm
cturner wrote: Thu Jan 31, 2019 8:27 pm (I'll re-post at a later time.)
Noo.. I was reading it carefully :) seems interesting...
I found a bug, and in the process solved the major issue with the preset. I’ll re-post later today with a better presentation.
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

Okay, back with my revision of Basic Listener. For those of you who might have downloaded any of the files from the 31st, please trash them and download these:

http://vze26m98.net/loomer/Listener-190 ... 190202.zip

Right after my previous post, I got hit with a completely stupid fail (yes, the release was half-baked) and in fixing it, solved a more difficult problem I was having.

A sound file:

http://vze26m98.net/loomer/Listener-190 ... 190202.mp3

That's the contents of the ZIP file run through a copy of AAS String Studio 2.

While I was fixing things, I tried to make a version of the preset that ran standalone, and I couldn't find a way to play a MIDI file in the Timeline or Player and have it feed back into the Graph. So although you could easily alter my preset to work in the standalone, the mods would take it farther away from what I wanted.

SETUP

Unpack the ZIP file, and place the XML file in Architect's presets folder, the FRAG file in the fragments folder. Import the MIDI files into Architect's MIDI pool. Put the file "rhythm.MID" on a track in your DAW (Reaper here):

Image

Instantiate the Architect plugin on the track along with a polyphonic VSTi, and load the preset "Listening-190131" into Architect. You should see:

Image

There's [MIDI input] and [MIDI output] plus two instances of the macro [Listener-190131], which is the FRAG file you previously put in the Architect folder. The MIDI on the track is passed through, [128th note sequence] is listening to that input, and [ascending] is listening to both the track MIDI and the MIDI from [128th note sequence]. If you play down your DAW, you should hear something like the sound file above.

Each of the two objects are "listening" to their MIDI inputs, tracking the number of voices playing at any given moment. They play back their own MIDI files based on a configurable logic. You can see what that is by looking inside each macro. This is a look inside the [128th note sequence] object:

Image

At bottom left, there's an instance of [MIDI player], and feeding it is the name of the MIDI file you imported into the pool. There's also a text comment "VOICE LOGIC GOES HERE" and in this case, [128th note sequence] requires the number of voices to be greater than 1 for it to play its file. The logic for [ascending] is more complex:

Image

There the sum of voices above none are ignored (effectively "rests"), but then the MIDI file plays only every other period of silence.

So inside a Basic Listener macro, you can specify the MIDI file to be played, and also the conditions under which it will play as it "listens" to the MIDI voices that you configure it to hear.

MACRO BREAKDOWN

The macro breaks down in to three major areas. The blue area tracks incoming noteons and noteoffs, updating a counter macro [voice-counter] that produces a result of zero or greater. The yellow area creates a tuple of clock tick and voice count, and then uses the tuple to build a map piecewise. This enables insertion and replacement, but not deletion so far. If a note disappears from the loop, Listener doesn't know it's gone! The red area plays back the listener map by asking at every clock tick whether there's been a change in voice count. This is done by the [is member], [get element] pair and associated logic. At a given clock tick, it pushes the voice count toward the "voice logic", which then produces a True/False result that controls the playback of the [MIDI player].

Astute readers will wonder about the lack of "deletion" in the sequencer, and observe that eliminating the "memory" associated with building a map would fix this issue. I believe this is easily done, but my long-term interest is in building a two-part listener, where the listening in disconnected from the playing, and the two modes are linked through shared memory. That's the next thing on my list to build.

The preset and related files are provided under my "do whatever you want" policy. I claim no authorship but don't expect any support, although I am interested to hear what is going wrong or right with the code. And of course, I'm happy to post further detail about what's outlined above, it's just that I don't want to get caught up in fixes and mods upon request.

Enjoy!
Last edited by cturner on Sat Feb 02, 2019 11:04 pm, edited 1 time in total.
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

Thanks for sharing Charles, looking forward to digging into this. Looks really interesting and fun! :hyper:

Post

There were a few things nagging at me about Basic Listener after I had posted yesterday: the issue of it simply "adding notes", but never able to take any away; the lack of "editability" of the MIDI in a [MIDI player]; and the lack of an easy standalone version. So I put this preset together, hilariously in about an hour in the midst of breakfast, a real testament to the ease and flexibility of Architect.

http://vze26m98.net/loomer/Listener-190 ... 190203.zip

It hacks out the "voice map" from the voice counter, in other words, all the lighter grey area below:

Image

Without the "memory" of the map, notes are free to disappear and resurface, and the [voice-counter] tracks the changes. The portion remaining in blue was turned into a [macro] that takes a MIDI stream as input and outputs the number of voice current on any change of voice. The red area remains the "voice logic", saying when to play the MIDI snippet in response to the listening.

The "Listening" preset from yesterday was reworked to look like this in overview:

Image

[Rhythm], [128th note sequence] and [ascending] are polyphonic sequencers now, and replace all the MIDI in tracks and [MIDI player]s. The MIDI output of these sequencers feed the [voice-counter] macro which outputs integers in time. The voice logic shown in red then makes a decision on this stream, and issues True/False to enable or disable the polyphonic sequencers.

I'd imagine that the [voice-counter] macro might be generally useful to someone, although perhaps there are versions already embedded in some of the presets for Architect already posted?

Enjoy!
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

cturner wrote: Sat Feb 02, 2019 3:58 pm Okay, back with my revision of Basic Listener.
...
Each of the two objects are "listening" to their MIDI inputs, tracking the number of voices playing at any given moment. They play back their own MIDI files based on a configurable logic. You can see what that is by looking inside each macro. This is a look inside the [128th note sequence] object:
Hi Charles,

I extracted a small part of your image and I put two arrows. My question is: is there a way to be sure that the 2nd "bang" is not banged prior to the first one? I mean, we have to be sure that "==" is executed ("banged") first and then branch is executed later. But what is the logic of execution when there are two cords that exit from the "get midi type" and go to two green inlets of object that need to be executed in sequence? I suspect an ambiguity here that need to be solved with some explicit "order" object. What do you think? Colin, is there an implicit rule in this case? Maybe I'm missing something...
Alberto
You do not have the required permissions to view the files attached to this post.

Post

Hi AZZIN- Order goes from left-to-right, and from top-to-bottom. I’m assuming that things also work depth first, so in this case, everything with [==] is satisfied, it outputs True/False to [branch], and then the second cable from [get MIDI type] causes [branch] to fire. Maybe Colin can correct me if I’m wrong.

Have you had a problem with the code?
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

AZZIN wrote: Sun Feb 03, 2019 8:30 pm I suspect an ambiguity here that need to be solved with some explicit "order" object. What do you think? Colin, is there an implicit rule in this case? Maybe I'm missing something...
Alberto
Hi Alberto,

I've noticed similar occurrences with order of execution and "missing argument" errors and "setup events" not appearing to execute to the satisfaction of some modules. I think I'm most certainly missing something with this, especially with complex presets where it would be ?impossible? to maintain a rigid order of execution within this framework? I can negate these errors from some modules by placing a data feed in strategic places for the setup event. Of course, I may be completely off-the-rails in my thinking here. :)

Yes, please Colin, some clarification would be most welcome!

Thanks!

Post

Actually, upon reflection, since computers, at this point, don't really multi-task but execute in a rigid order, I really may be asking for too much! :)

Post Reply

Return to “Loomer”