-
Notifications
You must be signed in to change notification settings - Fork 12
pd2dsy Guide
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.
Follow along with the video guide!
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.
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:
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.
These tables describe what objects are available for each Daisy board and how they should be addressed.
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 |
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" |
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 |
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 |
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 |
- 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. -
If the LED on your Daisy Pod is white and you can't control the individual RGB brightness, please make sure that you do not have
[s led1_white @hv_param]
or[s led2_white @hv_param]
in your patch. For example, if you have[s led1_white @hv_param]
in the patch, you won't be able to adjust the brightness of the red with[s led1_red @hv_param]
. Similar case applies to the Daisy Petal.
- You can find a detailed description of pd2dsy and its options here
- If you're breadboarding or building custom hardware, you'll need to look into describing your hardware with JSON