Max apple lossless and Slimserver

Discuss Max, an open source CD audio extractor and audio converter.
fredgoodman
Posts: 1
Joined: Thu Sep 28, 2006 10:10 pm

Max apple lossless and Slimserver

Post by fredgoodman » Thu Sep 28, 2006 10:27 pm

I use Max to encode to apple lossless, and play my music with
Slimserver/Squeezbox http://www.slimdevices.com/.

The latest version 6.5 of Slimserver is unable to decode Max-produced
apple lossless files. They changed to a different decoder "alac"
http://craz.net/programs/itunes/alac.html
for this version of Slimserver. Alac
crashes when it meets an apple lossless file produced by Max, with the error message
(moov) unknown chunk id: iods.

The problem seems to be related to the issues discussed at
http://sbooth.org/forums/viewtopic.php?t=217.

A work-around is to re-encode to apple lossless using iTunes.
This produces an apple lossless file that alac can decode.

I tried to process the offending files with Atomic Parsley, as suggested at
http://sbooth.org/forums/viewtopic.php?t=217, but this does not help.

Request: it would be nice if the author of Max and the author of alac could consult on this, so that their encoder and decoder could work together.

User avatar
sbooth
Site Admin
Posts: 2447
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Fri Sep 29, 2006 8:45 am

Since Max uses the Core Audio AAC encoder, there aren't very many changes I can make to the MPEG 4/Apple Lossless files produced by Max. mp4v2 (the library I use for reading and writing tags in m4a files) does have facilities for editing atoms, but I think the best approach in this case would be for the decoder to simply ignore atoms it doesn't know about.

I will download the source to alac and see if I can figure anything out.

Maurits
Posts: 117
Joined: Sun Jan 29, 2006 1:36 pm
Location: London, Europe

Post by Maurits » Fri Sep 29, 2006 10:00 am

sbooth wrote:[..] mp4v2 (the library I use for reading and writing tags in m4a files) does have facilities for editing atoms, [..]
The mp4v2 library seems to have an 'optimize' function that should arrange the atoms in the right order. Perhaps that could help...

Have a look at this: http://www.hydrogenaudio.org/forums/ind ... t&p=287078

User avatar
sbooth
Site Admin
Posts: 2447
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Fri Sep 29, 2006 3:41 pm

Maurits wrote:
sbooth wrote:[..] mp4v2 (the library I use for reading and writing tags in m4a files) does have facilities for editing atoms, [..]
The mp4v2 library seems to have an 'optimize' function that should arrange the atoms in the right order. Perhaps that could help...

Have a look at this: http://www.hydrogenaudio.org/forums/ind ... t&p=287078
Actually, the svn versions of Max use this method to fix the problems with m4a playback on shared iTunes libraries.

I'm not sure what it does with the iods chunk, though. I will check it out.

User avatar
sbooth
Site Admin
Posts: 2447
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Fri Sep 29, 2006 4:31 pm

I've changed the source of alac to skip unknown chunks in the 'moov' atom instead of choking on them, but another problem has presented itself:

Code: Select all

FIXME: unimplemented, unhandling of wasted_bytes
In any case, with my patch to alac, and then running

Code: Select all

AtomicParsley /path/to/mp4 --freefree
I was able to get a wav file that sounded like the original ALAC file.

Not a beautiful solution I know, but it did work for now.

User avatar
sbooth
Site Admin
Posts: 2447
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Mon Oct 02, 2006 3:22 pm

For all interested, the problem is a solved- a new version of alac was released which remedies the issue.

chander
Posts: 1
Joined: Thu Dec 07, 2006 9:20 am

Post by chander » Fri Dec 08, 2006 9:31 am

Hi there...

First, congrats for Max, it seems a good alternative to EAC for me, fresh new switcher.

But i've a problem : I just started transcoding my FLAC files to ALAC with MAX and discovered that my Squeezebox won't play the ALAC files at all! Basically, the SlimServer and SB3 both tell me the song is playing, BUT the time indicator doesn't move and no sound comes out of the SB3. In fact, the SB3 even knows nothing is playing - the VU meter is at 0 at all times. But the indicator is clearly on "play," not pause or stop.

So, when you say that the problem is solved with "the new version of Alac", what does it means ? I must install some new decoder (where ?) in order to play Max-produced Alac files on my squeezebox ?

Someone to help a newbie in Mac World ?

Thanks

yooper
Posts: 12
Joined: Sat Oct 21, 2006 4:27 pm

Post by yooper » Fri Jan 05, 2007 7:47 pm

Wow, I'm surprised to see this post as I too have the same problem.

I have been going back and forth with Slimdevices tech support trying to remedy the problem, not thinking it had anything to do with Max.

I even sent a few songs to tech support, and interesting enough, they played fine for them.

I just purchased a Slimdevices Transporter and did find something interesting.

I used Max to convert a problem alac file to flac, and sent it to the same folder holding the original alac file, which of course duplicated all the tracks.

Not only does the flac file play, but the once unplayable alac file plays as well.

Note..some of the files decoded by Max do work.

I suppose the only solution is to re-encode all of the albums which are not working?

Also, I have the same question as the the poster above asking where is the new alac decoder?


Mark

harrymcq
Posts: 1
Joined: Wed Jan 24, 2007 8:54 pm
Contact:

Post by harrymcq » Sat Jan 27, 2007 6:38 pm

I am in a similar boat to you folks. I have the majority of my 1.5TB collection in Apple Lossless because it is lossless and it plays on my iPod. It also plays on my Squeezebox (v1) which is how I listen to the majority of my music.

I have had a similar experience that some of you have had with Max. It encodes Apple Lossless seemingly fine and it will play in iTunes but it displays no bitrate and these files can cause problems with the iPod (5th gen video) and Squeezebox. I find if I re-encode the files in iTunes as Apple Lossless (essentially Apple Lossless > Apple Lossless) the bitrates then show and the files work fine on all of my devices. I am assuming I am not losing any bits in this process but needless to say it is a big hassle.

gordo
Posts: 9
Joined: Mon Dec 25, 2006 2:20 am

Post by gordo » Wed Jan 31, 2007 10:45 pm

The lack of bitrate info also causes problems for streaming to a Roku soundbridge. It seems to be a streaming related problem because the files decode with alac just fine (both slim and roku use alac code) to a wav. The Roku guys aren't sure what the missing tag info is because they don't read the tags - itunes does and then streams using daap to the roku. Even more confusing the files will stream from itunes to itunes just fine and play within itunes just fine. The same problem streaming to a roku occurs using the open source daap server firefly (formerly known as daap). Roku does confirm it is the bitrate info that looks like the problem (or lack thereof).

Unfortunately itunes is a horrible tool for transcoding but that does fix it.

User avatar
sbooth
Site Admin
Posts: 2447
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Some investigation

Post by sbooth » Thu Feb 01, 2007 5:37 am

I created a WAV file consisting of one sample of audio @ 44.1 kHz in one channel, and then converted it to Apple Lossless in iTunes and in Max. I wanted to find the differences between them, to try and understand why the bitrate isn't showing up in iTunes.

First, I took a look at the files in terminal:

Code: Select all

-rw-r--r--   1 me  me  20530 Jan 31 21:06 single-itunes.m4a
-rw-r--r--   1 me  me    620 Jan 31 21:05 single-max.m4a
So, the iTunes file is bigger by around 19 KB or so.

Next, I dumped the atoms using AtomicParsley:

Code: Select all

iTunes
======
Atom ftyp @ 0 of size: 32, ends @ 32
Atom moov @ 32 of size: 2795, ends @ 2827
     Atom mvhd @ 40 of size: 108, ends @ 148
     Atom trak @ 148 of size: 426, ends @ 574
         Atom tkhd @ 156 of size: 92, ends @ 248
         Atom mdia @ 248 of size: 326, ends @ 574
             Atom mdhd @ 256 of size: 32, ends @ 288
             Atom hdlr @ 288 of size: 34, ends @ 322
             Atom minf @ 322 of size: 252, ends @ 574
                 Atom smhd @ 330 of size: 16, ends @ 346
                 Atom dinf @ 346 of size: 36, ends @ 382
                     Atom dref @ 354 of size: 28, ends @ 382
                 Atom stbl @ 382 of size: 192, ends @ 574
                     Atom stsd @ 390 of size: 88, ends @ 478
                         Atom alac @ 406 of size: 72, ends @ 478
                             Atom alac @ 442 of size: 36, ends @ 478
                     Atom stts @ 478 of size: 24, ends @ 502
                     Atom stsc @ 502 of size: 28, ends @ 530
                     Atom stsz @ 530 of size: 24, ends @ 554
                     Atom stco @ 554 of size: 20, ends @ 574
     Atom udta @ 574 of size: 2253, ends @ 2827
         Atom meta @ 582 of size: 2245, ends @ 2827
             Atom hdlr @ 594 of size: 34, ends @ 628
             Atom ilst @ 628 of size: 313, ends @ 941
                 Atom ©nam @ 636 of size: 30, ends @ 666
                     Atom data @ 644 of size: 22, ends @ 666
                 Atom cpil @ 666 of size: 25, ends @ 691
                     Atom data @ 674 of size: 17, ends @ 691
                 Atom pgap @ 691 of size: 25, ends @ 716
                     Atom data @ 699 of size: 17, ends @ 716
                 Atom tmpo @ 716 of size: 26, ends @ 742
                     Atom data @ 724 of size: 18, ends @ 742
                 Atom ©too @ 742 of size: 37, ends @ 779
                     Atom data @ 750 of size: 29, ends @ 779
                 Atom ---- @ 779 of size: 162, ends @ 941
                     Atom mean @ 787 of size: 28, ends @ 815
                     Atom name @ 815 of size: 20, ends @ 835
                     Atom data @ 835 of size: 106, ends @ 941
             Atom free @ 941 of size: 1886, ends @ 2827
Atom free @ 2827 of size: 17685, ends @ 20512
Atom mdat @ 20512 of size: 18, ends @ 20530
------------------------------------------------------
Total size: 20530 bytes; 40 atoms total. AtomicParsley version: 0.9.0 (utf8)
Media data: 0 bytes; 20530 bytes all other atoms (100.000% atom overhead).
Total free atom space: 19571 bytes; 95.329% waste. Padding available: 19571 bytes.
------------------------------------------------------
Movie duration: 0.000 seconds (0:0.00) - 0.00* kbp/sec bitrate (*=approximate)
Low-level details. Total tracks: 1 
Trk  Type  Handler                    Kind  Lang  Bytes
1    soun  [none listed]              alac  und   10
     3528.00* kbp/s  0.000 sec  Apple Lossless    channels: [1]
 Tagging schemes available:
   iTunes-style metadata allowed.
   ISO-copyright notices @ movie and/or track level allowed.
   uuid private user extension tags allowed.
---------------------------
  Track level ISO user data:
Track 1:
 No user data for this track.
---------------------------
  3GPP assets/ISO user data:
---------------------------
  iTunes-style metadata tags:
Atom "©nam" contains: single
Atom "cpil" contains: false
Atom "pgap" contains: 0
Atom "tmpo" contains: 0
Atom "©too" contains: iTunes v7.0.2
Atom "----" [iTunNORM] contains:  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
---------------------------
free atom space: 19571
padding available: 19571 bytes
user data space: 2253
media data space: 18
---------------------------

Code: Select all

Max
===
Atom ftyp @ 0 of size: 28, ends @ 28
Atom moov @ 28 of size: 574, ends @ 602
     Atom mvhd @ 36 of size: 108, ends @ 144
     Atom iods @ 144 of size: 33, ends @ 177
     Atom trak @ 177 of size: 425, ends @ 602
         Atom tkhd @ 185 of size: 92, ends @ 277
         Atom mdia @ 277 of size: 325, ends @ 602
             Atom mdhd @ 285 of size: 32, ends @ 317
             Atom hdlr @ 317 of size: 37, ends @ 354
             Atom minf @ 354 of size: 248, ends @ 602
                 Atom smhd @ 362 of size: 16, ends @ 378
                 Atom dinf @ 378 of size: 36, ends @ 414
                     Atom dref @ 386 of size: 28, ends @ 414
                 Atom stbl @ 414 of size: 188, ends @ 602
                     Atom stts @ 422 of size: 24, ends @ 446
                     Atom stsd @ 446 of size: 88, ends @ 534
                         Atom alac @ 462 of size: 72, ends @ 534
                             Atom alac @ 498 of size: 36, ends @ 534
                     Atom stsz @ 534 of size: 20, ends @ 554
                     Atom stsc @ 554 of size: 28, ends @ 582
                     Atom stco @ 582 of size: 20, ends @ 602
Atom mdat @ 602 of size: 18, ends @ 620
------------------------------------------------------
Total size: 620 bytes; 21 atoms total. AtomicParsley version: 0.9.0 (utf8)
Media data: 0 bytes; 620 bytes all other atoms (100.000% atom overhead).
Total free atom space: 0 bytes; 0.000% waste.
------------------------------------------------------
Movie duration: 0.000 seconds (0:0.00) - nan* kbp/sec bitrate (*=approximate)
Low-level details. Total tracks: 1 
Trk  Type  Handler                    Kind  Lang  Bytes
1    soun  soun                       alac  und   10
     inf* kbp/s  0.000 sec  Apple Lossless    channels: [2]
 Tagging schemes available:
   iTunes-style metadata allowed.
   ISO-copyright notices @ movie and/or track level allowed.
   uuid private user extension tags allowed.
---------------------------
  Track level ISO user data:
Track 1:
 No user data for this track.
---------------------------
  3GPP assets/ISO user data:
---------------------------
  iTunes-style metadata tags:
---------------------------
free atom space: 0
padding available: 0 bytes
media data space: 18
---------------------------
So, there are a few atoms that are different between the two. mp4v2 inserts an 'iods' (Initial Object Descriptor) atom as required by the MPEG-4 specification, while iTunes doesn't. Also noticeable is that the atoms in the 'stbl' atom are in a different order. The 'udta' atoms are absent in Max, because I did not add any metadata to the file.

Interestingly, AtomicParsley incorrectly lists the Max-generated file as having 2 channels instead of one.

I am going to open the files in a hex editor and see if I can determine anything. More to follow...

gordo
Posts: 9
Joined: Mon Dec 25, 2006 2:20 am

Post by gordo » Wed Feb 21, 2007 3:50 pm

A possible idea to pursue is RTP hint. For streaming, in addition to fast start information this seems to help compatibility. If I run mp4creator -optimize -H=1 filename.m4a the resulting changed alac file streams to a Roku soundbridge when it wouldn't as transcoded by max or any other non-itunes program. The -optimize flag alone didn't do it.

This helps files transcoded to alac by dbpoweramp but max m4a alac files don't have the content identified as alac (at least according to mp4creator) so the -H flag fails.

nick_harambee
Posts: 1
Joined: Tue Dec 12, 2006 5:15 pm

Post by nick_harambee » Sun Apr 01, 2007 11:40 pm

i am just trying to set up slimserver and am having the problem that apple lossless files encoded with Max don't work, whereas those encoded with iTunes do. so i am presuming that this issue is still not resolved. am i right?
if i am, is there a way of re-encoding my files so that they will work whilst preserving tag info?

thanks

nick

Yonzie
Posts: 41
Joined: Mon May 01, 2006 9:29 pm
Contact:

Post by Yonzie » Mon Apr 02, 2007 11:01 am

2 quick things:
* Bit Rate works correctly with Max 0.7.2b (build 1206) (or maybe it's due to the next item)
* If you have ALACs without bitrate info, just change some tags in iTunes and it will be added automagically. This is new functionality since (I think) iTunes 7.1
Project complete: 625 CDs containing 8574 tracks ripped and scanned.

4two
Posts: 1
Joined: Wed Apr 01, 2009 4:02 pm

Re: Max apple lossless and Slimserver

Post by 4two » Wed Apr 01, 2009 4:20 pm

fredgoodman wrote:I use Max to encode to apple lossless, and play my music with
Slimserver/Squeezbox http://www.slimdevices.com/.

The latest version 6.5 of Slimserver is unable to decode Max-produced
apple lossless files. They changed to a different decoder "alac"
http://craz.net/programs/itunes/alac.html
for this version of Slimserver. Alac
crashes when it meets an apple lossless file produced by Max, with the error message
(moov) unknown chunk id: iods.

The problem seems to be related to the issues discussed at
http://sbooth.org/forums/viewtopic.php?t=217.

A work-around is to re-encode to apple lossless using iTunes.
This produces an apple lossless file that alac can decode.

I tried to process the offending files with Atomic Parsley, as suggested at
http://sbooth.org/forums/viewtopic.php?t=217, but this does not help.

Request: it would be nice if the author of Max and the author of alac could consult on this, so that their encoder and decoder could work together.

I am having this same issue.
I convert FLAC to m4a using Max 0.8.1 and the files will play fine in iTunes 8.1 (50) on MacOS 10.5.6.

The m4a files will NOT play on my Logitech Slim Devices Squeezebox.
I am using their current stable (7.3.2) SqueezeCenter and have tried their Beta 7.4 SqueezeCenter.

If I use iTunes to create the m4a file from a cd or other format, the files will play on the Squeezbox.

Any ideas? I know this thread was very old, but the problem persists for me.

Thanks!

Post Reply