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!
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.
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.
Fantastic video! You're the first person to put up a practical example of what you can use in FPGA for and I love that it's regarding audio. Thank you for taking the time to put this video together and sharing it with all of us! I love how you simply explain these complicated concepts in ways that make sense and with practical purpose.
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.
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 UA-cam-Video is beeing planned about this topic. Stay tuned...
the quality of this video from the content, which is a complex, interesting and advanced project, to the presentation, which makes the topic feel approachable and understandable, to the production value in the videography, it's all so good!
Oh, thank you so much. Good to hear. It took hours of recording and cutting and I'm glad that you guys like it :) I've already got a good idea for follow-up project and I'm preparing some things for it. But it will take some time to bring it to a new video. But if it is working, it will be very nice!
Awesome! Well done! 😀 ... Minor correction - its using RJ-45 connectors and UTP / Cat 5 cable, but its not Ethernet (not even just Layer 1) - there are no Ethernet PHYs and no magnetics, just the TTL buffers / line drivers in a "pseudo-differential" arrangement.
yeah, I was confused at first, too. But they are only using RJ45 plugs and standard ethernet cabling, but that's it. There are several other occurances where HDMI or SATA connectors and cabling is used for totally different things, because they meet basic signal integrity requirements and are readily available...
I think Dante is the outlier because it's actually using network packets to send the audio. A lot of audio-over-cat5 stuff is just using cat5 because it's a convenient balanced cable, and when it's analog it's obviously not ethernet. Although maybe it's not accurate to call it balanced. But differential just means it has a mirror-image negative signal, right? Like SCSI LVD cables... or just about anything that isn't fiber? What do you mean psuedo-differential? In my mind you say 'differential' when it's a digital databus and 'balanced' when it's analog audio. Whenever it gets super technical, the EE/physics nerds start talking about impedance and I can't really keep up LOL.
@@RaquelFoster Yes, it looks like Dante is indeed "actually Ethernet"! (Wikipedia states "uncompressed, multi-channel, low-latency digital audio over a standard Ethernet network using Layer 3 IP packets.", and references Fast and Gigabit Ethernet)... I only said "pseudo-differential" because the line drivers (74LVC245A @3:29) are actually made up from 8x independent single-ended channels, two of which happen to be used for each channel (one positive and one inverted). I can't really see in enough detail, but it looks like the FPGA is producing these two signals... As far as I'm concerned (I'm an EE!) "differential" vs "balanced" is basically the same thing, though as you say the term "balanced" is more common in audio.
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! UA-cam 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!
Thank you for the nice comment. There is an upcoming video that will continue this design for "more power". It will take some time to complete the video but it will be quite interesting, so stay tuned :)
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!
um, wow. Very cool. Very concise! I like the no frills, pragmatic approach. It's insane how much DIY hardware advanced in the last 10 years. Even for a hobbyist, only imagination is the limit nowadays. Buy a few dev boards, get some (C, VHDL, whatever) code together, tweak, spin your own design, even if it's just a board to nicely fit pre-made boards together, send to PCBWay, and have hardware in your hands for a few bucks, that would have cost thousands of $ in R&D and then production setup costs a few years ago. I love it :)
Yes, you're absolutely right. The FPGA used here is only an entry-level model, but you can still create digital mixing consoles with several channels and digital signal processing yourself for as little as $50 to $100. Let's see what can be done with it in the future. Exciting times in any case.
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!
If you and Chris from Airwindows aren't collaborating, you should at some point. Maybe old, proprietary, ethernet-connected speakers will be useful again? Thank you so much for sharing this!
Have a lot of interesting hardware with with CobraNet (Yamaha DME32/DME64n, BiAmp Audia, Peavey Nios n6) and these devices are technically mixers but designed for industrial spaces to handle hundreds of speaker channels, provide programmability for PA and telephone systems (DTMF detection, echo cancellation, etc) and interestingly all programmed in graphical interfaces that provide node-based programming which actually compiles to native DSP code for the unit -- it's potentially possible to inject new DSP algorithms into the compiler to extend the effects beyond just the standard EQ/delay/noise cancellation tools they come with. DME64n can actually emulate multiple SPX90 multi-effects units given available resources.
@@jeremybiggs8413 If memory serves me right, a model of the SPX90 is built into the Windows programmer tool for the DME devices, but it’s costly on DSP resources. I vaguely remember the DME64n could run 2 and the DME24n has half the DSP power.
Oh well, AES50 uses 100MBit/s and so it is much harder to decode compared to UltraNet with "only" 12.288 MHz. Even the 12.288 MHz needs a 200MHz clock to decode it properly and you have to take care of the signal-quality. AES50 (called SuperMAC or HyperMAC) probably requires even more effort to be able to decode it properly. But never say never :)
Thanks, this is amazing! I've wanted to start tinkering around with Ultranet and AES-50 for years, but I haven't had the time and I don't have nearly enough expertise. I know just enough to be able to imagine the possibilities if I *did* know more, hehe.. Anyway, minor thing: around 19:10 you're talking about the PDM clock frequency vs samplerate vs audio bandwidth, and you mention the audio bandwidth being 48kHz; and while AES-3 itself can do that (since it's able to go to a 96kHz samplerate), I believe that Ultranet actually uses only a 48kHz samplerate, which would make the Nyquist frequency (and therefore the maximum audio bandwidth) only 24kHz.
haha correction, I thought AES3 can go up to 96kHz sample rate, but according to Wikipedia, while it was _designed_ primarily for 48kHz, it can in theory run at _any_ sample rate.. but anyway, since all Behringer mixers (and their corresponding Midas counterparts) run at either 44.1 kHz or 48 kHz, I believe Ultranet also runs at those, and not at 96kHz..
Oh dear, you are right. In the PDM-table the full usable audio-bandwidth seems to be present (already taking Nyquist into account). I always took it as "comparable to x kHz PCM audio". But anyway, higher PDM-frequencies help us during filtering with a RC-filter. And there are no drawbacks increasing the PDM-frequency within the FPGA between 5 to 10 MHz. Regarding the other frequencies: UltraNet uses a 192 kHz-"like" PCM-based AES/EBU stereo-signal. It is not a real 192 kHz, but stores four "stereo" channels with each 48kHz resulting in this 192kHz-like stream to meet the AES/EBU-specifications. So 8 mono channels are transferred in two AES/EBU-lines, resulting in the 16 UltraNet-channels.
I love the Startrek set! I have longterm goal of reprogramming Behringer DDX3216 firmware/os to make it more compatible with modern hardware and USB etc.. videos like this serve as an inspiration. Only SHARC DSP but still nice to see FPGA being worked with. I have lots of learning yet. Also want to see if I can get keyboard/mouse and CGA montor if I can figure out how to adapt the firmeware to the AM386 chip that is in it and its memory chips.. I will dream. 12:15 You da man.
I had a DDX3216 in my shopping cart a few times in 2010 and 2011. But then in 2012 the X32 came out and I bought it straight away. Good luck with your project - it sounds very exciting! From my own experience I can say: don't give up. With the UltraNet project, I wasn't very familiar with signal decoding and almost gave up at one point. But I stuck with it and now it's working.
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.
That is very interesting! Could the Raspberry Pi Pico (RP2040) perform the same task as the Arduino Vidor, given that it has these powerful PIOs? Transferring multi-channel digital audio over a single pair isn't all that trivial, where "standard" AES3 is the norm. I wish there was a chip one could use in each end that could take 4 or 8 synchronous i2s signals in, and output the same signals in the other end, so a chip like CS8416 can be used to decode the signal to i2s.
As someone already decoded SP/DIF (so AES/EBU) with the Raspberry Pi Pico using the PIO (see here: github.com/elehobica/pico_spdif_rx) it might be possible to decode UltraNet, too. Up to now I did not use the PIO of the RPi yet. Its a nice idea and would be much cheaper than the solution with the FPGA...
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
oh man... I have a stack of Motu 24i interfaces, a Tascam DM24. The TDIF io interfaces, PCI cards and all the cables cost me a fortune back in the day... all useless due to drivers. Thanks every hardware vendor ever for making my expensive gear obsolete in 5 years... if only I could decode the stupid drivers and make my own
Metric halo. Their first 2882 interface from the early 2000’s is still usable today thanks to then continuing to develop upgrades for them. Yes it’s a paid upgrade. But much cheaper than replacing your entire rig.
Yeah, most of the TDIF cards seem to use FPGAs, like the "Soundscape PCI Card Mixtreme 1B 4500 Audio Sound Card". It used a Xilinx XC5200 FPGA and an older Motorola Mixed-Signal DSP for the PCI-communication - the fpga probably caused the price to shoot up at the time. Unfortunately, TDIF does not seem to be quite as easy to handle as AES/EBU or other serial protocols, as it seems to work with different voltages.
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)?
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.
Hello, very impressive work ! I am wondering looking at the reverse engineering of the ultranet, could we use that tool to convert ultranet into AES/EBU 16 port easily ? Maybe even in a Madi format ?
Hi. 16 Stereo-AES/EBU ports should be possible as these blocks are using only logic-elements and no DSP-slices of the FPGA. I tested it with two SPDIF-outputs (means two stereo-channels) and it worked without problems. As I'm not familiar with the details of MADI I cannot give a good answer here, but it seems that MADI is only a multiplexed AES/EBU-stream with up to 56 channels. So it should be possible to update the state-machine for stereo-AES/EBU to create a MADI-signal with the FPGA.
just a quick question, shouldnt the low lass filter be at 24 khz? since the signal contains no information above half of the original samplerate (nyquist)
For a system with a input-sampling rate of 48kHz a designed cutoff-frequency at 24kHz should be sufficient, yes. But you will receive a 3dB attenuation at 24kHz. It might be OK as most of us can hear only up to 20kHz (best case), but the RC-filter at 48kHz makes sure, that all high-frequency parts of the audio is still there (depends on if there are useful information in your system at all). With my ADC I am able to sample up to 192kHz and then the RC-filter at 48kHz could make sense - but it depends on the individual preferences - I could not hear any difference between 24kHz, 28kHz, 30kHz and 48kHz - I tested it :)
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 :)
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?
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.
@@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 !
Unfortunately I'm too unskilled to cook with any FPGA recipes but UltraNet to SPDIF or AES/EBU would be really smooth as it could give the cheap Behringer X-Air 18 a digital output. People would probably go crazy for a Dante or AES67 bridge from UltraNet. To my knowledge, BehringerMidasKlark only offers a bridge to their StageConnect system.
That’s awesome. I’d always wanted to create some sort of open source digital audio mixer. Seems like it should be quite possible to implement one that could interoperate with multiple standards, like AES67, Dante, behringer, etc. I am curious how much DSP you could add with an FPGA/when it makes more sense to incorporate a dedicated DSP chip. You’d need some EQ per channel, compressors per channel, and some sort of reverb to finish it out. I recently picked up the Behringer XR18 which I quite like. I believe it supports standard MIDI control which would be a nice touch to incorporate. It’s likely that interfacing with bog standard MIDI mixer interfaces wouldn’t be that hard.
Audio-Mixing (so speaking of summing audio channels) is very easy within the FPGA. You can reuse the multiplicator to reduce the demand of multiplicators. I created a 22 channel mixer with this specific low-cost FPGA already. But each EQ is using lot of logic-elements together with multiplicators. So outsourcing this into a dedicated DSP-chip would reduce the demand - and you end up with the Behringer X32 concept :) As I remember correctly, they are using a FPGA-based system together with multiple Sharc audio processors. With some time it is possible to enhance my approach to a Behringer X32 "very light" ;-) AES67 and Dante would be a very nice feature for the future and I already placed some information about these two on my harddisk :)
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!
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 UA-camfolge vor. Dann wird auch hoffentlich der Elektor-Artikel veröffentlicht, sodass ich den Code dann freigeben kann. Beste Grüße, Christian
Amazing you did this, infinite applications.. would be possible to connect your device to the ultranet output of an XR18 and from that stream the audio channels to an ethernet lan using a Real Time Transport Protocol (RTP/RTSP Audio Server)? Maybe connecting cables from the Arduino MKR Vidor 4000 socket to a raspberry pi socket and installing the RTP audio server there? The scenario I am thinking is taking all the audio signals from any computer using one or more RTP/RTSP clients (ffmpeg, etc) via the usual ethernet lan and routing signals (using linux tools like pipewire, qpwgraph, virtual modules with pactl, pw-link, etc.) to any DAW program in order to record or process signals as demand. Thank you!
I have already decoded UltraNet with the FPGA (see the previous video). But audio via Ethernet is another matter. However, you can send an I2S data stream to the RaspberryPi (for example see github.com/makerportal/rpi_i2s/blob/main/i2s_stereo.py) and then forward the audio stream via the network as you have mentioned. However, I'm already thinking about how to send audio data directly out of the FPGA over the network using an Ethernet phy to emulate Dante or other Audio-Over-Ethernet protocols. In principle, this is possible. However, the variant with the Pi should be much simpler for now. Please remember that, as far as I know, the Pi can only process stereo I2S. Maybe recording multichannel audio to a SD-Card directly from the FPGA is easier than implement audio-streaming to a DAW?
The P16-I has only some damage at the output-buffer ICs right at the RJ45-jacks. There are some smaller resistors in the range of some Ohm that burned, too. Up to now I just had no time to fix the output-stage, but it is fixable. So the defect was a welcome opportunity to take a look inside the device :) On the other hand, I'm playing with the idea of permanently installing a Vidor 4000 in the P16-I so that I can process all 16 input channels directly with my own audio engine.
Unfortunately not. A few years ago I had started to write a working LCARS replica to show files in Windows. Then I saw that some others had already tried it and stopped the work on it. On Sourceforge.net, for example, there's this one: sourceforge.net/projects/lcars-system-3. I just have an LCARS video running in the background :). When I'm not recording videos, that's my main screen for the PC
One note of arduino vidor. It has pretty ok clock quality is used with usb. When running standalone external crystal oscillator is recommended. Edit: Not sure did samd21 do some clock recovery / tuning from usb when usb is used. Some had observe samd21 clock was more unstable when using standalone so they needed external XCO when running standalone. when connected to computer it was ok.
In fact, I haven't even looked at the 48MHz clock in detail. According to the data sheet, the SAMD21 generates the 48MHz from the small 32.768 kHz quartz. I'll have to have a look at that. Timing is particularly important for fast signals and since the FPGA derives all internal clocks from the 48MHz via the PLL, they should be stable. Thanks for the tip!
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
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
@@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.
@@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.
Die letzten 9 Monate sind irgendwie unglaublich schnell vergangen. Ich habe erst jetzt mit einem Tutorial anfangen können. Hier könnt ihr es finden: www.pcdimmer.de/index.php/hardware/fpga/tutorial-ultranet-receiver
That's a good point. In fact, we have made the volume setting logarithmically. Within our software, the volume values are always given in dBfs between -48dBfs and +6dBfs. The dBfs value is then converted into a multiplication factor when it is transferred to the FPGA: github.com/xn--nding-jua/Audioplayer/blob/c26dae83fb04a85184762b9480279fc012d3b195/NINA/Mixerengine.ino#L59
Well, first I tested the P16-M (the personal mixer) with the larger X32 and it worked. With the P16-I (the analog injector) it didn't. As someone mentioned in the comments below, the resistors burned, too. Up to now I had no time to fix the output-stage, but only the buffer-IC and the resistors are damaged. With some time the system should work again. On the other hand, I'm playing with the idea of permanently installing a Vidor 4000 in the P16-I so that I can process all 16 input channels directly with my own audio engine :)
So, it is not Ethernet at all? I've thought that it will use Ethernet frames and addresses to pass this signal via standard switches.. But it looks like it is a point to point connection with its own bitrate, and only wiring is common with Ethernet.
It should be OSI-ayer 1, so the electrical part is ethernet, but UltraNet has nothing more in common with the classical computer-ethernet. So you can't decode the "packages" as there are no. It is a differential digital AES/EBU audio-signal with 8 audio-channels per link-pair. So you can't use ethernet-switches, too.
@@pcdimmer Ethernet is classified as Layer 2 by itself (if we can classify modern stacks with this old and dead model at all, which is debatable). And it looks like it is incompatible Ethernet even at Level 1, as Level 1 includes voltage levels, modulation, bitrate, etc.
Hi, AES50 ist leider noch mal ne andere Nummer. Ultranet nutzt ja "nur" zweimal 8 Kanäle mit 48kHz, sodass wir die einzelnen Bits "nur" mit 12,288MHz empfangen und auswerten müssen. AES50 hat aber 48 Kanäle mit je 48kHz, sodass wir dann im Bereich von 100MHz sind. Das können wir mit der hier vorgestellten Methode sicherlich nicht dekodieren. Es gibt zwar ein dediziertes Sync-Signal, aber bei Ultranet hatte ich schon Probleme mit Leitungsinduktivitäten - das ist bei AES50 noch kritischer. Also kurzgesagt: nein, AES50 ist für DIY erst mal nicht drin, sorry
First of all: Please sir, submit this project to Elektor Magazine so we can archive it if UA-cam were ever about to kick the bucket. Second: Could this mixer be smartified/IoT'd?
Hi, I've already sent a proposal to Elector and waiting for a response. And yes, controlling via MQTT and TCP commands is possible and already part of the code of my Audioplayer-Project which has support for the UltraNet... At the moment I'm working on a more advanced version. Stay tuned :)
No, the MSO34 is around 4.500€, but still not the cheapest, that's right 😇 I tried it first with my small Fnirsi Scope but I could not trigger the signal successfully...
Ja, das geht. Der FPGA hat sehr viele digitale Pins und jeden Pin kann man mit einem einfachen RC-Netzwerk und der Sigma-Delta-Wandlung als analogen Ausgang nutzen. Leider sind die FPGAs noch recht teuer, aber wenn man einen CYC1000-Board von Trentz verwendet, kann man für insgesamt ca. 60,-€ einen Konverter von UltraNet auf 16x Analog bauen.
if the left and right brain can't TALK to eachother THey will both think they are individuals in control of the same body. it's like havign a 2 core CPU (well we have muliple cores the point is energy comes in is divided in to pulses and those pulses grow the body the rotation has a hard or soft angle i don't understand fully how the energhy minipulates matetr but again you have to put something in the soil of something with the same vibration
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 ^^
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 UA-cam 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
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
Lets stop for a moment to appreciate that this guy just made a digital mixer!!!
I'm just wondering what is wrong with the Behringer equipment? All the samples come out but it refuses to work?
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!
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.
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 🙂
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.
Is RME a joke to you?
Tell me you're a german engineer without telling me a you're a german engineer.
Chris Noeding : Hold ze bier
When the audio engineer is an ACTUAL engineer 😂 Fantastic stuff
Why I don't officially claim engineer! I'm a tech that runs live sound!
Fantastic video! You're the first person to put up a practical example of what you can use in FPGA for and I love that it's regarding audio. Thank you for taking the time to put this video together and sharing it with all of us! I love how you simply explain these complicated concepts in ways that make sense and with practical purpose.
Oh, major props for the Galaxy class status display in the background. Live long and prosper, neighbor! 😀
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.
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 UA-cam-Video is beeing planned about this topic. Stay tuned...
I was looking at doing something similar with ADAT for audio interfaces. Good to see other people doing work in this space.
the quality of this video from the content, which is a complex, interesting and advanced project, to the presentation, which makes the topic feel approachable and understandable, to the production value in the videography, it's all so good!
Oh, thank you so much. Good to hear. It took hours of recording and cutting and I'm glad that you guys like it :) I've already got a good idea for follow-up project and I'm preparing some things for it. But it will take some time to bring it to a new video. But if it is working, it will be very nice!
Greight, now I gotta learn FPGA! Been meaning to dip my toes in that water for long time. Thanks for sharing!
Awesome! Well done! 😀 ... Minor correction - its using RJ-45 connectors and UTP / Cat 5 cable, but its not Ethernet (not even just Layer 1) - there are no Ethernet PHYs and no magnetics, just the TTL buffers / line drivers in a "pseudo-differential" arrangement.
You are totally right, only the hardware-connection looks like ethernet, but it is not compatible. Thanks for the hint 👍
yeah, I was confused at first, too. But they are only using RJ45 plugs and standard ethernet cabling, but that's it. There are several other occurances where HDMI or SATA connectors and cabling is used for totally different things, because they meet basic signal integrity requirements and are readily available...
I think Dante is the outlier because it's actually using network packets to send the audio. A lot of audio-over-cat5 stuff is just using cat5 because it's a convenient balanced cable, and when it's analog it's obviously not ethernet. Although maybe it's not accurate to call it balanced. But differential just means it has a mirror-image negative signal, right? Like SCSI LVD cables... or just about anything that isn't fiber? What do you mean psuedo-differential? In my mind you say 'differential' when it's a digital databus and 'balanced' when it's analog audio. Whenever it gets super technical, the EE/physics nerds start talking about impedance and I can't really keep up LOL.
@@RaquelFoster Yes, it looks like Dante is indeed "actually Ethernet"! (Wikipedia states "uncompressed, multi-channel, low-latency digital audio over a standard Ethernet network using Layer 3 IP packets.", and references Fast and Gigabit Ethernet)... I only said "pseudo-differential" because the line drivers (74LVC245A @3:29) are actually made up from 8x independent single-ended channels, two of which happen to be used for each channel (one positive and one inverted). I can't really see in enough detail, but it looks like the FPGA is producing these two signals... As far as I'm concerned (I'm an EE!) "differential" vs "balanced" is basically the same thing, though as you say the term "balanced" is more common in audio.
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! UA-cam 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!
Thank you for the nice comment. There is an upcoming video that will continue this design for "more power". It will take some time to complete the video but it will be quite interesting, so stay tuned :)
I don't even know where this is going, but insta watch and like. FPGA and audio hardware is very much up my alley.
Brilliant, Thank you Christian. Your style of using simple examples is perfect.
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!
um, wow. Very cool. Very concise! I like the no frills, pragmatic approach.
It's insane how much DIY hardware advanced in the last 10 years. Even for a hobbyist, only imagination is the limit nowadays. Buy a few dev boards, get some (C, VHDL, whatever) code together, tweak, spin your own design, even if it's just a board to nicely fit pre-made boards together, send to PCBWay, and have hardware in your hands for a few bucks, that would have cost thousands of $ in R&D and then production setup costs a few years ago.
I love it :)
Yes, you're absolutely right. The FPGA used here is only an entry-level model, but you can still create digital mixing consoles with several channels and digital signal processing yourself for as little as $50 to $100. Let's see what can be done with it in the future. Exciting times in any case.
Awesome - Good luck on the repair!
Really enjoyed this video! The combination of electronics and audio really hit a sweet spot! Thank you!
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!
German Engineering at its best! Einfach großartig!
If you and Chris from Airwindows aren't collaborating, you should at some point. Maybe old, proprietary, ethernet-connected speakers will be useful again? Thank you so much for sharing this!
I will have a look at his channel, thanks for the tip!
Now this is what electronics is all about.
This is just amazing! Thank you for sharing these precious information. I'm looking forward to give It a try
I'm blown away! Genius for me!
I wouldn't say your knowledge and skills are amazing but I dont know why I wouldn't. Amazing.
I've always wanted to know how a Class D power amplifier works. This was a good opportunity :)
Have a lot of interesting hardware with with CobraNet (Yamaha DME32/DME64n, BiAmp Audia, Peavey Nios n6) and these devices are technically mixers but designed for industrial spaces to handle hundreds of speaker channels, provide programmability for PA and telephone systems (DTMF detection, echo cancellation, etc) and interestingly all programmed in graphical interfaces that provide node-based programming which actually compiles to native DSP code for the unit -- it's potentially possible to inject new DSP algorithms into the compiler to extend the effects beyond just the standard EQ/delay/noise cancellation tools they come with. DME64n can actually emulate multiple SPX90 multi-effects units given available resources.
Has anyone actually emulated the spx90 on a dme24n?
@@jeremybiggs8413 If memory serves me right, a model of the SPX90 is built into the Windows programmer tool for the DME devices, but it’s costly on DSP resources. I vaguely remember the DME64n could run 2 and the DME24n has half the DSP power.
@@rbus DME Designer?
Mad skills mate! You've done it all!
Since you've decoded this thing I'd love to use it on my home automation gear, people pay big dollars for a fancy home theatres! :)
Awseome job ! Big thanks for sharing
It would be really interesting to see an FPGA implementation for AES50.
this!!! yes please!!!
Oh well, AES50 uses 100MBit/s and so it is much harder to decode compared to UltraNet with "only" 12.288 MHz. Even the 12.288 MHz needs a 200MHz clock to decode it properly and you have to take care of the signal-quality. AES50 (called SuperMAC or HyperMAC) probably requires even more effort to be able to decode it properly. But never say never :)
@pcdimmer does AES50 use an ethernet phy?
@@martinwhitaker5096 yes, plus LVDS clock. should be extremely manageable
Thanks, this is amazing! I've wanted to start tinkering around with Ultranet and AES-50 for years, but I haven't had the time and I don't have nearly enough expertise. I know just enough to be able to imagine the possibilities if I *did* know more, hehe..
Anyway, minor thing: around 19:10 you're talking about the PDM clock frequency vs samplerate vs audio bandwidth, and you mention the audio bandwidth being 48kHz; and while AES-3 itself can do that (since it's able to go to a 96kHz samplerate), I believe that Ultranet actually uses only a 48kHz samplerate, which would make the Nyquist frequency (and therefore the maximum audio bandwidth) only 24kHz.
haha correction, I thought AES3 can go up to 96kHz sample rate, but according to Wikipedia, while it was _designed_ primarily for 48kHz, it can in theory run at _any_ sample rate.. but anyway, since all Behringer mixers (and their corresponding Midas counterparts) run at either 44.1 kHz or 48 kHz, I believe Ultranet also runs at those, and not at 96kHz..
Oh dear, you are right. In the PDM-table the full usable audio-bandwidth seems to be present (already taking Nyquist into account). I always took it as "comparable to x kHz PCM audio". But anyway, higher PDM-frequencies help us during filtering with a RC-filter. And there are no drawbacks increasing the PDM-frequency within the FPGA between 5 to 10 MHz.
Regarding the other frequencies: UltraNet uses a 192 kHz-"like" PCM-based AES/EBU stereo-signal. It is not a real 192 kHz, but stores four "stereo" channels with each 48kHz resulting in this 192kHz-like stream to meet the AES/EBU-specifications. So 8 mono channels are transferred in two AES/EBU-lines, resulting in the 16 UltraNet-channels.
I love the Startrek set! I have longterm goal of reprogramming Behringer DDX3216 firmware/os to make it more compatible with modern hardware and USB etc.. videos like this serve as an inspiration. Only SHARC DSP but still nice to see FPGA being worked with. I have lots of learning yet. Also want to see if I can get keyboard/mouse and CGA montor if I can figure out how to adapt the firmeware to the AM386 chip that is in it and its memory chips.. I will dream. 12:15 You da man.
I had a DDX3216 in my shopping cart a few times in 2010 and 2011. But then in 2012 the X32 came out and I bought it straight away. Good luck with your project - it sounds very exciting! From my own experience I can say: don't give up. With the UltraNet project, I wasn't very familiar with signal decoding and almost gave up at one point. But I stuck with it and now it's working.
ingenious approach, thank you!
Ultranet to usb file writing would be useful for making a multitrack backup recording from the xair mixers.
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.
SD card would be fine as well. Any storage media really.
Ultranet to Ethernet bridge would be awesome
This is incredible dude I dont even know what any of this is
That is very interesting! Could the Raspberry Pi Pico (RP2040) perform the same task as the Arduino Vidor, given that it has these powerful PIOs? Transferring multi-channel digital audio over a single pair isn't all that trivial, where "standard" AES3 is the norm. I wish there was a chip one could use in each end that could take 4 or 8 synchronous i2s signals in, and output the same signals in the other end, so a chip like CS8416 can be used to decode the signal to i2s.
As someone already decoded SP/DIF (so AES/EBU) with the Raspberry Pi Pico using the PIO (see here: github.com/elehobica/pico_spdif_rx) it might be possible to decode UltraNet, too. Up to now I did not use the PIO of the RPi yet. Its a nice idea and would be much cheaper than the solution with the FPGA...
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
So its just a RAW audio stream, with no topology discovery whatsoever? (especially when there are distinct ultranet input and output connectors)
oh man... I have a stack of Motu 24i interfaces, a Tascam DM24. The TDIF io interfaces, PCI cards and all the cables cost me a fortune back in the day... all useless due to drivers. Thanks every hardware vendor ever for making my expensive gear obsolete in 5 years... if only I could decode the stupid drivers and make my own
Metric halo. Their first 2882 interface from the early 2000’s is still usable today thanks to then continuing to develop upgrades for them. Yes it’s a paid upgrade. But much cheaper than replacing your entire rig.
@@cmatte82 well I have since downsized my entire setup to one desk and one tall rack. It is so much more manageable lol
Yeah, most of the TDIF cards seem to use FPGAs, like the "Soundscape PCI Card Mixtreme 1B 4500 Audio Sound Card". It used a Xilinx XC5200 FPGA and an older Motorola Mixed-Signal DSP for the PCI-communication - the fpga probably caused the price to shoot up at the time. Unfortunately, TDIF does not seem to be quite as easy to handle as AES/EBU or other serial protocols, as it seems to work with different voltages.
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)?
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.
Never have I subscribed so fast
Hello, very impressive work !
I am wondering looking at the reverse engineering of the ultranet, could we use that tool to convert ultranet into AES/EBU 16 port easily ? Maybe even in a Madi format ?
Hi. 16 Stereo-AES/EBU ports should be possible as these blocks are using only logic-elements and no DSP-slices of the FPGA. I tested it with two SPDIF-outputs (means two stereo-channels) and it worked without problems.
As I'm not familiar with the details of MADI I cannot give a good answer here, but it seems that MADI is only a multiplexed AES/EBU-stream with up to 56 channels. So it should be possible to update the state-machine for stereo-AES/EBU to create a MADI-signal with the FPGA.
just a quick question, shouldnt the low lass filter be at 24 khz? since the signal contains no information above half of the original samplerate (nyquist)
For a system with a input-sampling rate of 48kHz a designed cutoff-frequency at 24kHz should be sufficient, yes. But you will receive a 3dB attenuation at 24kHz. It might be OK as most of us can hear only up to 20kHz (best case), but the RC-filter at 48kHz makes sure, that all high-frequency parts of the audio is still there (depends on if there are useful information in your system at all). With my ADC I am able to sample up to 192kHz and then the RC-filter at 48kHz could make sense - but it depends on the individual preferences - I could not hear any difference between 24kHz, 28kHz, 30kHz and 48kHz - I tested it :)
Amazing stuff! Thank you!
You are a huge inspiration
I hacked my own Ultranet connection with a screwdriver and a blowtorch. Literally hacked. Obviously not the same outcome. Darn you, Christian! ;-)
Sometimes this kind of hacking is much more satisfying than trying to get bits and bytes online 🤪
@@pcdimmer 🙂
When you tested connecting the two devices together, what cable did you use? was it pinned out correctly and full continuity?
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 :)
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?
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.
@@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 !
Unfortunately I'm too unskilled to cook with any FPGA recipes but UltraNet to SPDIF or AES/EBU would be really smooth as it could give the cheap Behringer X-Air 18 a digital output.
People would probably go crazy for a Dante or AES67 bridge from UltraNet. To my knowledge, BehringerMidasKlark only offers a bridge to their StageConnect system.
That’s awesome. I’d always wanted to create some sort of open source digital audio mixer. Seems like it should be quite possible to implement one that could interoperate with multiple standards, like AES67, Dante, behringer, etc.
I am curious how much DSP you could add with an FPGA/when it makes more sense to incorporate a dedicated DSP chip. You’d need some EQ per channel, compressors per channel, and some sort of reverb to finish it out.
I recently picked up the Behringer XR18 which I quite like. I believe it supports standard MIDI control which would be a nice touch to incorporate. It’s likely that interfacing with bog standard MIDI mixer interfaces wouldn’t be that hard.
Audio-Mixing (so speaking of summing audio channels) is very easy within the FPGA. You can reuse the multiplicator to reduce the demand of multiplicators. I created a 22 channel mixer with this specific low-cost FPGA already.
But each EQ is using lot of logic-elements together with multiplicators. So outsourcing this into a dedicated DSP-chip would reduce the demand - and you end up with the Behringer X32 concept :) As I remember correctly, they are using a FPGA-based system together with multiple Sharc audio processors. With some time it is possible to enhance my approach to a Behringer X32 "very light" ;-)
AES67 and Dante would be a very nice feature for the future and I already placed some information about these two on my harddisk :)
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!
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 UA-camfolge vor. Dann wird auch hoffentlich der Elektor-Artikel veröffentlicht, sodass ich den Code dann freigeben kann.
Beste Grüße,
Christian
This is incredible.
Wow! I love this!
Amazing you did this, infinite applications.. would be possible to connect your device to the ultranet output of an XR18 and from that stream the audio channels to an ethernet lan using a Real Time Transport Protocol (RTP/RTSP Audio Server)? Maybe connecting cables from the Arduino MKR Vidor 4000 socket to a raspberry pi socket and installing the RTP audio server there? The scenario I am thinking is taking all the audio signals from any computer using one or more RTP/RTSP clients (ffmpeg, etc) via the usual ethernet lan and routing signals (using linux tools like pipewire, qpwgraph, virtual modules with pactl, pw-link, etc.) to any DAW program in order to record or process signals as demand. Thank you!
I have already decoded UltraNet with the FPGA (see the previous video). But audio via Ethernet is another matter. However, you can send an I2S data stream to the RaspberryPi (for example see github.com/makerportal/rpi_i2s/blob/main/i2s_stereo.py) and then forward the audio stream via the network as you have mentioned. However, I'm already thinking about how to send audio data directly out of the FPGA over the network using an Ethernet phy to emulate Dante or other Audio-Over-Ethernet protocols. In principle, this is possible. However, the variant with the Pi should be much simpler for now. Please remember that, as far as I know, the Pi can only process stereo I2S. Maybe recording multichannel audio to a SD-Card directly from the FPGA is easier than implement audio-streaming to a DAW?
This is very cool. Was this just done on a lark or was the P16-I unfixable?
The P16-I has only some damage at the output-buffer ICs right at the RJ45-jacks. There are some smaller resistors in the range of some Ohm that burned, too. Up to now I just had no time to fix the output-stage, but it is fixable. So the defect was a welcome opportunity to take a look inside the device :)
On the other hand, I'm playing with the idea of permanently installing a Vidor 4000 in the P16-I so that I can process all 16 input channels directly with my own audio engine.
Hey the Lcars in the back is it functional?
Unfortunately not. A few years ago I had started to write a working LCARS replica to show files in Windows. Then I saw that some others had already tried it and stopped the work on it. On Sourceforge.net, for example, there's this one: sourceforge.net/projects/lcars-system-3. I just have an LCARS video running in the background :). When I'm not recording videos, that's my main screen for the PC
One note of arduino vidor. It has pretty ok clock quality is used with usb. When running standalone external crystal oscillator is recommended.
Edit: Not sure did samd21 do some clock recovery / tuning from usb when usb is used. Some had observe samd21 clock was more unstable when using standalone so they needed external XCO when running standalone. when connected to computer it was ok.
In fact, I haven't even looked at the 48MHz clock in detail. According to the data sheet, the SAMD21 generates the 48MHz from the small 32.768 kHz quartz. I'll have to have a look at that. Timing is particularly important for fast signals and since the FPGA derives all internal clocks from the 48MHz via the PLL, they should be stable. Thanks for the tip!
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
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
@@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.
@@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.
Die letzten 9 Monate sind irgendwie unglaublich schnell vergangen. Ich habe erst jetzt mit einem Tutorial anfangen können. Hier könnt ihr es finden: www.pcdimmer.de/index.php/hardware/fpga/tutorial-ultranet-receiver
Great video!
Nice work
Thank you
Nice job. Keep it up
A pleasure¡
PT_BR: Cara muito bom seu video, bem top, faz um video descobrindo os comando midi do pedal zoom G1X Four e integrando ao arduino
Our hearing is not linear to sound levels so it would be better to use a tapered scale or logarithmic scale for volume scaling.
That's a good point. In fact, we have made the volume setting logarithmically. Within our software, the volume values are always given in dBfs between -48dBfs and +6dBfs. The dBfs value is then converted into a multiplication factor when it is transferred to the FPGA: github.com/xn--nding-jua/Audioplayer/blob/c26dae83fb04a85184762b9480279fc012d3b195/NINA/Mixerengine.ino#L59
as an electrical engineer, how did you determine that the P16 was the problem?
Well, first I tested the P16-M (the personal mixer) with the larger X32 and it worked. With the P16-I (the analog injector) it didn't. As someone mentioned in the comments below, the resistors burned, too. Up to now I had no time to fix the output-stage, but only the buffer-IC and the resistors are damaged. With some time the system should work again. On the other hand, I'm playing with the idea of permanently installing a Vidor 4000 in the P16-I so that I can process all 16 input channels directly with my own audio engine :)
@@pcdimmer thank you - clear now - i like your vidor 4000 plan, it seems the more useful solution.
All the diagrams are on the FCC website
knaller! danke.
Damn!!! Thank you!!!
Du geiler Typ 😅 ✌️😎🤘😎🤘😎🤘
So, it is not Ethernet at all? I've thought that it will use Ethernet frames and addresses to pass this signal via standard switches.. But it looks like it is a point to point connection with its own bitrate, and only wiring is common with Ethernet.
It should be OSI-ayer 1, so the electrical part is ethernet, but UltraNet has nothing more in common with the classical computer-ethernet. So you can't decode the "packages" as there are no. It is a differential digital AES/EBU audio-signal with 8 audio-channels per link-pair. So you can't use ethernet-switches, too.
@@pcdimmer Ethernet is classified as Layer 2 by itself (if we can classify modern stacks with this old and dead model at all, which is debatable). And it looks like it is incompatible Ethernet even at Level 1, as Level 1 includes voltage levels, modulation, bitrate, etc.
Kriegen wir AES50 auch hin?
Hi,
AES50 ist leider noch mal ne andere Nummer. Ultranet nutzt ja "nur" zweimal 8 Kanäle mit 48kHz, sodass wir die einzelnen Bits "nur" mit 12,288MHz empfangen und auswerten müssen. AES50 hat aber 48 Kanäle mit je 48kHz, sodass wir dann im Bereich von 100MHz sind. Das können wir mit der hier vorgestellten Methode sicherlich nicht dekodieren. Es gibt zwar ein dediziertes Sync-Signal, aber bei Ultranet hatte ich schon Probleme mit Leitungsinduktivitäten - das ist bei AES50 noch kritischer.
Also kurzgesagt: nein, AES50 ist für DIY erst mal nicht drin, sorry
nice
tinkering?? the RC filter is tinkering....the rest is close to magic 😀
Yeah ok, maybe I understated some things a bit ;-)
@@pcdimmer 🤣
First of all: Please sir, submit this project to Elektor Magazine so we can archive it if UA-cam were ever about to kick the bucket.
Second: Could this mixer be smartified/IoT'd?
Hi,
I've already sent a proposal to Elector and waiting for a response.
And yes, controlling via MQTT and TCP commands is possible and already part of the code of my Audioplayer-Project which has support for the UltraNet... At the moment I'm working on a more advanced version. Stay tuned :)
@@pcdimmer Very cool! looking forward too it!
Wow, 🎉😊
I'm just a sound guy. What am I doing here? lol
Lets connect an oscilloscope; Continues to use a 30k+ Tektronix 😅 4:16
Awesome video!
No, the MSO34 is around 4.500€, but still not the cheapest, that's right 😇 I tried it first with my small Fnirsi Scope but I could not trigger the signal successfully...
Es scheint also, als könne man dieses Geraet auch zu einem "simplen" und quasi günstigen AES3-analog-Wandler stricken- wenn man denn so wie DU ist 🤣
Ja, das geht. Der FPGA hat sehr viele digitale Pins und jeden Pin kann man mit einem einfachen RC-Netzwerk und der Sigma-Delta-Wandlung als analogen Ausgang nutzen. Leider sind die FPGAs noch recht teuer, aber wenn man einen CYC1000-Board von Trentz verwendet, kann man für insgesamt ca. 60,-€ einen Konverter von UltraNet auf 16x Analog bauen.
Wenn du noch Hardware, die Ultranet ausspuckt, zum Testen brauchst, sag Bescheid!
Besten Dank für das Angebot. Ich hätte aber noch ein X32 und ein paar S16 da :)
What just happened
if the left and right brain can't TALK to eachother
THey will both think they are individuals in control of the same body.
it's like havign a 2 core CPU (well we have muliple cores the point is energy comes in is divided in to pulses and those pulses grow the body the rotation has a hard or soft angle i don't understand fully how the energhy minipulates matetr but again you have to put something in the soil of something with the same vibration
Reason #5023 to buy an analogue mixer.
easy...
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 ^^
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 UA-cam 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
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