Islands 0.1.3

Islands

Multi-timbral FM7, Earthsea, Kria , Softcut platform

I conceived of Islands before I bought my Norns. It has been increasingly apparent to me that my music practice is one of improvisation and the goal is to be able to sit down and play my electronics from scratch, without excessive programming and preparation, just as a guitarist or saxophone player might. To do that I need a flexible instrument that I an learn thoroughly and encompasses the various techniques I use. Islands is a step on the way to that.

The video above provides a guide to it. There are 4 separate layers of sound with an Earthsea style grid keyboard, there are two softcut loopers and Kria is integrated with each channel currently routed to a different layer.

I’ve called this version 0.1 because there are a number of things I want to change/add.

Rough roadmap: improved FM engine - adding LFOs, Proper Noise, a Filter, Multistage looping envelopes. Need to move the loopers into supercollider (unfortunately since softcut is ace) because I want to be able to loop while the sequencer is playing and for its notes not to be routed into the looper. Synchronisation of loops with sequencer, mixer, effects, Midi out, Possibly MPE (dunno), Crow support

[edit forgot credits: borrows from code by @lazzarello, @tehn, @Justmat @markeats & almost certainly others…Standing on the shoulders of giants]

Updates

0.1.1 - fixed a couple of things that were irritating me: frequency ratio now goes up to 10 as per original DX7 and there are envelope curves (-10 is very exponential, 10 is very log - basically you can get super snappy percussive envelopes now - the sloppiness of them was what annoyed me)
0.1.2 - Kria saving update - added in the saving update from Kria Midi
0.1.2a - Fixed an odd race condition that caused a failed start when loading Islands
0.1.2b - Fixed a couple of Kria bugs on the pattern pages
0.1.2c - removed ratcheting for the moment, fiddling with the clock.
0.1.2d - ratcheting, timing and repeat notes all working as expected
0.1.3 - added: saving of current layer patches, midi layer destination, support for new parameters

Requirements

grid, MIDI (optional)

Documentation

see the video for now

Download

v0.1.0 https://github.com/junklight/islands/archive/master.zip

(I’ve submitted a PR to add it to the library)

NOTE: be warned the code is messy since I’ve changed direction as I wrote it - I’ll do a big refactor at some point but want to use it in anger and see how it works before doing that

50 Likes

This one is super exciting, I can’t wait to play with it. Been wanting FM with a full ES keyboard, and furthermore a comfy environment to sketch out ideas with multiple parts.
Dreaming about a drum kit synth in tandem with this (if it doesn’t convolute)

Some kind of percussion synth is definitely part of my plan - either by adding features to the fm engine or as an additional engine

3 Likes

Getting error: load fail when I try to load islands. I did a reset on Norns. Do I need to delete a duplicate engine somewhere?

1 Like

@prnts - my mistake

I renamed it with a lower case I since all the others were lower case - and didn’t update the includes!

update and try again

Im currently only able to manage through my norns hotspot since im in a hotel that has a locked down wifi. I added islands via forklift to the dust/code folder

	/home/we/norns/lua/core/menu.lua:140: in function </home/we/norns/lua/core/menu.lua:117>
# script clear
# script load: /home/we/dust/code/islands/islands.lua
# cleanup
# script clear
# script load: /home/we/dust/code/islands/islands.lua
# cleanup
# script clear
### SCRIPT ERROR: load fail
### SCRIPT ERROR: load fail
/home/we/dust/code/islands/islands.lua:12: module 'Islands/lib/islandsparams' not found:
	no field package.preload['Islands/lib/islandsparams']
	no file '/home/we/norns/lua/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/core/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/core/params/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/lib/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/softcut/Islands/lib/islandsparams.lua'
	no file '/home/we/dust/code/Islands/lib/islandsparams.lua'
	no file '/usr/local/share/lua/5.3/Islands/lib/islandsparams.lua'
	no file '/usr/local/share/lua/5.3/Islands/lib/islandsparams/init.lua'
	no file '/usr/local/lib/lua/5.3/Islands/lib/islandsparams.lua'
	no file '/usr/local/lib/lua/5.3/Islands/lib/islandsparams/init.lua'
	no file '/usr/share/lua/5.3/Islands/lib/islandsparams.lua'
	no file '/usr/share/lua/5.3/Islands/lib/islandsparams/init.lua'
	no file './Islands/lib/islandsparams.lua'
	no file './Islands/lib/islandsparams/init.lua'
	no file '/usr/local/lib/lua/5.3/Islands/lib/islandsparams.so'
	no file '/usr/lib/arm-linux-gnueabihf/lua/5.3/Islands/lib/islandsparams.so'
	no file '/usr/lib/lua/5.3/Islands/lib/islandsparams.so'
	no file '/usr/local/lib/lua/5.3/loadall.so'
	no file './Islands/lib/islandsparams.so'
stack traceback:
	/home/we/norns/lua/core/norns.lua:126: in function </home/we/norns/lua/core/norns.lua:126>
	[C]: in function 'require'
	/home/we/dust/code/islands/islands.lua:12: in main chunk
	[C]: in function 'dofile'
	/home/we/norns/lua/core/script.lua:159: in function </home/we/norns/lua/core/script.lua:159>
	[C]: in function 'xpcall'
	/home/we/norns/lua/core/norns.lua:127: in field 'try'
	/home/we/norns/lua/core/script.lua:159: in function 'core/script.load'
	/home/we/norns/lua/core/menu/preview.lua:21: in function 'core/menu/preview.key'
	/home/we/norns/lua/core/menu.lua:140: in function </home/we/norns/lua/core/menu.lua:117>
/home/we/dust/code/islands/islands.lua:12: module 'Islands/lib/islandsparams' not found:
	no field package.preload['Islands/lib/islandsparams']
	no file '/home/we/norns/lua/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/core/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/core/params/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/lib/Islands/lib/islandsparams.lua'
	no file '/home/we/norns/lua/softcut/Islands/lib/islandsparams.lua'
	no file '/home/we/dust/code/Islands/lib/islandsparams.lua'
	no file '/usr/local/share/lua/5.3/Islands/lib/islandsparams.lua'
	no file '/usr/local/share/lua/5.3/Islands/lib/islandsparams/init.lua'
	no file '/usr/local/lib/lua/5.3/Islands/lib/islandsparams.lua'
	no file '/usr/local/lib/lua/5.3/Islands/lib/islandsparams/init.lua'
	no file '/usr/share/lua/5.3/Islands/lib/islandsparams.lua'
	no file '/usr/share/lua/5.3/Islands/lib/islandsparams/init.lua'
	no file './Islands/lib/islandsparams.lua'
	no file './Islands/lib/islandsparams/init.lua'
	no file '/usr/local/lib/lua/5.3/Islands/lib/islandsparams.so'
	no file '/usr/lib/arm-linux-gnueabihf/lua/5.3/Islands/lib/islandsparams.so'
	no file '/usr/lib/lua/5.3/Islands/lib/islandsparams.so'
	no file '/usr/local/lib/lua/5.3/loadall.so'
	no file './Islands/lib/islandsparams.so'
stack traceback:
	/home/we/norns/lua/core/norns.lua:126: in function </home/we/norns/lua/core/norns.lua:126>
	[C]: in function 'require'
	/home/we/dust/code/islands/islands.lua:12: in main chunk
	[C]: in function 'dofile'
	/home/we/norns/lua/core/script.lua:159: in function </home/we/norns/lua/core/script.lua:159>
	[C]: in function 'xpcall'
	/home/we/norns/lua/core/norns.lua:127: in field 'try'
	/home/we/norns/lua/core/script.lua:159: in function 'core/script.load'
	/home/we/norns/lua/core/menu/preview.lua:21: in function 'core/menu/preview.key'
	/home/we/norns/lua/core/menu.lua:140: in function </home/we/norns/lua/core/menu.lua:117>
1 Like

see above - should be fixed now

(oh and sorry if you are having to wrestled hotel wifi for downloads :frowning: hope it’s not too much pain)

Its loading now thank you! Always look forward to playing with your creations. Yeah I tried setting a hotspot off my phone but norns is not seeing it for whatever reason.

1 Like

Just a heads up in case anyone else runs into an issue on this line

local scales = require 'kria_midi/lib/scales'

I resolved it by installing kria_midi and resetting. Seems like it’s a dependency at this point. Unless I’m missing something?

2 Likes

Ugh. Missed that. I’ll update it now

(Thank you for spotting it)

updated in the repo

1 Like

Thanks for fixing so quickly!

I’ve been jamming for about 15 minutes now and am having a great time, can’t wait to see where Islands goes.

Thank you for sharing it with us :slight_smile:

2 Likes

Downloaded this today, but cannot seem to get it to load. Stalls on “loading…”.

hmm.

You downloaded it from GitHub or librarian?

Do you have anything earlier versions from when I had Kria_midi in a different repo?

if you can connect via maiden you can see a more detailed error message - can you post that

Via the librarian/project manager in Maiden. Not sure of the answer to the second Q.

Maiden log:

Summary

1

matron

sc

script load: /home/we/dust/code/islands/islands.lua

cleanup

script clear

pset >> write: /home/we/dust/data/system.pset

script run

loading engine: MT7

lua:

/home/we/dust/code/cheat_codes/cheat_codes.lua:1331: attempt to call a nil value (global ‘grid_redraw’)

stack traceback:

/home/we/dust/code/cheat_codes/cheat_codes.lua:1331: in field ‘event’

/home/we/norns/lua/core/metro.lua:169: in function </home/we/norns/lua/core/metro.lua:166>

lua:

/home/we/dust/code/cheat_codes/cheat_codes.lua:1331: attempt to call a nil value (global ‘grid_redraw’)

stack traceback:

/home/we/dust/code/cheat_codes/cheat_codes.lua:1331: in field ‘event’

/home/we/norns/lua/core/metro.lua:169: in function </home/we/norns/lua/core/metro.lua:166>

That’s from a wake from sleep with Cheat Codes (again the most recent version) running prior to sleep.

so don’t know - that error is from cheat codes - anything from islands?

OK, so restarted, switched to Glut, saved, sleep. Restart, and it works. So might be something to do with the updates to Cheat Codes. I’ll drop a comment and the log over in that thread.

2 Likes

OMG YEA! YOU DID IT!

This is a perfect corona brain remedy!

Thanks much.

update watched the video. We has one of the same ideas independently. The editor screen is something I started a while back in a branch but never merged since it dramatically changed the UI.

Let’s sync up the engine changes you made and I can work on improving the engine to be more like a DX7.

3 Likes

made a small update - frequency ratios now go to 10 as per original DX and I added exp/log curves on the envelopes so you can get snappy percussive envelopes. The envelopes were very sloppy to my ear before.

(note too - this is a supercollider update in part so will need a restart)

2 Likes

Tying FM7 synth to Kria is really great idea. It’s the main sequencer I use the most, so I’m very familiar with it. Having a Earthsea on top is the icing on the cake. Really enjoying it. The FM7 has rarely been used other than as a standalone and it has the widest variety of tones when programmed.

Some quick questions - For playing 4 tracks, are the FM synths totally independent? or is there note stealing going on if 4 notes from 4 tracks are played together? Is it possible to save Kria patterns somewhere because I am reluctant to finish and dig deeper into Kria without losing sequences on power down.

3 Likes

Just want to say that this script is giving me needed life rn! Your guiding idea and purpose are really in line with what I want for myself… and yet it is totally different from what I have been imagining! <3

7 Likes