Architect: Does anyone have a * macro/script

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

Post

MIDI Discombobulator UPDATE:

Some improvements, some quirks that need ironed out.

Enjoy
You do not have the required permissions to view the files attached to this post.

Post

cturner wrote: Mon Feb 11, 2019 4:31 pm Not elaborately tested, but seems to work a treat on the u-he synths that support 14bit CCs.
Hi Charles, for the 14 bit shouldn't be 16384 (or [0-16383])?

Post

mannymang wrote: Mon Feb 11, 2019 8:09 pm MIDI Discombobulator UPDATE:

Some improvements, some quirks that need ironed out.

Enjoy
Nice, time to discombobulate again :)

Post

AZZIN wrote: Mon Feb 11, 2019 8:49 pm
mannymang wrote: Mon Feb 11, 2019 8:09 pm MIDI Discombobulator UPDATE:

Some improvements, some quirks that need ironed out.

Enjoy
Nice, time to discombobulate again :)
Thanks Albert! Enjoy :)

Post

AZZIN wrote: Mon Feb 11, 2019 8:48 pmfor the 14 bit shouldn't be 16384 (or [0-16383])?
Hi AZZIN- Are you referring to the bitwise AND with 13256? If you are, there you need to mask both high and low bits (looking at just the lowest 16bits of the full 64 here):

0011111110000000

Converted to decimal, that should be 13256. You then right shift to get the bit value into a 0-7 bits or 0-127 decimal range.

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

Post

cturner wrote: Mon Feb 11, 2019 4:31 pm I haven't heard much talk recently about automation in Architect, but here's a first bit of a larger thing I'll post eventually: the processing required to convert a 14bit value into it's respective 7bit MSB/LSB CC message streams:

DL: http://vze26m98.net/loomer/cc_14bit-190 ... 90211.frag

Image

Not elaborately tested, but seems to work a treat on the u-he synths that support 14bit CCs.
Great!
I just recently speculated how to do that in Architect... :tu:

Cheers,

Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
Sculptures ScreenDream Mastodon

Post

ThomasHelzle wrote: Tue Feb 12, 2019 2:56 pmI just recently speculated how to do that in Architect...
I'm in the process of adding an LFO to it, but it won't be a conventional one.
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

I experimented with a simple sine interference pattern today and came up with this fragment:

"Toms Interferences"

TomsInterferences.jpg
The first five dials set the speed of the individual sine curves and the Master Speed dial then scales them all together - These can't be automated or changed live since the sines aren't position independent so changing values creates a plethora of notes... :oops:

The two sliders below set the range of the generated notes.
The line in between visualises the movement of the interference curve so it's easier to understand what happens.
The keyboard shows the generated notes

The first Midi output delivers a constant stream of Notes that follow the interference curve (CH 1).
The second Midi output sends a Midi note each time the interference curve changes direction (CH 2).

I recommend combining it with my Midi Mangler and dropping about half the notes of the first stream with the Note Probability, then I find it rather pleasant to listen to... :-)
Especially with two different instruments on Midi Channel 1 and 2.
There is an example Preset included too.
Loomer-Architect-master.zip
Enjoy,

Tom
You do not have the required permissions to view the files attached to this post.
Last edited by ThomasHelzle on Tue Oct 22, 2019 1:43 pm, edited 1 time in total.
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
Sculptures ScreenDream Mastodon

Post

cturner wrote: Tue Feb 12, 2019 6:08 pmI'm in the process of adding an LFO to it, but it won't be a conventional one.
Image
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

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

Post

I should be able to post the finished preset by the end of the week:

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

Post

EDIT: There's an update here:

viewtopic.php?p=7328046#p7328046

although both this code and discussion are still valuable.

. . . . . . . . . . . . . . . . .

Okay, here we go. Download the preset here:

http://vze26m98.net/loomer/Wigout-19021 ... 190210.zip

Here's an MP3 sample:

http://vze26m98.net/loomer/Wigout-19021 ... 190220.mp3

Wigout is two things: first, code to run 14bit CCs at 960 PPQN, and an LFO powering that code. The LFO is based on Arun Chandra's synthesis technique he developed for Wigout, which you can read about here:

https://sites.evergreen.edu/arunchandra ... triktraks/

Most likely, if you don't understand the synthesis method, you're going to be in trouble using this.

I'll describe less than I usually do here, but hope you'll ask questions, which I'm very happy to answer.

The UI for control of the Wigout LFO is in the Chandra [Lua script] object:

Image

The LFO implements one Wigout "segment", a "slant ciggle". The commentary above the data definition explains things peculiar to my implementation--that is--beyond what's explained in Chandra's essay linked above. Generally:

. There's no hand-holding, so you can enter bad numeric combinations.
. "dur" deals with time, "bamp" and "pamp" deal with pitch, "ploc" positions the wave peaks.
. For all dimensions, "inc" must always be positive.
. "bamp" values must be positive because you can't have negative time durations.
. "bamp" and "pamp" can be bi-polar and contain negative minima.
. But remember that 14bit CCs are uni-polar, and conversion takes place outside this script.
. "ploc" is a decimal representation of a percentage, so it should be all positive values too.
. It's not required, but consider that values should be multiples of "inc".
. "event" "endtime" is just below "segment". It sets the number of ticks in the loop.

More or less, enter appropriate values in the "segement" and "event" definitions, run the Lua script which pre-computes a long array, and away you go!

There are some user interface things:

Image

The rotary knob is a "twiddle knob" useful for getting your synth to "learn" the 14bit CC. It's currently Breath Control (2/34), but you can change it to whatever.

The [numeric table] is a view into what you've pre-computed via the script. It's bi-polar. It's also only 1024 values long maximum, which can be woefully small for this application. There are some data-entry boxes on the Graph that help a bit, but :-(. The "MaxVal", "Min Val" number boxes output those values for the array you've created, and it's useful to know whether you've exceeded (or are under-utilizing) the range of the CC.

The Graph looks like this:

Image

The black areas enclose UI Panel-related stuff. The two [data] objects, above the [slice] object in the upper left, set the beginning and ending points of the [numeric table]. Using negative offsets is helpful when trying to view the end of a long array.

The cyan area at bottom is the processing for the CC-specific aspects of the preset. The [data] objects containing 2 and 34 can be changed to address any other 14bit MIDI CC.

The purple area is the "clock" for looping over the CC array. The [data 7] and [nth tick] objects slow things down to every 7th tick, but you could connect [branch] directly to [latch] to get a full 960 PPQN resolution. Alternatively, you could put a [metronome] object there to slow things down a whole lot.

The yellow is the key area of the Wigout preset. The [Pre-compute] signal object runs the Lua script. I had it run on setup, but there's an order-of-execution problem with the [numeric table] which causes the script to fail. So double-click [Pre-compute] to fill the memory of [get element] before you engage your DAW transport. (I realize that I could use a [data order] object here, but I'm a purist snob.) The Lua script also reports its length to [modulo] in the purple area, which is what sets the length of the loop. The [data 8192] and [+] objects scale the bi-polar data to uni-polar for output. You could certainly change things to make a uni-polar only version of this preset.

Consider also you might like a version with the "slant" computation ripped out. And taking out the sinecurve() function call in the Lua script will change things from ciggle to twiggle.

Use the code as you please, and enjoy!
Last edited by cturner on Wed Feb 27, 2019 4:24 pm, edited 1 time in total.
Tranzistow Tutorials: http://vze26m98.net/tranzistow/
Xenakis in America: http://oneblockavenue.net

Post

Cool stuff Charles!

Post

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

Post

I'm not really happy with Wigout's visualization via [numeric table]. I added the [slice] object at a late date to gain views into waveforms larger than [numeric table]'s native 1024. But [slice] balks at arrays that are either larger or smaller than 1024 and stops computation, where [numeric table] will alert, or silently accept smaller arrays. I'll try to come up with something better soon-ish. For now, the use of negative indices at the "begin" inlet will give you the least frustration.

I thought also I should produce some "basic" waveforms as a guide to saner results with Wigout. Note that the segment values are all multiples of one another. Here they are:

Basic Bamp
Image
Image

Pamp is effectively "zeroed out" here, and as a result, ploc is also not used. Because "slanted bamps" ramp up from the previous value, bamp.beg must be 8160 to ramp from 0 to max in the first increment.

Also in all segments, you want an incr of 1 or more: no zero or negative increments!

Basic Pamp
Image
Image

Keep in mind the "geometric" differences between bamp and pamp, even though they both can take either positive or negative values. Bamp is a "slant", so you need four bamps to traverse a full wave cycle. Pamp on the other hand describes 1/2 of a wave cycle, which is why the incr is twice the peak value, or in other words, the distance between max and min.

Basic Ploc
Image
Image

This is basically the definition above, but ploc is set to place the peak of the sine curve at 10% from the start of the increment.

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

Post Reply

Return to “Loomer”