Suggestions please for 16-channel 24-bit digital audio recorder

Hi all! I'm not sure I understand well the basis of this project. Is this completely dependent on P16-i, or can any ultranet device (like my XR18) be compatible?
What I'd like to achieve is exactly what @H3NN1 wants, so I'd really love to know what you've been able to achieve so far.
What I'd like to do is: connect this device to my console using the ultranet connection, and have 5 stereo outputs that we could use for in-ear monitoring. I would create some smaller deported and wired circuit boards, one per musician, containing a fader, a rotary encoder (to select the channel the fader is connected to) and another encoder to use for left-right balancing, and probably a bunch of leds. The output 3.5 jack would be deported on these peripherals. I'm not really afraid of the design and circuitry for that external peripheral, they could each use a small ESP32 board or any another controller and I'm quite comfortable with that, but the main part, the demultiplexing and mixing of the 5 stereo channels is where I would definitely be missing skills.
And to complexify this more, once this works, I would love to develop a V2 version which would be able to go wireless, for the 5 channels of in-ear monitoring, even if only with garage band quality level, so we would only need this main device and in-ear monitoring receivers.
@H3NN1 Have you been able to do something with all that?
@pcdimmer Do you foresee any major issue with such project, besides the overall complexity?
Thanks anyway, this already looks pretty promising!
Brice
Hi Brice, I got stuck with the Ethernet interface last year which apparently produced some audible "clicks". @pcdimmer advised me to wait until he had re-viewed the Ethernet circuit design. Otherwise I got quite far. Had already programmed a simple UI running on a webserver that would allow several users to remote control their personal mix via a mobile phone. However, meanwhile a band member decided to invest €3000 in a Midas M32 with digital stage box which provides the same functionality for us, so I didn't follow up anymore. Neverhteless, I'm glad to read there is progress and will wait for the article and/or the youtube video to come out and then hopefully bring this further. The band might still use it as stripped down solution for the rehearsal room. If I make progress that may be useful for others I will post it here. @pcdimmer: Keep up the great work !
 
@rolinger Do that mean that we could have one rp2040 each, allowing each of us to have our own mix, and daisy chain them to share the same Ultranet output? That would be a great solution too to have multiple mixers at the same, one for each musician.
That conversation is very exciting !
So far, I've got AES3 transmitter and receiver running on an RP2040 pico board with the following functionality
  • Transmits and receives 48kHz sampled AES3 frames between PIO's (directly connected), sending sine waves for each channel
  • Produces and detects sync and X/Y/Z (aka B/M/W) preambles
  • Puts received samples on an RP2040 PWM channel (for low quality analogue output)
  • Verified data format is OK with S/PDIF decoder on PulseView logic analyser
  • Verified stereo consumer IEC958 (S/PDIF) is decoded by a random cheap S/PDIF DAC
  • Transmits 8 channels 48kHz (i.e. Ultranet format) on direct pin-to-pin connection to itself
The receiver and transmitter each need a PIO (receiver uses the full 32 command capacity, transmitter a little less), but could have multiple state machines on each PIO (so potentially could receive/transmit 16 channels of Ultranet.

@pcdimmer do you have a way to capture the data frames that go with the Ultranet signal from your brilliant FPGA implementation, so I can reproduce those? My next step is to try to connect the prototype up as an Ultranet receiver, so any information would be welcome. I mean the 24-byte user data and channel status data that is transmitted 1-bit per frame. At present I'm just sending the minimal AES3 (professional bit set, everything else cleared, no CRC) or minimal S/PDIF (professional bit cleared, copy permitted, no additional data) but I'm not sure if Ultranet will generate/require something more than that?

With PIO code for other multichannel digital audio (e.g. ADAT lightpipe), it looks like the RP2040 could be the heart of a useful 'universal translator'. The PIO blocks are very powerful!

If there's interest, I'm expecting to upload to github if I can get it working as an Ultranet device.
 
Hi, I've been working on a modification of @pcdimmer's FPGA design, my project is to make a simplified version of the P16M for personal monitor mix in our church band. We already have some P16M units but they are getting to be very expensive to buy, and are also a bit complicated (too many knobs and buttons) for some of our users.
I have passed on many thanks to @pcdimmer for doing a lot of the hard work to get the basic blocks working, on top of his design I have added a simple user interface using a 320x240 LCD screen, 4 buttons and a rotary encoder. This just runs off some spare pins on the Arduino Vidor board. The audio is output using a UDA1334 stereo codec board. I 3d-printed a box for my prototype version.
I have made some modifications to the FPGA configuration to give basic audio metering on each of the 16 channels as this is useful for initial line checks. Also I have added a sync line from the incoming ultranet to the output codec as I was getting some crackling which I think was caused by the output free running vs the input.
It all works great, except one weird problem. Using an XR-18 mixer, the 16 channels are in the correct order. On an X32 mixer, ultranet channels 3-8 appear on my unit as channels 1-6, then ultranet 1-2 appears at channels 7-8, Same for 9-16. So the X32 obviously does something different in the frame encoding, but I can't work out what it is yet.

1714575962601.png


The RP2040 approach also sounds very interesting as the main drawback of the Arduino Vidor board is it's quite expensive at around £70-£80. I'd be interested to see the code for that. My fork of the original code is at
https://github.com/congoblue/UltranetReceiver