CDRDAO

Linux in Brazil

Documentação original
e de qualidade
em bom português

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Dúvidas comuns | Perguntar no Fórum | Notícias | Mais documentos | Contato
 
Destaques de hoje:
  • A semana no BR-Linux: Enchente, 13 milhões de downloads, Fedora 10
  • Quem ganha? Benchmarks comparam: Ubuntu, Fedora, OpenSolaris e FreeBSD
  • 1 ano do cyber 100% Linux de Floripa
  • As redes P2P vão destruir o mundo?
  • Gravando CDs de áudio com o CDRDAO

    Maurice Amais Bracero (maurice@cti.com.br)

    Nota do editor: este artigo considera que você já configurou corretamente seu gravador de CD-ROM. Temos outro artigo disponível que explica como realizar a configuração.


    O programa mais usado para gravação de CDs no Linux é, acredito eu, o Cdrecord. Ele é usado tanto no modo texto, como no modo gráfico, já que muitos programas, como o Xcdroast, são apenas front ends para o Cdrecord. Eu usava o Cdrecord para gravar CDs, tanto de áudio, quanto de dados, mas percebi um problema: limitações quanto à gravação de CDs de áudio no modo Disk At Once.

    O Cdrecord grava CDs de áudio, por default, no modo Track At Once (TAO), o que significa que as faixas são gravadas com uma pausa de 2 segundos entre elas. No modo Disk At Once (DAO), entretanto as faixas de áudio são gravadas sem essa pausa, o que pode ser melhor, principalmente com gravações ao vivo. O Cdrecord pode até gravar no modo DAO, mas com limitações, o CD pode ter os últimos dois segundos de cada faixa cortados ou até não funcionar. É aí que entra o Cdrdao.

    Para acompanhar este pequeno tutorial, você já deve ter seu gravador configurado no Linux. Você precisa também do programa Cdrdao, se estiver incluído na sua distribuição, você pode fazer o download em http://cdrdao.sourceforge.net/.

    Com o Cdrdao você pode tanto gravar como copiar CDs. Para copiar um CD, você pode usar o seguinte comando:

    	cdrdao read-cd novo.toc
    

    Você pode substituir novo.toc pelo nome que quiser. Este é simplesmente um arquivo de texto gerado pelo programa, contendo informações sobre o CD. Aqui pode ter surgido o primeiro problema. Para o comando acima funcionar, você deve ter um link "/dev/cdrecorder" apontado para o seu dispositivo de gravação, mas você pode, em vez disso, apenas acrescentar mais uma opção na linha de comando, como veremos a seguir. Entre com o comando abaixo:

    	cdrdao scanbus
    

    Deve ter aparecido algo parecido com isso:

    	0,0,0: CREATIVE, CD-RW  RW8433E, 1R04
    

    Se não obteve uma resposta como essa, contendo a identificação do seu gravador, é porque ele não está corretamente configurado. Lembre-se que você precisará entrar como root para ter acesso ao gravador, a não ser que seu sistema esteja configurado para que um usuário comum tenha acesso ao gravador de CDs. Se estiver logado como usuário comum e não conseguiu uma resposta como a de cima, tente se logar como root (ou usar o comando su), e repetir o comando.

    Bom, se tudo deu certo, você obteve o modelo do seu gravador e a identificação do dispositivo SCSI (real ou emulado). De posse dessa informação, tente este comando, substituindo "0,0,0" pelo número que você obteu, se for o caso:

    	cdrdao read-cd --device 0,0,0 novo.toc
    

    Você pode ter simplesmente obtido essa mensagem de erro:

    	ERROR: Cannot setup device 0,0,0.
    

    É que o Cdrdao não conseguiu identificar o seu drive. Nesse caso você terá que entrar manualmente um driver. Você deve ter visto, junto com a mensagem de erro, uma lista dos drivers disponíveis:

    cdd2600
    generic-mmc
    generic-mmc-raw
    plextor
    plextor-scan
    ricoh-mp6200
    sony-cdu920
    sony-cdu948
    taiyo-yuden
    teac-cdr55
    toshiba
    

    No diretório de documentação do Cdrdao (no meu sistema é /usr/share/doc/cdrdao-1.1.5/) você encontra um arquivo README contendo, entre outras informações, uma lista de gravadores e leitores suportados, com os respectivos drivers. Por exemplo, suponhamos que se drive seja um CREATIVE CD-RW RW4424. Pesquisando na tabela do arquivo README, descobrimos que o driver para ele é generic-mmc. Então o comando deverá ser esse:

    	cdrdao read-cd --device 0,0,0 --driver generic-mmc novo.toc
    

    É bem provável que o seu gravador não esteja listado, como o meu CREATIVE CD-RW RW8433E. Isso não significa necessariamente que o seu gravador não é suportado. O meu, por exemplo, funciona com o driver generic-mmc. Você poderá tentar usar com um dos drivers disponíveis, mas, ATENÇAO: NÃO SEI O QUE PODE ACONTECER SE VOCÊ USAR UM DRIVER ERRADO. USE POR SUA CONTA E RISCO. Se quiser ir em frente, note que os drivers mais comuns, principalmente para os modelos mais recentes, são o generic-mmc e o generic-mmc-raw. Tente também procurar informação mais atualizada no site do Cdrdao.

    Se tudo deu certo, você obteve uma cópia do CD e um arquivo novo.toc (ou outro nome, caso você tenha preferido). Agora para gravar, digite, não se esquecendo de substituir os valores pelos do seu gravador:

    	cdrdao write --device 0,0,0 --driver generic-mmc novo.toc
    

    Até aqui vimos como copiar um CD de áudio, criando uma imagem de um no HD e depois gravando essa imagem num novo CD. Agora devemos ver como gravar arquivos wav num CD.

    Em primeiro lugar, é aconselhável que voê tenha um diretório separado para colocar os arquivos wav que você irá gravar, por exemplo, /cdtmp, e mova os arquivos que você irá gravar para ele. Em seguida é bom verificar o tempo total de seus arquivos, para ver se cabem no CD. Você pode verificar isso com o comando "du -c *.wav" (74 minutos são aproximadamente 750 Mb de arquivos wav) ou então usar o script abaixo, para obter o tempo aproximado de todos os arquivos wav de seu diretório:

    #/bin/bash
    clear
    TAM1=`du -cb *.wav | tail -n 1 | cut -f 1`
    TAM=`expr $TAM1 / 176400`
    if [ $TAM -ge 60 ]
      then TAM2=`expr $TAM / 60`
      else TAM2=0
    fi
    if [ $TAM2 -gt 0 ]
       then TAM3=`expr $TAM - $TAM2 \* 60`
       else TAM3=$TAM
    fi
    echo "======================================="
    echo "tamanho: " $TAM2  " minutos e "  $TAM3  " segundos"
    echo "======================================="
    if [ $TAM2 -ge 74 ] && [ $TAM3 -gt 0 ]
       then echo "*** Cuidado! Sua compilação tem mais de 74 minutos. ***"
    fi
    echo
    

    Caso o tempo não tenha ultrapassado a capacidade do CD que você irá gravar, basta gerar um arquivo toc e gravar com o mesmo comando usado para gravar a imagem do CD, que você viu acima. Gerar um arquivo toc pode ser chato, mas não difícil. por exemplo, no caso de termos 3 músicas, 1.wav, 2.wav e 3.wav e quisermos gravar as três inteiras, sem pausas, nosso arquivo toc pode ser apenas isso:

    CD_DA
    TRACK AUDIO
    FILE "01.wav" 0
    TRACK AUDIO
    FILE "02.wav" 0
    TRACK AUDIO
    FILE "03.wav" 0
    

    Podemos também inserir comentários, pausas, gravar só parte das músicas e muito mais, mas não vou me estender sobre isso aqui. Para quem quiser se aprofundar sobre assunto, é só ler a documentação do Cdrdao.

    A seguir, temos um script que automatiza a tarefa de gravar um CD de áudio. Você deverá completá-lo, para que funcione. Na linha em que aparece "DEV=", complete com o id SCSI de seu gravador, que você já viu como obter, e na linha onde aparece "DRI=", complete com o driver que você irá usar.

    #!/bin/bash
    #gerar arquivo .toc e gravar CD
    # Coloque aqui o id SCSI de seu gravador. Veja "cdrdao scanbus"
    # Ex: DEV=0,0,0
    DEV=
    # Coloque aqui o driver de seu gravador
    # Ex: DRI=generic-mmc
    DRI=
    echo CD_DA > new.toc
    echo >> new.toc
    for i in *.wav
     do echo "TRACK AUDIO" >> new.toc
     echo "FILE \""$i"\" 0" >> new.toc
     echo >> new.toc
    done
    cdrdao write --device $DEV --driver $DRI new.toc
    

    Bom, vou ficando por aqui. Espero ter ajudado aqueles que estiverem intessados neste excelente programa. Você pode fazer mais coisas com o Cdrdao, mas fica pra a próxima.

    Até Mais!


    Maurice Amais Bracero (maurice@cti.com.br)