Oopsy & Daisy Seed : hardware mapping

You can find that by reading the libDaisy source code for Daisy Patch.

I have absolutely no idea how to do that (nor how to understand C++)

I have looked into the Libdaisy docs on Github but I can’t find the document regarding Patch there.

I’m trying to program a Daisy footpedal but I use gen~ and Oopsy. No understanding of C++ whatsoever. I’m really having a hard time finding info about this on the forum.
(Probably is easy for someone who does know C++ or Github but not for me.)

Could you post a link to the document where I can find that info? Then I can at least try to understand how it works.

Sorry, I forget this was an Oopsy question. The fact is, Daisy documentation is very incomplete, making it practically impossible to do something new without a working understanding of C++.

Yes, at least I learned that so far. :smirk:

Anyway, thanks for trying to help. I’ll try the Oopsy Discord, I read some users trying the same thing via Oopsy.

There’s a link to the schematic on the product page of Patch that’ll show you how the OLED is connected to Seed.

And here’s the json file for Patch for reference:

{
	"name": "patch",
	"som": "seed",
	"defines": {
		"OOPSY_TARGET_PATCH": 1,
		"OOPSY_TARGET_HAS_MIDI_INPUT": 1,
		"OOPSY_TARGET_HAS_MIDI_OUTPUT": 1,
		"OOPSY_IO_COUNT": 4,
		"OOPSY_HAS_ENCODER": 1,
		"OOPSY_TARGET_HAS_OLED": 1
	},
	"max_apps": 8,
	"display": {},
	"audio": {
    "channels": 4
  },
	"external_codecs": [
		{
			"periph": "SAI_2",
			"a_sync": "SLAVE",
			"b_sync": "MASTER",
			"a_dir": "TRANSMIT",
			"b_dir": "RECEIVE",
			"pin": {
				"fs": 27,
				"mclk": 24,
				"sck": 28,
				"sb": 25,
				"sa": 26
			}
		}
	],
	"components": {
		"knob1": {
			"component": "AnalogControl",
			"pin": 15,
			"flip": "true"
		},
		"knob2": {
			"component": "AnalogControl",
			"pin": 16,
			"flip": "true"
		},
		"knob3": {
			"component": "AnalogControl",
			"pin": 21,
			"flip": "true"
		},
		"knob4": {
			"component": "AnalogControl",
			"pin": 18,
			"flip": "true"
		},
		"encoder": {
			"component": "Encoder",
			"pin": {
				"a": 12,
				"b": 11,
				"click": 0
			}
		},
		"gateout": {
			"component": "GateOut",
			"pin": 17,
			"display": ""
		},
		"cvout": {
			"component": "CVOuts"
		},
		"gatein1": {
			"component": "GateIn",
			"pin": 20
		},
		"gatein2": {
			"component": "GateIn",
			"pin": 19
		}
	},
	"aliases": {
		"gate": "gatein1",
		"gate1": "gatein1",
		"gate2": "gatein2",
		"cvout": "cvout1",
		"encswitch": "encoder_rise",
		"enp": "encoder_press",
		"press": "encoder_press",
		"knob": "knob1",
		"ctrl": "knob1",
		"ctrl1": "knob1",
		"ctrl2": "knob2",
		"ctrl3": "knob3",
		"ctrl4": "knob4"
	}
}

You would need to also connect the encoder the same way if you want to scroll through the different OLED display menus.
If you want to display something specific beyond what’s already there, then you would need to program in C++.

1 Like

No need for special stuff on the display other then to show me which gen~ patch I’m using. Thanks!

If I understand the schematics correctly, I have to connect the OLED to the SPI pins (D7, D8, D9, D10) and pin D30(OLED rst) but I don’t have to specify the OLED pins in the json? Just specify that there is an OLED? That’s it?

As long as it’s the same type of OLED that Patch and Field use and it’s connected the same way to the Seed, yes, you pretty much only need to mention that there’s an OLED connected ("OOPSY_TARGET_HAS_OLED": 1).

Thanks. What type of OLED does Patch use? Can’t seem to find that info anywhere. Edit, found it on Discord (SSD1306)

Also, does this part of the json specify the MIDI connection?

“external_codecs”: [
{
“periph”: “SAI_2”,
“a_sync”: “SLAVE”,
“b_sync”: “MASTER”,
“a_dir”: “TRANSMIT”,
“b_dir”: “RECEIVE”,
“pin”: {
“fs”: 27,
“mclk”: 24,
“sck”: 28,
“sb”: 25,
“sa”: 26
}
}
],

Or does the MIDI also just needs a specification

Oopsy target has Midi input 1?

In that case: how do I connect a Midi input/output?

Hey @Takumi_Ogata , sorry for all these questions, but I was wondering, would it be a problem of the reset pin of the OLED is connected to another pin? Could I specify that somewhere else in the json? I am about to build a 125b pedal, and the OLED reset is on pin D11 instead of on D30 as in Patch.

I hope that I can find a way to specify that in a json (or somewhere else), otherwise the OLED on the pedal is useless to me.

So that portion of the JSON is for configuring the external codec which is used for Patch to add 2 more stereo I/Os and 2 more CV outs.

As far as I know, you can’t configure the OLED pins within JSON. You may have to dig into one of the cpp codes (I’m guessing it’s the daisy_patch.cpp code in libdaisy), change the pin number, and rebuild libdaisy.

Since you haven’t built it yet, you can also use pin D30.

Totally up to you.