Shbobo Shnth patches and appreciation

here are the patches in the video

ps has anyone made a drum machine with a shnth - not necessarily a touchable one - just one that auto plays something interesting?


The heart of the shnth is a ARM microprocessor running PB’s shnth matrix (shmat) assembly code. Perhaps an ARM emulator could run it?

I was thinking it would be interesting to write an emulator for it, run a shnth in the browser or something.

I’ve looked at the code; it’s written is PB’s inimitable style, so it’s not that easy to understand to begin with, and requires more understanding of assembly, microprocessor architecture, and DSP than I have.

I think it might be a fun way to learn more about all those things though. It would be very cool to be able to create new opcodes.


In the workshop i think he did demonstrate a patch just running on his computer but i forgot/didnt think about asking how he had actually set that up or maybe im misremembering and ot did use the shnth

I think the program (Mikey) running on his computer was being controlled by the shnth but was generating the sound itself


I honestly think a way to eventually get more shnths in peoples hands would be for peter to release a standalone software shnth synth.

Get more people to have some hands on experience with it and sell them on the hardware.

Just imagine the insane feedback loops that could be created…

patch set #1 loaded on to the shnth with audio out #1 coming from the shnth
USB from shnth to computer controlling software Shnth version running patch set #2 and audio out #2 coming from the computer

using 1 shnth to control two simultaneous shnths would be madness and then of course you take the computer audio output into the shnth input for processing!


it would be wild to have something like this for norns…if a shlisp opcode/dsp emulator could be made then all the plumbing for shnth control has already been done


I’m trying to create a patch and, as usual, getting bogged down in details. To work out what’s going on, I usually use lights but this time I hooked left up to an ES-8 (which is DC coupled) and then out into an oscilloscope app on the iPad.

When I do (lights (minor)) it shows up as a gate-- on press it goes from 0 (all off) to 127 (7 LEDs lit), and on release it goes back to 0.

But when I do (left (lights (minor))) or (left (minor)) or (lights (left (minor))) lights shows as above, but the scope shows an positive trigger on press, then back to 0, and a negative trigger on release.

So I guess that the butts are sending triggers and some opcodes (at least lights) treat them as gate high/gate low? Or is it actually a gate, and the DACs turn gate high/low into triggers…?

There’s lots of times where a text doesn’t work as I think it should, and sure, often I’ve put a bracket in the wrong place-- but this has made me wonder how many errors there are in my mental model of the opcodes?

Is lights a trustworthy indicator of the values being sent by an operation?


Here is my first patch with shnth :slight_smile:


that looks like a square wave that’s AC-coupled. for reference, here is an AC coupled square wave on a scope:

i’m guessing that the shnth output is ac-coupled


That would explain it-- thanks for the image, I hand’t seen that before.

In the old forums there’s reference to it being DC coupled, so it can be used as a cv source-- more investigation required!

Hello all! is there a list anywhere where which srate corresponds which fundamental? :slight_smile:

Meng Qi made a tuner at some point.

I found this list :slight_smile:
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


we made this with a peterson strobe tuner ~ 8 years ago!

{(srate (short 16 2 ))
(major )(minor )
(short 48 120 ;C#3
)(short 51 98 ;D3
)(short 54 124 ;D#3
)(short 58 2 ;E3
)(short 61 30 ;F3
(short 64 127 ;F#3
)(short 68 127 ;G3
)(short 72 127 ;G#3
)(short 77 2 ;A3
)(short 81 127 ;A#3
(short 86 90 ;B3
)(short 91 127 ;C4
)(short 97 2 ;C#4
)(short 102 127 ;D4
)(short 109 2 ;D#4
))(togob (majorb )(minorb )48 96 24 ))

wow :smiley: very very cool

I found the thread on MW that mentions the output being dc coupled here: shbobo shnth news - Page 6 - MOD WIGGLER

The same post says it wasn’t really designed to be plugged into modular though.

It acts as though it’s AC coupled, so I’m not going to look to a scope to tell me what’s going on. Perhaps DC coupled was v1?

I guess to really find out what’s going on we have the shmat sorce – has anyone made any progress towards understanding it? What the register names mean, what the macros are doing in general?

Puzzles within puzzles…

Have any Shtar users been able to get the Rungler~48.txt file to work for them? Or shnth users, for that matter? The major and minor operations can be changed to brass and steel, the corp to plank (I think), but the barres really only can be changed to heart or bridge so I need 2 more ‘barre’ style inputs, and haven’t played with this much of late, just wanted to check out the rungler patch.

thanks for any tips in advance!

according to shlisp -h, bar a-d corresponds to top, bot (knobs?), heart and bridge. And, as you say minor=brass and major=steel and corp=plank

I’ve just played with it on shnth-- it works. Seems to be most responsive to corp.


My first shnth patch!

 (jump (minord 1)) (srate (add (add 23 (slewd (major) 90 6))) (mul (slewc (minor) 100 12) 2)) 
 (right (left 
 (saltb (sawb (add -133 (bard)) (add 112 (majorc)) (barb)) 90 (corpb)) 
 (saltc (sawc (add -57 (bara)) (add -117 (majorb)) (barc)) 90 (corp)) 
 (saltc (sawd (add 15 (barb)) (add 62 (majorb)) (bard)) 90 (corp)) 
 (saltc (sawe (add -62 (barc)) (add 24 (majorc)) (bar)) 90 (corp)) (wind (bard)) (wind (bar)))) 
 (wavec (sawf 22 66 (swamp (dustc 20) -1 20 -17 -2)) 20 (swampc (dustf 20) -36 -126 -124 -66)) 
 (hornb (corpb) 54 (fog (dustg 23) 40 38 20 90)) (fogb (dustb (corp 112)) 20 123 12 111) 
 (waveb (sawg 10 50 (swampb (dustd 17) 36 -20 -10 -44)) 20 (swamp (duste 30) -109 90 62 3)) 
 (hornc (corp) 23 (fogb (dusth 23) 40 59 20 80)) (fogc (dustc (corpb 112)) 4 50 35 80)) 
 (lights (dustb (corp))) (lights (dustb (corpb)))