> Anyway, after searching the archives this morning I found that this
> was a known bug and was wondering if there had been any progress
This is a particularly irksome bug because Apple considers it to be "behaving correctly", even though "behaving correctly" means that it is essentially unusable the way we need to use it.
So we've been chewing on our options, which appear to be writing an alternate reading mechanism specifically for MP3 files--which would in turn introduce a lot of extra complexity and therefore potentially more bugs, so I'm not jumping to do that.
In short, alas, no progress yet, and not entirely sure when there will be progress on this one.
>
> anyone had any suggestions for how to handle audio tracks longer than
> eight and a half minuets.
Best bet is to convert to some other format.
Best,
Chris
Sent from my iPhone
On 10/04/2010, at 11:27 PM, Christopher Ashworth <ch...@figure53.com>
wrote:
>
> On Apr 9, 2010, at 10:13 PM, Jeremiah wrote:
>
>> Anyway, after searching the archives this morning I found that this
>> was a known bug and was wondering if there had been any progress
>
> This is a particularly irksome bug because Apple considers it to be
> "behaving correctly", even though "behaving correctly" means that it
> is essentially unusable the way we need to use it.
>
> So we've been chewing on our options, which appear to be writing an
> alternate reading mechanism specifically for MP3 files--which would
> in turn introduce a lot of extra complexity and therefore
> potentially more bugs, so I'm not jumping to do that.
>
> In short, alas, no progress yet, and not entirely sure when there
> will be progress on this one.
>>
>> anyone had any suggestions for how to handle audio tracks longer than
>> eight and a half minuets.
>
> Best bet is to convert to some other format.
>
> Best,
> Chris
>
>
Just an idea. But could Qlab display a red cross for long mp3 files?
Until it is fixed.
Regards
John
Good idea. I was just thinking the same thing. We'll look into auto-identifying if a file is hitting this problem.
-C
When working one off events like the one I'm working today, I don't
have a lot of control over what is handed to me, and sometimes not a
lot of time to convert. But for today, converting to AIFF in iTunes
worked just fine.
FYI, the tracks I'm dealing with today are about 8 minutes long, and
are crapping out after about 5:30. About half of the dozen or so
tracks I have today had the problem.
If a long mp3 is ok now, is there any chance it will not be later,
wether I've quit QLab or not?
- Dave Wallingford
On Apr 9, 2010, at 10:13 PM, Jeremiah wrote:
See http://tracker.figure53.com/qlab/ticket/439
Essentially the bug is specific to trying to decode MP3 on a background
thread. Since it's deep within QuickTime a complete characterisation
including if it just depends on the file or depends on what else is
going happening on the system isn't possible.
The safe thing is to covert your files another format. This can be done
in batches using
I don't imagine Apple will ever fix this in QuickTime 7, they may
eventually fix in QuickTime X.
I'm starting to think that QLab supporting all the audio formats that
Quicktime supports might be a mistake and that it would be more robust
to require conversion, or to automatically convert, to a single format
such as AIFF or CAF when the file is associated with a cue. That would
be a major version change though.
Chris could implement a (defeatable) warning when adding an MP3 to a
project in a 2.x update though.
-p
--
Paul Gotch
--------------------------------------------------------------------
> i'm starting to think that QLab supporting all the audio formats that
> Quicktime supports might be a mistake and that it would be more robust
> to require conversion
matt wrote:
> I think this is a throwing the baby out with the bath water kind of solution. I think marking MP3s that are too long is the simplest solution from an end user perspective. Especially if you ban file types that come from iTunes or Amazon you then add a largely unnecessary file conversion that takes valuable tech time waiting on sound.
i strongly agree with you, matt. marking problem files as broken solves the immediate problem, and allows use of acceptable mp3's... everybody wins.
i think.
sam
> P.S. Can't believe I'm saying this but sometimes I miss the crazy logic of the Working Directory of V1
chris wrote:
> One of those things that's actually great for the geeks but terrible for the non-geeks, and the non-geeks outnumber us, unfortunately. :)
oh, i *long* for the working directory. the new system is great, until something confuses qlab. when that happens, there's no mechanism for the user (me) to point qlab at my files so it will just say "oh, there they are!" and then it all works again.
but i, too, acknowledge the fact that it really does work most of the time. so... yeah.
andy
On Apr 12, 2010, at 4:18 AM, Andy Dolph wrote:
> how about a "convert mp3 to aiff right now" button in a warning
> dialogue.... that would most likely deal with the problem easily for
> most of us...
>
> andy
>
> On Sun, Apr 11, 2010 at 7:16 PM, sam kusnetz <s...@notquite.net> wrote:
>
>> i strongly agree with you, matt. marking problem files as broken solves the immediate problem, and allows use of acceptable mp3's... everybody wins.
>>
>> i think.
>>
>> sam
--
Jeremy Lee
Sound Designer, NYC - USA 829
http://www.jjlee.com
> Sounds like an Applescript to me...
Something like this, maybe?
set userFormat to item 1 of {"wav", "aif"} -- Change this to "item 2"
to convert to aiff
set userBitDepth to 16
set userBitRate to 44100
-- Declarations
global dialogTitle
set dialogTitle to "Convert to " & userFormat
if userFormat is "wav" then
set acceptableKind to "WAVE Audio File"
set formatString to "WAVE -d LEI"
else if userFormat is "aif" then
set acceptableKind to "AIFC Audio File"
set formatString to "AIFF -d BEI"
else
return -- Protection against erroneous user modification
end if
set theCue to last item of (selected of front workspace as list)
if q type of theCue is "Audio" then
set currentFileTarget to file target of theCue
tell application "System Events"
set currentKind to kind of (currentFileTarget as alias)
end tell
if currentKind is not acceptableKind then
set currentStart to start time of theCue
if currentStart is missing value then -- ### Mac OS X 10.6.2 fix for
incorrectly returned items
set currentStart to 0
end if
set currentLoopStart to loop start time of theCue
if currentLoopStart is missing value then -- ### Mac OS X 10.6.2 fix
for incorrectly returned items
set currentLoopStart to 0
end if
set currentLoopEnd to loop end time of theCue
set currentEnd to end time of theCue
tell application "System Events"
set theContainer to path of container of (currentFileTarget as alias)
set theExtension to name extension of (currentFileTarget as alias)
if theExtension is "" then
set theName to name of (currentFileTarget as alias)
else
set theFullName to name of (currentFileTarget as alias)
set theName to text 1 through ((length of theFullName) - (length
of theExtension) - 1) of theFullName
end if
set newTarget to theContainer & theName & "." & userFormat
set fileExists to false
try -- Does the new file already exist (###FIXME### More work
needed here once AppleScript's file handling understood!)
set fileExists to (exists newTarget as alias)
end try
end tell
if fileExists is true then
display dialog "The destination file for the conversion already
exists. What now?" with title dialogTitle ¬
with icon 0 buttons {"Cancel", "Replace"} default button "Replace"
cancel button "Cancel"
end if
display dialog "Preparing to convert..." with title dialogTitle with
icon 1 ¬
buttons {"Cancel", "OK"} default button "OK" cancel button "Cancel"
giving up after 3 -- You have 3s to change your mind
do shell script "afconvert -f " & formatString & userBitDepth & "@"
& userBitRate & " " & ¬
quoted form of POSIX path of currentFileTarget & " " & quoted form
of POSIX path of newTarget
set file target of theCue to newTarget
set start time of theCue to currentStart
set loop start time of theCue to currentLoopStart
set loop end time of theCue to currentLoopEnd
set end time of theCue to currentEnd
set q name of theCue to theName & "." & userFormat -- Remove this
line if you don't want to reset the cue name too
display dialog "Done." with title dialogTitle with icon 1 buttons
{"OK"} default button "OK" giving up after 5
end if
end if
Stored as a Hot Key, this script uses the "afconvert" command line
utility to convert the selected cue's Target to a wav file, if it
isn't one already (it can be modified to convert to aiff instead); the
script keeps times but resets the cue's name.
It works here in Leopard; I can't test it in Snow Leopard today. I
fiddled around with QuickTime Player for a bit before realising that
only QT Pro can export; then I looked at iTunes and remembered that it
can't convert to 24-bit, finally I hit the right Google search term to
discover afconvert by accident. There is no man page, but if you get
the command wrong you get the text I've pasted below to try to figure
out how the command works...
Rich
Usage:
afconvert [option...] input_file [output_file]
Options: (may appear before or after arguments)
{ -f | --file } file_format:
'3gpp' = 3GP Audio (.3gp)
data_formats: 'aac ' 'samr'
'3gp2' = 3GPP2 Audio (.3g2)
data_formats: 'aac ' 'samr'
'adts' = AAC ADTS (.aac, .adts)
data_formats: 'aac ' 'aach'
'ac-3' = AC3 (.ac3)
data_formats: 'ac-3'
'AIFC' = AIFC (.aifc, .aiff, .aif)
data_formats: I8 BEI16 BEI24 BEI32 BEF32
BEF64 UI8 'ulaw' 'alaw' 'MAC3' 'MAC6'
'ima4' 'QDMC' 'QDM2' 'Qclp' 'agsm'
'AIFF' = AIFF (.aiff, .aif)
data_formats: I8 BEI16 BEI24 BEI32
'amrf' = AMR (.amr)
data_formats: 'samr'
'caff' = Apple CAF (.caf)
data_formats: '.mp1' '.mp2' '.mp3' 'DTS ' 'FlAd'
'MAC3' 'MAC6' 'NELL' 'QDM2' 'QDMC'
'Qclp'
'Qclq' 'TS\x00\x02' 'TS\x00\x11' 'TS
\x00E' 'TS\x00U' 'TTA1'
'WMA1' 'WMA2' 'WMA3' 'WMAL' 'XiVs'
'aac '
'aach' 'aacl' 'ac-3' 'agsm' 'alac'
'alaw'
'drms' 'dvca' 'dvi ' 'dvi8' 'ilbc'
'ima4'
'lpc ' I8 BEI16 BEI24 BEI32 BEF32
BEF64 LEI16 LEI24 LEI32 LEF32 LEF64
'ms\x00\x02' 'ms\x00\x11' 'ms\x001'
'ms\x00P' 'ms\x00U' 'ms\x01`'
'ms\x01a' 'ms \x00' 'samr' 'ulaw'
'vdva'
'MPG1' = MPEG Layer 1 (.mp1, .mpeg, .mpa)
data_formats: '.mp1'
'MPG2' = MPEG Layer 2 (.mp2, .mpeg, .mpa)
data_formats: '.mp2'
'MPG3' = MPEG Layer 3 (.mp3, .mpeg, .mpa)
data_formats: '.mp3'
'mp4f' = MPEG4 Audio (.mp4)
data_formats: 'aac ' 'aach' 'aacl' 'ac-3'
'm4af' = MPEG4 Audio (.m4a)
data_formats: 'aac ' 'aach' 'aacl' 'ac-3' 'alac'
'NeXT' = NeXT/Sun (.snd, .au)
data_formats: I8 BEI16 BEI24 BEI32 BEF32
BEF64 'ulaw'
'Sd2f' = Sound Designer II (.sd2)
data_formats: I8 BEI16 BEI24 BEI32
'WAVE' = WAVE (.wav)
data_formats: UI8 LEI16 LEI24 LEI32 LEF32
LEF64 'ulaw' 'alaw'
{ -d | --data } data_format[@sample_rate_hz][/format_flags]
[#frames_per_packet] :
[-][BE|LE]{F|[U]I}{8|16|24|32|64} (PCM)
e.g. BEI16 F32@44100
or a data format appropriate to file format, as above
format_flags: hex digits, e.g. '80'
Frames per packet can be specified for some encoders, e.g.:
samr#12
{ -c | --channels } number_of_channels
add/remove channels without regard to order
{ -l | --channellayout } layout_tag
layout_tag: name of a constant from CoreAudioTypes.h
(prefix "kAudioChannelLayoutTag_" may be omitted)
if specified once, applies to output file; if twice, the first
applies to the input file, the second to the output file
{ -b | --bitrate } bit_rate_bps
e.g. 128000
{ -q | --quality } codec_quality
codec_quality: 0-127
{ -r | --src-quality } src_quality
src_quality (sample rate converter quality): 0-127
{ --src-complexity } src_complexity
src_complexity (sample rate converter complexity): line,
norm, bats
{ -v | --verbose }
print progress verbosely
{ -s | --strategy } strategy
bitrate allocation strategy for encoding an audio track
0 for CBR, 1 for ABR, 2 for VBR_constrained, 3 for VBR
{ -t | --tag }
If encoding to CAF, store the source file's format and name
in a user chunk.
If decoding from CAF, use the destination format and filename
found in a user chunk.
--read-track track_index
For input files containing multiple tracks, the index
(0..n-1) of the track
to read and convert.
--prime-method method
decode priming method (see AudioConverter.h)
--no-filler
don't page-align audio data in the output file
{ -u | --userproperty } property value
set an arbitrary property to a given value
property must be a four char code
value is a signed 32-bit integer
A maximum of 8 properties may be set
e.g. use '-u vbrq <sound_quality>' to set the sound quality
level (<sound_quality>: 0-127)
for VBR encoding strategy (i.e., -s 3)
{ -h | --help }
print help
> On 12 Apr 2010, at 14:00, Jeremy Lee wrote:
>
>> Sounds like an Applescript to me...
>
> Something like this, maybe?
That Rich Walsh guy....
He's somethin', ain't he?
-C
Hey, what Rich does on his own time...er, I mean...uh...nothing to
see, nothing to see...carry on :-)
--A