Abacus

Hell yeeeeah! Looks promising! :smiley: :clap:

1 Like

Both options have their benefits.

An option for entire sample OR splice id would be amazing.
Kinda like a free run or lock to splice but this would mean only one gate option so Im thinking gate on = starts playing at position and continue playing until end of entire sample.

If only one is possible then I may lean more towards splice id and loop.

@mattlowery What did you have in mind?

1 Like

i can easily do both options :slight_smile:

1 Like

@cosmicsoundexplorer @mattlowery added crow support!

the parameters for modding it are in global parameters. lmk if it doesn’t make sense, or especially if it doesn’t work. i tested it out by running the functions through maiden because i don’t have crow, but i think it should work!

2 Likes

I think it would be freakin awesome to have all the ABCDEF… samples on the grid : O

2 Likes

I think it would be unfair for me to submit an opinion yet- I haven’t had time to try this app out. But I will soon, and will certainly let you know my thoughts!

1 Like

hi , like the look of this what is the process for loading samples? I tried dropping a wav in to the Sound folder within the Abacus code folder, but doesn’t seem to be showing up?

@infinitedigits
well…rough start on this one for the first go at it. :stuck_out_tongue:
Abacus opened with a blank slate.
norns crashed/froze the moment i tried to go to the SAVE/LOAD menu in Parameters.

luckily i had WiFi on!
when i opened maiden it was spewing all this over and over:

Summary

?

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua: /home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua: /home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua: /home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua: /home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

lua:

/home/we/norns/lua/core/screen.lua:231: bad argument #1 to ‘screen_text_extents’ (string expected, got nil)

stack traceback:

[C]: in field ‘screen_text_extents’

/home/we/norns/lua/core/screen.lua:231: in field ‘screen_text_right’

/home/we/norns/lua/core/screen.lua:166: in function ‘core/screen.text_right’

/home/we/norns/lua/core/menu/params.lua:438: in function ‘core/menu/params.redraw’

/home/we/norns/lua/core/menu/params.lua:614: in field ‘event’

/home/we/norns/lua/core/metro.lua:165: in function </home/we/norns/lua/core/metro.lua:162>

i just grabbed a section so i don’t know if this helps!
also…
sent a ;RESTART from maiden and when norns started back up Abacus launched and it has the Amen Break sample loaded.

seems to be happy now. :slight_smile:
tried loading other noiz and it’s a werkin’!

just in case…
this is what maiden displayed after it started back up and was working:

Summary

arc added: 3 monome arc m1001113 m1001113

norns.startup_status.ok

last file loaded: /home/we/dust/code/abacus/abacus.lua

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

cleanup

script clear

including /home/we/dust/code/abacus//lib/json.lua

script run

reading PMAP /home/we/dust/data/abacus/abacus.pmap

m.read: /home/we/dust/data/abacus/abacus.pmap not read.

network connections:


1 DEATHNOTE

available engines (41):

Glut

Sway

Showers

Rudiments

Warb

Shepard

Grendy

Fiahod

SimpleDelay

Sines

Pixelbangs

Greyhole

Ack

Delayyyyyyyy

Phyllis

MGlut

Decimatec

Dronecaster

MollyThePoly

Decimator

R

PolyPerc

Hachi

YggdrasilSynth

Benjolis

Timber

Downtown

Kolor

Passersby

Pools

Timber_Takt

Blippoo

Stack

SCgazer

Manifold

PrimitiveString

BandSaw

None

HereThere

Haven

Lissadron

Engine.register_commands; count: 0

___ engine commands ___

___ polls ___

amp_in_l

amp_in_r

amp_out_l

amp_out_r

cpu_avg

cpu_peak

pitch_in_l

pitch_in_r

script init

Amen-break

chosen_file /home/we/dust/data/abacus/Amen-break.wav

previous_chosen_file /home/we/dust/data/abacus/Amen-break.wav.json

previous_files:

Amen-break

loading /home/we/dust/data/abacus/play.json

file (0x3db1a8)

loading /home/we/dust/data/abacus/Amen-break.wav

loaded /home/we/dust/data/abacus/Amen-break.wav sr=44100, duration=6.4043958333333

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

metro_stop(): pthread_cancel() failed; error: specified thread does not exist

metro_stop(): pthread_cancel() failed; error: specified thread does not exist

script clear

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

cleanup

script clear

including /home/we/dust/code/abacus/lib/json.lua

script run

reading PMAP /home/we/dust/data/abacus/abacus.pmap

m.read: /home/we/dust/data/abacus/abacus.pmap not read.

Engine.register_commands; count: 0

___ engine commands ___

___ polls ___

amp_in_l

amp_in_r

amp_out_l

amp_out_r

cpu_avg

cpu_peak

pitch_in_l

pitch_in_r

script init

Amen-break

chosen_file /home/we/dust/data/abacus/Amen-break.wav

previous_chosen_file /home/we/dust/data/abacus/Amen-break.wav.json

previous_files:

Amen-break

loading /home/we/dust/data/abacus/play.json

file (0x4c40c0)

loading /home/we/dust/data/abacus/Amen-break.wav

loaded /home/we/dust/data/abacus/Amen-break.wav sr=44100, duration=6.4043958333333

loading /home/we/dust/data/abacus/Amen-break.wav

loaded /home/we/dust/data/abacus/Amen-break.wav sr=44100, duration=6.4043958333333

loading /home/we/dust/audio/tape/sam0006.wav

loaded /home/we/dust/audio/tape/sam0006.wav sr=48000, duration=28.7

zooming to 0,0

zooming to 0.1722,4.018

loading /home/we/dust/data/abacus/Amen-break.wav

loaded /home/we/dust/data/abacus/Amen-break.wav sr=44100, duration=6.4043958333333

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

zooming to 0,0.14340467791669

zooming to 0.24336704166667,0.35506383441661

zooming to 0.24336704166667,0.35506383441661

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

zooming to 1.0759385,1.898527158

zooming to 1.1207692708333,1.667968908

zooming to 1.1207692708333,1.667968908

saving to /home/we/dust/data/abacus/play.json

saving to /home/we/dust/data/abacus/Amen-break.wav.json

oop…ran into another one.
i was in the chain mode and had accidentally deleted the first pattern.
the display looked like it was stuck as if i was holding down K1.
audio was playing and it did respond to a K1+K3 stop.
it also let me exit to Parameters.
but it would not let go of the K1 hold.

here’s a pic:

you should put in samples into the audio/tape folder and then you can scroll through them in the save/load -> choose sample folder from parameters using E3. when you want to load one you goto load sample and press K3.

oh weird! i’m not sure what happened there, and i can’t reproduce that.

i experienced this recently. its a :bug: and i’m trying to find the solution for it!

2 Likes

Finally having a go with this, seems great but I’m experiencing a bug whereby in chain mode if I accidentally go to a blank pattern it crashes in such a way that all that responds is K1 to go to the Norns menus still works, and k1&k3 stop and start playback but all it wants to play is the entire un-chopped tape…?

1 Like

Brillant once again , i really liked your drums in the end of the demo. Very radiohead

1 Like

Excellent script :slight_smile: love to use it with ethereal/unsynced stuff to create some more synced stuffed!
A nice addition would some kind of tempo auto-detection based on duration Vs number of bar, plus auto slicing option to create an even distribution of X chops, in order to make it more manageable with beats or tempo driven stuffs stuffs :slight_smile:
Like loading a tape of 128 looping bar of modular jam for instant rearrangement…
Just an idea…

2 Likes