FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > 64 Studio > 64 Studio User

 
 
LinkBack Thread Tools
 
Old 08-12-2008, 06:18 PM
Ralf Mardorf
 
Default Trouble with realtime and 64 Studio 64-bit and Suse 64-bit

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
#@audio - 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

_______________________________________________
64studio-users mailing list
64studio-users@64studio.com
http://lists.64studio.com/mailman/listinfo/64studio-users
 

Thread Tools




All times are GMT. The time now is 03:44 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org