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

Thank you, nice catch!
just made a PR. many bugs…

1 Like

download enabled— sorry for the delay!

1 Like

no worries, thank you!

for everyone:
in case it got buried, the audio files are being collected for a bandcamp release alongside the scripts :slight_smile:

I’ve loved all the captures, but if folks missed this the first time around and want to adjust/touch-up anything in your recording, please PM me!

4 Likes

NC01-drone/chambers seems to be missing the samples that it calls for (bc.wav, dd.wav, and eb.wav)

Making my way through the rest of these slowly and am so thoroughly impressed by them!

all the scripts use the same samples, which are in lib, so maybe something else is up?

ah! yes, the softcut.buffer_read_mono(file,0,1,-1,1,1) line was being executed before the buffer was enabled – so if chambers was the first script loaded through a norns reboot, it wouldn’t populate the samples into the buffer.

thanks for the ping, fix pushed into the repo :slight_smile:

1 Like

This is so far my favorite script on Norns.
Replacing the sample with this is pretty incredible:

6 Likes

Nice!! Glad you liked it :slight_smile: I’m considering expanding it a bit, maybe some options for filters on each voice would be nice. It’s something I experimented with but removed to stick to the 3 parameter constraint.

3 Likes

Just found this - brilliant ! I’ve been wondering why fade ins never seemed to work for me.

Can I just check something - I’d like to be wrong in this, but am I right in thinking that one cannot crossfade within the same voice ? For example, it seems to me that on starting to play from a new position the playback from the previous position is cut off, it doesn’t fade out according to level_slew_time or fade_time.

I’d like to be wrong !

And also - why in the api doc -https://monome.org/norns/modules/softcut.html#fade_time - is the second parameter position and not time ? Typo or miscomprehension on my part.

Thanks,

Jem

fade_time works for me and always has, it’s a core feature of softcut. a crossfade is initiated by hitting a loop point or requesting a new position. each voice has two heads under the hood.

one edge case occurs if you request a position change while a crossfade is already underway. the position change will be queued and executed (with a new fade) when the present fade is complete. but this queue only has a depth of 1.

can you maybe post your code? and any other relevant stuff like how you’re populating buffers? (soundfile/live? what soundfile? &c)

Typo or miscomprehension on my part.

typo, should be time (seconds.) the fade shape is a raised cosine segment.

Thank you. I understand that without the crossfade one gets clicks and that even a small fade_time makes a smooth transition. That’s great. I think my problem was one of an expectation / miscomprehension which you explain is not possible.

For what it’s worth this is the code I was using to test it. I had hoped I could layer successive sections of different pitches using fade_time as an envelope. And hear both sections together, in harmony. But one runs into the edge case you point out.

--crossfade ?
--a new start point every 2 seconds
 --with these values
fadeTime = 2
length = 4
--you don't hear 2 seconds of both sections together at their respective pitches

function init()
  
  --file = _path.code .. "nc02-rs/lib/big_bowl_hit_2_G.aif"
  --soundfile is here https://www.dropbox.com/s/idwey5tx2wpj5vp/big_bowl_hit_2_G.aif?dl=0

  softcut.buffer_read_mono(file, 0, 0, -1, 1, 1)
  softcut.enable(1, 1)
  softcut.buffer(1, 1)
  softcut.loop(1, 0)
  softcut.loop_start(1, 0)
  softcut.loop_end(1, 3)
  softcut.position(1,1)
  softcut.rate(1, 1.0)
  softcut.level(1, 1.0)
  softcut.play(1, 1)
  softcut.fade_time(1,2)
  
  clock.run(xfade)
end

function xfade()
  while true do
    for i = 1,4 do
     softcut.position(1,i)
     softcut.loop_start(1,i)
     softcut.loop_end(1,i + length)
     softcut.rate(1,i*0.33 + 1)
     softcut.fade_time(1,fadeTime)
     --new start point every 2 seconds
     clock.sleep(2)
    end
  end
end
    
function enc(n,d)
  if n == 2 then
    fadeTime = util.clamp(fadeTime + d/10, 0.0, 10)
  else if n ==3 then
    length = util.clamp(length + d/10, 0.1, 6)
  end
 end
  print('fade time', fadeTime, 'length ', length)
end
    

i see… yeah to do something “polyphonic” you would need to leverage multiple softcut voices pointed at the same buffer. maybe the inner loop in xfade() could incremement the voice number.

the inner loop in xfade() could incremement the voice number

that would be great !