Hacking Behringers Ultranet for a FPGA-based DIY-Audiomixer

In this episode I bring a broken Behringer P16-I back to life to build a FPGA-based audiomixer.
For this I'm using an Arduino MKR Vidor 4000 board with a SAMD21 microcontroller and an Intel Cyclone 10LP FPGA for the signal-processing. The audio-output to the analog world is done using a SPDIF adapter as well as a PDM-based DAC.
The whole project can be found on GitHub: github.com/xn--nding-jua/Ultr...
Detailed description of the project on my website: www.pcdimmer.de/index.php/har...
More projects on the main-page: www.pcdimmer.de
Disclaimer: This video is brought to you by: "me" :-) I'm not sponsored and do not make any money from it. I use KZread as a kind of vlog to share my hobby projects with you.
Content
0:00:00 Intro
0:00:56 Broken audio hardware!?
0:02:56 Analysis of ICs and signals
0:07:43 FPGA-design
0:11:19 Audiotests
0:18:14 DIY analog output
0:20:46 PCB and outlook

Пікірлер: 38

  • @haakonness
    @haakonness6 күн бұрын

    When I saw this video, it had 255 likes. So it kind of hurt me a bit to give you the 256th like, moving your like counter into two bytes of storage :P :P Super awesome video! KZread recommended me your mixing console with os/2 -video, and this kind of fiddling with mcu's and fpga's is really interesting :D can't wait for the continuation of this project. And great videos by the way! You are very good at keeping it interesting the whole way!

  • @klickeldiklick
    @klickeldiklick7 ай бұрын

    Sehr beeindruckend! Für Audio interessiere ich mich gar nicht, aber für FPGAs, die Protokolle und die Technologie schon. Softwareentwickler gibt es wie Sand am Meer, das kann man schnell lernen, oder sich gut helfen lassen (ChatGPT etc.). Microcontroller sind ein kleiner, weiterer Schritt. Aber FPGA Programmierer sind wie Magier! Danke!

  • @mstratforduk
    @mstratforduk4 ай бұрын

    Ooooh, Ultranet to Spdif, been looking for this for many years!! Will have to try this out, thank you very much for the explanation and your vast knowledge!

  • @pcdimmer

    @pcdimmer

    4 ай бұрын

    Thanks. I'm currently working on a full 16 channel digital audiomixer based on this Arduino Vidor 4000 with EQs, NoiseGate and compressor. Most of the things are already working. In a couple of weeks I will do another Video about this. Stay tuned.

  • @tuck1s
    @tuck1s6 ай бұрын

    Excellent project! Thank you for sharing. I started using XMOS devices many years ago, then we sold our Behringer kit and got Mackie instead.. That Arduino device looks very flexible.

  • @pcdimmer

    @pcdimmer

    6 ай бұрын

    Hey, I'm working on a very improved version of this Arduino-MKR-Audiomixer. I'm close to a working 22ch-Digital-Mixer with EQ'ing, dynamic compressors and digital crossovers and the next KZread-Video is beeing planned about this topic. Stay tuned...

  • @cdnsoundguy
    @cdnsoundguy3 ай бұрын

    Brilliant, Thank you Christian. Your style of using simple examples is perfect.

  • @thomascouderc4661
    @thomascouderc4661Күн бұрын

    Awseome job ! Big thanks for sharing

  • @MordecaiV
    @MordecaiV9 ай бұрын

    Hi Chris, thanks for the video! Like I commented on the DIY audio thread, I'm trying to see if I can implement something similar even on a pi pico w. We'll see!

  • @davidrobertson4301
    @davidrobertson430112 күн бұрын

    Fascinating. Inspiring, but it just seems like too much information I'd need to absorb before I could utilize this idea But I've subscribed to your channel and will keep watching. Although I don't think I've got enough brain cells left at this old age to follow everything exactly But I do appreciate your work

  • @jon68z
    @jon68z8 ай бұрын

    Awesome - Good luck on the repair!

  • @ChrisShucksmith
    @ChrisShucksmith8 күн бұрын

    I've never met a single FPGA engineer that could have got a sound out of that setup on the first P&R -- especially with no simulation 🙂

  • @pcdimmer

    @pcdimmer

    7 күн бұрын

    In fact, I didn't use ModelSim/Questas because I didn't know how to simulate I2S audio signals well. The calculation of the IIR filters was not that difficult in the end. But the connection of all components with each other and the optimization of the VHDL-code to fit into the small device cost me nerves. The audio compressor and the noise gate were also a challenge. But now it works.

  • @labgsm8185
    @labgsm81853 ай бұрын

    Nice work Thank you

  • @ChrisgammaDE
    @ChrisgammaDE25 күн бұрын

    Nice job. Keep it up

  • @jjptech
    @jjptech2 ай бұрын

    Damn!!! Thank you!!!

  • @robbgosset674
    @robbgosset6742 ай бұрын

    Fantastic work and a great demo of your process, thank you for sharing. Would it be possible to create a similar device to output Ultranet after capturing audio from another source (such as another manufacturers digital snake system)?

  • @pcdimmer

    @pcdimmer

    Ай бұрын

    Hi, in general it should be quite easy to multiplex the eight channels within an AES/EBU signal, but I'm not sure if Behringer is checking against some of the additional status bits to ensure a valid Ultranet signal. While receiving I'm ignoring these bits.

  • @telmnstr
    @telmnstr2 ай бұрын

    Ultranet to usb file writing would be useful for making a multitrack backup recording from the xair mixers.

  • @pcdimmer

    @pcdimmer

    2 ай бұрын

    Well, recording a stereo I2S from the FPGA via the ESP32 to an SD Card is possible and quiet easy. But recording to USB is a bit harder. One solution could be the CH375B Chip, which has a USB Stack. But I'm not sure if it can handle the desired data rate. Another idea and a bit easier: streaming the multi-channel audio from the FPGA via Ethernet to a PC. This is something I'm thinking about as I have an old FPGA eval-Board with Ethernet. Would be much easier than USB with FAT32 I think.

  • @telmnstr

    @telmnstr

    2 ай бұрын

    SD card would be fine as well. Any storage media really.

  • @telmnstr

    @telmnstr

    2 ай бұрын

    Ultranet to Ethernet bridge would be awesome

  • @Michael-ze6oz
    @Michael-ze6oz6 ай бұрын

    Hi Chirstian, the way you show and explain everything precisely and clearly is awesome, thank you! You showed that a connection with the Behringer P16 was needed to activate the datastream. What does the Powerplay-16 need to 'see' on its ultranet connection in order to start the data stream?

  • @pcdimmer

    @pcdimmer

    6 ай бұрын

    Hi, thanks for the kind feedback - good to hear. The Powerplay P16-I only needs to see a small power-consumption on its 15V-power-rail to activate the digital outputs. I bypassed this in the video using the digital-inputs of the buffers directly, but if you apply a resistor roughly around 2k2 between +15V and GND as I've shown in the schematics (see resistor R4 in github.com/xn--nding-jua/UltranetReceiver/blob/main/Schematic.pdf), the regular outputs will be activated.

  • @Michael-ze6oz

    @Michael-ze6oz

    6 ай бұрын

    @@pcdimmer Hi Christian, thank you for your fast response and the information. It is fascinating to think about the possibilities of your project. When the ultranet data is expanded with 'writing data' then communication with the Midas DN4888 StageConnect interface would undoubtedly also be possible. How cool is that !

  • @christiantorma2440
    @christiantorma24409 ай бұрын

    Du geiler Typ 😅 ✌️😎🤘😎🤘😎🤘

  • @colinstu
    @colinstu4 ай бұрын

    When you tested connecting the two devices together, what cable did you use? was it pinned out correctly and full continuity?

  • @pcdimmer

    @pcdimmer

    2 ай бұрын

    You mean between P16I and the P16M? Yes, it was an 8 pin Ethernet Cable and it is working between the P16M and a P16D or the X32. Within the P16I the BufferIC and several resistors are defective so I have to replace several components. But at the moment I'm working on the FPGA system. It is nearly ready for the first release :)

  • @MapleAudio
    @MapleAudio9 ай бұрын

    Hi Christian, vielen Dank für deine Arbeit. Das Projekt ist der absolute Wahnsinn! So kann man theoretisch auf den Behringer XR18 Mixern unendlich viele Outputs generieren. Echt Klasse. Ich hab tatsächlich keine Ahnung vom Arduino MKR Vidor, aber es scheint so als ob ich auf der Arduino-Seite, wie sonst auch, die Inputs und Outputs nutzen könnte um z.B. Encoder für die Bedienung des UltranetReceivers anzuschließen, richtig? Wie ist deine Einschätzung ein Touchscreen zum laufen zu kriegen? Mit dem normalen Arduino klappt es prinzipiell und generell sollte der MKR Vidor 4000 genug Kapazitäten dafür haben, oder? Nochmals vielen Dank. Seitdem ich deine Nachricht im DIY-Audio-Forum gesehen hab war ich sehr gespannt wie es sich weiterentwickelt. Beste Grüße Dennis

  • @pcdimmer

    @pcdimmer

    9 ай бұрын

    Hi, vielen Dank für die Rückmeldung. Ja, der SAMD21-Controller kann ohne Probleme Displays (z.B. über I2C oder SPI) und Encoder verarbeiten. Zwar nutzen FPGA und Controller die gleichen Headerleisten, aber es sind ausreichend Pins verfügbar und solange man nicht FPGA- und Controller-Pins auf "Ausgang" konfiguriert ist das kein Problem. Sofern die Pins dann doch nicht reichen sollten, kann man die vordere Pinleiste dann noch verwenden (Mini PCI-Express-Anschluss). Der SAMD21 taktet mit 48MHz und hat insgesamt recht gute Ausstattung, sodass man damit auch ein hübsches Menü programmieren kann. Ich habe den Controller schon zusammen mit dem IL9163-Treiber von Alexey Dynda - github.com/lexus2k/ssd1306 - mit einem OLED-Display verwendet. Klappt gut. viele Grüße, Christian

  • @MapleAudio

    @MapleAudio

    8 ай бұрын

    @@pcdimmer Hi Christian, Ich versuche das ganze gerade erstmal nachzubauen und als jemand der eigentlich wenig Ahnung hat gestaltet sich das schwierig. Einer der Fehler der bei mir herausgespuckt wird ist folgender: ...\AppData\Local\Temp\arduino\sketches\66EA08F281E57F0649CEC4E3F243BC94\sketch\Controller.ino.cpp.o: In function `__static_initialization_and_destruction_0': ...\UltranetReceiver-main\Controller/Controller.ino:99: undefined reference to `Ticker::Ticker(std::function, unsigned long, unsigned long, resolution_t)' Ich habe mir die Ticker.h library heruntergeladen und im Projekt nochmal eingefügt. Was schonmal manche Fehler beseitigt hat, aber diese bleiben. Ist es richtig, dass die Zeile die du bei 14:19 hinzufügst so im Niemandsland herumschwebt? Also diese Zeile hier: "Ticker TimerSeconds(TimerSecondsFcn, 1000, 0, MILLIS);" Ich würde mich echt über ein Tutorial von dir freuen, dass für totale Noobs an das Thema herangeht. Ich kann natürlich verstehen, dass das schon sehr viel Arbeit ist. Es ist halt ein super spannendes und hilfreiches Projekt.

  • @pcdimmer

    @pcdimmer

    8 ай бұрын

    @@MapleAudio Hi, nun, die Funktion TickerSecondsFcn ist bei Dir nicht definiert. Das ist bei dem Code auf Github aber der Fall: github.com/xn--nding-jua/UltranetReceiver/blob/main/Controller/Controller.ino Dort wird direkt über der von Dir genannten Zeile die Funktion definiert. Die lässt aber ohnehin nur die LED blinken. Ein Tutorial ist aber auch eine gute Idee.

  • @ARTWORKFOTO-DE
    @ARTWORKFOTO-DE3 ай бұрын

    Mega spannend! Eigentlich wäre ja ohne Probleme auch ein 8x AES Output möglich, richtig? So ein Gerät könnte ich gut gebrauchen, baust du auch auf Auftrag? Wenn man noch das Midas DN4816-O anschließt, braucht man ja einen ultranet Splitter oder kann man den stageconnect rj45 Ausgang am Midas DN4816-O nehmen (warum der nicht ultranet Ausgang heißt??) Danke für jeden Input!

  • @pcdimmer

    @pcdimmer

    3 ай бұрын

    Hi, ja, tatsächlich ist man beim FPGA lediglich bei der Anzahl der IO-Pins und der Logik-Elemente selbst beschränkt. Pro AES/EBU Port benötigt man nur relativ wenig Logikelemente, sodass wir hier nahezu beliebig viele AES/EBU-Ausgänge mit frei routbaren Audiostreams erzeugen können. Das Gleiche gilt auch für die Analogausgänge. Ich habe die Qualität der PDM-Ausgänge in den letzten Monaten massiv verbessert, sodass man ein sehr flexibles Audiosysten bauen kann. Ich schließe gerade die Programmierarbeiten ab und bereite anschließend die nächste KZreadfolge vor. Dann wird auch hoffentlich der Elektor-Artikel veröffentlicht, sodass ich den Code dann freigeben kann. Beste Grüße, Christian

  • @jensdroessler3575
    @jensdroessler35755 күн бұрын

    Wenn du noch Hardware, die Ultranet ausspuckt, zum Testen brauchst, sag Bescheid!

  • @fellpower
    @fellpower9 ай бұрын

    Irgendwie kann ich hier keine Konsistenz erkennen. Du sprichst über Projekte, machst da nicht weiter - und plötzlich sprichst du englisch. Ja, ich verstehe, du willst mehr Leute erreichen - der Kohle wegen - aber irgendwie ist das nix Halbes und nix Ganzes ^^ Mach doch mal ein Projekt genauer - mit Infos (Links usw) - und führ es auch mal konsistent weiter - bzw zu Ende. Wir Zuschauer sind ja, hier, weil uns das Thema interessiert. Aber mit dem, was du da machst, kann keiner was anfangen. Das ist einfach nur n Snapshot aus nem großen Part - da fehlt ja eigentlich alles an Infos. Man guckt sich hier was an - du kommst nicht zum Punkt - und dann fehlt ein Follow Up Video ^^ Sieh das bitte nicht als Offence an - ist einfach nur die Sicht eines Zuschauers ^^

  • @pcdimmer

    @pcdimmer

    9 ай бұрын

    Hi, danke für die Kritik und die Rückmeldung. Ich habe tatsächlich keine größeren Projekte, sondern mache hier und da was vereinzelt mit Mikrocontrollern und Bühnentechnik. Daher möchte ich einzelne Ausschnitte daraus zeigen, in der Hoffnung, anderen ein paar Ideen zu geben. Ich wüsste gar nicht, wie man das sinnvoll in eine konsistente Videoreihe packen könnte. Deshalb wird es vermutlich auch zukünftig bei Fragmente bleiben. Hier sehe ich KZread eher als verlängerte Website, bzw. Vlog, um einzelne Themen weiterzugeben. Da dieses FPGA-Projekt im Speziellen vermutlich einige Leute vor allem im englischsprachigen Raum interessieren dürfte, hatte ich mich für eine Folge auf Englisch entschieden, da Ultranet weltweit eingesetzt wird. Ich sehe das nicht als Problem. Da ich kein Geld mit den Videos verdiene und keinerlei Sponsoren habe, war dies auch kein Entscheidungskriterium. Für die nächste Folge habe ich auch wieder ein Lichttechnikprojekt geplant: hier habe ich beim letzten Video ja schon etwas über den Sinusdimmer angekündigt. Das werde ich demnächst aufgreifen, aber brauche deutlich mehr Vorbereitung, da eine Platine gefertigt werden muss. Hast Du eventuell Ideen für ein Video, bzw. was hätte ich an der aktuellen Folge anders machen können? Viele Grüße, Christian

  • @pcdimmer

    @pcdimmer

    9 ай бұрын

    Hi, eben habe ich das ganze noch einmal in einen etwas umfangreicheren Artikel auf meiner Website geschrieben. Man findet dort ein paar zusätzliche Informationen zur verwendeten Toolchain: www.pcdimmer.de/index.php/hardware/fpga/ultranet-receiver Zusammen mit den Infos auf github.com/xn--nding-jua/UltranetReceiver sollte man damit hoffentlich bei Interesse in der Lage sein, das Projekt selbst zu kompilieren und auszuprobieren. viele Grüße, Christian