Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
HOWTO: Using EAC (Exact Audio Copy) on Wine (Updated!)
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2  
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks
View previous topic :: View next topic  
Author Message
Doogman
Apprentice
Apprentice


Joined: 24 Sep 2004
Posts: 241

PostPosted: Fri May 05, 2006 8:21 pm    Post subject: Reply with quote

Nice guide!

You can't use Win98 in winecfg, however, as you won't be able to select <i>Native Win32 interface for Win NT/2000/XP</i>. Seems obvious, but I had the wrong box checked the first time I tried the program.
Back to top
View user's profile Send private message
Burgin
n00b
n00b


Joined: 19 Apr 2004
Posts: 57

PostPosted: Sat May 20, 2006 8:09 pm    Post subject: Reply with quote

I didn't have to anything special to get it to run lame as long as the path specified in the Compression options was a valid path for a window version of the lame.exe.

Does anybody known how to make EAC run the linux native binary of the lame binary or would it even make a difference?
Back to top
View user's profile Send private message
danomac
l33t
l33t


Joined: 06 Nov 2004
Posts: 873
Location: Vancouver, BC

PostPosted: Sun May 21, 2006 6:58 pm    Post subject: Reply with quote

Only the windows binaries will work with EAC... you'd have to use something linux-native to use the native lame binary.

Edit: Corrected a *really* stupid typo.


Last edited by danomac on Wed Sep 06, 2006 11:29 pm; edited 1 time in total
Back to top
View user's profile Send private message
GetCool
Guru
Guru


Joined: 23 Nov 2003
Posts: 324
Location: Madison, Wisconsin

PostPosted: Sun May 21, 2006 8:47 pm    Post subject: Reply with quote

danomac wrote:
Only the windows binaries will work with EAC... you'd have to use something linux-native to use the native lame.exe binary.


Right. But this shouldn't even matter; I doubt there would be a noticeable difference in performance betwee the Linux and Windows binaries.
Back to top
View user's profile Send private message
Burgin
n00b
n00b


Joined: 19 Apr 2004
Posts: 57

PostPosted: Mon May 22, 2006 1:03 pm    Post subject: Reply with quote

After about 5 minutes after my post, I realized that EAC probably uses the WinExec() API to launch the external compression programs. It probably expects the a win32 binary as its argument. I guess the wine developers decided to not to make it handle other binary typesl
Back to top
View user's profile Send private message
Darknight
Guru
Guru


Joined: 26 Jan 2004
Posts: 469
Location: Italy

PostPosted: Tue Sep 05, 2006 10:44 pm    Post subject: Reply with quote

Just a quick reminder.
I use the windows native support in eac, so I have to mount a data cd and so on. It is mandatory (for me?) to enable the hal use flag when merging wine to be able to swap cds.
Without hal the cd tray stays locked and cds can't be swapped.
Back to top
View user's profile Send private message
danomac
l33t
l33t


Joined: 06 Nov 2004
Posts: 873
Location: Vancouver, BC

PostPosted: Wed Sep 06, 2006 7:45 pm    Post subject: Reply with quote

Darknight wrote:
Just a quick reminder.
I use the windows native support in eac, so I have to mount a data cd and so on. It is mandatory (for me?) to enable the hal use flag when merging wine to be able to swap cds.
Without hal the cd tray stays locked and cds can't be swapped.


Strange, I don't see the hal flag being used for wine at all:

Code:

okibi danomac # emerge -pv wine

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] app-emulation/wine-0.9.8-r1  USE="X alsa arts cups esd gif jpeg ncurses opengl oss scanner* truetype xml -debug -glut -jack -lcms -ldap -nas" 0 kB
Back to top
View user's profile Send private message
Darknight
Guru
Guru


Joined: 26 Jan 2004
Posts: 469
Location: Italy

PostPosted: Wed Sep 06, 2006 11:05 pm    Post subject: Reply with quote

I use the ~amd64 version, it's a lot newer so the ebuild may have been modified.
Actually, I added the use flag yesterday when, trying to rip a cd, I was baffled by the eject problem. It proved to be the much needed solution. :)
Back to top
View user's profile Send private message
Darknight
Guru
Guru


Joined: 26 Jan 2004
Posts: 469
Location: Italy

PostPosted: Thu Sep 07, 2006 6:03 pm    Post subject: Reply with quote

I have to make a change to what I wrote above.
It turns out that I'm dumb :lol:
Actually the key point is that I have to run wine as user and mount/unmount/eject as root... At least this is what is needed tonight, I hope it's always been like this but I didn't notice. All in all, the use flag may or may not be related.
Back to top
View user's profile Send private message
yngwin
Retired Dev
Retired Dev


Joined: 19 Dec 2002
Posts: 4572
Location: Suzhou, China

PostPosted: Thu Sep 07, 2006 6:43 pm    Post subject: Reply with quote

There actually is a program that does EAC natively on Linux. It's called Rubyripper. You can get an ebuild for 0.2 (the latest version atm) from my overlay: http://berkano.net/files/gentoo/berkano-overlay.tbz2

Edit: actually, I just opened a bug for it: https://bugs.gentoo.org/show_bug.cgi?id=146738
_________________
"Those who deny freedom to others deserve it not for themselves." - Abraham Lincoln
Free Culture | Defective by Design | EFF
Back to top
View user's profile Send private message
danomac
l33t
l33t


Joined: 06 Nov 2004
Posts: 873
Location: Vancouver, BC

PostPosted: Thu Sep 07, 2006 9:56 pm    Post subject: Reply with quote

yngwin wrote:
There actually is a program that does EAC natively on Linux. It's called Rubyripper. You can get an ebuild for 0.2 (the latest version atm) from my overlay: http://berkano.net/files/gentoo/berkano-overlay.tbz2

Edit: actually, I just opened a bug for it: https://bugs.gentoo.org/show_bug.cgi?id=146738


Part of the reason people are using EAC over Wine is cdparanoia's inability to deal with caching drives:

Rubyripper wiki wrote:

What is Rubyripper? Rubyripper is a digital audio extraction algorithm that uses cdparanoia or cdda2wav in a sophisticated way to make sure that a CD rip is done succesfully and accurately. It is very similiar to and inspired by EAC. Rubyripper is written in the ruby programming language.


Not sure how cdda2wav works (is it reliant on cdparanoia?)

Otherwise, it looks like an interesting project!
Back to top
View user's profile Send private message
GetCool
Guru
Guru


Joined: 23 Nov 2003
Posts: 324
Location: Madison, Wisconsin

PostPosted: Sat Sep 09, 2006 4:05 pm    Post subject: Reply with quote

Darknight wrote:
Actually the key point is that I have to run wine as user and mount/unmount/eject as root... At least this is what is needed tonight, I hope it's always been like this but I didn't notice. All in all, the use flag may or may not be related.


You shouldn't have to (un)mount your CD device as root while running Wine. I've never had to do this.

Verify that your CD device entry in your fstab has the user option, and that the CD drive in winecfg is set up with the mount point as the path (not the device path). In my experience, this is all that is needed to get everything working under Wine.

Also, I don't think the hal USE flag is necessary, as I run EAC under Wine on ~amd64 without HAL installed.
Back to top
View user's profile Send private message
TeknoHog
n00b
n00b


Joined: 30 Apr 2004
Posts: 5
Location: Jyvaskyla, Finland

PostPosted: Thu May 03, 2007 1:08 pm    Post subject: Reply with quote

danomac wrote:

Where do you change the mountpoint permissions from 700 to 755?


Code:

# chmod 755 /mnt/cdrom


I think the default of 700 is there so that you can't see the directory contents unless the drive is mounted. With 755 you can see the empty mountpoint, which is apparently Wine's way of finding the actual device. This is why some people needed to mount a data CD to get it working :)

By the way, if you want to experiment with ide-scsi emulation, there's no need to reboot, you can simply use modules. I once wrote a script to do it while experimenting with cdparanoia, though I've since found it unnecessary.

Code:

#!/bin/bash

# Tool for switching between direct ATAPI and SCSI emulation
# interfaces for the cdrom drive

# Why do this: Some software work better with SCSI (cdparanoia) and
# some with IDE (xmms-cdaudio). Most software don't care though, and
# the emulation overhead is unnoticeable in my experience.

# by TeknoHog

# modprobe order -- reverse for rmmod
IDE_MODS="ide_cd"
IDE_MODS_REV="ide_cd"
SCSI_MODS="ide_scsi sr_mod sg"
SCSI_MODS_REV="sg sr_mod ide_scsi"

function ide2scsi() {
         for MOD in $IDE_MODS_REV; do
         rmmod $MOD || exit
         done

         for MOD in $SCSI_MODS; do
         modprobe $MOD || exit
         done
}

function scsi2ide() {
         for MOD in $SCSI_MODS_REV; do
         rmmod $MOD || exit
         done

         for MOD in $IDE_MODS; do
         modprobe $MOD || exit
         done
}

case "$1" in
    i)
    scsi2ide
    ;;

    s)
    ide2scsi
    ;;

    *)
    ls -l /dev/cdrom
    ;;
esac

Back to top
View user's profile Send private message
predatorfreak
l33t
l33t


Joined: 13 Jan 2005
Posts: 708
Location: USA, Michigan.

PostPosted: Sat May 05, 2007 12:20 pm    Post subject: Reply with quote

danomac wrote:
yngwin wrote:
There actually is a program that does EAC natively on Linux. It's called Rubyripper. You can get an ebuild for 0.2 (the latest version atm) from my overlay: http://berkano.net/files/gentoo/berkano-overlay.tbz2

Edit: actually, I just opened a bug for it: https://bugs.gentoo.org/show_bug.cgi?id=146738


Part of the reason people are using EAC over Wine is cdparanoia's inability to deal with caching drives:

Rubyripper wiki wrote:

What is Rubyripper? Rubyripper is a digital audio extraction algorithm that uses cdparanoia or cdda2wav in a sophisticated way to make sure that a CD rip is done succesfully and accurately. It is very similiar to and inspired by EAC. Rubyripper is written in the ruby programming language.


Not sure how cdda2wav works (is it reliant on cdparanoia?)

Otherwise, it looks like an interesting project!


Cdparanoia was written before FUA bits even existed, which are what EAC uses to deal with caching drives. Cdparanoia uses another method to defeat caching drives, increasing the readahead value significantly to exhaust the cache before you actually read a sector. Supposedly, this is more effective in the real world, but the default value is only for 1MB drives, which isn't useful in the modern world.

Here's a little patch that increases the default value to deal with 8MB drives:
Code:
diff -Nurp cdparanoia-III-10pre0/paranoia/p_block.c cdparanoia-III-10pre0-larger-readahead/paranoia/p_block.c
--- cdparanoia-III-10pre0/paranoia/p_block.c   2000-04-19 18:41:04.000000000 -0400
+++ cdparanoia-III-10pre0-larger-readahead/paranoia/p_block.c   2007-05-05 08:11:48.000000000 -0400
@@ -310,7 +310,7 @@ cdrom_paranoia *paranoia_init(cdrom_driv
   p->fragments=new_list((void *)&i_vfragment_constructor,
          (void *)&i_v_fragment_destructor);
 
-  p->readahead=150;
+  p->readahead=1200;
   p->sortcache=sort_alloc(p->readahead*CD_FRAMEWORDS);
   p->d=d;
   p->dynoverlap=MAX_SECTOR_OVERLAP*CD_FRAMEWORDS;


Also, cdda2wav was the predecessor to cdparanoia, only it did absolutely no error correction. It's great for speed, but horrible for accuracy.

Edit: I'm not entirely sure if this will actually work or not.
_________________
System: predatorbox
Distro: Arch Linux x86_64
Current projects: blackhole, convmedia and anything else I cook up.
Back to top
View user's profile Send private message
Small_Penguin
Tux's lil' helper
Tux's lil' helper


Joined: 27 May 2005
Posts: 137

PostPosted: Wed Jun 27, 2007 1:49 pm    Post subject: Reply with quote

Quote:
Edit: I'm not entirely sure if this will actually work or not.

I guess it won't matter because rubyripper reads each track twice completely (or more, depending on how often you tell it to do it) and compares the two copies. There are docs about this on the rubyripper web page.

Quote:
Cdparanoia was written before FUA bits even existed, which are what EAC uses to deal with caching drives.

EAC does not use FUA bits if not started with an appropriate command-line option (don't know about the newest version though). FUA bits don't work for all drives. It used to do what you wrote about cdparanoia (using bigger read chunks than fitted the cache) or a similar technique to avoid the drive's cache. That's why ripping is slower when you activate the 'drive does caching' option.

And using c2 error correction is not good at all if your drive doesn't correctly report c2 errors. The drive will just claim everything's ok and errors go by undetected.

Rubyripper is really good actually and supports read offsets. Its ripping process will be much more configurable than eac's too. The only thing I'm missing in linux is support for write offsets. cdrdao can read the toc like eac, but does not seem to have an option for write offsets.

http://www.digital-inn.de/exact-audio-copy-english/31773-plextor-rw-drive-usefua-testing-thread.html
Back to top
View user's profile Send private message
predatorfreak
l33t
l33t


Joined: 13 Jan 2005
Posts: 708
Location: USA, Michigan.

PostPosted: Mon Jul 02, 2007 2:10 am    Post subject: Reply with quote

Small_Penguin wrote:
Quote:
Edit: I'm not entirely sure if this will actually work or not.

I guess it won't matter because rubyripper reads each track twice completely (or more, depending on how often you tell it to do it) and compares the two copies. There are docs about this on the rubyripper web page.


If the data is cached though, that reread could possibly reproduce the exact same file when that file is STILL wrong.
_________________
System: predatorbox
Distro: Arch Linux x86_64
Current projects: blackhole, convmedia and anything else I cook up.
Back to top
View user's profile Send private message
Small_Penguin
Tux's lil' helper
Tux's lil' helper


Joined: 27 May 2005
Posts: 137

PostPosted: Mon Jul 02, 2007 9:38 am    Post subject: Reply with quote

Quote:
If the data is cached though, that reread could possibly reproduce the exact same file when that file is STILL wrong.

1) The drive can't cache a complete track because it doesn't fit in the cache.
2) Since audio cds don't have error correction (at least not like data), you can't be 100% sure everything is read correctly. In practice, reading in burst mode twice is pretty safe, though.
3) Rubyripper provides an option to set the number of reads required to be identical. EAC only reads twice (or even only once when c2 feature is used) until an error occurs. I don't know if Rubyripper uses c2 by default (you can change the command line parameters), but if it does, then the data could be incorrect twice because the drive reports the same incorrect c2 value (I had that problem with EAC though it should not happen very often - it depends on the implementation of your drive's error detection capabilities).

I still use EAC for copying because I have used it for a long time and I find it convenient and it works as expected. Rubyripper misses the burning counterpart but is great for ripping.
Back to top
View user's profile Send private message
iamben
Apprentice
Apprentice


Joined: 10 May 2004
Posts: 275

PostPosted: Thu Jul 12, 2007 12:48 am    Post subject: Reply with quote

wow, old thread. anyway, anyone else having issues w/ EAC freezing up when attempting to access freedb? wine 0.9.40 here.

i tried downgrading to 0.9.33 as i saw someone somewhere suggest, it doesnt freeze up anymore but has a "server error" when attempting to access freedb.

ideas?
Back to top
View user's profile Send private message
Darknight
Guru
Guru


Joined: 26 Jan 2004
Posts: 469
Location: Italy

PostPosted: Thu Jul 12, 2007 8:36 am    Post subject: Reply with quote

There's a huge thread on the eac forum, it's an "official" bug.
Unfortunately attempts to solve it give mixed results, hopefully the upcoming new release will fix the bug...
Back to top
View user's profile Send private message
Burgin
n00b
n00b


Joined: 19 Apr 2004
Posts: 57

PostPosted: Mon Sep 17, 2007 6:09 pm    Post subject: Reply with quote

Does anyone know a workaround with the freedb problem other than manually keying in each track? Like maybe downloading the file directly from freedb and then importing it somehow?
Back to top
View user's profile Send private message
polis
n00b
n00b


Joined: 17 May 2007
Posts: 8

PostPosted: Wed Mar 05, 2008 6:43 pm    Post subject: Reply with quote

As far as I know EAC still doesn't work without mounting data CD or changing dev file privs. Second solution is unacceptable for me. However i found out other solution. For EAC it doesn't matter if there's real mounted CD or any other kind of mount (but bind doesn't work). So we can mount for example any iso file and device should be discovered.

I created a small script. I must warn you that it's probably very dirty. If someone could check and fix it, it would be nice.
Code:

#!/usr/bin/python                                                                                                                                                                                                   
import os, sys, string

winedevs = os.environ.get("HOME") + "/.wine/dosdevices"
eac_exe = os.environ.get("HOME") + "/windows/programs/eac/EAC.exe"
eacHome = os.environ.get("HOME")+"/.eac"

def makeIso():
    if os.path.exists( eacHome + "/empty_dir"):
        os.removedirs( eacHome + "/empty_dir")
    os.makedirs( eacHome + "/empty_dir")
    os.system("mkisofs -R -o " + eacHome + "/dummy.iso " + eacHome + "/empty_dir")

def removeIso():
    os.remove( eacHome + "/dummy.iso")
    os.removedirs( eacHome + "/empty_dir")

def setDevice(devicePath, deviceLetter):
    mountPoint =  eacHome + "/" + devicePath.replace("/", "_")

    if not os.path.exists(mountPoint):
        print "Creating fake mount point"
        os.makedirs(mountPoint)


    if os.path.exists(winedevs + "/" + deviceLetter + ":"):
        os.remove(winedevs + "/" + deviceLetter + ":")
    if os.path.exists(winedevs + "/" + deviceLetter + "::"):
        os.remove(winedevs + "/" + deviceLetter + "::")

    print "Creating device mount point link"
    os.symlink(mountPoint, winedevs + "/" +  deviceLetter + ":")
    print "Creating device file link"
    os.symlink(devicePath, winedevs + "/" + deviceLetter + "::")

    print "Mounting fake iso"

    os.system("sudo mount -o loop " + eacHome + "/dummy.iso "+ mountPoint + "/")

def unsetDevice(devicePath, deviceLetter):
    mountPoint =  eacHome + "/" + devicePath.replace("/", "_")
    print "Umounting fake iso"
    os.system ("umount " + mountPoint)


if not os.path.exists(eacHome):
    print "Creating $HOME/.eac folder"
    os.makedirs(eacHome)
makeIso()
setDevice("/dev/hdc", "f")
setDevice("/dev/hdd", "g")
print "Running eac: " + eac_exe
os.system ("wine " + eac_exe)
unsetDevice("/dev/hdc")
unsetDevice("/dev/hdd")
removeIso()


These are lines you need to change:
eac_exe = os.environ.get("HOME") + "/windows/programs/eac/EAC.exe"
...
setDevice("/dev/hdc", "f")
setDevice("/dev/hdd", "g")

print "Running eac: " + eac_exe
os.system ("wine " + eac_exe)
unsetDevice("/dev/hdc")
unsetDevice("/dev/hdd")


It should be obvious what does they mean.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks All times are GMT
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum