Got it, Thanks!

This is another case just like my question about [totgo] above where i found an excellent patch and I’m going through it opcode by opcode to try and figure it out. And just like my last question, the author left the randomly inserted numerical values in the up and dwn parameters. It works, but its maybe not a good example of how to use the opcode.
Thanks again for the prompt and clear explanation.

1 Like

I’m playing around with many of the patches available out there and some of my own and in some I’ve had trouble with jumping between bowls. I’m using a simple jump with a minor button trigger, mul of 1. The first time through the cycle of three bowls it works but then it hangs up or acts like the button is not debounced and is triggering multiple times. I used different major and minor buttons for the jump trigger with the same result. Just to be sure it wasn’t a firmware issue, I also changed the cuisine to shnth.bin. Does anyone have a moment to load this patch and see if they get the same behavior?


wetzither2.txt (320 Bytes)
I also get the same behavior from this other 3 bowl patch from the patches file referenced above:
3_SUMMER2016pshes_brattv2.txt (1.4 KB)

1 Like
5 Likes

I figured out my problem with jumping between bowls:
turns out I had an extra set of expression parentheses around the section starting (left(right in each bowl. It’s kind of hard to see in Fish but once I recreated each bowl from scratch, I noticed it and could confirm it by looking at the txt file as raw text. Hopefully this will help someone else.
After a little more searching, I also found an extra set of parentheses in the patch 3_SUMMER… I mentioned above. If your jump is acting strange, look for extra sets of s-expression parentheses!

3 Likes

here’s the patch droplets.txt (215 Bytes)

and alternative ones

kali.txt (296 Bytes)

logdrum.txt (191 Bytes)

these patches were based on the i think @wednesdayayay excellent buggy waters patch buggy waters.txt (605 Bytes)

9 Likes

this is a glitchy nasty one called true grit - it sounds like you are throttling a duck through a bits reducer

truegrit.txt (214 Bytes)

this is called randoms because you do very little

randoms.txt (394 Bytes)

this is staircase to hell

staircase to hell.txt (159 Bytes)

this zipper wind

zipperwind.txt (315 Bytes)

this is blow

using the wind opcode

blow.txt (265 Bytes)

10 Likes

Thanks for the patches, @mlogger! I especially like zipperwind.

Does anyone have a handle on the bend opcode?
What I’d like to accomplish is having it switch between bowls every few seconds randomly. But in practice, once it’s triggered in the first bowl, it just goes crazy and rips through the bowls. I’m using dust slowed by sauce and it seems i can control the period of time before the bend triggers but once it’s triggered, I’d like to have it stop at another bowl and the process start over again.
Any thoughts or tips?
Here’s the patch I’m working on:
hangon3.txt (3.4 KB)

EDIT:
After a nights sleep, I realized that what I wanted could be accomplished by using Jump with some dust as a trigger (slowed by sauce). It switches between bowls with a period of parts of a second up to 5 seconds or so. I put a dust in the mul as well, so the number of jumps is random, too. Here’s what i did in case anyone is curious (I also cleaned up some problems with using the same instance of dust too many times.)
hanngon4.txt (3.5 KB)

3 Likes

Here are couple more personal insights that I thought might help others:

1.I’ve been switching back and forth between Fish 1.3 and Fish 2.0. I generally like to write in 1.3 but sometimes it’s easier for me to parse someone else’s work in 2.0. In any case, I wrote a patch in 2.0 and tried to open it later in 1.3 and only got a blank screen. Checking the txt files, it seems that it was missing the curly brackets around the entire patch. These guys:{ }. And it was missing “;bb” at the beginning. Once I added these to the txt file, it opened normally in Fish 1.3.

2.I’ve had a hard time understanding the concept of “mul” as my mind always wants to go to whole number multiplication. That is, multiply by and whole number and make it bigger. I had read, but didn’t understand the description in the Shlisp tutorial:
"The mul parameter is actually better thought of as a “scaling” value. In signed numbers, 127 is full steam, -128 is full anti-steam. So we can write out what mul really represents as:
"signal * mul / 128".
That means it is divided back down by 128 to stay within range."
As I understand it, this means a mul of 24 is multiplying the signal by 24/128, a reduction in signal not an increase.
What finally got me to feeling like I got it was the thought that this is the equivalent of reducing the range of the signal. If the mul is 24, the signal is multiplied by 24/128. But you can also say that the range of the signal is now -25 to 24 and not -128 to 127. It keeps all it’s dynamics, but it’s range has been compressed. Please correct me here if im misunderstanding or misrepresenting this.

1 Like

i find it extremely helpful to think of the MUL parameter simply as a built-in “through zero” VCA in everything Shnth. 0 = closed, 127 / -128 = fully open.

2 Likes

Yes mul is just a bipolar vca - volume control of audio and control voltage. I tend to put it at the end of sounds and attach a barre to it for volume control.

I generally keep open the opcode definitions so i can remember what they do and work visually in Fish 1.3. Also because of random duplicate function and that you can see visually each bowl running along the top. These were removed in v2.0.

There is info here on BEND - https://www.muffwiggler.com/forum/viewtopic.php?f=65&t=106236&p=2325088&hilit=bend#p2325088 and here https://www.muffwiggler.com/forum/viewtopic.php?f=65&t=106236&p=1548126&hilit=bend#p1548126

SHBOBO OPCODE INFO

Summary

ADD is the same as the ADD that every (finite) opcode has at its tail.
;It superposes, or mixes sounds.

AND, a nut, processes two inputs
;As named, it ANDs the INN off the other.
;…waveshaping.

DIRAC and ARAB switch from
;signed to unsigned math, respectively.
;The default is DIRAC, so it is only used
;To switch back…

BAR is the four bar sensors on SHNTH.
;There are four [a-d], use it for pitch

BEND, along with JUMP
;is how to change SOUPs
;or presets. BEND is more raw and hackerly than JUMP
;BEND does nothing on zero INN
;Nonzero INN makes it go!
bend is like jump on steroids. instead of an orderly, triggered move to the next patch, bend changes patches all the time (well, at the sample rate) based on the data values its receving from its INN. try it with corp to get a feel for it, taring the corp with different amounts of flesh will also give different sounds. - - bend pairs nicely with randuplicate (make a lot of variations on a patch, then bend through them)

COMB [a-d] is a short delay.
;INN is the input
;NUME should be 1
;DENO is the pitch control (delay length)
;Put FB as a high number like 120

CORP is the antenna on the SHNTH
;There are two [a-b].

DIRAC and ARAB switch from
;signed to unsigned math, respectively.

DUST [a-h] is random pulses
small numbers are less dense, large numbers are very dense duststorm (to test, put dust as the trigger for water, try dust: 4 versus dust: 40)

FOG [a-d] is four triangular grains:
;A simple granular synthesis.
;TRIG fires off another one.
;SWNU is the speed of envelopes
;SWDE is the width of envelopes
;HONU is the speed of horns
;HODE is the DENO of horns.

HAZE [a-d] is four sawtooth grains:
;A simple granular synthesis.
;TRIG fires off another one.
;SWNU is the speed of envelopes
;SWDE is the width of envelopes
;HONU is the speed of horns
;HODE is the DENO of horns.

HORN is a triangle wave
;NUME is its harmonic speed
;DENO is its loudness and profundity:
;its UNDERTONE

HORSE, and this is not a granular assemblage.
;Rather, they are to emulate FOURSES, their boundaries contingent.
;Thus a horse has four inputs:
;Two for bounce speed up and down UPNU DNNU
;Two for bounds on the top and bottom UPDE DNDE
;To emulate FOURSES, the HORSES must be used as references,
;Within each other at the UPDE DNDE, the boundaries:
the thing to make sure of here is that the upper bound (3rd parameter) is higher than the lower bound (4th parameter)…as long as you do that you’ll be fine

JUMP, along with BEND
;is how to change SOUPs
;or presets. JUMP only jumps once per cycle, so it is easier to control.
;It does nothing on zero INN
;Nonzero INN makes it jump relative to the current preset.
;Multiply the TRIG by 1 to make it jump exactly one.
jump needs to have a mul in it to tell it how many bowls to jump.

  • you can use any opcode to jump, even audio rate ones like horn or fog. you can also use a mount to clock your jumps, aka a patch sequencer

LEAK removes DC offset
;Like a very low freq HP filter

LEFT put sound out LEFT speaker!

MAJOR [a-d] are the lower buttons on SHNTH

MINOR [a-d] are the lower buttons on SHNTH

MODO is like MUL but makes things super loud!
;Also, when it goes past the boundaries, it RETURNs,
;So it is kindof like waveshaping.

MOUNT [a-h] is a slow triangle wave.
;NUME is how fast it rises and falls.
;DENO is how far it rises and falls.
a small nume and a large deno is a slower envelope (small nume = rises slowly, large deno = must cover a large distance to the bounds). if you want it even slower than that than put it in sauce

MUL is the same as the MUL that every (finite) opcode has at its tail.
;MUL by 128 and you get full volume, 1 is very quiet, and 0 is silent.
;Think of MIDI style, volume from 0-128.
;The phollowing are all equivalent:

NEGWON only outputs negative one!

PAN is like LEFT and RIGHT, a stereo output control.
;PLACE makes it PAN left and RIGHT.

PRESS is a compressor!

PULSE is kindof like the opposite of SLAVE
;TRIGger it to its DENO, and then it decays,
;It can be used as a trigger for something slower

REFLECT, a nut, processes two inputs
;As named, it bounces the INN off the other.
;…waveshaping.
the ‘other’ term is the threshold above which the waveshaping occurs so make sure this threshold is not higher than the range of the input sound or you won’t hear any effect…you can use the deno of the input sound as a guide as to where to set the threshold…ie try waveshaping a horn tuned to 48/64 with a corp with a mul of 32 and add of 64, you should hear it kick in as you touch more wire and the threshold falls below the horn’s frequency

RETURN, a nut, processes two inputs
;As named, it folds the INN off the other.
;…waveshaping.
the ‘other’ term is the threshold above which the waveshaping occurs so make sure this threshold is not higher than the range of the input sound or you won’t hear any effect…you can use the deno of the input sound as a guide as to where to set the threshold…ie try waveshaping a horn tuned to 48/64 with a corp with a mul of 32 and add of 64, you should hear it kick in as you touch more wire and the threshold falls below the horn’s frequency

RIGHT put sound out RIGHT speaker!

SALSA is like SAUCE, but you trigger the samples.
;Put it around something, and give it a TRIGGER.
;It will only calculate samples on the TRIGGER.

SALT [a-d] is the hi=pass version of WAVE, which is a wave equation resonant filter.
;So salt has a high spectrum.
;INN is obvious, so is Q, and rate is too!
a low value for Q is higher resonance (more wet, ringy). cutoff can be most anywhere (as long as not completely closed) for different kinds of effects

SAUCE is like a bubble of low sample rate.
;Put it around something, and give it a period…
;In sample ticks, so PER of 2 is twice as slow.
bigger period is slower (longer wait between samples)

SAW is a sawtooth wave
;It has more timbre than HORN
;NUME is its harmonic speed
;DENO is its loudness and profundity:
;its UNDERTONE

SHORT gives you fine control over numbers.
;A regular number is an 8-bit byte

SLAVE is for making drum machines?
;It counts TRIGs for as many ticks as DENO,
;then changes direction. Then,
;It can be used as a trigger for something slower

SLEW is just that, it relieves sharp direction changes.
;UPP is how fast to rise.
;DON is how fast to fall.
low values are more slewing (ie slower to reach the target value), higher values are less slewing

SMOKE [a-h] is noise.

SQUARE makes a square by comparation.
;Give it an INN and an OTH to compare to.

SRATE changes the global sampling rate!
[srate] normally only has one value
but inside of the [srate] above is a [short]
[short] is like a fine tuning opcode where (big) represents the coarse tuning and (small) represents the fine tuning
this works well in lots of opcodes
like I said normally even if you don’t have [srate] in your patch the default is 16

STRING [a-d] is Karpluss-Strong
;TRIG plucks it.
;NUME should be 1
;DENO is the pitch control (delay length)
;Leave out FB for infinite feedback.
this one can be a bit tricky at first but its actually just a nume/deno tuning in there. so to get a typical resonant pluck you want a small nume and a large deno, it will then be bassier… try a string triggered by majorbutt with nume of 4 and deno of 77 for example. if you want higher pitch strikes raise the nume value, if you want less resonance lower the feedback though i usually just delete the feedback parameter or set it very high (in the 120’s).

SWAMP [a-d] is four weird grains:
;A simple granular synthesis.
;TRIG fires off another one.
;SWNU is the speed of envelopes
;SWDE is the width of envelopes
;HONU is the speed of horns
;HODE is the DENO of horns.

SWOOP [a-h] is a rise and fall envelope shape.
;TRIG is its input
;NUME is how fast it rises and falls
;DENO is how far it rises to.
;SWOOP is a double shape in DIRAC, single in ARAB
a small nume and a large deno is a slower envelope (small nume = rises slowly, large deno = must cover a large distance to the bounds). if you want it even slower than that than put it in sauce

TAR gives you the TAR button;
;It is orange on SHNTH,

TOGGLE [a-h] is a triggered flip-flop
;TRIG is its input

TOGO [a-h] is a sequence.
;It has a trigger to make it advance,
;And also a trigger for retreat.

WATER [a-d], like fog, is a cluster of four…
;WAVES, or resonant filters.
;TRIG is obvious, so is Q, and rate is too!
a low value for Q is higher resonance (more wet, ringy). cutoff can be most anywhere (as long as not completely closed) for different kinds of effects

WAVE [a-h] is your basic resonant filter…
;A Wave equation!.. so Q is ringier when lower.
;INN is obvious, so is Q, and rate is too!
a low value for Q is higher resonance (more wet, ringy). cutoff can be most anywhere (as long as not completely closed) for different kinds of effects

WHEEL is a variable voltage reference,
;that you change by giving it UPP or DON

WIND is the microphone on the SHNTH

WORM is now a rectifier, analog to some diodes and a capacitor.
;simply INN MUL ADD. outputs the absolute value and has a decay.
;Note that finger means wind, as in put your mouth to the mike.

XOR, a nut, processes two inputs
;As named, it XORs the INN off the other.
;…waveshaping.
the ‘other’ term is the threshold above which the waveshaping occurs so make sure this threshold is not higher than the range of the input sound or you won’t hear any effect…you can use the deno of the input sound as a guide as to where to set the threshold…ie try waveshaping a horn tuned to 48/64 with a corp with a mul of 32 and add of 64, you should hear it kick in as you touch more wire and the threshold falls below the horn’s frequency

ZITHER [a-d] is, like fog, a cluster of four…
;Strings!
;TRIG is your plucking finger, DENO is the pitch!
is similar to string but just has a deno (nume is a constant) so try larger deno values for richer plucks. also its best triggered by dust for recurring plucks like a zither. try zither triggered by dust:15, deno:99 for example.

wind = microphone input
corp = the antennas on the bottom
bar = the wooden bars
major = the top row of buttons
minor = the bottom row of buttons
horn = triangle oscillator
saw = sawtooth oscillator
toggle = a toggle
togo = a sequencer
swoop = a triggered triangle envelope
mount = a slow lfo
smoke = white noise
dust = random pulses
fog = a granular oscillator (based on tri wave)
haze = another granular oscillator (based on saw wave)
swamp = animated grains
string = string synthesis
comb = comb filter
zither = trigger 4 strings at once
wave = lowpass filter
water = triggered filter pings
salt = hipass filter
horse = asymetric tri-wave oscillator
slew = a slew
wheel = accumulates values, used to make things scroll
sauce = slows things down
salsa = sample and hold
press = compressor
leak = noise gate
reflect = waveshaper, refelcts down at threshold
return = waveshaper, returns to 0 at threshold
and = waveshaper / logic
xor = waveshaper / logic
negwon = -1, not needed in Fish
left = left DAC
right = right DAC
square = comparator
modo = multiply w/o scaling
srate = sample rate
mul = multiply
add = add
tar = tare the antenna
bend = circuit bend through situations
jump = jump through situations
pan = stereo panning
short = specify w/ 16 bits (short data type)
dirac = signed chars
arab = unsigned chars
lights = leds

lights = LED’s
wind = microphone input
corp = the antennas
Oval section of crisscrossed wires on the bottom

tar = tare the antennae via depressing the orange button and touching the antennae simultaneously briefly and letting go of both at the same time
or… centering the corps’ value and Shnths output values (as previously programmed) with the your body’s electromagnetic resistance (as explained above)

Pitches to Shnth nume & deno conversions

note - srate (use ‘short’ for all )
C2 - short(67,24)
C#2 - 63, 53
D2 - 59, 110
D#2 - 56, 64
E2 - 53, 42
F2 - 50,43
F#2 - 47, 65
G2 - 44, 108
G#2 - 42,42
A2 - 39, 122
A#2 - 37, 91
B2 - 35, 76
C3 - 33,76
C#3 - 31,91
D3 - 29, 119
D#3 - 28, 32
E3 - 26, 85
F3 - 25, 21
F#3 - 23, 97
G3 - 22, 54
G#3 - 21, 21
A3 - 19, 125
A#3 - 18, 109
B3 - 17, 102
then halve for each additional octave using a limit of 128 (so C4 is 16, 102; D4 is 14, 123 etc.)

Parameter tips from Bartlebooth:
• tuning is pretty straightforward once you become familiar with just intonation…1:1 is the base frequency, 2:1 is the octave, 3:2 the perfect fifth,etc. note that there are several equivalent tunings for each note…ie 48/32 and 54/36 are the same pitch. the fundamental frequency is the current sampling rate as set by srate or defaults to 16 (approx. c#). use arab mode to get finer granularity in your tuning ratios.
• swoop & mount: a small nume and a large deno is a slower envelope (small nume = rises slowly, large deno = must cover a large distance to the bounds). if you want it even slower than that than put it in sauce
• dust: small numbers are less dense, large numbers are very dense duststorm (to test, put dust as the trigger for water, try dust: 4 versus dust: 40)
• string: this one can be a bit tricky at first but its actually just a nume/deno tuning in there. so to get a typical resonant pluck you want a small nume and a large deno, it will then be bassier… try a string triggered by majorbutt with nume of 4 and deno of 77 for example. if you want higher pitch strikes raise the nume value, if you want less resonance lower the feedback though i usually just delete the feedback parameter or set it very high (in the 120’s).
• zither is similar to string but just has a deno (nume is a constant) so try larger deno values for richer plucks. also its best triggered by dust for recurring plucks like a zither. try zither triggered by dust:15, deno:99 for example.
• wave, salt ,water: in all 3 of the filters a low value for Q is higher resonance (more wet, ringy). cutoff can be most anywhere (as long as not completely closed) for different kinds of effects
• horse: the thing to make sure of here is that the upper bound (3rd parameter) is higher than the lower bound (4th parameter)…as long as you do that you’ll be fine
• slew: low values are more slewing (ie slower to reach the target value), higher values are less slewing
• sauce: bigger period is slower (longer wait between samples)
• reflect/return/xor: the ‘other’ term is the threshold above which the waveshaping occurs so make sure this threshold is not
higher than the range of the input sound or you won’t hear any effect…you can use the deno of the input sound as a guide as to where to set the threshold…ie try waveshaping a horn tuned to 48/64 with a corp with a mul of 32 and add of 64, you should hear it kick in as you touch more wire and the threshold falls below the horn’s frequency

4 Likes

Thanks for the info, @joe_biomassa and @mlogger.

Thanks also for the reference material, mlogger. I have a copy of that same set of definitions as well as two others that I’ve printed out and keep on hand while working. And I think that I’ve read everything Shnth and fish related on MW. So it’s not for lack of info. Sometimes it’s just the overlap of not having a lot of background in coding or sound synthesis and then having it wrapped up in Peter’s singular way for describing things…I’m getting it slowly.
I’m grateful for a forum like this with helpful members and lots of sharing. Thanks!

3 Likes

Here are a couple of fun variations on @wednesdayayay 's awesome bowl “Steamchaser” as included in PillowFight, which can be found above.

The first is a mod to automate the changes in the togos that used to be triggered by major and minor button presses. I replaced them with sauced dust which triggers a change every few seconds. I may go further and try having second instances of each of the 8 sauces also serve as downtriggers. Basically, I just wanted to have this patch play itself while I worked on other things.
steamchaserauto.txt (1.1 KB)

The second is a further mod that replaces the saw wave generators with horns. It’s character is very different for such a small change.
mistfollowerauto.txt (1.1 KB)

EDIT:
One more since it sounds so good: I changed the numbers in the togos of the steamchaserauto to produce most/some/all/more of the ratios in Harry Partch’s 11 limit just intonation scales.
steampartchautov2.txt (1.1 KB)

4 Likes

H’lo there.

I am thinking of getting Shbobo… maybe a common question and something that has been asked before also… but how difficult is it to actually get into. I have practically no coding experience. Also how does the interface work with the latest macbook? Love the demos that people been listing here, that’s why I’m considering to get one.

1 Like

I think if you are familiar with modular synths and things like VCV rack / Nord micro modular it helps a lot. I’m not a coder so I use the graphic editor Fish. The best thing to do is watch the 3 demo Vimeo’s using Fish. The most frustrating thing I had is if you send bad code, it locks up. You have to reset the Shnth. It only takes a few seconds. Also it’s not a 2 way street, so there isn’t any real time update as you program it. So you are always changing numbers and uploading, to hear the results. It’s not a big deal but worth knowing about. I think they are hugely underrated and a bargain but you need to spend time to learn. I think people sell them because they get frustrated with coding them and using a computer. For me I think they have a much wider palette of sounds than any of the Ciat boxes but they are not as immediate until you sit and program them. The sound is grittier and digital. It reminds me of the sound of the Nord micro modular. Playing with sample rates is interesting. I think you can load up more than 100 presets which you can flip through on the fly / without being connected to the computer. So you can play whole live sets with them with lots of variations. I’m on a mac with Catalina firmware and Fish works.

https://vimeo.com/72120685

https://vimeo.com/74026354

https://vimeo.com/72226053

6 Likes

As a non coder, I can say that with the Fish graphical interface and the general simplicity of Shlisp, it’s not difficult to learn to program. I’ve had it for a month or so and I’d say that I’m just beginning to understand most of the opcodes and how to use them, but not all. But even at that level, I’ve been able to produce some patches from scratch that I’m happy with (and will eventually share here.)
I agree with what @mlogger has to say about the process…I resurrected a desktop computer just to program with and sitting and coding is a pretty dedicated activity. Resetting is common when you’re fooling around but you get used to it. (its called an “Orange Light Affair” after the orange LED that it lights up.)
I also agree that they are a great value. It does seem that only a small number of users have “clicked” with the entire system. I see tons of potential and very few experts.
I’d also recommend watching the vimeos that mlogger mentioned, they are very very helpful. You can even download the software and follow along. I’d read this entire thread as well; there are lots of good suggestions and links to documents, earlier versions of Fish (which I also agree with mlogger is easier for me to use), and tons of patches.
While I wouldn’t recommend hanging out on the Muff Wiggler forums, there are a lot of good discussions on Fish and the Shnth in their archives.

3 Likes

I haven’t had as much time to work on my patches lately, but here are a few “in progress” patches that I’m having fun with and hope you all will enjoy:

I’m working on better understanding the logic expressions (reflect, return, and, xor) and the slave with the possible goal of creating a DDDM2 emulation. This sounds nothing like it, but it’s fun in a “bleep-bloop” kind of way.
It uses buttons and cops, no bars or wind.
raidthearcade.txt (625 Bytes)
I’ve also become interested in the possibility of automatic or self playing patches. This one is a no input duet of fog and water meant to be a bit relaxing but engaging. autoduet.txt (186 Bytes)
This last one is a further development of the hangon! series that I posted above. It’s very “squishy” as it uses bars in multiple locations along with the corps for pan location. It also has a nice auto jump that goes through 9 Randuplicated bowls.
hangon5.txt (3.6 KB)

Here’s one for the drone/noise fans:
Brassy1.txt (1.7 KB)

It’s a partially automatic square wave drone that can be adjusted by scrolling through the oscillators with the buttons which are also scrolled slowly by various sauced dusts. It came about while trying to make an emulation of the DDDM2, which is very different…but I was trying to make something that had some of the qualities of auto repatching and combining logic gates that it has. It’s also fun to randuplicate!

8 Likes

Thanks for sharing. They’re all good! I really should take time to learn shnth programming deeper to open up all the goodies and possibilities of the wonderful yet so underrated device!

1 Like

autoduet patch is SO relaxing… I want more of this kinds! like series of slightly different flavor yet things are basically very calm and you let the shnth play them for long time…

1 Like

Thanks, I’m glad you like like it.
If you like that sort of thing I can very highly recommend @wednesdayayay’s Vuttpipe and it’s variations in the PillowFight group you can find above in this thread. I’ve been listening to that for hours while working lately.

2 Likes

I love programming those slower patches that you really have to feel out
I’m working on a new set now that are in the same area as the pillow fight bowl but will take it in a different direction.
I will take a look back at that patch and do some iterating.
the shnth being more of a slow moving partner is so rewarding.

6 Likes