EP-2350 Ting Customizable samples and effects via config.json

The EP-2350 “Ting” microphone is powered by the Raspberry Pi RP2350 microcontroller (that explains the model number), which when connected to a computer will mount a writable disk and includes basic instructions for setting up a config.json file and a sample document, to override any of the factory presets.

There are TEN effects available, several with multiple parameters, controllable by the user via the handle position, “trigger”, and shake. The demo file also shows an example of how effects can be layered to create a patch preset of effects, which explains how the two factory presets of echo and echo+spring are achieved.

What a neat device!

Firmware Update

Boot loader is accessed by holding the handle button and double clicking the button above the USB-C port, and must be held during the entirety of loading the firmware on and during the update. The factory firmware boot loader disk attached as “RP2350” and after upgrade to the Nov, 4 v1.0.5 presented as the documented “TING BOOT” disk.

From the pdf on the device regarding config.yaml

I don’t fully understand the "row" components of the example presets. If these are zero-indexed (as inferred from the gentle reminder "name": "We count from zero", then is the "lfo": { "row": 3, "param": "echo" line affecting the { "effect": "DELAY" (which is 3rd in the list, but index 2, and has an echo param) or the { "effect": "SAMPLE" element (which is 4th in the list, but index 3, and lacks an echo param) of the list?

example

{
  "name": "We count from zero",
  "samples": [
    { "pos": 1, "file": "samples/whistle1.wav","playmode": "oneshot" },
    { "pos": 0, "file": "live1/loop.wav","playmode": "startstop" },
    { "file": "horn.wav","playmode": "hold" },
    { "file": "live1/shottis.wav","playmode": "oneshot" }
  ],
  "presets": [
    {
      "pos": 0,
      "list": [
        { "effect": "HARMONY", "pitch": 2.0, "BUS": 2 },
        { "effect": "REVERB", "time": 0.1, "dry-level": 1.0 },
        { "effect": "DELAY","time": 0.5, "dry-level": 0.0, "echo": 0.5, "BUS": 1 },
        { "effect": "SAMPLE", "speed": 1.0 }
      ],
      "handle": { "row": 1, "param": "time","depth": 0.6 },
      "shake": { "row": 2, "param": "echo", "depth": 1.0 },
      "lfo": { "row": 3, "param": "echo", "depth": 1.0,
      "mpy": 1.0, "shape": "random", "phase": 0, "speed", 4.0 },
      "trigger": { "row": 3 }
    },
    {
      "pos": 2,
      "list": [
        { "effect": "HARMONY", "pitch": 2.0 },
        { "effect": "SAMPLE", "speed": 2.0 },
        { "effect": "REVERB", "time": 1.0, "spring": 0.5 },
        { "effect": "DELAY", "time": 0.1, "echo": 0.5 }
      ],
      "handle": { "row": 2, "param": "pitch", "depth": -0.2 },
      "trigger": { "row": 1 }
    }
  ]
}

effects


BALANCE:
  balance [0.0, 1.0]
DELAY:
  time [0.0, 1.2]
  lowpass-cutoff [0.0, 1.0]
  highpass-cutoff [0.0, 1.0]
  wet-level [0.0, 1.0]
  dry-level [0.0, 1.0]
  echo [0.0, 1.0]
  cross-feed [0.0, 1.0]
  balance [0.0, 1.0]
DIST:
  amount [0.0, 40.0]
  highpass-cutoff [0.0, 1.0]
  lowpass-cutoff [0.0, 1.0]
  mix [0.0, 1.0]
HARMONY:
  dry-level [0.0, 1.0]
  pitch [0.50, 2.0]
HIGHPASS:
  cutoff [0.0, 1.0]
LOWPASS:
  cutoff [0.0, 1.0]
SAMPLE:
  speed [0.0, 4.0]
  pitch [-24.0, 24.0]
  level [0.0, 1.0]
  balance [0.0, 1.0]
REVERB:
  dry-level [0.0, 1.0]
  wet-level [0.0, 1.0]
  time [0.0, 1.0]
  spring-mix [0.0, 1.0]
  highpass-cutoff [0.0, 1.0]
RING:
  frequency [0.0, 20000.0]
  mix [0.0, 1.0]
SSB:
  frequency [-20000.0, 20000.0]

LFO shapes


  [ sine, square, sawtooth, random ]
8 Likes

Awesome work, and thanks for sharing!

I was looking at RP2350s and audio hats for it yesterday, and hoping that someone makes a DIY version of the ting…

2 Likes

I’ve played with the config file a lot to dial in vocal effects for the Ting and it’s absolutely awesome.

Things I know:

  • Handle, Shake, and LFO can modify effects as well as sample playback parameters (pitch, volume, pan, etc)
  • Placement of the Sample effect can disable playback entirely–not 100% sure what’s going on there; talking to support about it
  • Sample playback can also be run through effects

Things I’m not sure about yet:

  • Can you apply multiple LFOs? Can handle/shake modulate multiple parameters, and if so what’s the syntax for that?
  • How do you use buses? Can you set different mix amounts for different buses?
1 Like

It’s not fancy effects-wise but I think I finally made a template for a dual mono output (note: samples are intentionally disabled in this one since it’s mostly for vocals)

The first BALANCE creates a copy of the original signal which it then routes to Bus 2 and pans to the hard right.

The DIST → DELAY → REVERB → BALANCE chain that follows adds some color to the track and pans it to the hard left.

Ta-da, now if you record this in split or dual mono mode you’ll get an unaffected output. Also for now the FX track is MUCH louder than the other one but I’ll fix that later.

{
	"name": "windowbed <3",
	"presets": [
	{
		"pos": 0,
		"name": "wet/dry output",
		"list": [
			{
				"effect": "BALANCE",
				"balance": 1.0,
				"BUS": 2
			},
			{
				"effect": "DIST",
				"amount": 10.0,
				"lowpass-cutoff": 1.0,
				"highpass-cutoff": 0.0,
				"mix": 0.3,
				"BUS": 1
			},
			{
				"effect": "DELAY",
				"time": 0.3,
				"dry-level": 0.5,
				"wet-level": 0.4,
				"echo": 0.1,
				"cross-feed": 0.0,
				"BUS": 1
			},
			{
				"effect": "REVERB",
				"time": 0.7,
				"spring-mix": 0.0,
				"highpass-cutoff": 0.0,
				"lowpass-cutoff": 0.65,
				"wet-level": 0.5,
				"dry-level": 0.5,
				"BUS": 1
			},
			{
				"effect": "BALANCE",
				"balance": 0.0,
				"BUS": 1
			}
		]
		}
	]
}
1 Like

is anyone able to get the sample ‘hold’ playmode to work?

also,

  • Placement of the Sample effect can disable playback entirely–not 100% sure what’s going on there; talking to support about it

@jtswearingen did you figure this out? really want to use fx to affect the sample parameters

1 Like

I don’t know all the answers to the questions I asked before, but I put everything I know here:

A commenter on that video requested a written resource (back to square one–I started making videos because folks on this message board requested them), and I agree that might be more helpful in this case. No specific plans there and I’m currently navigating some life changes so it’ll be a minute.

1 Like

Also look at the various “soundpacks” TE has in their download section for the Riddim & Ting.

It’s good to load a config onto the device and walk through the configuration on screen to understand what it’s doing.

And remember, references to “row 0” mean the first row, like how programers count: 0, 1, 2…

The online TE manual for the Ting documents some of the intermediate use, as well as the concept of the Bus keyword to augment the chain in advanced ways.