EYESY running ETC Modes

Hello, i’m new in the EYESY world.
I thought EYESY was an upgrade and a replacement of ETC.

But i cant run any ETC modes form patch storage into EYESY.

Can somebody explain me what we have to modify in the PY files to make it working?

Other question why is not much news, évolutions ( Lua engine firmware ) or more modes concerning EYESY?
Looks like this project is not evolving too much since 1 year…

Thanks in advance.

1 Like

To get most modes working with HDMI output (see note below), there is one addition and one change to the code.

Addition: You will have to add the following line to the beginning of the ‘draw’ loop:


…this line needs to go after the global variable declaration (if applicable). For example:

def draw(screen, etc):
    global count, y

Change: Any instance of:


…needs to be changed to include your knob of choice. Usually with ETC, this is would be Knob4:


Here’s an example of a complete line of code (though ‘color’ may not always be used as variable name. It could be ‘col’ or ‘c’ or something else altogether…)

color = etc.color_picker(etc.knob4)

NOTE: The ETC modes are likely coded only for HDMI 1280x720 resolution. This means that there are some constants included in a ETC mode’s code like ‘360’ (for the center of the y-axis (720 ÷ 2)).

The EYESY python modes are coded to be able to switch between HDMI 1280x720 and Composite NTSC/PAL resolutions from one boot up to the next, so constants like ‘360’ will not be updated when the resolutions change. EYESY modes have constants coded a little differently. This is done with etc.xres and etc.yres For example:
ETC Code:

x = int(etc.knob1*1280)
y = int(etc.knob2*etc.720)

…becomes EYESY Code:

x = int(etc.knob1*etc.xres)
y = int(etc.knob2*etc.yres)

If you never want to use composite video output or are fine with the composite output visuals not being in the center of screen, etc. no need to change the code.

If you aren’t OK with it, you will need to update any width and height relationships and any ‘hardcoded’ constants/positions of objects. For example, if your ETC code (based on y-axis resolution of 720) uses ‘360’ for a constant value for something like the start point of a line, you would want to add a variable to the top of the code (underneath the import…) like so:

start_point_y =  ((360 * etc.yres) / 720)

…and for say ‘640’ as a constant in the x-axis at 1280 resolution:

start_point_x = ((640 * etc.xres) / 1280)

… then in Draw loop, replace that constant ‘360’ with ‘start_point_y’ and that constant ‘640’ with ‘start_point_x’.

Repeat for as many variables/constants/etc. as needed.


Thanks a lot for this clear step by step explanation !

1 Like

Thanks! I just added some explanation about resolution and constants etc.

Actually i have other questions about that.
All your step are crystal clear but when i download and open an ETC mode there is multiple folders into it not just " Main py" like you can see in the screenshot attached.
(In this exemple i took “Klingon Flash Cards” mode as exemple.)

  • Except the “preview.png” What exactly those différents files are doing ?
  • I have to copy paste just the Main.py or all the files into my EYESY ?
  • If all, do i have to modify the code in all files or just the " Main.py"?

That mode was made by an ETC user so I am not too familiar with it but you definitely need the following files:

  • font.ttf - this is the font the mode uses to display the text.
  • klingon.py - I think this is the dictionary
  • main.py - the main mode file

The info.py file is not needed. But the EYESY will ignore it and the preview.jpg file.

The easiest thing to do is upload the zipped file to the Python mode folder:
And then unzip. Each mode needs its own folder.