shbobo-studies

Fish

About

Fish description at petermopar.blogspot.com

Fish is the program (for Windows, Linux, and Macintosh) to edit and upload patches for Shbobo devices (SHNTH and SHTAR).

Retrieved from the Fish 2.0 blog post at the petermopar.blogspot.com website, available at https://petermopar.blogspot.com/2018/04/fish-20.html, accessed on Monday March 23 2020. )

“will definitely do a tuning one. just to try and answer your question here briefly, with the Shnth the opcode ‘srate’ sets the fundamental frequency (which is 4 octaves below the actual sampling rate). if you want to do tonal stuff then its best to specify the srate using 16-bit numbers, then you can dial it in exactly. meng qi made a very helpful srate calculator which gives the ‘short’ (16-bit number) for each corresponding note on a standard keyboard, its available on the shbobo forum. so basically the nume and deno of an oscillator specify its pitch relationship to that fundamental based on the just intonation tuning system…so for example a horn with a nume of 96 and a deno of 64 will be a perfect 5th above the fundamental (ie 3:2 ratio), one with a nume of 80 and a deno of 64 will be a major 3rd above it (5:4 ratio), etc. there’s a couple of really good websites on just intonation online, i can send you the links if you like. its gets really interesting when you get into the larger prime limits like 11 or 13, then you can explore these really hairy microtonal scales. i’ll try to explain all this better in a video and associated forum post but hopefully this will help a bit until then.”

Origin

Let’s review what expressions are. In lisp, there is only one kind of expression, besides symbols, the parentheses, (). In Shlisp, as it stands, there are Fish, and Soup, respectively denoted as () and {}. Fish is a DSP core expression, and Soup is a preset. The new version of Fish paves the way for two new types, known as Tank and Boat, denoted as [] and <>. They are not implemented yet, but Tank will be for listing things and Boat will be for scripting things in classical Lisp, thus the possibility for generative patches. Note that the previous version of Fish had randuplicate, and this has been eliminated because Tank and Boat will be bearing the burden of generating permutations of patches.

Fish is the program (for Windows, Linux, and Macintosh) to edit and upload patches for Shbobo devices (SHNTH and SHTAR). With the release of the new Shbobo SHTAR, the program has received an overhaul. Most noticeably, the older system of tabbed soups has been replaced with a universal map of the whole file as loaded. Thus, soups are all visible, adjacent to each other. It is like a world map, and users are encouraged to use both horizontal and vertical layouts to organize their patch ideas.

To facilitate navigation, there is a Zelda, or world map, like the Photoshop navigator, so you can click on different parts of your world and teleport there.

“Serve selected” tries to upload the currently selected expression to your device, so you can listen to parts of patches. The command for this is redundant with the simple action of double-clicking. Yes, double click on any soup or fish to quick upload only that code! “Serve all” uploads the complete file. “Change cuisine,” as before, is for re-initializing your device’s DSP matrix. Note, pick “shnth.bin” or “shtar.bin” appropriate to your device.

Gwonzer is a readout of the data received:

Typewriting Patches can be composed visually, mostly through dragging and dropping, but also keys can be used almost identically to the way they would be if it were a vanilla text editor. For example, I typed the following keys into a new file:

{
(
"left"
enter
(
"horn"
enter
space
space

Fish Soup Tank Boat Let’s review what expressions are. In lisp, there is only one kind of expression, besides symbols, the parentheses, (). In Shlisp, as it stands, there are Fish, and Soup, respectively denoted as () and {}. Fish is a DSP core expression, and Soup is a preset. The new version of Fish paves the way for two new types, known as Tank and Boat, denoted as [] and <>. They are not implemented yet, but Tank will be for listing things and Boat will be for scripting things in classical Lisp, thus the possibility for generative patches. Note that the previous version of Fish had randuplicate, and this has been eliminated because Tank and Boat will be bearing the burden of generating permutations of patches.

The rules of fishiness:

The parser is simply a regex:

while ($texte=~ /(\n|;[^\n]+\n)|([\{\(\[\<;])|([+\w-]+)|([\}\)\]\>;])/g)

To this point I’ve created the shlisp opcodes in ARM assembly, coded command-line interpreter in c, programmed an editor uploader in C++, created sound games in SDL. Now, add to that list a dummy interpreter for the sake of editing in Javascript, and a dummy interpreter in Perl, for the sake of security against bots.

[] is space list <> is time function {} is space situation () is time sound

There are four types of basic atoms now: crock and fish as in the original Fish, but now it adds “fiberglass” boat and tank.

They are the computer music opcodes. The necklace chain represents an evolution of the original Gwonzer, to support multiple Shbobo devices (shnth and shtar). Two-way communication (asynchronous/simulcast) is a priority.

The expression selection system now follows keyboard focus. Only one expression can be focused at any time, when it becomes the current object being edited.

Most are self explanatory, but let’s talk about the “Reference” command. This is important for writing patches in core Shlisp, where it enables feedback loops most notably. A reference is simply a fish-expression, with its “cdr” removed, so it is just the “head” or “opcode”. Thus (horn 64 64) becomes (horn) as a reference. At runtime, this expression will yield the last computed value of that opcode.

Here’s the “Shbobo” menu. “Serve selected” tries to upload the currently selected expression to your device, so you can listen to parts of patches. The command for this is redundant with the simple action of double-clicking. Yes, double click on any soup or fish to quick upload only that code! “Serve all” uploads the complete file. “Change cuisine,” as before, is for re-initializing your device’s DSP matrix. Note, pick “shnth.bin” or “shtar.bin” appropriate to your device. Gwonzer is a readout of the data received: