Slashdot Mirror


iTunes User Sues Apple Over Lock-In

GregChant writes "It seems like Apple can also be at the receiving end of a lawsuit, too: Californian Thomas Slattery filed suit against Apple because 'Apple has turned an open and interactive standard into an artifice that prevents consumers from using the portable hard drive digital music player of their choice'. With over 200 million songs sold, and Apple controlling over 80% of the hard drive digital audio player market, is this just a case of someone just trying to cash in on Apple's success? Or is this genuinely an issue of buyer lock-in and monopolistic practices?"

4 of 975 comments (clear)

  1. Re:I agree... by BWJones · · Score: 5, Informative

    It's not illegal until they start bundling features people want and expect as a convience

    No. It is not illegal until a company leverages their monopoly to prevent others from fairly competing. If your monopoly is fairly maintained because you have the best product and consumers simply prefer to purchase your product, then all is fair and no laws have been broken.

    --
    Visit Jonesblog and say hello.
  2. Re:Bogus by ziplux · · Score: 4, Informative

    > but I fail to see how a direct transcoder is going to do anything different.

    Encoding twice causes the MP3 you create to be _much_ lower quality. AAC and MP3 both work by removing information from the sound stream that you can't hear; if that information has already been removed by an AAC encoder, the MP3 encoder's job becomes much harder, and so to fit the song into the desired bitrate it has to take more information away from the song. You will hear a lot more compression artifacts on songs that have been compressed twice.

    This is why Apple needs to offer losslessly compressed songs. I personally would be willing to pay up to a quarter more (to cover the extra bandwidth that it would take to transfer them), because AAC is useless to me.

  3. Re:Bogus by eggnet · · Score: 4, Informative

    Yes, Apple can say that iTunes songs only work with th iPod. And create a .iPod format, or whatever. But thats not what they do, they say you get great high quality music. As it turns out, when you use one of their features(music burning) to do something that they advertise(burning music) it degrades the product you purchased.

    I don't know if you're trolling or what, but burning the music to CD doesn't degrade the quality. You lose quality if you burn to CD then re-rip to some lossy format.

    When you buy the song from iTMS, the quality has already been "degraded" from a CD. Burning to an audio disc yields the same music as playing it any other way.

  4. Convert iTunes file to mp3 by superpulpsicle · · Score: 5, Informative

    This script is readily available on the internet. This is part of the hymn project, which is LEGAL. I DID NOT write this script!

    Just download hymn.exe, faad.exe, lame.exe in the same folder as this VB script. Name it something.vbs. Drag your iTunes .m4p files onto this script, and out comes mp3 with all your personal credentials deleted. You can play this anywhere, and share at will without worry.

    'coded by man on street

    Set oFs = CreateObject ("Scripting.FileSystemObject")
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set id3Options = CreateObject("Scripting.Dictionary")

    binDir = oFs.GetFile(WScript.ScriptFullName).ParentFolder & "\"
    workingDir = binDir & "working\"
    decodedDir = binDir & "decoded\"

    id3Options.Add "title", "--tt"
    id3Options.Add "artist", "--ta"
    id3Options.Add "album", "--tl"
    id3Options.Add "date", "--ty"
    id3Options.Add "track", "--tn"
    id3Options.Add "genre", "--tg"

    makeDirectory(workingDir)
    makeDirectory(decoded Dir)

    For Each arg in WScript.Arguments
    walkArguments(arg)
    Next

    removeDirectory(workingDir)

    Sub convertFile(fileName)
    Set protectedFile = oFs.GetFile(fileName)
    albumName = protectedFile.ParentFolder.Name
    albumDir = decodedDir & albumName & "\"
    makeDirectory(albumDir)
    protectedFile.Copy(workingDir)
    trackName = oFs.GetBaseName(protectedFile)
    return1 = oShell.Run(quote(binDir & "hymn") & " " & quote(workingDir & trackName & ".m4p"), 1, TRUE)
    return2 = oShell.Run(quote(binDir & "faad") & " " & quote(workingDir & trackName & ".m4a"), 1, TRUE)
    Set LaunchedApp = oShell.Exec(quote(binDir & "faad") & " -i " & quote(workingDir & trackName & ".m4a"))
    tagInfo = LaunchedApp.StdErr.ReadAll

    For Each tag in id3Options.Keys
    tagSwitches = tagSwitches & " " & id3Options.Item(tag) & " " & quote(getTag(tag, tagInfo))
    Next

    rem return3 = oShell.Run(quote(binDir & "lame") & tagSwitches & " " & quote(workingDir & trackName & ".wav") & " " & quote(albumDir & trackName & ".mp3"), 1, TRUE)
    return3 = oShell.Run(quote(binDir & "lame") & " --ignore-tag-errors " & tagSwitches & " " & quote(workingDir & trackName & ".wav") & " " & quote(albumDir & trackName & ".mp3"), 1, TRUE)
    End Sub

    Sub walkArguments(arg)
    If oFs.FolderExists(arg) Then
    Set thisDir = oFs.GetFolder(arg)
    Set subDirs = thisDir.SubFolders
    Set theseFiles = thisDir.Files

    If subDirs.Count > 0 Then
    For Each dirName in subDirs
    walkArguments(dirName)
    Next
    End If

    For Each fileName in theseFiles
    walkArguments(fileName)
    Next

    ElseIf oFs.FileExists(arg) Then

    If oFs.GetExtensionName(arg) = "m4p" Then
    convertFile(arg)
    End If

    End If
    End Sub

    Sub makeDirectory(dirName)
    If Not oFs.FolderExists(dirName) Then
    oFs.CreateFolder(dirName)
    End If
    End Sub

    Sub removeDirectory(dirName)
    If oFs.FolderExists(dirName) Then
    oFs.GetFolder(dirName).Delete
    End If
    End Sub

    Function quote(myString)
    quote = Chr(34) & myString & Chr(34)
    End Function

    Function getTag(frameName, tagString)
    Set oRegEx = New RegExp
    oRegEx.Pattern = frameName & ".+\n"
    frameNameAndValue = oRegEx.Execute(tagString).Item(0).Value
    frameValue = Mid(frameNameAndValue, InStr(frameNameAndValue, ":") + 2)
    getTag = Left(frameValue, Len(frameValue) - 2) 'Strip CR/LF
    End Function