An exploration of Just Friends' Geode The article provides a technical overview of the "Geode" mode for the Just Friends Eurorack module, explaining how different modes (cycle, sustain, transient) control rhythmic relations and envelope levels through RUN voltage and other parameters. It includes Lua scripting examples for the Norns platform, demonstrating how to initialize Geode mode, trigger notes with specific divisions and repeats, and dynamically adjust rhythmic patterns using functions like `j.tick()`, `j.play_note()`, and `j.play_voice()`. gistfile1.txt This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters --- An exploration of Just Friends' Geode -- from maps with trent: https://www.youtube.com/watch?v=fMzM4omsIg8&ab channel=Trent -- Just Type reference: https://github.com/whimsicalraps/Just-Friends/blob/main/Just-Type.md -- mode sets rhythmic relations: -- cycle: rhythmic undulation to the envelope level -- The rhythm is generated similarly to transient, -- however the variation is applied continuously -- rather than in single steps of beats . -- Applying RUN voltage emphasizes every 2nd then 3rd then 4th event, -- however all the in-between beats are available too. -- Subtle CV shifts allow for a variation of groove -- with nothing but volume manipulation. -- Negative RUN levels emphasize every fraction of a beat. -- Works extra well with quantize active. -- sustain: -- The first envelope is full volume and each one thereafter -- will decrease in level. -- By adding a RUN voltage the rate of decay can be modified. -- TIME & INTONE set a base envelope rate, divisions sets the -- rhythm of notes, and RUN sets the amplitude cycle -- relative to repeats. -- transient: -- Each output has the same level -- RUN voltages will introduce a rhythmic variation every n repeats. -- The TIME & INTONE controls maintain their standard free-running influence, -- speeding up and slowing down envelopes, -- while the rhythms are controlled remotely. -- ii.jf.play note divs, repeats -- Play a sequence, dynamically allocated to a channel -- ii.jf.play voice channel, divs, repeats -- Play a sequence on a specific channel -- min divs is 1 -- sending repeats a negative number has it repeat infinitely -- ii.jf.tick divs -- Clock Geode with a stream of ticks at divs per measure -- ii.jf.tick bpm -- Set timebase for Geode with a static bpm -- ii.jf.quantize divisions -- Quantize Geode events to divisions of the timebase j = ii.jf -- alias to address just friends with just j function init j.mode 2 -- set jf to geode mode input 1 { mode = 'change', direction = 'rising' -- rising, falling, both are the options } end counter = 0 divs = 1 direction = 1 input 1 .change = function count j.tick 8 --note 4, 3 --note 6, 3 --note 12,3 --note 12,7 counter = counter + 1 if divs < 16 and counter 4 or divs 15 and counter 2 then counter = 0 if divs%2 == 0 then note divs/2, divs 2 else note divs, divs end divs = divs + direction print counter,divs if divs == 32 then --divs = 1 direction = -1 elseif divs == 1 then direction = 1 end end end function voice chan, divs, repeats j.play voice chan, divs, repeats end function note divs, repeats j.play note divs, repeats end