No Dac output with custom seed targets

Hi all, I’m new to the daisy seed and have been working on loading some patches onto my daisy seed with gen~/oopsy. I’ve used a custom json file to pick hardware targets like the related article on github mentions. This works totally well for me using ADC inputs to control my oopsy patch, however when trying to configure my json file for DAC output, I’m unable to get any signal from the DAC- I imagine this probably has to do with IO capabilities of those pins- I’ve made sure no other components are mapped to the relevant dac pins, so i’m just not sure what the issue is. My other issue is that when trying to configure the json file for a “GateOut” component mapping, I get a compiler error from the oopsy in the patcher so I haven’t been able to get any voltage out from any of the peripheral IO’s either to use as gates, only been successful with getting ADC ins and audio outs to work really. Any help would be grwatly appreciated! Thanks

Hey Dhack94,

In the next few days, I’ll try to get voltage out from my Seed’s DAC using oopsy and then get back to you as soon as possible.

In the meantime, could you tell us more about how you’re testing the DAC output. How is it wired? Is it connected to a Eurorack module, multimeter, or simply lighting up an LED? Photo may help.

And could you share the JSON code and screenshot of the gen~ patcher?

Maybe somebody might be able to see the solution by looking at these things.

Otherwise, I’ll do my best to get back to you with a solution as soon as I can. I appreciate the wait!

2 Likes

Hi again!

I got DAC working with oopsy. Here’s what I did!
Though I’m using Daisy POD, the approach should be applicable to Seed.

tl;dr: connect an LED or CV jack to Daisy using DAC 1 Out (pin 23) and ground, and then flash “oopsy_pod.maxpat” and you should see a voltage come out.

What I did was…

-Created a custom json file (shown at the bottom) and saved it in the “source” folder.

-Opened up “oopsy_pod.maxpat”, clicked “Browse”, selected the custom json file, and then hit the button to flash.

Now, a blue LED on the POD is glowing and I can control the speed by twisting the knobs to change the LFO speed. :slight_smile:

It’s worth noting that Seed’s DAC 1 Out Pin (pin 23) is used for POD’s blue LED.

So, what I recommend that you try out is using two knobs (connect one to pin 21 and the other to pin 15) and an LED (pin 23) and running the “oopsy_pod.maxpat” with the custom json file (or the POD json file should work fine too). And if you’re using the DAC for Eurorack CV, this approach should still work too.

Finally, you can edit the patcher so that you don’t need to worry about using the two knobs; just have a set frequency for the LFO.

Here’s the custom json file called seedLED.json. Now that I think about it, I probably didn’t need to do this, but I’ll keep it just in case.

{
	"name":"seedLED",
	"defines": {
		"OOPSY_TARGET_HAS_MIDI_INPUT": 1
	},
	"components": {
		"knob1": {
			"component": "AnalogControl",
			"pin": 21
		},
		"knob2": {
			"component": "AnalogControl",
			"pin": 15
		},
		"led1": {
			"component": "Led",
			"pin": 23
		}
		
	},
	"aliases": {
		"led1": "led1"
	}
}

Sorry for the wall of text!

Good luck and let me know if you have any questions!!

2 Likes

Takumi! Thank you so much for your help, it’s much appreciated.

I went ahead and followed your advice and was able to get variable voltage out of the dac input by assigning it as an LED component and choosing pin 23. Seems like that will totally work for my purpose so long as I set cv outs as LED components in the .json.

I was following this articles instructions originally about the naming conventions and using the component type “CVOuts” (tried w/wout pin name) and for some reason I can’t get the DAC to respond to that component type in the custom json, but it does seem like the LED workaround should do the trick so that is awesome :slight_smile: thanks a ton.

There’s just one last thing that is really driving me nuts: Assigning a “GateOut” component type in the custom json gives me a “compiler error” in the oopsy patcher everytime without fail. Maybe I could use the same LED workaround to get gates out of the GPIOs? (Will give that a try.)

for reference I’m running the daisy on a bastl om synth prototyping breadboard, I have a train object going out of a simple gen patcher for testing purposes. will attach the Json file that is giving me issues with the Gate out and CVOut component types. Any info on how to access those designations in custom json with the seed would be awesome. Thank you again!

{
“name”:“seed”,
“components”: {
“cv1”: {
“component”: “AnalogControl”,
“pin”: 15
},
“cv2”: {
“component”: “AnalogControl”,
“pin”: 16
},
“cv3”: {
“component”: “AnalogControl”,
“pin”: 17
},
“cv4”: {
“component”: “AnalogControl”,
“pin”: 18
},
“cv5”: {
“component”: “AnalogControl”,
“pin”: 19
},
“g8out”: {
“component”: “GateOut”,
“pin”: 20
},
“cv7”: {
“component”: “AnalogControl”,
“pin”: 21
},
“cv8”: {
“component”: “AnalogControl”,
“pin”: 22
},
“cv11”: {
“component”: “AnalogControl”,
“pin”: 25
},
“cv12”: {
“component”: “AnalogControl”,
“pin”: 28
},
“led1”: {
“component”: “Led”,
“pin”: 23
}
}

}

1 Like

@Dhack94 and @Takumi_Ogata thank you so much for these Q’s and A’s! The LED idea is awesome! I hope it’s not rude to piggyback some (hopefully) related questions of my own?

Re: the DAC out on GPIO 22 and 23, I’m seeing them on schematics labeled as ‘DAC1 out 1 & 2’. Does this mean that both pins send the same voltage as each other? Or are GPIO 22 and 23 able to send CV independent of each other? In connection with that, the ‘custom seed targets’ page on the oopsy git uses the phrase ’no pins required’, which seems confusing to me.

The Oopsy project I have in mind needs four CV outs and no audio input or output. I was hoping to use GPIO 22 and 23 as is, and the two audio outputs (though I think this won’t work now. originally I thought that I could use these by DC coupling them on a custom board, but looking at the Seed schematic (esp. C64 and C65) it looks like they’re already filtered with capacitors before getting to the pin. I’d love to be as wrong about this as I am about most other things)

It’s looking like adding an external DAC is going to be the way to go? But now I’m not sure if I need to add to the seed two or three more channels… Thoughts? Concerns? Advice?

Great! I’m glad to hear that it’s working.

I would recommend trying that out for the gate out in the meantime. “LED” is just a naming convention (that seems to be working for your application so far), so it’ll be the same voltage whatever name you use.

I do think it’ll be beneficial for us to have a basic seed json file that includes all the i/o with general names. For example, “analogIn1”, “dac1”, “digitalIn1”, and etc. This is a topic that I just saw getting brought up in the Pure Data channel of our Discord too.

Hey Justin!

Those 2 DAC pins should be independent.

External DAC seems like the way to go. I have used Adafruit MCP4728 Quad DAC with Arduino, and it seems to be working well. Here’s an entire video I made about it (4 CVs From Arduino! (DIY Eurorack Tutorial) - YouTube)
I have been meaning to use that with Daisy for a while now. I will look more into it and try it out; there seems to be past forum posts about I2C and Oopsy.

There is another approach to adding DAC and that is to use the PWM output of Daisy and running that into a lowpass filter circuit, which actually sounds easier than you think. It won’t be pristine clean but it gets the job done (especially for non-pitch CVs).
I always reference this video for that WERKSTATT-01 | LFO Quantizer Mod - YouTube. Just one resistor and one capacitor!
I have used this personally to make a custom eurorack controller :slight_smile:

Best of luck!

1 Like

Thank you so much @Takumi_Ogata !! This forum was already an amazing resource, but with your help its at a whole other level. Thank you! I’ll review the YT videos you mentioned…

Could I ask for clarification on one point? (again, sorry to hijack this thread, I realize I’m dominating the conversation)

Those 2 DAC pins should be independent.

How would this look in a JSON and in Oopsy? If no pins are specified in the JSON, how can objects in Gen~ be named to send voltage to the correct destination? For example: send a sine shaped oscillator to cv out 1 and a ramp at a different frequency to cv out 2? I’m sure I’m missing/not understanding something very basic, sorry!

1 Like

No worries at all Justin!

json file is tricky to get the hang of for sure!

Updated seedLED.json

{
	"name":"seedLED",
	"defines": {
		"OOPSY_TARGET_HAS_MIDI_INPUT": 1
	},
	"components": {
		"knob1": {
			"component": "AnalogControl",
			"pin": 21
		},
		"knob2": {
			"component": "AnalogControl",
			"pin": 15
		},
		"led1": {
			"component": "Led",
			"pin": 23
		},
		"led2": {
			"component": "Led",
			"pin": 22
		}
		
	},
	"aliases": {
		"led": "led1"
	}
}

This json file should work with Seed. The idea of sharing this is to mainly show you how that 2nd DAC is added. See how the pin 22 was added when compared to the previous version of this json file shown above?

And I highly recommend first trying out what I suggested to Dhack94 above. Get that first DAC working and then move on to having 2 DACs at once :+1:
Btw in gen~, the objects mapped to each of the DACs will be [out 3 led1] [out 4 led2] in this case.

2 Likes