Architect: Does anyone have a * macro/script

Official support for: loomer.co.uk
RELATED
PRODUCTS

Post

colin@loomer wrote: Tue Oct 26, 2021 2:21 pm Use [give note id] and a [MIDI switch 1 to N].

Image

[give note id] will allocate a unique id to a noteon, starting from 0, and then release this id when it receives a matching noteoff (ie, a noteoff with the same key and channel.) You can combine this with a [MIDI switch] to route each MIDI note to a seperate processor. The [MIDI switch] is smart enough to send matching note off (and any polyphonic MIDI events) to the same channel as the previous note on.

There are a few cavets here. One is that you need to create enough processing layers for however many notes you expect to handle at once: at the moment, Architect doesn't automatically creates different instances. And [give note id] will output an `undefined` if it receives a MIDI message other than noteon, noteoff, or a polyphonic MIDI event. The [MIDI switch] won't be too happy about that value as a control, and will complain. If this is an issue, you can either filter out MIDI events before [get note id], or filter out the `undefined` values with the [is undefined] and [branch] modules.
Thx a bunch!
it's a lot easier and much more elegant than i expected xD

if i make it work ill post it here, maybe someone will find it useful.

also, what's your policy on videos featuring the architect-since it's still in beta?

Post

As in, sharing videos you've made? Sure, go ahead, I have no problem with anyone doing that.
Architect, the modular MIDI toolkit, beta now available for macOS, Windows, and Linux.

Post

Absolutely fascinating project, congrats Colin. Just curious: running VST plug-ins in my DAW, would it be possible to assign a master track - playing chords, and have slave tracks transposing and shifting keys in real-time? Would that be insanely complicated to create?

Oh, and a shout out to Tom who recommended Architect to me!

Post

hey mate, good to see you here!
if i understand correctly you want live midi input on one track and multiple other tracks receiving processed midi?
if so, easiest way to do that would be to match channels.
set the channel of a sequencer (or whatever process you want to do) to 2, block it via channel filter (in bitwig) on the main track.
on the track you want to receive the data set input to track 1 (the one with architect), choose architect as a device and put a channel filter before the instruments. filter out everything but the channel you want-in this case ch2.
repeat up to 15 times- i think that's plenty xD

If I manage to build the patch i'm working on it will probably be pretty much what you need-live input with x channels of controlled midi mayhem. hopefully xD


also, you can use vsts in architect and make it a whole lot easier to route but you can't load bitwigs instruments such as the grid or fx- as they're not in vst format.


@colin-thanks, will definitely upload anything i find "uploadworthy" and useful

Post

Just for almost fun - scale breaker in Bitwig (I saw so far four BW users here)...- it do scale in ratios/ ratios of ratio as mention before.
It should be possible to do in Architect (it would be more precise and for all keys etc.), I saw there (obviously) natural logarithm, etc. .. only thing I don t know how would I do is transpose in cents... only thing I can think of is Pitchbend... MTS is I think part of programmer..

For musical stuff ODDSound Suite looks much better, but I did not see there ratios (not to mention ratios of ratio...) or load different ratios just by midi, or use natural log...

It is for only short part like about 3 bars (then it starts to deviate from time to time - still much better than modulate Detune/ Fine)) and it is for some strange reason sensitive for changing of sample rate...
It has only one voice.. and other limitations... so I would like to try to do Arch version.

PS: Thanx 4 Lua MIDI Recorder.frag.zip - it is fun code. I think it can be combine witch script u send before (see upload Echoe) - I see there SCALING - I ve never see this in entire Lua textbook)) - and wonder why it does not scale under 1 (but you can upscale arp).
It would be cool if smth like this would work also for pitch...

PPS: Warning - BW project is still under construction..

PPPS: 6. 11. added BW arp (jamming with Phase) connected to scaler (Scaler6B) - so you can mess with linear pitch step and logarithmic change in note length in once... (as was mentioned above). :party:
Last edited by Obsolete485692 on Sat Nov 06, 2021 3:19 pm, edited 3 times in total.

Post

Hey Tom, almost! If this is possible, I’m definitely jumping in…

Say I have a bunch of sequences on various tracks in my DAW (Bitwig), all playing in one key, on one chord. Bass, piano and a melody for example. Could I setup one ‘master’ track - and play chords, and have an instance of architect on each of my other tracks which will follow the chord changes on my master track?

Post

ollie.rollover wrote: Sun Oct 31, 2021 9:40 am Say I have a bunch of sequences on various tracks in my DAW (Bitwig), all playing in one key, on one chord. Bass, piano and a melody for example. Could I setup one ‘master’ track - and play chords, and have an instance of architect on each of my other tracks which will follow the chord changes on my master track?
What you're describing is almost (or exactly) what I have in mind for Architect to do, but there are a few obstacles.

Architect needs to know what a chord is. The way it is now that midi notes are treated as individual events, so no notion of a series of notes as one chord. This is necessary because if you want midi notes coming from a DAW (or Architect itself) to transform to other keys and scales by providing a chord, a chord recognition is needed from that chord to determine what key and what scale it is. Of course you can use menu items to select a key and scale, but what's the fun of that? Real time input of a chord and hearing your sequences "somehow" following that chord is way more satisfying. Think of an arranger keyboard where you play styles with your left hand and a melody on the right. But instead of predefined styles you are in control what a style is, in other words your sequences.

The good news is I have a working prototype in Max (using Java extensively), the bad news is Architect is missing a crucial object ("chord detection object", but Colin is working on it) and the Java code must be rewritten to Lua, which I'm totally not familiar with. And I'm a beginner in Architect so that counts too...

Post

Thank you so much for that reply Bronswerk!

Post

(Trying to delete this post)
Last edited by ollie.rollover on Mon Nov 01, 2021 9:30 pm, edited 1 time in total.

Post

Another question… if I play some legato chords in real-time, could I create a rhythmic pattern that retriggers the notes (like a trance gate), but it would actually allow me to choose which voices/notes of the chords (from lowest to highest) to play on each step. Is that possible? 🙏

Post

ollie.rollover wrote: Mon Nov 01, 2021 9:23 pm Another question… if I play some legato chords in real-time, could I create a rhythmic pattern that retriggers the notes (like a trance gate), but it would actually allow me to choose which voices/notes of the chords (from lowest to highest) to play on each step. Is that possible? 🙏
I reckon the arpeggiator will do all that. You'll want to set the "Sort" to "Pitch" and "Mode" to "Up" (which are the defaults anyway) if you want to iterate through the notes in ascending pitch order. The numbers on the piano roll are semitones relative to the actual note: if you want to only use notes in the chord, just compose a pattern of 0s.

The pattern under the piano roll, ">1" etc specify how the arpeggiator steps through the notes in the chord. ">1" moves onto the next note in the specified order, "=" plays the same note as before. So I think something like this will do for you:

Image
Architect, the modular MIDI toolkit, beta now available for macOS, Windows, and Linux.

Post

Thanks Colin!

Post

i'm probably overlooking some incredibly simple solution, but i'm stuck and would appreciate help.

i have 2sorted arrays (A1 & A2) generated with a for function) and i want to join them in way that the new array (As) is sorted and with no duplicates.

since i couldn't find a module that orders an array i tried patching something and had limited success.

This is probably not the right term but i tried "interleaving" them by building the As array with push, pushing in the minimum of shift output of A1 and A2.
The array whose shifted element got pushed into As is truncated via shift function and the other one goes through to the next step unchanged.
Repeat until A1 or A2 are an empty array,join the As and the non-empty one of a1&a2.

this crude approach actually works but i messed something up with triggering and now i have to trigger it as many times as I have steps in order to get a correct result-which is rather annoying.

is there an easy fix or should i start over?

hope i'm making at least some sense, i've only just started my programming (if i can call it that) journey. If not, i'll try and explain in a better way.
You do not have the required permissions to view the files attached to this post.

Post

It's way above my head, so I can't really help. I must ask though : what are you trying to achieve here, as in musical ideas ?
Computer musician / Ableton Certified Trainer / Mastering engineer
.com
3OP

Post

nilhartman wrote: Thu Nov 04, 2021 10:20 am It's way above my head, so I can't really help. I must ask though : what are you trying to achieve here, as in musical ideas ?
it's very loosely based on the work of Xenakis, a revolutionary composer that has used algorithms to generate sets of numbers (arrays) that could be "translated" to either pitch or rhythm.
these algorithms generate very simple, ordered sets/arrays that are meant to be combined into more complex ones. The problem I'm having is related to sorting the combined arrays which is necessary as it makes working with pitch much easier(and more precise) and working with rhythms is impossible without it.

what i'm hoping to achieve is:
1. generate a set of numbers that represent midi data from which notes can be called from, following one of many random distributions (eg favor the low end, both extremes, "walk"-deviate by a small range of steps etc)
the pitch set can form a traditional scale by stopping at octave and repeating or it can create a pattern that repeats every x notes. 127 would be totally random across the whole range but 33 would create a set that basically has a different scale in two and a half octaves, then repeats the pattern starting from a fifth two octaves above the original starting point. but it can do normal scales too xD

2. generate a set of numbers that represent rhythm-i.e. when the notes are triggered following one of many rules. for instance:
-"real" note duration-a set of [0,4,7,10,14] would trigger on the corresponding note value so if you picked quarter notes you would get a four bar loop and receive a trigger on Xooo XooX ooXo ooXo
-fractional value of selected time- where you define a duration, lets say one and a half bar, and the set triggers at divisions of the selected time interval. there's no way to write this down as the results are quite irregular.

got more ideas, but they're not really fleshed out yet as i just started working on this 2 days ago.

if you're interested we can continue this elsewhere to not derail the topic.

edit: there is an unfavorably large chance of me being a fool and none of this will work

Post Reply

Return to “Loomer”