-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compatibility with DAW tools #38
Comments
From the description of the issue you are experiencing it looks like you didn't compile the WebUI or the attempt to do that failed.
Also check the guide below and make sure the "http_base_dir" parameter in daemon.conf points to the directory where the WebUI gets built. |
Any update on this? |
Some progress, I corrected the path to the webui, the web interface is now displayed correctly. This is the current conf file in use: { |
Did you create a daemon Source using the WebUI as indicated by: |
Better, I was able to transfer audio. I did create a source, but I noticed that the source can only have up to 15 channels configured. What is the reason for limiting sources to 15 channels? Are sources mapped directly to streams? How should the daemon be configured if you need to use 16 or more outputs? I noticed that the PTP status had changed to unlocked again. I had previously found a configuration mistake in my PTP GM, which I corrected to the best of my knowledge. I did not see any problems with the PTP configuration, so I killed and restarted the daemon, at which point it locked to the PTP GM again. I had made no change to the PTP GM, so I do not know why the daemon was not able to re-lock to the GM before killing and restarting. I have restarted the daemon with output logged to a file, so will have some record of what occurs if the situation of failing to remain locked to the GM occurs again. There was a SEQID.SAC error reported when I attempted to create a sink, so I will research that and work on getting a working sink connection later. Thank you for the help so far, I have definitely made a lot of progress today. |
aes67-daemon-lost_ptp_lock.log |
You can create multiple daemon Sources. Each Source use a list of ALSA channels of the Ravenna audio device. |
Yes. You can find the documentation related to the configuration parameter at: |
Nothing to worry about this might be a temporary status, just try to reload the status and check again. |
weird. Try to check if you don't have another master clock on the network. |
Hi, PTP track hound (https://www.ptptrackhound.com) is also a good tool for PTP debug. |
I have only the one PTPv2 GM on that VLAN. If asked before I would have replied that I only have one GM on the network, but I realized that the Dante audio interface is the only Dante compliant device on that VLAN, so it probably became a PTPv1 GM to act as the Dante clock master. I started PTP Track Hound and it shows my GM as expected, and the Dante interface shown as a BC. I do see v1 and v2 messages in Track Hound. I will have to work more on Monday to capture the traffic with Track Hound near the time that the daemon loses lock. |
Update on the problem staying locked to the PTP clock leader: I notice that the kernel ALSA driver does not display a distinct process ID, so I cannot change the RT priority of the driver. Other kernel drivers display in the output of ps -eo and so can have the RT priority set or adjusted. Is there no way to make sure the ALSA Ravenna driver is set to an appropriate RT priority? I am also curious how others are using this driver. While experimenting I realized that the driver (which I understand is developed originally by Merging, not here by Bondavalli) does not contain any additional buffering, so when using in AES67 mode the user space applications have to use a buffer size of 48 samples to match the network packet size. |
The driver does not use a kernel thread, so no kernel processes associated with driver are displayed and you don't need to set any priority. At each tick of the PTP timer (kernel high resolution timer whose base period is defined by the daemon parameter "tic_frame_size_at_1fs") a kernel tasklet gets scheduled for execution. The default value of this timer is set to 48 samples (1ms @ 48Khz) . |
"I am able to use various Dante devices in AES67 mode for both receiving and transmitting RTP streams" Yes, and following the examples I was able to transmit audio from my workstation to my Yamaha stage box using aplay. |
I don't have direct experience with these DAW tools. |
Hi,
Trying to understand what happens, I grabbed some lines from kernel log, and I would like to share with you: when I start aplay, I read the following: entering mr_alsa_audio_pcm_open (substream name=subdevice #0 #0) ... Current PTPFrame Size = 48 when I start Ardour : entering mr_alsa_audio_pcm_open (substream name=subdevice #0 #0) ... Current PTPFrame Size = 48 Current PTPFrame Size = 48 and so on until I close it.... When I start Bitwig Studio: entering mr_alsa_audio_pcm_open (substream name=subdevice #0 #0) ... Current PTPFrame Size = 48 Current PTPFrame Size = 48 Current PTPFrame Size = 48 when I start jack (jackd -d alsa -d hw:RAVENNA -p 48 -n 1024 -o 2 -P): entering mr_alsa_audio_pcm_open (substream name=subdevice #0 #0) ... Current PTPFrame Size = 48 like Ardour this line until I close it.... Hope this could be useful... cheers |
HI Guido, |
I will also investigate whether it is possible to specify interleaved access mode. I checked the jackd man page, that did not appear to be an option, but I can double check the code. |
Hi guys, But Reaper stops with attached error: What do you think about that? Have a nice weekend Guido |
"you open the world to any DAW to Dante/AES67 on Linux! " Indeed, which is what prompted my earlier question about how others are using this driver now. Obviously not for music production, which is how the Merging Ravenna driver is typically used on Windows (for example with the Merging Hapi or Horus converters). The original version of the driver did not even support memory mapped mode, I don't think it was being used for anything except maybe audio player appliances which run embedded linux and play files to the Merging NDAC. Obviously not with a DAW. "What do you think about [Reaper error]" I think Reaper is trying to set a particular period size and is not able to. That settings window shows a block size of 64, but in AES67 mode the driver will be running at a block size of 48. Does Reaper allow setting a block size of 48? |
Unfortunately not, only 16,32,64,128..... |
The unsupported access mode issue may occur because the driver improperly advertises the access mode
|
The driver only supports periods that are a multiple of the base period size. This base period is configurable and in your configuration (and in the default configuration) is set to 48 samples (1ms @ 48Khz). |
I assumed that tic_frame_size_at_1fs is the number of samples per network packet, but how is max_tic_frame_size defined? Is that the largest number of samples per packet which may be configured? I could not find the acronym "TIC" defined anywhere in the Ravenna Operating Principles document or AES67-2018. I will try the patch that removes advertising non-interleaved mode later today. The software should support interleaved, but it needs accurate information that interleaved mode is required, it will attempt to use non-interleaved mode first. "you should be able to use a period of 64 as block size" Yes, but if connecting to a Dante device in AES67 mode I believe that only 48 sample block size is supported. The documentation from Audinate instructs to set the size to 48 samples and does not mention other sizes supported in AES67 mode (although a wide range of block sizes are supported in native Dante mode). A native Ravenna device should also support a wide range of block sizes, but those are less common than Dante devices, at least on the west side of the Atlantic. |
No, this global setting is used to determine the driver base timer period as explained previously. At each tick the driver processes PTP sync, all incoming RTP packets and schedule the outgoing RTP packets. The number of samples per network packet is defined for each configured Source by the parameter "Max samples per packet" "max_samples_per_packet" of a source. Please consider that the WebUI is not able to visualize a tic_frame_size_at_1fs of 64 in the Config tab, still this is a working configuration and you can also define Sources with 1ms packet duration. |
Hi Andrea, |
Hi Guido, |
The README.md file in the Merging directory (top of 3rdparty/ravenna-alsa-lkm) has this note: ALSA Features
Is that note not correct? Are we sure that non-interleaved mode is actually not supported, or does it just have errors? |
As far as I can see the driver playback and capture copy functions do not implement the transfer for the non interleaved mode. |
I find that the Sources tab does not allow setting a source with 64 samples per packet even when the TIC frame size is configured as 64. I configured a source with 48 samples per packet so that I could see the correct format in status.json, stopped the daemon, edited the status.json file to use 64 as the samples per packet for the previously configured source, then restarted the daemon. When the daemon was restarted the previously configured source was not used, the configuration was back to no source or sink defined.
keegee, was that only with the patch which removed advertising non-interleaved mode, or did you also set the frame size to 64 instead of 48? How did you configure the source for 64, and did your Yamaha processor have any problem using that? |
Hi all, |
You don't need to set the Source to 64 samples per packet. This setting is not supported by most of the devices and not even recommended by AES67. |
I am attempting to use the aes67 daemon with a Yamaha Dante interface in AES67 mode, and while the run_test.sh script passed with an "OK" result and 0 status, when I run the daemon with a conf file I created with what I think should be appropriate parameters, I get no announcements from the daemon detected by another machine running the rav2sap application (even though on stdout I see "session_manager:: next SAP announcements in 30 secs" messages), and when I attempt to connect to the webui I get a blank page (not a no connection response from the browser, so I think the machine running the daemon responded at port 8080, but when I view source of the page there are 0 characters).
I think that either my configuration file for the daemon is incorrect, or there is another step to point the daemon to the webui files that I did not perform, but I have trouble finding the error just from inspecting the run_test.sh script and reading the README.md file. A "Getting Started" type guide for beginners, or a step by step checklist of all the required parameters for creating the daemon configuration file would be very helpful. For example I see that the run_test.sh script seems to touch the daemon status file. I thought the status file should be created by the daemon on startup, is there some configuration required to be added to that file, and not just the daemon configuration file? I see in the current status.json file created that it contains only:
{
"sources": [ ],
"sinks": [ ]
}
I would be willing to help create such a file, although I am not very familiar with using github to submit a pull request, so I would need some time to make sure I can submit a pull request properly for just that new file.
Or perhaps enabling the github wiki for the project would be a way to accomplish the same goal.
The text was updated successfully, but these errors were encountered: