[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#916047: csound: regression in String handling



package: csound
version: 1:6.12.2~dfsg-1
severity: important
justification: Regression over stretch with insidious and
hard-to-diagnose consequences



I noticed that  my orchestras were failing on several sound files after
upgrading to buster, and tracked it down to some cases of  filenames
being input in the score file.

Consider the following orchestra and score:

Orchestra:

0dbfs=1
sr=44100
nchnls=4
instr 1, 10
Sfile strget p4
amic = 0
a1, a2 diskin Sfile, 0.997, -2.3

vincr amic, a1
outq amic, amic, amic, amic
endin


Score:
----------------------------------------

i 10.000244140625 10.135534524917603 -1 "/home/hartmans/.cache/djcli/Bobina - Music Box (Album Mix).wav" 1 1.0 10.135534524917603 0.0 422.2395255249176 1.0 0 50 1.0
f0 20.0


Stretch Behavior:
(csound 6.08)
0dBFS level = 1.0
orch now loaded
audio buffered in 256 sample-frame blocks
ALSA output: total buffer size: 1024, period size: 256 
writing 1024 sample blks of 64-bit floats to dac 
SECTION 1:
B  0.000 .. 10.136 T 10.136 TT 10.136 M:  0.00000  0.00000  0.00000  0.00000
new alloc for instr 10:
WARNING: instr 10 uses 4 p-fields but is given 13
diskin2: opened '/home/hartmans/.cache/djcli/Bobina - Music Box (Album Mix).wav':
         48000 Hz, 2 channel(s), 19778664 sample frames
B 10.136 .. 20.000 T 20.000 TT 20.000 M:  0.87332  0.87332  0.87332  0.87332
Score finished in csoundPerform().
inactive allocs returned to freespace
end of score.		   overall amps:  0.87332  0.87332  0.87332  0.87332
	   overall samples out of range:        0        0        0        0
0 errors in performance
Elapsed time at end of performance: real: 19.972s, CPU: 0.963s
3446 1024 sample blks of 64-bit floats written to dac
hartmans@mount-peerless:djutils(6)>
Buster behavior:
----------------------------------------
0dBFS level = 1.0
orch now loaded
audio buffered in 256 sample-frame blocks
ALSA output: total buffer size: 1024, period size: 256
writing 1024 sample blks of 64-bit floats to dac
SECTION 1:
WARNING: Buffer underrun in real-time audio output
B  0.000 .. 10.136 T 10.136 TT 10.136 M:  0.00000  0.00000  0.00000  0.00000
new alloc for instr 10:
WARNING: instr 10 uses 4 p-fields but is given 13
INIT ERROR in instr 10 line 7: diskin2: /home/hartmans/.cache/djcli/Bobina - Music Box (AlbumMix).wav: failed to open file (No Error.)
 from file test.orc (1)
a1	a2	diskin	Sfile	0.997	-2.2999999999999998224	0	0	0	0	0	0	
	  B 10.136 - note deleted.  i10 had 1 init errors
B 10.136 .. 20.000 T 20.000 TT 20.000 M:  0.00000  0.00000  0.00000  0.00000
Score finished in csoundPerform().
inactive allocs returned to freespace
end of score.		   overall amps:  0.00000  0.00000  0.00000  0.00000
	   overall samples out of range:        0        0        0        0
1 errors in performance
Elapsed time at end of performance: real: 20.006s, CPU: 0.901s
3446 1024 sample blks of 64-bit floats written to dac
hartmans@mount-peerless:djutils(7)>

----------------------------------------

Somehow in the buster code path, The space between Album and Mix has
been removed and the filename has become corrupted.
Note that the buster code path works fine if  you hard code the sound
file name in the instrument.
It's something to do with the score file that is problematic.

I apologize that the score is a bit complex; it's obviously extracted
From some more complex code.  My typical orchestra is quite complex and
I wanted to get things down to an debuggable minimal example, but I also
wanted to  use the production score file.
I'm also attaching the score as a mime attachment because it is a rather
long line.

Attachment: score
Description: Binary data

Attachment: signature.asc
Description: PGP signature


Reply to: