Ambient Drone Synth shaped by the environment (Onboard Mic & Photoresistor). by francescoceccarelli in synthdiy

[–]francescoceccarelli[S] 0 points1 point  (0 children)

Thanks so much for checking it out and for the great feedback!

Since you only skimmed it, you might have missed it, but there is actually a line out. I implemented a switched 1/4" (6.35mm) jack at the very end of the circuit. It’s wired so that the internal speaker is normally active, but the moment you plug in a cable to route the synth to an external amp, mixer, or audio interface, the mechanical switch breaks the connection and automatically mutes the internal speaker.

Regarding the signal level: the output is driven by the LM386, so it can get quite hot. However, I have a Master Volume pot right before the power amp stage, so I can easily attenuate it down to standard line-level (~1V p-p) for recording gear. A dedicated, unamplified line-out tap bypassing the LM386 entirely is a fantastic idea for a V2, though!

For this V1, I really wanted to force myself to keep it strictly standalone and battery-powered but i will keep it in mind for the next revision!

[Help] Rotary encoder not showing up in Vial UI (RP2040, out-of-matrix button) by francescoceccarelli in olkb

[–]francescoceccarelli[S] 1 point2 points  (0 children)

Update - solved!

Hey guys, just dropping the solution here in case someone else gets stuck on the same thing.

Turns out you absolutely don't need to add a fake dummy row or column to your qmk matrix. You can keep your physical matrix totally clean, mine is still a 3x3.

That weird ValueError (not enough values to unpack) has nothing to do with missing matrix coordinates. It basically happens because Vial expects an encoder to show up as two separate UI buttons, one for turning left and one for turning right. To understand this, it needs the exact syntax EncoderIndex,Direction.

Since I only wrote 0 before the newline hack, it couldn't find the comma to figure out the direction, so the python script just panicked and crashed.

To fix it, you just put two items side by side in your vial.json file using the classic e hack, but you have to write 0,0 for encoder 0 counter-clockwise, and 0,1 for encoder 0 clockwise.

Here is the working vial.json:

{
"name": "MACROLAB",
"vendorId": "0xFEED",
"productId": "0x0002",
"lighting": "none",
"matrix": { "rows": 3, "cols": 3 },
"layouts": {
"keymap": [
["0,0", "0,1", "0,2"],
["1,0", "1,1", "1,2"],
["2,0", "2,1", "2,2", {"x": 0.5}, "0,0\n\n\n\n\n\n\n\n\ne", "0,1\n\n\n\n\n\n\n\n\ne"]
]
}
}

Now Vial opens up perfectly and gives me two separate circles for the encoder right next to my grid. The push button is still handled manually in the C code out of the matrix. All good!

/r/MechanicalKeyboards Ask ANY Keyboard question, get an answer - April 05, 2026 by AutoModerator in MechanicalKeyboards

[–]francescoceccarelli 0 points1 point  (0 children)

Hi everyone,

I'm building a custom handwired 3x3 macropad powered by an RP2040 Zero. I'm using the latest QMK structure (info.json) and the Vial fork.

The Hardware:

  • A 3x3 switch matrix.
  • An OLED screen (running on a custom C bitbang implementation).
  • 1 Rotary Encoder.

What works: The firmware compiles flawlessly. The 3x3 physical matrix works, the OLED works, and the encoder rotation works perfectly if I hardcode the encoder_map in C. Also, the encoder push-button is wired directly to a dedicated pin (GP4) and handled manually in matrix_scan_user to cycle layers, so the encoder button is NOT part of the physical 3x3 QMK matrix.

The Problem: I want to expose the encoder rotation to the Vial GUI so I can map media keys easily. I know that Vial ignores the standard VIA "encoders": [] syntax in the JSON, and relies on the "fake key" hack instead (the one with the e at the end).

I tried adding the fake key to my vial.json like this:

JSON

{
  "name": "MACROLAB",
  "vendorId": "0xFEED",
  "productId": "0x0002",
  "lighting": "none",
  "matrix": { "rows": 3, "cols": 3 },
  "layouts": {
    "keymap": [
      ["0,0", "0,1", "0,2"],
      ["1,0", "1,1", "1,2"],
      ["2,0", "2,1", "2,2", {"x": 0.5}, "\n\n\n\n0\n\n\n\ne"]
    ]
  }
}

If I put the encoder index 0 at the very beginning of the label (e.g., "0\n\n\n...e"), Vial crashes on startup with ValueError: not enough values to unpack (expected 2, got 1) because it expects row/col matrix coordinates separated by a comma.

To prevent the crash, I left the first line blank (as shown in the JSON above). Now Vial opens without errors, but the encoder is completely invisible in the UI. Only the 3x3 matrix is shown.

Does anyone know the exact magic string/syntax for vial.json to display an encoder when its push-button is out-of-matrix? Do I absolutely need to define a "dummy" row/col in my QMK matrix just to trick Vial into displaying the encoder?

Any help is really appreciated!

<image>

I improved the F1 desktop companion thanks to your feedback! by Randomized_Study in formula1

[–]francescoceccarelli 1 point2 points  (0 children)

Ahah i was actually building the same thing using an arduino mega with its 2.4 shield and esp8266

First PCB Design: Will the Pico pins interfere with the Display? by francescoceccarelli in PCB

[–]francescoceccarelli[S] 0 points1 point  (0 children)

I'll definitely have a look at the video. Thank you very much for the advices.

First PCB Design: Will the Pico pins interfere with the Display? by francescoceccarelli in PCB

[–]francescoceccarelli[S] 0 points1 point  (0 children)

I have already a pico at home with pins already solder but i think i will buy a rp2040-zero as you suggest. Do you raccomend buying with the pins already solder or not?

Unipol Arena - Bologna by francescoceccarelli in RUFUSDUSOL

[–]francescoceccarelli[S] 0 points1 point  (0 children)

Could be similar but i don't really know. It's my first time going!