Hi :) while making music with Linux I got problems again.
I will reduce my request to the most important musical trouble. Realtime isn't realtime, because of no sync of MIDI and audio track latencies caused by no straight tempo. The value of ms up to the Haas effect might be not noticeable for some audio work, but at 120BPM the value of ms that are called Haas effect, can make a different, e.g. at 120BPM of 1/64 note, 31.25ms, and even some wrong position of 1/512, 3.90625ms, can be noticeable as something that breaks the groove. I made some tests with Suse 11.0 and 64 Studio 2.1(rc/Lenny). Suse is using Reaper to record QSynth to an audio track, while a MIDI track sends "note on"s to QSynth. Effects of QSynth are disabled for Suse and 64 Studio. 64 Studio is using Rosegarden, but I started the tests with Suse 11.0, kernel 2.6.25.11-0.1-rt, KDE 4.0.4, QJackCtl 0.3.3, Qt 4.4.0, jackd 0.192.2, Reaper 2.44, wine 0.9.64_aka_1.0.rc3-2.1, wineasio (compiled with source package wineasio-x-1.x86_64.rpm and asio.h 2.1), QSynth 0.3.3. The settings for Reaper's audio recording were "Use audio driver reported latency". Because I had to change it, when making music, I set them for the test, to the same settings for "Input manual" values, I used when making music, that means 10.05ms + 0samples, while QJackCtl reports a latency of 46.4ms. Maybe the values are wrong, because I can't hear a delay when playing a virtual synth, and 46.4ms should be heard, but I hear fluctuations of the tempo Reaper should work. The bars 1 and 2 are empty, I started with bar 1 and auto punch for bars 3, 4, 5, 6. Speed is 120BPM. Each bar has 8 notes C, kick, each assigned to it's 1/8 position, a length of 1/16 and a note on velocity of 64. I set /etc/security/limits.conf for Suse 11.0 to #-domain-> <type> <----item----> <--value--> @audio - rtprio 99 @audio - memlock unlimited @audio - nice -10 The MIDI Track is Track 1, MIDI output channel 1. The audio track for the QSynth recording is track 2. I did the recording on track 2, as a mono track, QSynth left and right outs routed to Reaper's/Jackbridge's input-0. I didn't connect something else, because I just will report and request about one problem ;), I only connected the needed things and nothing else, even not an output for listening. MIDI through is connected to QSynth. Reaper's Project sample rate is 44100, the same like QJackCtl's sample rate and QJackCtl has realtime enabled. Playback and render mode for Reaper is set to "Best (384pt Sinc - VERY SLOW)". I recorded a 16bit ".wav". Before recording I listen to that 1/8 notes, it's to hear that the timing isn't straight, after that I recorded without QJackCtl's connection that enables listening. I recorded the "Standard" Kick from the soundfont "8MBGMSFX". QSynth master gain is set to 109, that produced a stable recording level of -0.1 for Reaper, so there are no fluctuations for the level. I opened the recorded file with Audacity 1.3.5-beta and ignored that there are no IO devices found, also the beatfinder isn't a help, but it's easy to see the timing. I started with bar 3, that means at exactly the 4th second. "<" means a little bit before ">" a little bit behind and "=" nearly exact or exact that time. 1 bar at 120BPM = 2s = 2000ms, so 2000ms / 8 = 250ms for each 1/8 note. Bar - The second it is - it should be - diff from ideal 3 - = 4.005s - 4.000s - ca. 5ms to late 3 1/8 - > 4.260s - 4.250s - ca. 10ms to late 3 1/4 - = 4.495s - 4.500s - ca. 5ms to early 3 3/8 - = 4.750s - 4.750s - ca. exact 3 1/2 - = 5.005s - 5.000s - ca. 5ms to late 3 5/8 - = 5.260s - 5.250s - ca. 10ms to late 3 3/4 - < 5.495s - 5.500s - [...] 3 7/8 - < 5.750s - 5.750s 4 - > 6.000s - 6.000s skip 5 - = 8.000s - 8.000s skip 6 - < 10.000s - 10.000s 6 1/8 - > 10.250s - 10.250s 6 1/4 - < 10.510s - 10.500s skip 6 7/8 - > 11.760s - 11.750s The fluctuation seems to be between 5ms to early and 12.5ms to late, some notes seems to be exact. If one note will be 5ms to early and the following 12.5ms to late, the wrong space between those notes will be 17.5ms. 1/96 note or break at 120BPM is 20.83s and 1/128 is 15.625ms. A C64 synced by click and an Atari ST synced by SMPTE to a Yamaha MT44D 4 track tape recorder is precise enough, so that it isn't possible for me to hear a fluctuation, but the fluctuations of Reaper will make it impossible for me to make music. I can't groove when notes are incorrect like that. The second test is 64 Studio 2.1(rc/Lenny), kernel 2.6.21-1-multimedia-amd64, KDE 3.5.9, QJackCtl 0.3.2, Qt 4.4.0, jackd 0.109.02, Rosegarden 1.7.0, QSynth 0.2.5-2. 64 Studio /etc/security/limits.conf by default is set to @audio - rtprio 99 [EMAIL PROTECTED] - memlock 250000 @audio - nice -10 but http://jackaudio.org/faq recommends @audio - rtprio 99 @audio - memlock unlimited @audio - nice -19 Nice can be from 1 to 19, default is 10, "not nice" can be from 0 to -20. JAD's (not Suse 11.0) /etc/security/limits.conf by default is set to @audio - rtprio 90 @audio - nice -15 @audio - memlock 4000000 Rosegarden is configured to "16-bit PCM WAV format", the default was 32-bit. Rosegarden MIDI external device were connected to QSynth's MIDI in, and it's left and right audio outs were connected to Rosegarden's record in 1. Again there is a 1/8 notes C, kick, pattern for the bars 3,4,5 and 6, note on velocity also is 64 for all notes. Kick is C1 using Rosegarden, for Reaper the same note is C2, the standard for note 36, kick, is C1. It's not possible to see how optimal the input level is for Rosegarden, there is missing a margin display, but Rosegarden seems to have less fluctuations when listening. I couldn't find out how to record the range by punch in and out, having a pre-roll and no loop function enabled, so I recorded from bar 1 to over the end of bar 6. QJackCtl's info about the latency is 26.1ms, realtime is enabled and the sample rate is set to 44100. 64 Studio's Audacity 1.3.5-beta calls the 4th second the 8th second, all notes are between 0.003s = 3ms to early and exact to the point, so it isn't possible to do a controlled phasing by playing the MIDI QSynth kick and the recorded kick, even if the recorded kick is moved a little bit later in time by using Audacity, Rosegarden only seems to be able to delay the audio items for 10ms or more. Fazit Reaper and QSynth with Suse 11.0: fluctuation between -5.0ms and +12.5ms max. drift 17.5ms can't be used to make controlled music Rosegarden and QSynth with 64 Studio 2.1(rc/Lenny): fluctuation between -3.0ms and 0.0ms max. drift 3.0ms might be good enough for non-musicians but 3.0ms might be critical for some grooves and disables phasing by double recording sounds that starts with a sharp attack. I will test what happens if I change "nice" to be less nice. The system is an Athlon X2 2.1GHz, a Terratec EWX 24/96 (without MIDI), an USB MIDI device, RAM 2GB - 128MB for the integrated Radeon X1250-based graphics using the Vesa driver, on-board audio and HDMI of the Asus M2A-VM HDMI are disabled. Any tips how to make realtime real realtime? Cheers, Ralf
signature.asc
Description: OpenPGP digital signature
_______________________________________________ 64studio-users mailing list [email protected] http://lists.64studio.com/mailman/listinfo/64studio-users
