Ansible Earthsea


#21

i feel bad because i promised @marcus_fischer to look into porting earthsea to ansible almost a year ago, and then got sidetracked with clock div/mult for white whale (which i couldn’t make work to my satisfaction) and then grid teletype integration.

so i’m going to see if i can do a quick port. basically, a 4 voice keyboard with 16 recordable patterns / 8 presets. will include loop/arp. no shapes.

how should ansible buttons and trigger inputs be utilized? i was thinking left trigger could play a pattern (restart if already playing), right trigger could reset it. buttons - prev/next pattern?


#22

I’d love to have an earthsea port that I could easily clock somehow with one of the ansible trigger inputs :heart_eyes:


#23

regarding input trigs, play/restart sounds functionally identical to reset, and play/restart already has a grid button, though additional voltage control is nice. what about using that second input for something like reverse current pattern direction? or a clock input, most definitely–though that would have to interact with the linearize+speed runes.

it’s too bad those are only trig inputs–if they were full cv in, they could be used to determine things like “play pattern from this point,” which would effectively be the mlr pattern recorder, perfect for jumbling up note sequences.

how are you going to handle the four voices? one per page, or spillover for overlapping notes/chords? i’d guess the former, but i just want to make sure.

it’s probably beyond the scope of your port, but i can imagine a single voice earthsea that still uses shapes, by sending via the cv outs. instead of knobs, set those values by reusing the grid-based playback speed speed mechanism: one row for coarse range, the row below for fine increments.

and even if sending shapes won’t happen, are you still including the runes? (linearize, double/half speed, etc.)

i’m excited to see where this project goes!


#24

I would love to try this. I haven’t used Earthsea but have always been intrigued. I look forward to seeing how it goes and I thank you in advance for the hard work. (Unfortunately I don’t have the expertise to contribute)


#25

Clock input gets my vote.


#26

+1 for clock input. Though I assume the Teletype ES.CLOCK op will still work.


#27

No, I don’t think it would, because that would explicitly address the Earthsea module. You’d need an Ansible-Earthsea equivalent in much the same way as there is for Ansible-Meadowphysics (ME vs MP)


#28

Pre-coffee posting will get me every time! Thank you for the correction :slight_smile:


#29

teletype support: probably not on first iteration, keeping the scope small for now to get the work started. but yeah eventually it should have its own remote ops.

this would be a good candidate for a remote op.


clock:

it does make sense to use one of the trigger inputs as a clock since ES already supports it (i wasn’t sure if clock support was added or not). how does it work with ES.CLOCK right now? does it ignore recorded timing completely, so essentially it just non destructively linearizes the current pattern?

i assume it doesn’t need an internal clock, so when nothing is connected into the clock input it’ll just use recorded timing.

if the first trigger input is used for clock, i think it makes sense to use the 2nd trigger input to trigger pattern play (or restart it if it’s already playing).


this could be something for next version, supporting different direction, with a corresponding button and a remote op.

it’ll round robin through available voices. if all 4 are currently playing it’ll steal the earliest. this will also apply if you’re playing over a recorded pattern. does this make sense?

yeah, something like this would increase the scope significantly, so i’ll leave it for somebody else. re: runes - the functionality they provide is important, but with polyphonic keyboard i’m not sure how would you distinguish between a rune and a chord being played. some functionality could be shifted to module buttons (prev/next pattern) or a modifier button could be used - how about using slew button for this?


#30

As far as I recall, yes.


#31

just here to voice my excitement for an ansible variation of earthsea :sparkler:


#32

making progress, recorder is mostly done!

a couple of questions:

  • does anybody use different edge modes? is this feature important?

  • when clocked externally it’s easy to linearize it in monophonic version. for polyphonic it will need to decide which notes to play together (for chords), as there might be some timing fluctuations between notes within the same chord (see the video above for a truly horrible example of that). probably group notes that are close to each other? how do we define “close”? 10ms or less? different number?


#33

10ms is the default time for the Max thresh object so that’s probably a good place to start. (Though I wonder if the assumptions about playing on a piano-style keyboard, which I imagine was the model for Max, vs. a grid might need to be different.)


#34

it is very important. when using runes, or any other setting to play patterns at slower speeds, the note held length gets dragged out, so even quick button presses become long drones, which may be undesirable. being able to shorten that up by adjusting gate length is critical. or activating drone mode, for building washy soundscapes.


#35

ha, didn’t know that! 10ms just seemed about right. good point on adjusting it for grid playing. i’ll use 15ms value for beta and can adjust it based on feedback.

re: edge mode - will include it!


#36

question: the documentation states:

Press START/STOP to begin playback, and again to stop the pattern midway. The pattern will play through to the end and then stop.

this is not the behaviour i’m seeing on my earthsea running the latest official firmware. if a pattern is playing and i press start/stop button again it stops immediately. what’s the preferable behaviour?


#37

the docs might need to be updated for the actual behavior, which is to stop as soon as the play/stop button is pressed. that should definitely be the expected outcome of pressing the button.


#38

i’ll be away for the weekend, so won’t be able to work more on this until next week. which is why i’m posting a beta without giving it more than just a quick test. as i need to wrap up teletype 2.3 development (and i don’t know earthsea all that well) i’m hoping to get help with testing from community. just remember it’s quite likely there might be bugs, and your presets will be gone when you update firmware!

ansible.zip
ansible.hex

earthsea is the 3rd grid app. switch the usual way (long press on the mode key) until the light turns amber white.

what’s done:

  • you have same buttons on the left, starting from the top: start/stop, pattern select, arm, loop, arp
  • polyphonic playing and recording
  • 16 patterns and 8 banks, same as original
  • arp mode

what’s left:

  • edge mode
  • key map
  • teletype ops

what’s different from the original:

  • polyphonic!
  • no shapes (so slew button and screen are also gone)
  • runes now work differently - press the former slew button to see runes, press any to activate
  • portamento - i’m not sure how would this work in polyphonic context
  • external clock supported, it will autodetect if something is plugged into the first trigger input and use it as a clock (it will not play without a clock in this mode)
  • 2nd trigger input can be used to trigger playback
  • buttons switch to prev/next pattern

operation should be very similar to the original module (all key shortcuts should be supported). there might be some differences as i ended up not using much of the original code, if you notice something it’ll be hugely helpful if you can confirm the behaviour being different on the original earthsea!

dev branch: https://github.com/scanner-darkly/ansible/tree/earthsea


#39

so excited for this! will give it a try tonight or tomorrow!


#40

a short video showing arp and how runes work now: