Página siguiente Página anterior Índice general

7. Software DAO y generadores de subcódigos.

7.1 cdrecord 1.9

Puede obtener la última versión del servidor FTP ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/.

Descripción de los nuevos comandos para la nueva versión:

-useinfo

Utiliza los archivos de extensión .inf sobreescribiendo las opciones por defecto.

-atip

Muestra la información referente al CD y sale. Esta información tambien la ofrecia la version anterior pero sólo cuando se disponia a grabar.

-dao

Graba el medio en Disc-At-Once.

-waiti

Se espera hasta que la entrada esté disponible antes de acceder al dispositivo SCSI.

-shorttrack

Las pistas siguientes pueden no coincidir con Red Book, menores de 4 segundos en modo DAO.

-noshorttrack

Las pistas siguientes deben coincidir con Red Book, mayores o iguales de 4 segundos.

Ejemplo de como se usa la opción -atip se tiene en la sección referente a crear un sistema ext2 con el mke2fs en un archivo.

Para usar la opción -useinfo necesitamos primero haber extraido con el cdda2wav un CD-Audio al disco duro sin poner la opción -H.

cdrecord -v dev=0,3,0 fs=16m speed=4 -useinfo *.wav

Pues sí, cdrecord tambien graba en DAO, pero sólo a partir de la versión de desarrollo 1.8a20. La forma de usar cdrecord es prácticamente la misma solo que para usar las características de la grabación en DAO ha de tener una grabadora que soporte MMC y utilizar la opción -dao; salvo esto, puede usarlo como haría normalmente.

Cuando utilizemos esta opción notaremos una forma distinta de grabar los CDs. En primer lugar veremos una nueva frase que nos muestra el cdrecord, Sending CUE Sheet. que nos indica que lo primero que está haciendo es escribir la tabla de contenidos o la TOC para luego grabar todo, sin desactivar el laser de grabación. Gracias a esta opción se puede ahorrar unos segundos o minutos si se tiene que grabar un CD con muchas pistas de audio.

Un ejemplo podria ser:

cdrecord -v dev=3,0 fs=16m speed=4 -dao /imagen.iso /audio/*.wav

y tambien si se pretende copiar directemente desde un CD

cdrecord dev=3,0 speed=4 fs=16m -v -dao -isosize /dev/sr0 -audio /wavs/*.wav

Una de las nuevas caracteristicas que incorpora el nuveo cdrecord es el uso de la tecnologia Burn Proof que incorporan muchos de los modelos de grabadoras y regrabadoras actuales como la Plextor 12/10/32a en modelos IDE y SCSI. Esta nueva tecnologia permite al programa y a la grabadora detener el proceso de grabación del disco, normalmente debido a una insuficiencia de datos en el buffer, hasta que se restaure el tamaño de dicho buffer y continuar en el mismo punto en donde se quedó parada la grabación, de esta forma se evita el desperdicio de discos.

7.2 CD Builder

Prometedora aplicación, con entorno gráfico en X-Window, que permitirá generar escaletas (cue sheets para la creación de CDs, así como de subcódigos, como CD-G, CD-TEXT, etc.

En la actualidad está en su primera etapa (alpha de desarrollo, aunque dotado de cierta funcionalidad.

Puede obtenerlo de http://www.ccs.neu.edu/home/bchafy/cdb/cdb.html.

Al parecer se ha abandonado el desarrollo de este programa.

7.3 cdrdao

Este programa ha evolucionado tanto que la copia en DAO y al vuelo está empezando a dar sus frutos. Es posible copiar CDs al vuelo sin volcar los datos al disco duro incluso con las pistas de audio; el problema en este último aspecto es que no soporta todas las unidades lectoras a pesar de incorporar código del CDParanoia para realizar la extracción de audio.

Echándole un vistazo a la documentación se puede ver qué unidades están soportadas; tanto unidades grabadoras, incluyendo modelos SCSI e IDE, como unidades lectoras que hayan sido probadas sin problemas.

También se pide que si su unidad está soportada para extraer Audio con cdparanoia, pero no con cdrdao, le envíe la información que se obitene de ejecutar el comando cdparanoia -v a la dirección de correo del autor, que tratará de incorporarar su unidad lo antes posible.

Todo lo referente a las unidades soportadas se encuentra en el archivo README del paquete del código fuente. En el mismo paquete se encuentran otras utilidades bastante interesantes que comentaré seguidamente una vez explicados los comandos de esta utilidad.

La última versión, recomendada y realmente funcional, la 1.1.3, se puede obtener de http://www.ping.de/sites/daneb/cdrdao.html.

Descripción de los comandos del programa:

Utilización del programa:

cdrdao comando [opciones] archivo-toc

tag/comando/ indicamos al programa qué es lo que queremos hacer. Los comandos disponibles son:

opciones

A continuación describo las diferentes opciones que soporta el programa.

De aqui hay que comentar que el comando copy sólo se usa para copiar un CD al vuelo usando la opción --on-the-fly, si tenemos una imagen y la queremos copiar hay que usar el comando write. Un tamaño muy recomendado del buffer es 64, y de ahí en adelante, aunque con 64 creo que es más que suficiente.

Copia al vuelo de CD-ROMs.

Ahora una breve descripción de lo que más nos interesa del programa, la copia directa (al vuelo) sin imagen.

cdrdao copy -v 5 --device 0,3,0 --source-device 0,1,0 --speed 4 --buffers 64 \
--reload --eject --on-the-fly --fast-toc --read-raw

Este es el comando que utilizo para duplicar casi cualquier tipo de CD al vuelo. Al ponerle la opción --fast-toc realiza una lectura rápida de la tabla de contenidos del CD, de lo contrario primero leerá y comprobará el CD fuente, lo que tardará dependiendo de su lector, y luego lo copiará. Si le indicamos el susodicho parámetro, leerá la TOC de forma rápida y empezará enseguida a copiar. El resto de parámetros no necesitan de una explicacion más detallada.

Es recomendable que cuando se copie un CD de música o mixto se utilice de la siguiente manera con la opción --paranoia-mode:

En el caso poco común de que al intentar copiar un CD de Audio, éste no se pueda leer bien o no esté muy seguro de que no se pueda copiar al vuelo por estar muy rayada la superficie del disco no dude en realizar una imágen como se describe poco mas abajo.

Si el CD-ROM que está intentando leer le dá problemas con que no detecta bien el tipo de la pista le sugiero que añada la opción --read-raw, como se ha visto en el primer ejemplo, con lo que obligará al programa a leer los datos en bruto, con lo que nos podemos asegurar de que se vá a realizar la copia y reconocimiento posterior de manera correcta.

cdrdao copy -v 5 --device 0,3,0 --source-device 0,1,0 --speed 4 --buffers 64 \
--reload --eject --on-the-fly --fast-toc --paranoia-mode 0

Con la opción --paranoia-mode le especificamos en que modo ha de ser paranoico a la hora de extraer las pistas de audio, si le especificamos 0, será lo menos posible y es el que se recomienda a la hora de grabar al vuelo ya que se desactiva la verificacion de errores, que como es normal, reduce la transeferencia de datos ya que la unidad lectora se dedicaria más tiempo a comprobar los posibles defectos de las pistas e intentar corregirlos que a pasarle los datos a la grabadora, por lo que si no le ponemos este modo es muy posible que se produzca un buffer underrun y perder el CD.

Si lo que queremos es que los verifique y le indicamos modo 3 (modo máximo), será tan paranoico que para extraer una pista de audio en un lector 32X SCSI (como mi TEAC) tardará más tiempo que dura la misma canción al reproducirla; con esto el programa se asegura de que no pierda calidad y de correguir posibles errores en el CD. Este modo es recomendable cuando tengamos algun CD en mal estado y la única forma de poder grabarlo sea volcandolo primero a disco duro.

Si al indicarle la opción copy no le indicamos el parámetro --on-the-fly lo que hará primero es extraer la imágen del CD al disco duro, y seguidamente la copiará. Tener cuidado de no olvidar este pequeño detalle. Un ejemplo:

cdrdao copy -v 5 --device 0,3,0 --source-device 0,1,0 --speed 4 --buffers 64 \
--reload --eject --fast-toc --paranoia-mode 0

Una cosa mas a comentar es que tanto la unidad destino como fuente han de ser SCSI, lo que quiere decir que si queremos duplicar un CD al vuelo desde un lector de CD IDE/ATAPI tendremos que activar la emulación SCSI en dicha unidad para poder realizar la operación, tanto de lectura para duplicaciones al vuelo como para la extracción de imágenes de todo tipo de CD-ROMs.

Utilización de CDRDAO con unidades lectoras IDE/ATAPI

Segun dice en la documentación del CDRDAO es posible utilizar una unidad IDE/ATAPI como unidad fuente poniendo el parámetro --source-driver generic-mmc:0x20, claro que lo que no dice es que ha de tener activada la emulación SCSI. Para este fín ver la sección dedicada a la configuración del Kernel para unidades IDE/ATAPI. También es recomendable que lea la sección de Configuración del Kernel para el uso de unidades IDE/ATAPI con grabadoras SCSI.

En el archivo README lleva una lista sobre las unidades IDE/ATAPI que soporta y el controlador que utiliza.

Un ejemplo de como utilizar una unidad IDE/ATAPI como unidad fuente para la duplicación de un CD a un unidad grabadora SCSI es:

cdrdao copy -v 5 -n --device 0,3,0 --source-device /dev/sr1 --source-driver \
generic-mmc:0x20 --speed 4 --buffers 64 --reload --eject --fast-toc --paranoia-mode 0

en donde /dev/sr1 es el dispositivo en donde se encuentra emulada la unidad IDE/ATAPI desde la que queremos duplicar el CD, si intentamos poner el identificador SCSI, por ejemplo 0,0,1, nos dará un error diciendo que no se encuentra, de ahí la razón de poner el dispositivo de bloque.

Utilización de CDRDAO con grabadora y lectora IDE/ATAPI

Para la duplicación de CDs cuando las dos unidades son IDE/ATAPI es recomendable que se tenga activada la emulación SCSI en el Kernel de arranque y no como módulo, y se utilize el cdrdao de la siguiente manera:

cdrdao copy -v 5 -n --device /dev/sr1 --driver generic-mmc-raw --source-device \
/dev/sr0 --source-driver generic-mmc:0x20 --speed 2 --buffers 64 --reload --eject \
--fast-toc --paranoia-mode 0

Si damos por supuesto que la unidad grabadora ha sido detectada por el Kernel como /dev/sr1 y la unidad lectora como /dev/sr0, si este no es el caso suyo no tiene mas que cambiarlo para que corresponda a su configuración.

Ya que cdrdao no es capaz de configurar por si mismo que tipo de controlador utilizar, como lo hace cdrecord, le tenemos que especificar nosotros dicho controlador, y ya que el generic-mmc no funciona correctamente, utilizaremos el generic-mmc-raw, que es igual que el anterior solo que accede a la grabadora de un modo mas directo, permitiendo a las unidades emuladas grabar como si fueran SCSI.

Todas las opciones y posibilidades del cdrdao son accesibles y utilizables con unidades lectoras y grabadoras IDE/ATAPI, con solo especificarle los controladores para los dispositivos tal y como he mencionado. Para las unidades grabadoras utilizar --driver generic-mmc-raw cuando se quiera proceder a grabar en ella, y --source-driver generic-mmc:0x20 cuando se quiera proceder a leer de ellas o bien --driver generic-mmc:0x20 cuando utilicemos cdrdao para extraer una imagen con el lector o la grabadora, aunque como se ha dicho antes, es muy recomendable dejar solo la grabadora para grabar y no leer.

Extracción y grabación de imágenes DAO con cdrdao.

Otra de las funciones que nos puede interesar muchisimo es la de extraer una imagen al disco duro, como por ejemplo para lo dicho anteriormente, para cuando tengamos algun CD que no podamos grabar al vuelo por estar defectuoso, o bien, para grabarlo mas tarde. La sintáxis a utilizar es el siguiente:

cdrdao read-cd -v 5 --device 0,1,0 --read-raw --datafile imagen.bin imagen.toc

De esta forma conseguimos extraer una imagen en el archivo imagen.bin del contenido del CD-ROM fuente y en el archivo imagen.toc almacenamos la información que nos servirá posteriormente para poder grabar y dejar el nuevo CD tal y como estaba el original. Tener especial atención con la opción --read-raw que es muy importante en este caso.

Y para grabar la imagen que previamente hemos extraido el comando a utilizar es el siguiente:

cdrdao write -v 5 --device 0,3,0 --speed 4 --buffers 64 imagen.toc

Como habrá notado, no hemos indicado el nombre de la imagen ya que la toma del archivo que contiene la información TOC. El indicarle la opción --datafile con el nombre de la imagen es sólo para identificarla, por si tenemos más de una extraida en el disco duro; sino, por defecto la imagen se llamará data.bin. Si diese la casualidad de que ya hubiera un archivo .toc con el mismo nombre que el que intenta crar, el programa detendrá el proceso mostrando una advertencia, indicando de que ya existe el archivo. Y si indica un archivo de imagen, al contrario que con la toc, este la sobreescribirá. Prestar mucha atención a esto.

Grabación de nuestos propios CD-ROM con cdrdao.

También se puede usar el cdrdao para grabar una imagen de datos que hayamos generado con el mkisofs, es mas laboriosa, ya que primero tenemos que crear un archivo TOC, aunque quitando este inconveniente, los resultados pueden ser mas que satisfactorios, ya que nos permite una mayor libertad a la hora de crear nuestros propios CDs en comparación al cdrecord.

Lo primero es crearnos un archivo TOC para que cdrdao sepa lo que tiene que grabar al CD-ROM, para lo cual tenemos que saber como es la estructura de estos archivos de texto que lee el programa para luego poder crear el CD tal y como nosotros lo queremos.

Se pueden grabar CDs de datos en varios modos que describo a continuación:

Tipos de cabeceras.

Tipos de pistas.

De ésta forma podremos saber que las pistas de datos creadas con mkisofs solo se podrán grabar con los tipos de pistas CD-ROM y CD-ROM XA ya que mkisofs genera las imágenes con sectores de 2048 bytes.

Un ejemplo de archivo TOC para grabar una imágen en CD-ROM MODE1:

CD_ROM

//Pista 1
TRACK MODE1
NO COPY
DATAFILE "imagen.iso"

y en CD-ROM XA MODE2

CD_ROM_XA

// Pista 1
TRACK MODE2_FORM1
NO COPY
DATAFILE "imagen.iso"

Tambien podemos grabar nuestras propias pistas de audio, con el siguiente ejemplo veras como se crea un archivo TOC desde el cual poder hacerlo:

CD_DA

// Pista 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "audio_01.wav" 0

// Pista 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "audio_02.wav" 0

// Pista 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "audio_03.wav" 0

...

Todo lo que en el archivo de la toc empieze por las dos barras inclinadas // será tomado por cdrdao como comentario, lo que nos puede servir para indentificar las diferentes pistas y/u opciones del archivo.

Como puedes observar, el cdrdao reconoce como pistas de audio archivos en formato .wav por lo que no tendremos problemas a la hora de crear dichos tipos de archivos ya que, excepto algun caso, todos los programas de audio soportan este formato, y si el que utilizamos no, siempre estámos a tiempo de aprender a utilizar el programa sox.

Como hemos visto podemos indicarle tantas pistas como archivos queramos pasar al CD-ROM sin espacios en blanco, evitando la discontinuidad en las canciones a la hora de reproducirlas. También se pueden crear CD-Audio con el sistema CD-TEXT con el que etiquetar los CDs e incluirles el titulo y el artista al CD, así como los titulos de cada una de las pistas de audio, que pueden ser leidas por unidades lectoras de audio actuales como modernas cadenas de sonido, cargadores de CDs de coches que muestran los titulos en sus pantallas, así como numerosos programas de ordenador que las detectan y las muestra.

La estructura básica del archivo TOC para crear un CD con este tipo de contenidos es el siguiente:

CD_DA

// Contenido global sobre CD-TEXT
CD_TEXT {
    LANGUAGE_MAP {
        0 : EN  // El 0 es el código en inglés, si alguien sabe cual es
                // el correspondiente al español que me lo diga.
    }

    LANGUAGE 0 {
        TITLE "Aqui vá el titulo del CD"
        PERFORMER "Aqui vá el nombre del grupo o artista"
    }
}

// Pista 1
TRACK AUDIO
CD_TEXT {
    LANGUAGE 0 {
        TITLE "Titulo de la canción"
    }
}
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "audio_01.wav" 0

...

Cuando indicamos un parámtro de CD-TEXT en una pista, las demas también deben de llevar el mísmo parámtro, sino el contenido del mismo será erroneo.

Con esto podremos darle título y nombre a nuestros CDs de Audio, aunque hay mas opciones dentro del sistema CD-TEXT que no he puesto en el ejemplo, los explicaremos mas adelante para ser lo mas completos posible, de momento esto es mas que suficiente.

Scripts que acompañan a cdrdao.

Se puede usar cdrdao para copiar archivos .wav, y que gracias a un script en PERL que incluye en el directorio /contrib/wav2dao/ del paquete del código fuente podamos copiar dichas pistas sin que al final de las mismas nos ponga 2 segundos de silencio.

Para obtener la ayuda del programa ponemos:

 
wav2dao.pl -H

Para hacerlo funcionar simplemente escriba algo como esto:

wav2dao.pl -d /dev/sr0 -w -n *.wav

En el directorio de los fuentes /contrib/mp32dao/ encontramos otro script en PERL para realizar de forma automática la extracción de los archivos .mp3 a .wav, nos crea la TOC y luego solo tenemos que usar el CDRDAO para grabarlas a un CD, interesante, ¿no?. Debido a la falta de algunos archivos en la distribución del PERL en la mayoria de los sistema no se podrá usar este script hasta que no se descargen un par de archivos que coresponden a los módulos CPAN (Comprehensive Perl Archive Network) http://www.cpan.org.

Los archivos que necesitas se llaman Audio-Tools-0.01.tar.gz y Audio-Wav-0.01.tar.gz los cuales tienes que instalar de la siguiente manera suponiendo que ya los hayamos descargado a nuestro disco duro y los tengamos en el mismo directorio en el que nos encontremos:

tar xvzf Audio-Tools-0.01.tar.gz
tar xvzf Audio-Wav-0.01.tar.gz
cd Audio-Tools-0.01
perl Makefile.pl
make
make install
cd ../Audio-Wav-0.01
perl Makefile.pl
make
make install

Una vez hecho esto y después de que se hayan instalado correctamente y sin errores, lo que quiere decir que necesitas tener instalada una versión de PERL 5.005 o superior para funcionar, solo queda ponerse con el programa.

Este script hace uso del programa mpg123 para la descompresión de los archivos .mp3 en .wav y que se encuentra en la mayoria de distribuciones del mercado o bien por internet en la dirección http://www.mpg123.de.

Para utilizar este programa solo tenemos que tener en un directorio los .mp3 que queremos descomprimir, indicar que los .mp3 no podrán contener espacios en el nombre, de lo contrario el script no detectará el archivo y no lo descomprimirá. Si bien si acepta enlaces simbólicos o links, por lo que podremos enlazar los archivos reales a enlaces sin espacios en el nombre para que los descomprima.

Luego solo queda utilizar el programa de la siguiente forma:

mp32wav.pl audio.toc

en donde audio.toc es el nombre del archivo TOC que contendrá la información necesaria para que el programa CDRDAO pueda grabar los archivos como pistas de Audio en un CD-R, por ejemplo, de la forma siguiente:

cdrdao write -v 5 --device 0,3,0 --buffers 64 audio.toc

De todas formas el mismo script ya te indica que para grabar las pistas de audio hagas exactamente esto último.

Duplicado de cualquier tipo de CD-ROMs con CDRDAO.

Tenemos tres formas de duplicar CD-ROMs con cdrdao, de las cuales la primera es solo para duplicar CD-ROMs de PlayStation extrayendo imagen al disco duro, la segunda es para duplicar casi cualquier tipo de CD-ROM utilizando imagen también, y la tercera forma puede ser la mas interesante para la gente, duplicar casi cualquier tipo de CD-ROM al vuelo.

Uilización de los scripts read-psx y write-psx.

Como último script que acompaña a cdrdao tenemos en el directorio /contrib/psxcopy-x.y/ dos programas y dos scripts para la extracción y copia de los dichosos CDs de PlayStation.

Pues bien, lo primero es compilar los dos programas que son necesarios y luego instalarlos. Una vez compilados, sin errores, hacemos que los scripts read-psx y write-psx sean ejecutables. Como son dos scripts normales, habrá que editarlos y modicicar los parámetros para que apunten a nuestra unidad lectora y grabadora respectivamente en cada archivo. Una vez hecho eso simplemente introducimos el CD fuente en la unidad lectora, tecleamos:

read-psx cd1

y una vez extraído

write-psx cd1

ATENCION: Hay un error en el archivo psxdump.c que cuando ejecutamos make para compilarlo nos dá error y no lo compila, la única solución es editar dicho archivo y poner dos barras inclinadas // delante de la linea número 24, con lo cual correguiremos el error y el programa compilará y funcionará perfectamente.

Extracción y grabación manual de/a una imágen DAO de/a un CD-ROM.

La mejor forma de extraer un imágen de un CD-ROM sin tener que complicarnos mucho la vida es utlizando el método de extracción de imágenes DAO descrito anteriormente pero asegurandonos de que se lea en modo raw con el parámetro --read-raw, de la siguiente manera:

cdrdao read-cd -v 5 --device 0,1,0 --read-raw --datafile imagen.bin imagen.toc

con lo que nos extraerá la imágen en un solo fichero binario, lo que al contrario que con los scripts anteriores que lo hacian en dos archivos separados. Y luego para grabarla solo tenemos que realizar el proceso también descrito en la sección anterior:

cdrdao write -v 5 --device 0,3,0 --eject --buffers 64 imagen.toc

Indicar que es altamente necesaria la opción --read-raw, sin la cual el CD que hayamos grabado no será reconocia por la unidad lectora ya que cuando extraigamos la imágen el cdrdao no será capaz de reconocer completamente el tipo de la pista y la identificará como MODE2_FORM_MIX en lugar de ser del tipo MODE2. Por eso lo de indicarle la lectura en modo RAW, ya que al hacerlo de este modo el cdrdao detectará la pista como MODE2_RAW, que al ser gabada quedará como MODE2 y nuestro lector lo detectará perfectamente.

Si no le indicamos el parámetro --read-raw a la hora de extraerlo tendremos que editar el archivo que contiene la toc, en este ejemplo el imagen.toc y cambiar la descripción de la pista primera de MODE2_FORM_MIX a MODE2_FORM1, que es lo mismo que hace el script read-psx una vez extraida la toc (pero para los CD-ROMs de Playstation).

NOTA PERSONAL DE AUTOR: A mi gusto es preferible este método al anterior al ser mas directo y cuyo resultado, a mi gusto, es mas rápido y eficiente.

Duplicado de un CD-ROM al vuelo.

Este método no es mas que la aplicación del anterior pero en copia directa:

cdrdao copy -v 5 --device 0,3,0 --source-device 0,1,0 --eject --reload --read-raw \
--buffers 64 --paranoia-mode 0 --speed 4 --fast-toc --on-the-fly

NOTA DEL AUTOR: Por último decir que no sé si se podría hacer duplicado de casi todo tipo de discos con unidades grabadoras IDE/ATAPI y/o USB ya que al no disponer de este tipo de unidades no me ha sido posible probar todas las posibilidades, pero lo que sí he podido probar por mis propios medios es la utilización de unidades lectoras IDE como fuentes para la grabadora, con un resultado mejor del que yo me esperaba.

A tener en cuenta

Hay más posibilidades pero las descritas anteriormente son las que más faciles de usar y que más nos pueden interesar. En próximas versiones ampliaremos el contenido dedicado a este fabuloso programa.

También indicar que en el mismo paquete de las fuentes se encuentra un interfaz para X, el problema es que no soporta la grabación al vuelo.

ATENCION: Durante la utilización del programa para la duplicación de un CD-ROM al vuelo, no se podrá acceder de ninguna de las maneras a la unidad. Si se intenta montar la unidad fuente, por ejemplo, el proceso de grabación terminará con errores y el CD origen no se completará, perdiedo un disco. Esto se puede comprobar grabando un disco en modo de pruebas o de simulación y accediendo a la unidad desde donde se obtienen los datos.


Página siguiente Página anterior Índice general