Skip to content

pd2dsy Guide

Corvus edited this page Aug 11, 2023 · 3 revisions

Getting Started with pd2dsy

pd2dsy is a tool that allows you to convert almost any Pd patch into native Daisy code. With all the I/O available to the Patch Submodule, you can get up and running fast with unique and powerful eurorack applications.

Steps

Follow along with the video guide!

Get Pd up and running

You won't get very far if you don't have Pd set up! The Pure Data site has installers for the major OSes, so it should be easy to get up and running if you don't have it already. You don't actually need Pd to convert patches, but you won't be able to edit them without it.

Install the Toolchain

In order to compile programs and flash them to the Daisy, you'll need to set up the Daisy toolchain. The process is fairly straightforward, but differs slightly depending on your OS. Instructions for each can be found here:

Download pd2dsy

Running an example

pd2dsy comes zipped up in a folder. To run it, simply extract the contents where you want them and double click the program titled "pd2dsy_gui" in the "data" folder. Once open, you can find all the examples in the file > examples menu. Selecting any of these will open a project with the pd file location and options pre-configured for the target board.

Once you've selected a suitable example, you can flash the pd patch to your Daisy. To do so:

  • Connect the Daisy's USB to your computer

  • Put the Daisy into bootloader mode by holding the BOOT button down, and then pressing the RESET button. Once you release the RESET button, you can also let go of the BOOT button. This sequence is demonstrated below.

  • Press the Flash Program button

From this point, as long as you've put the Daisy into its bootloader mode, the entire process from conversion to compilation to flashing should be handled by pd2dsy.

You can find the examples in the pd2dsy_gui/examples/PdFiles folder if you want to open them up in Pd. If you want to build off of them, make sure to copy them and place them in your own project folders to avoid modifying the actual built in examples.

Daisy Board I/O

These tables describe what objects are available for each Daisy board and how they should be addressed.

patch

Name Aliases Type Variants Pin
knob1 knob, ctrl, ctrl1 Voltage Input --- 15
knob2 ctrl2 Voltage Input --- 16
knob3 ctrl3 Voltage Input --- 21
knob4 ctrl4 Voltage Input --- 18
encoder --- Encoder encoder_press, encoder_rise, encoder_fall, encoder_seconds "a": 12, "b": 11, "click": 0
gateout --- Gate Out --- 17
cvout1 cvout CV Out --- ---
cvout2 --- CV Out --- ---
gatein1 gate, gate1 Gate In gatein1_trig 20
gatein2 gate2 Gate In gatein2_trig 19

patch_init

Name Aliases Type Variants Pin
cv_1 knob, knob1, ctrl, ctrl1 Voltage Input --- "C5"
cv_2 knob2, ctrl2 Voltage Input --- "C4"
cv_3 knob3, ctrl3 Voltage Input --- "C3"
cv_4 knob4, ctrl4 Voltage Input --- "C2"
cv_5 knob5, ctrl5 Voltage Input --- "C6"
cv_6 knob6, ctrl6 Voltage Input --- "C7"
cv_7 knob7, ctrl7 Voltage Input --- "C8"
cv_8 knob8, ctrl8 Voltage Input --- "C9"
adc_9 --- Voltage Input --- "A2"
adc_10 --- Voltage Input --- "A3"
adc_11 --- Voltage Input --- "D9"
adc_12 --- Voltage Input --- "D8"
gate_out_1 gateout, gateout1 Gate Out --- "B5"
gate_out_2 gateout2 Gate Out --- "B6"
cvout1 cvout, cv_out_1 CV Out --- ---
cvout2 cv_out_2 CV Out --- ---
gate_in_1 gate, gate1 Gate In gate_in_1_trig "B10"
gate_in_2 gate2 Gate In gate_in_2_trig "B9"
sw1 switch, switch1, button Switch sw1_press, sw1_fall, sw1_seconds "B7"
sw2 switch2, toggle Switch sw2_press, sw2_fall, sw2_seconds "B8"

petal

Name Aliases Type Variants Pin
sw1 switch, switch1 Switch sw1_press, sw1_fall, sw1_seconds 8
sw2 switch2 Switch sw2_press, sw2_fall, sw2_seconds 9
sw3 switch3 Switch sw3_press, sw3_fall, sw3_seconds 10
sw4 switch4 Switch sw4_press, sw4_fall, sw4_seconds 13
sw5 switch5 Switch sw5_press, sw5_fall, sw5_seconds 25
sw6 switch6 Switch sw6_press, sw6_fall, sw6_seconds 26
sw7 switch7 Switch sw7_press, sw7_fall, sw7_seconds 7
encoder --- Encoder encoder_press, encoder_rise, encoder_fall, encoder_seconds "a": 28, "b": 27, "click": 14
knob1 knob, ctrl, ctrl1 Voltage Input --- 16
knob2 ctrl2 Voltage Input --- 19
knob3 ctrl3 Voltage Input --- 17
knob4 ctrl4 Voltage Input --- 20
knob5 ctrl5 Voltage Input --- 18
knob6 ctrl6 Voltage Input --- 21
expression --- Voltage Input --- 15
led_ring_1 ... led_ring_8 --- RGB LED led_ring_1_red, led_ring_1_green, led_ring_1_blue, led_ring_1_white See JSON
led_fs_1 --- LED --- 15
led_fs_2 --- LED --- 25
led_fs_3 --- LED --- 26
led_fs_4 --- LED --- 27

pod

Name Aliases Type Variants Pin
sw1 switch, button, switch1, button1 Switch sw1_press, sw1_fall, sw1_seconds 27
sw2 switch2, button2 Switch sw2_press, sw2_fall, sw2_seconds 28
knob1 knob, ctrl, ctrl1 Voltage Input --- 21
knob2 ctrl2 Voltage Input --- 15
encoder --- Encoder encoder_press, encoder_rise, encoder_fall, encoder_seconds "a": 26, "b": 25, "click": 13
led1 led RGB LED led1_red, led1_green, led1_blue, led1_white "r": 20, "g": 19, "b": 18
led2 --- RGB LED led2_red, led2_green, led2_blue, led2_white "r": 17, "g": 24, "b": 23

field

Name Aliases Type Variants Pin
sw1 switch, button, switch1, button1 Switch sw1_press, sw1_fall, sw1_seconds 30
sw2 switch2, button2 Switch sw2_press, sw2_fall, sw2_seconds 29
cv1 --- Bipolar Voltage Input --- 17
cv2 --- Bipolar Voltage Input --- 18
cv3 --- Bipolar Voltage Input --- 25
cv4 --- Bipolar Voltage Input --- 24
knob1 knob, ctrl, ctrl1 Voltage Input --- 0
knob2 ctrl2 Voltage Input --- 3
knob3 ... knob8 --- Voltage Input --- See JSON
cvout1 cvout CV Out --- ---
cvout2 --- CV Out --- ---
gatein --- Gate In gatein_trig 0
gateout --- Gate Out --- 15
pada1 ... pada8 --- Switch pada1_press, pada1_fall See JSON
padb1 ... padb8 --- Switch padb1_press, padb1_fall See JSON
led_key_a1 ... led_key_a8 --- LED --- See JSON
led_key_b1 ... led_key_b8 --- LED --- See JSON
led_knob_1 ... led_knob_8 --- LED --- See JSON

Troubleshooting

  • For Mac users, you may see an error that libusb is missing.  In order to install it through homebrew, please run the following line in the terminal:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Then, please wait for the download to finish. Finally, run the following line in the terminal to complete the installation:

brew install libusb

  • Also on Mac, you may see security messages when you try to open "pd2dsy_gui". The workaround is to select “Allow applications downloaded from 'Anywhere'” in the "Privacy & Security" section of "System Settings". In recent Mac OS, this option was disabled, so here’s how to enable it. First, reopen Terminal. Then, run this line: sudo spctl --master-disable. Now, you should be able to select “Anywhere” on “Allow applications downloaded from”. It is highly recommended that you switch back to “App Store and identified developers” once you have pd2dsyGUI opened up.

Next steps