Dsp.coffee DPT module interest check

Hello,

I’m working on an internal daisy patch submodule based development platform (called DPT), and it came out pretty good so it occurred to me that it really could be useful to others. I wanted to drop a note about it here and then I can order more supplies + smt assembled boards if there is some interest. Can hit me up here or I’m on also Slack.

Basically, it accommodates all of the available pins on the submodule in contrast to patch.init(), so I can go sort of crazy for my own projects -

  • 8 pots normalled to +5V.
  • 8 CV in breaks normalled connection, then pot acts as an attenuator.
  • 2 gate in
  • 2 gate out
  • The standard stereo out.
  • 2 12-bit CV out from Daisy Patch Submodule is scaled to -5v to 10v
  • 4 12-bit CV (or lofi audio w/ some hacking) from external DAC (DAC7554), scaled to -7v to 7v.
  • TRS MIDI in/out (in is auto-sensing for type a/b)
  • SD card slot.
  • Has an expander header on the back for +5v, +3v3, SPI, UART, I2C, and USB connections.

Edit: Note that I’m still shaping up all the libraries for this to use the external DAC optimally and add some hooks for whatever is not already in libdaisy for patch_sm, but development will be pretty active.

Edit 2: After a mixup on another forum want to clarify, this isn’t a commercial product. Source files currently being set up here - GitHub - joemisra/dpt: dpt - multifunction electron temple

1 Like

One thing that I immediately wish it had is USB device port broken out on the front panel. And the second nice addition would be buttons to be able to trigger those gates manually.

I surely hope it doesn’t! LibDaisy sources mention PCM3060 codec, while Electro-Smith product page says it’s something from Cirrus Logic. Either way, WM8731 is not particularly great in terms of audio performance by modern standards. It used to be very cheap and commonly available, but nowadays neither is true.

1 Like

Ah yes you’re correct - it’s the PCM3060 on the submodule here, I got mixed up because the new Daisy seed does use the WM8731. (Visually confirmed both to be sure)

As far as usb and some buttons / switches etc. the panel was getting pretty complicated and large already, so I broke out relevant pins with plans to make a couple simple expanders. The first is going to be a small one with a mux on it for an array of toggles (sort of looking at daisy field as an example), and I’d like to set another up for an i2c oled - that one could probably fit the USB port on it too, so I might try that.

I’m largely still learning, so open to any other thoughts.

Consider using SPI instead of I2C, especially if the display is larger than the tiny 64x32 thingy. Also, an encoder is extremely useful if you add a display since you have to use something to navigate the UI.

And if we speak of displays, Yaroslav (@brbrr) was making something with Daisy and ILI9341. A large display is a game changer, but it can be challenging to get decent refresh rate.

The pins are there for SPI too - I’m using SPI for that extra dac7554 I added, so I was experimenting w/i2c displays instead to keep it simple.

I think it’d be possible to have multiple SPI devices on the same pins (?) but haven’t yet figured that out.

whoa! Beautiful pane alert!. Is it a PCB panel? Love the halftones on the bottom

Yup it’s a pcb panel w/ ENIG finish, it came out really nice! One of my best friends is helping w/ the panel design, here’s more of his stuff - https://nkurence.myportfolio.com/

1 Like

[Correction this version is an OSP finish, still experimenting!]

1 Like

Nice!

Regarding SPI displays - ILI9341 driver, which I adapted to work with daisy, uses 5 “data” pins (3 standard SPI pins), which is something to consider especially if I/O pins are limited.

I think it’d be possible to have multiple SPI devices on the same pins

Yup, but SPI requires + 1 address pin for every peripheral.

That ILI9341 looks pretty cool! I may be able to repurpose one of the other pins I broke out -

image

Aux 1 / 2 are two of the UART pins, A2 and A3. The other two UART_RX/TX are wired up for TRS midi normally, but here they’re not touching the supporting midi stuff and are actually the USB pins A9 and A8. I set this up way before I thought to open source the project so this is expander layout is how I figured I might approach things for myself.

Sharing SPI peripheral with something else would be a bad idea for a display of this size. It needs all available bandwidth to get decent FPS. It’s not a problem for smaller resolution displays, but to update this one at 60 FPS you have to send ~74 Mbit/second (if my math is correct). And that’s only part of the problem as there are some software challenges to solve in order to be able to render each frame without delay (i.e. use double buffering)

1 Like