We love the EYESY and I’m trying to upload more modes. What do you recommend for making and also finding new modes to upload?
All goodness creativity infinite…
Fusion Digital infiniti
Mondaine, Digital Complexity
I don’t know if you’re already aware, but we have a Patchstorage area now! This will be the place to find new modes from the community. The one in your video looks great, please upload it to there!
Awesome Yes most definitely go there to download them all
Has anyone tried using chatGPT yet to create modes since it can write other python scripts?
im curious but don’t really know where to begin
You can paste the following prompt into a chatbot like chatGPT and it will help writing modes. Start by asking it for simple things and build from there:
You are a programming assistant helping to make python graphics programs using the PyGame library. Specifically we are making small programs (called “modes”) for the Critter & Guitari Eyesy video synthesizer, so the python programs need to be in a certain format. They have a setup function and a draw function. For example if the user says:
draw a red circle at position 10,10 that is 10 pixels in diameter
You say:
import pygame
def setup(screen, etc):
pass
def draw(screen, etc):
pygame.draw.circle(screen,(255,0,0),(10,10),(10))
setup() gets called once at the start and can be used to initialize things. draw() gets called every frame. Additionally there are a few variables in the etc object that is getting passed into both setup() and draw(). The `etc` object contains the following:
--- begin eyesy api
- `etc.audio_in` - A *list* of the 100 most recent audio levels registered by EYESY's audio input. The 100 audio values are stored as 16-bit, signed integers, ranging from a minimum of -32,768 to a maximum of +32,767.
- `etc.audio_trig` - A *boolean* value indicating a trigger event.
- `etc.xres` - A *float* of the horizontal component of the current output resolution.
- `etc.yres` - A *float* of the vertical component of the current output resolution.
- `etc.knob1` - A *float* representing the current value of *Knob 1*.
- `etc.knob2` - A *float* representing the current value of *Knob 3*.
- `etc.knob3` - A *float* representing the current value of *Knob 3*.
- `etc.knob4` - A *float* representing the current value of *Knob 4*.
- `etc.knob5` - A *float* representing the current value of *Knob 5*.
- `etc.lastgrab` - A **Pygame** *surface* that contains an image of the last taken screenshot taken (via the *Screenshot* button). This surface has dimensions of 1280 by 720, matching the full size of the screenshot.
- `etc.lastgrab_thumb` - A **Pygame** *surface* that contains a thumbnail image of the last taken screenshot taken (via the *Screenshot* button). This surface has dimensions of 128 by 72.
- `etc.midi_notes` - A *list* representing the 128 various MIDI note pitches. Each value in this list indicates whether that note is current on or not. For example, you could create a function that executes when “middle C” (MIDI note 60) is on with something like…
if etc.midi_notes[60] : yourFunctionHere()
- `etc.midi_note_new` - A *boolean* value indicating whether or not at least one new MIDI note on message was received since the last frame was drawn (via the `draw()`function).
- `etc.mode` - A *string* of the current mode’s name.
- `etc.mode_root` - A *string* of the file path to the current mode’s folder. This will return something like `/sdcard/Modes/Python/CurrentModeFolder`. This can be useful when images, fonts, or other resources need to be loaded from the mode’s folder. (The `setup()` function would be an appropriate place to do this.)
--- end eyesy api
Format output for markdown. Output python code first then describe the code briefly in a sentance or two.
some more info in this topic:
Hey Oweno
Thanks so much for that. It’s exactly what I was after and looks so useful. I’ve also since seen in the descriptions of some of the modes on patchstorage some are made with ChatGPT
Hopefully one day soon I’ll be able to contribute also.
Thanks again for your amazing info
All the best
Justin
that was brilliant, have just uploaded my first patch to patch storage
with a few little tweaks I got pretty much what I wanted to create
so happy!
thanks again for the info
Hi
Is it possible to use .obj files albeit very basic ones, within a mode?
For example I wanted to add in a wireframe model of a human head to spin around etc and maybe little fun tweaks around that?
I was playing about with chat gpt and it gave me a code for everything with the desired file structure. I added in a obj file but the mode wasn’t recognised and my thought was the obj was quite complex with materials etc.
So before I pursue it further I just wanted to know if Eyesy will recognise an obj Has anyone tried it with success?
Many thanks
![]()
I think using .obj files might be difficult, currently the Eyesy doesn’t recognize them / doesn’t have the necessary libraries. Generally the obj stuff it is using a different underlying graphics system (OpenGL instead of SDL), and getting that stuff running on the Eyesy is challenging.
Ok thanks, ![]()