[squeak-dev] Bad loop parameters in AIFF [Repost without large attachment]

karl ramberg karlramberg at gmail.com
Sat Feb 5 14:03:38 UTC 2022


I think there is something wrong with the logic for AIFFFileReader instance
variable isLooped.
I don't see the error if I hard code isLooped to false in method below.

AIFFFileReader>>readInstrumentChunk: chunkSize
...
isLooped := sustainMode = 1.
(isLooped and: [markers notNil]) ifTrue: [
((markers first last > frameCount) or:
[markers last last > frameCount]) ifTrue: [
"bad loop data; some sample CD files claim to be looped but aren't"
isLooped := false]].

The logic for determining if a sound is looped seems a little error-prone.

Loop length in AIFFFileReader is calculated from markers
Markers in 36.aif is #(#(1 '' 44100) #(2 '' 88200) #(3 '' 0) #(4 '' 0)).

markers := #(#(1 '' 44100) #(2 '' 88200) #(3 '' 0) #(4 '' 0)).
markers last last - markers first last  "How AIFFFileReader calculates loop
length"
-44100

Best,
Karl








On Sat, Feb 5, 2022 at 1:36 PM David O'Toole <deeteeoh1138 at gmail.com> wrote:

> Try placing the unzipped "cello f" folder into directory "path_to_foo"
> then:
>
> SampledInstrument readSimpleInstrument: 'cello' fromDirectory:
> 'path_to_foo'
>
> I see your comment about the negative loop length, however this appears to
> be the bug itself---I verified in Snd that the loop points are 44100 and
> 88200.
>
> On Sat, Feb 5, 2022 at 7:08 AM karl ramberg <karlramberg at gmail.com> wrote:
>
>> Do you have a short doIt to load these samples ?
>> I'm not sure how you set it up.
>> A quick look at aiffloop.txt I see this:
>> LoopedSampledSound>>samples:loopEnd:loopLength:pitch:samplingRate:
>> 	Receiver: a LoopedSampledSound
>> 	Arguments and temporary variables:
>> 		aSoundBuffer: 	a SoundBuffer(0 0 0 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 3 2 2 2 2 1 1 0...etc...
>> 		loopEndIndex: 	0
>> 		loopSampleCount: 	-44100
>>
>> So there will probably be issues with negative number of samples in the loop
>>
>> Best,
>> Karl
>>
>>
>> On Sat, Feb 5, 2022 at 2:46 AM David O'Toole <deeteeoh1138 at gmail.com>
>> wrote:
>>
>>> (Apologies if this is a double post, I think the other will be rejected
>>> on account of the 2+MB AIFF file I attached. Instead I've put up a Zip file
>>> of the AIFFs I'm trying to import, on GDrive:
>>> https://drive.google.com/file/d/16BvtxS9tkIPJRcx-cri1gPGM5p0E7uV_/view?usp=sharing
>>>
>>> Original message:
>>>
>>> I have AIFF files with loop points all set the same, beginning at sample
>>> 44100 and ending at 88200. I am trying to use
>>> SampledInstrument(class)>>#readSimpleInstrument:fromDirectory: to create a
>>> sampled instrument.
>>>
>>> In Snd i can verify the loop points are correct:
>>>
>>> > >(sound-loop-info (open-sound "~/sessions/orch.mosaic/cello f/36.aif"))
>>> (44100 88200 0 0 0 0 1 1)
>>>
>>> But as you can see in the bug report/screenshot, the end point becomes 0
>>> somehow when it reaches note 36.aif, resulting in an error. I've also
>>> included the offending .aif file, which might be malformed in some way I
>>> haven't discovered.
>>>
>>> How might I go about debugging this further?
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220205/cfee3453/attachment.html>


More information about the Squeak-dev mailing list