i’ve merged all of the pending contributions up until now!

a couple notes:

  • be sure your descriptions (at the top of the code, which are shown as the script preview with SELECT) are readable, ie, don’t flow past the edge of the screen
  • for your finished scripts, be sure there isn’t a ton of needless printing to maiden (ie, comment out your debugging lines)
  • this is a good chance for a team/group debug ahead of “final”— try running one anothers scripts and report any confusion/issues here or on github. @dan_derks and i will do a final pass to make sure everything looks good before we say it’s complete (tomorrow?)

and don’t forget your TAPE contribution!

(now off to finish mine, procrastinating as usual…)

7 Likes

I’ll post again here, even though I haven’t made any changes…

eclipse is a 4-voice granular drone generator.

I wish I had:
  • listened more to the audio files before building the script, and listened more while creating
  • made each voice more dynamic – shifting the position slightly over time or somehow adding more variation
  • implemented params (next script for sure)
  • made filter frequency log instead of linear, to make the jumps between each position less dramatic

Also, my implementation of the softcut positioning isn’t perfect so occasionally the read head moves onto the next section of tape, picking up a snippet of the adjacent audio. I actually like it with these files, but if I was going to actually release this I’d probably fix it.

While my example track is not a very good piece of music, I’ve invited my friend to perform with it and he loves it. He actually goes haywire and plays it really fast and wild, which is not really in line with the prompt but sounds fantastic.

Thanks all! I’m in awe of all of you and your creations!
[edit: recorded a different demo track and enabled download! @dan_derks]

11 Likes

(script submitted, late late late)

this is only one of the three worlds (jumping between them can be a bit jarring)

notes
  • three loops, transposed variously, varied lengths and regions
  • density slowly adds/subtracts the second and third voices
  • brightness is a sort of filter tilt, low/high
  • evolve world 1, reverse rate voice 2
  • evolve world 2, slightly move the loop points
  • evolve world 3, cross-pan voice 1,2 and octave slide voice 3

i will find time to take a cleanup pass on the code, add comments :stuck_out_tongue:

11 Likes

this sounds so good :pleading_face:

@tehn I’m hoping once it’s over you can tell us about these dang samplesssss

4 Likes

@tehn I feel personally attacked. :stuck_out_tongue: In all seriousness my entry has not received the attention it deserved. PR submitted.

@andrew I’ve also submitted a PR to fix the graphics bug (well I hope its a bug?) in your script, and I found a better way to solve it in the process.

For reference, if you are drawing lines, curves or arcs, after drawing text, the following code will start a new (sub?) path, removing the extra unwanted line. Is this a bug with text rendering?

screen.move(0,0)
screen.stroke()
2 Likes

Hi, everybody!

I’ve just sat and gone through everybody’s scripts. I loved everything. I mainly loved how different everybody’s approaches were - to sounds, to visuals, to interpreting ‘drones’. And I’m going to spend longer digging into them tonight, after work.

Listening to them all made me want to return to the brief and start again on a different tack, or, at the very least, next time force myself to engage with softcut a little more deeply. I still might take another crack in my own time at making a very different instrument out of the same constraints.

I think my main takeaway is that an instrument can be built out of a deliberate fragment of a sample, curated, rather than just assuming the whole sample as the working surface.

I will stare at all your source code in due course.

9 Likes

one other quick thing:

I made a quick branch where I just tidied everybody’s header comments so they’d wrap correctly on a norns screen. I feel bad submitting this willy-nilly, so would rather people said “sure that is fine” than me just forcing a merge?

Also I added @andrew’s name to wrlds, because I didn’t realise it was his. I hope that was OK too.

6 Likes

Oops. I didn’t think about the comments appearing on the screen -they are more commentary on the code. So thank you

couldn’t manage it before the deadline but here is a thing

notes

this experiment considers a few things:

  • sequencing via rational number combinations
  • using softcut’s subsample loop points as tuned resonators
  • exploring softcut’s overdubbing edge cases as rhythm generators
  • trying out metaparameter mappings (rough, but some potential there)
  • dumb afterthought graphics, sorry

all six voices are used, in a triple stereo pair configuration.

there are many library files involved. mostly i just use these to manage logical chunks - globals are abused, there’s no attempt at clean architecture, and the chunks aren’t meant for reuse. but util contains a table-mapping function i found useful, and gcd contains GCD and LCM implementations ripped straight from the public domain, which are often useful in algorithmic music.

lib/vorpal/worlds.lua contains some data for each piece, like tonic frequency, and main harmonic components as ptolemaic JI intervals. these same ratios are used to generate the timing characteristics of the sequences, and the frequencies ultimately generate loop durations.

sequences are simple soft timers based on a common tick. this tick speed is exposed as a parameter in “beats per second.” ([shrug]). now that i’m thinking of it, it would have been nicer to derive the tick time from the fundamental frequencies as the loop times are done. (a parameterized sub-harmonic basically.) maybe in a revision…

enc1 controls feedback between and across stereo pairs. this is destructive of the audio buffer; you can’t go back to where you were.

enc2 controls filter and pan characterisics together.

enc3 controls “density” in the form of loop lengths.

k2 changes pitches unpredictably and is also destructive in a sense (no way back to original pitch for many, many iterations.)

k3 advances worlds.

here are a couple very raw tapes. selecting them felt arbitrary and of course the best moments i had with the script were ephemeral.

http://catfact.net/snd/nc01-drone/0010.wav
http://catfact.net/snd/nc01-drone/0012.wav


and, oh yeah! what a stunning collection of things you all have made up there.

7 Likes

looks like we landed 11 scripts!! i’m super excited to give them all a listen, thank you all for participating.

let’s give these scripts a day to settle (ie, get corrected/cleaned where needed) and i’ll aim for a “release” announcement within a day or two.

@infovore i’d be good to have your minor edit branch merged— comment cleanup is a pretty trivial (but helpful!) change. thanks for reviewing!

7 Likes

Drats! I was unable to pull it together this time, but hopefully this wont be the last norns circle :slight_smile:

I am looking forward to visiting all these worlds!

4 Likes

i’ll check it out

i did not attempt to fix the extra line , because it made the last two graphics feel like tiny kites , which i liked ,

(these whole graphics are essentially a bug lol)

4 Likes

couldn’t implement my ideas as planned but definitely learned some things from tehn’s script while hacking a bit

don’t know if it’s even worth sharing but i got it sounding kinda how i want despite the time crunch

was not feeling well yesterday and spent 11pm to midnight tweaking settings and recording this take (shifted from world 3 to 2)


have to say
ALL of the scripts yall made are inspiring and educational

still perusing them right now

4 Likes

Was still working on first world about 7pm last night before calling it a day—that was pretty tough!
But, I got to wrap my head around the concept of tables/arrays quite a bit, which had intimidated my brain for years and that feels like a big win. Thanks for the help all of you, excited to scroll through ur gits

7 Likes

Graphics, code pages to read, a lot of headphones-spacetime-holes…
This is just too Much.Thank you.

3 Likes

norns/circle will happen every other month as long as there’s interest. the prompt and focus will change for each iteration, with suggestions towards new areas to learn and explore.

i’m working now to get the sounds collated and scripts checked— expect the release announcement by the end of the week!

18 Likes

I missed this - wasn’t hanging out here much at the time. I haven’t dug into the submissions yet, but this is a really, really cool idea. I hope to participate in the next one.

1 Like

doing a final pass on scripts – god damn these are all gorgeous. I love how so many of these feel like playing a video game!! super blown away by the depth everyone brought to the simple controls, as well.

some ticky-tack things:

  • @JaggedNZ: I pushed a minor edit on nimbea to point to the bundled lib rather than your local copy (line 288). also, totally gasped when world 2 loaded sound + visual.
  • @2994898: I’m able to nil voiceLoopPoints[index][1] after doing a K2 hold + then hitting K3 again. this sorta sets off a chain reaction of errors. I really love the K2 idea and hope it can be preserved – want to take a look?
  • @andrew: I was able to set some .99999999999999996's, which covered up your dope graphics! would you want to string.format("%.2f",__) any of your on-screen controls?

excellent scripts and artifacts all around!!

4 Likes

audio roundup! need download links from:

1 Like

Thanks for catching that, I really need to figure out how to use relative and/or norns system paths in lua.

totally gasped when world 2 loaded sound + visual.

The sound reminded me of Buddhist prayer wheels and bells in Siliguri, but the temple/castle is defiantly of Japanese inspiration. I wish I had the time to bring the other two worlds to the same level of polish, but my limited spare time has been poured into midigrid rewrite. The first world was going to be mesa’s and the third would have stars orbiting the “incal”.

Totally geeking out here, the rain was originally just straight lines and the droplets are actually an artefact of Cario’s anti-aliasing that I discovered accidentally. I also had lots of issue’s with banding on my screen before I got everything at the right levels, it really reminds me of developing on a 386 laptop, but with a few modern conveniences.

BTW if anyone runs this on an amber or green display I’d love to see photos of world 2 & 3 :slight_smile:

4 Likes