#!/usr/bin/perl
#
#  Perl Audio Converter
#
#  Copyright (C) 2005-2006 Philip Lyons
#    
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#                    
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#                                    
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

require 5.006;

use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;
use File::Find;
use File::Copy;
use File::Basename;
use Ogg::Vorbis::Header; 

use Cwd qw(abs_path getcwd);

# Current Name & Version
my $name     = "Perl Audio Converter";
my $version  = "v3.2.5";

my $debug    = 0;
my $mylang   = "EN";

# Notices & Error Messages
my %lang = (
             # English
             EN => {

                      format_not_supported      => 'Format not supported.  Can not convert:',
                      config_not_found          => 'Configuration file not found.',
                      could_not_open            => 'Could not open',
                      could_not_open_dir	=> 'Could not open directory',
                      could_not_find            => 'Could not find',
                      could_not_play            => 'Could not play file.  Format not supported',
                      could_not_use_option      => 'Option can not be used while transcoding',
                      does_not_exist		=> 'does not exist',
                      error_loading             => 'There was an error loading:',
                      error_multi_files		=> 'can not be used when encoding multiple files',
                      error_write_perm		=> 'You do not have write permission to',
                      error_display_tag_info    => 'Format not supported.  Could not display tag information for:',
                      error_write_tag		=> 'Format not supported.  Could not write tag for:',
                      no_cddb_entry             => 'No CDDB entry found',
                      use_no_cddb		=> 'Please use the --nocddb option for CD-R & CD/RW discs',
                      missing_app               => 'Missing Application:',
                      file_destination		=> 'File Destination',
                      edit_conf_or_dl_from      => 'Edit conf file or download it from:',
                      edit_conf_or_check_inst   => 'Edit conf file or check your installation.',
                      install_mod_or_edit_conf  => 'Install the module or set USETAGS to 0 in conf file.',
                      remove_src_file		=> 'Removing source file:',
                      start_convert             => 'Converting:',
                      end_convert		=> 'Completed Conversion of:',
                      ripping_track		=> 'Ripping Track:',
                      tag_info                  => 'Tag info for',
                      tagging			=> 'Tagging',
                      please_specify_opt	=> 'Please specify one of the following options:',
                      not_src_type		=> 'is not the specified source file type',
                      help_and_options		=> 'See \'pacpl --help\' or \'pacpl --man\' for a list of options',
                      not_a_valid_encoder       => 'is not a valid encoder option.',
                      playing                   => 'Playing',
                      outfile_exists            => "already exists.\n\nUse --overwrite to replace file.",
                      mon_dir                   => "Monitoring:",
                      rec_mon_dir		=> "Recursively Monitoring:",
                      pacpl_not_found           => "Could not execute pacpl, please place a copy in your \$PATH.",
                      mon_dirs_empty		=> "No directories have been set to be monitored, edit /etc/pacpl/pacpl.conf.",
                      
                   },

             # French
              FR => {
                      format_not_supported      => 'Format non supporté. Conversion impossible:',
                      config_not_found          => 'Fichier de configuration introuvable',
                      could_not_open            => 'Ouverture impossible',
                      could_not_open_dir        => 'Ouverture du répertoire impossible',
                      could_not_find            => 'Ne peut pas trouver',
                      could_not_play            => 'Lecture du fichier impossible. Format non supporté',
                      could_not_use_option      => 'Cette option ne peut pas être utilisée lors d\'une conversion',
                      does_not_exist        	=> 'n\'existe pas',
                      error_loading             => 'Erreur lors du chargement de:',
                      error_multi_files        	=> 'ne peut pas être utilisé lors de l\'encodage de plusieurs fichiers',
                      error_write_perm          => 'Vous n\'avez pas les droits d\'écriture sur',
                      error_display_tag_info    => 'Format non supporté. Affichage des tags impossible pour:',
                      error_write_tag        	=> 'Format non supporté. Écriture des tags impossible pour:',
                      no_cddb_entry        	=> 'Entrée CDDB non trouvée',
                      use_no_cddb        	=> 'Utilisez l\'option --nocddb pour les CD-R & CD/RW',
                      missing_app               => 'Application manquante:',
                      file_destination        	=> 'Fichier de destination:',
                      edit_conf_or_dl_from      => 'Éditez le fichier de configuration ou téléchargez le à partir de:',
                      edit_conf_or_check_inst   => 'Éditez le fichier de configuration ou vérifiez votre installation',
                      install_mod_or_edit_conf  => 'Installez le module ou mettez l\'option de tag à 0 dans le fichier de configuration',
                      remove_src_file        	=> 'Suppression du fichier source:',
                      start_convert        	=> 'Conversion:',
                      end_convert        	=> 'Conversion terminée de:',
                      ripping_track        	=> 'Extraction piste:',
                      tag_info            	=> 'Information de tag pour:',
                      tagging            	=> 'Écriture des tags',
                      please_specify_opt     	=> 'Spécifiez une des options suivantes:',
                      not_src_type        	=> 'n\'est pas un fichier du type spécifié',
                      help_and_options        	=> 'See \'pacpl --help\' ou \'pacpl --man\' pour une liste des options',
                      not_a_valid_encoder       => '\'n\'est pas une option d\'encodage valide.\'',
                      playing                   => 'Lecture',
                      outfile_exists            => "existe dja.\n\nUtiliser --overwrite pour remplacer le fichier.",
                      mon_dir 			=> '',
                      rec_mon_dir		=> '',
                      pacpl_not_found		=> '',
                      mon_dirs_empty		=> '',

                   },
                   
              # Portuguese
              PT => {
                      format_not_supported      => 'Formato não suportado. Conversão impossível:',
                      config_not_found          => 'Ficheiro de configuração não encontrado',
                      could_not_open            => 'Abertura impossível',
                      could_not_open_dir        => 'Abertura da pasta imposível',
                      could_not_find            => 'Não encontrado',
                      could_not_play            => 'Leitura do ficheiro impossível. Formato não suportado',
                      could_not_use_option      => 'Esta opção não pode ser utilizada durante uma conversão',
                      does_not_exist        	=> 'Não existe',
                      error_loading             => 'Erros durante a abertura de:',
                      error_multi_files        	=> 'não pode ser usado a quando da conversão de multiplos ficheiros',
                      error_write_perm          => 'Não tem direitos de escrita sobre',
                      error_display_tag_info    => 'Formato não suportado. Não é possível mostrar as tags de:',
                      error_write_tag        	=> 'Formato não suportado. Não é possível escrever as tags em:',
                      no_cddb_entry        	=> 'Entrada CDDB não encontrada',
                      use_no_cddb        	=> 'Utilize a opção --nocddb para os CD-R & CD/RW',
                      missing_app               => 'Aplicação não encontrada:',
                      file_destination        	=> 'Ficheiro de destino:',
                      edit_conf_or_dl_from      => 'Edite o ficheiro de configuração ou descarregue-o a partir de:',
                      edit_conf_or_check_inst   => 'Edite o ficheiro de configuração ou verifique a sua instalação',
                      install_mod_or_edit_conf  => 'Instale o módulo ou mude a opção da tag para 0 no ficheiro de configuração',
                      remove_src_file        	=> 'Remoção do ficheiro fonte:',
                      start_convert        	=> 'Conversão:',
                      end_convert        	=> 'Conversão terminada de:',
                      ripping_track        	=> 'Extracção da pista:',
                      tag_info            	=> 'Informação da tag para:',
                      tagging            	=> 'Escrita das tags',
                      please_specify_opt     	=> 'Especifique uma das opções seguintes:',
                      not_src_type        	=> 'não é um ficheiro do tipo especificado',
                      help_and_options        	=> 'Tente \'pacpl --help\' ou \'pacpl --man\' para uma lista das opções',
                      not_a_valid_encoder       => 'não é uma opções de codificador válida.',
                      playing                   => 'A Tocar',
                      outfile_exists            => "j existe.\n\nUse --overwrite para substitu-lo.",
                      mon_dir			=> 'Monitorar',
                      rec_mon_dir		=> 'Monitorar Recursivamente',
                      pacpl_not_found		=> 'Nao  possvel executar o pacpl, coloque uma cpia na sua $PATH',
                      mon_dirs_empty		=> 'Nao foram especificadas directorias para monitorar, modifique o ficheiro /etc/pacpl/pacpl.conf',

                   },

           );

# Encoders/Decoders
my ($lame,     $oggenc,   $oggdec,
    $flac,     $mac,      $shorten, 
    $faac,     $faad,     $mplayer, 
    $mppenc,   $mppdec,   $wavpack,
    $wvunpack, $ofr,      $ofs,
    $ttaenc,   $lpac,     $sox,
    $kexis,    $ffmpeg,   $la,
    $bonk,     $gogo,     $bladeenc,
    $toolame);
    
# Music players
my ($mp3player, $oggplayer, $flacplayer,
    $mp4player, $mpcplayer, $wmaplayer, 
    $raplayer,  $wavplayer, $bonkplayer);

# Playlist
my $playlist;

# CD reader/ripper
my ($cdparanoia);

# CDDB 
my ($cddb_active, $track_total, $nocddb,      $noinput,
    @cdtrack,     $cdinfo,      %cddb_config, %cd);

# Nice options
my ($nice, $use_nice, $nice_level);

# Encoder options
my ($bitrate, $freq,     $channels,
    $flevel,  $alevel,   $slevel,  
    $quality, $xlevel,   $plevel,  
    $mode,    $optimize, $qlevel,
    $dratio,  $psize);

# Raw options
my $raw_opts = '-w -s';
my $sox_opts = '';
my $effect   = '';
my $lossless = '';

# Kdialog popup notification
my ($kdialog, $kuseropts, $knotice, 
    $koutdir, $kdelay);

my  $kpopup = '';
my  $kwarn  = '';    

# Tag variables
my $usetags;

my $id3v; 
my @conf_opts;

# Location of configuration file (Check Global, and then Current Directory)
my $conf_path     = "/etc/pacpl";
my $conf_global   = "$conf_path/pacpl.conf";
my $conf_pwd      = getcwd()."/pacpl.conf";

my $conf_file = $conf_global;
   $conf_file = $conf_pwd if not -e $conf_global;
  
if (not -e $conf_global and not -e $conf_pwd) { pac_msg("$lang{$mylang}{config_not_found}\n\n$!", "notice"); }
   
# Default configuation 
my %config = (
 
                  LAME       => '/usr/bin/lame',
                  GOGO       => '/usr/bin/gogo',
                  BLADEENC   => '/usr/bin/bladeenc',
                  TOOLAME    => '/usr/bin/toolame',
                  OGGENC     => '/usr/bin/oggenc',
                  OGGDEC     => '/usr/bin/oggdec',
                  FLAC       => '/usr/bin/flac',
                  MAC        => '/usr/bin/mac',
                  SHORTEN    => '/usr/bin/shorten',
                  FAAC       => '/usr/bin/faac',
                  FAAD       => '/usr/bin/faad',
                  MPLAYER    => '/usr/bin/mplayer',
                  MPPENC     => '/usr/bin/mppenc',
                  MPPDEC     => '/usr/bin/mppdec',
                  WAVPACK    => '/usr/bin/wavpack',
                  WVUNPACK   => '/usr/bin/wvunpack',
                  OFR        => '/usr/bin/ofr',
                  OFS        => '/usr/bin/ofs',
                  TTAENC     => '/usr/bin/tta',
                  LPAC       => '/usr/bin/lpac',
                  KEXIS      => '/usr/bin/kexis',
                  FFMPEG     => '/usr/bin/ffmpeg',
                  LA         => '/usr/bin/la',
                  BONK       => '/usr/bin/bonk',
                  SOX        => '/usr/bin/sox',
                  
                  CDPARANOIA => '/usr/bin/cdparanoia',
                  
                  USE_CDDB   => '1',
                  CDDB_HOST  => 'freedb.freedb.org',
                  CDDB_PORT  => '8880',
                  CDDB_MODE  => 'cddb',
                  CDDB_INPUT => '0',
                  
                  MP3PLAYER  => '/usr/bin/mpg123',
                  OGGPLAYER  => '/usr/bin/ogg123',
                  FLACPLAYER => '/usr/bin/mplayer',
                  MP4PLAYER  => '/usr/bin/mplayer',
                  MPCPLAYER  => '/usr/bin/mppdec',
                  WMAPLAYER  => '/usr/bin/mplayer',
                  WAVPLAYER  => '/usr/bin/play',
                  BNKPLAYER  => '/usr/bin/bonk',
                  RAPLAYER   => '/usr/bin/mplayer',
                  
                  BITRATE    => '128',
                  FREQ       => '44100',
                  CHANNELS   => '2',
                  QUALITY    => '3',
                  FLEVEL     => '8',
                  ALEVEL     => '2000',
                  SLEVEL     => '3',
                  XLEVEL     => 'radio',
                  PLEVEL     => '3',
                  MODE       => 'normal',
                  OPTIMIZE   => 'fast',
                  QLEVEL     => '1.0',
                  DRATIO     => '2',
                  PSIZE      => '128',
                  
                  NICE       => '/usr/bin/nice',
                  USENICE    => '1',
                  NICLEVEL   => '-15',

                  CDROM      => '/dev/cdrom',

                  KDIALOG    => '/opt/kde/bin/kdialog',

                  KPOPUP     => '1',
                  KWARN      => '1',
                  KUSEROPTS  => '1',
                  KOUTDIR    => '1',
                  KDELAY     => '10',
                  KNOTICE    => 'passivepopup',
                  
                  MONITOR    => '',
                  RECMON     => '',
                  MINTERVAL  => '10',
                  MDELSRC    => '0',
                  MOVERW     => '0',
                  COLTYPE    => 'ogg',
                  
                  USETAGS    => '1',
                  
                  ID3V       => 'ID3v1',
                  
                  LANG       => 'EN',
                  
                  
             );

# Open config file
if (-e $conf_file) {
open(CONF, "$conf_file") or pac_msg("$lang{$mylang}{could_not_open} '$conf_file': $!","error");

   @conf_opts = <CONF>;
   @conf_opts = grep(!/^#/, @conf_opts);
      
close(CONF);
}
      
# Read config file options and change default values accordingly
if (-e $conf_file) {
 foreach my $copts (@conf_opts) {
  
           foreach my $var (keys %config) {

                      if ($copts =~ /^$var\s/i) {
                          $copts =~ s/$var|=|\s//g;
                          $config{$var} = $copts if $copts ne '';

                          print "Assigning value $copts to hash key $var\n" if $debug;
                      }

           }
 } 
}

# Change language if needed
$mylang = $config{'LANG'};

#############################################################
# Load help menus and language packs if mylang is not English
#############################################################
my @help_mods = ( "help.$mylang", 
                  "long_help.$mylang", 
                  "rip_help.$mylang",
                  "tag_help.$mylang", 
                  "video_help.$mylang");
            
foreach my $mod (@help_mods) {

      if ($mylang ne "EN") {
           eval("require \"$conf_path/$mylang/$mod\"");
           pac_msg("$lang{EN}{error_loading} $conf_path/$mylang/$mod\n\n$@", "error") if $@;
      }
}
           
                 
# Change global variables according to configuration hash
$lame        = $config{'LAME'};         $oggenc      = $config{'OGGENC'};
$gogo        = $config{'GOGO'};         $bladeenc    = $config{'BLADEENC'};
$toolame     = $config{'TOOLAME'};
$oggdec      = $config{'OGGDEC'};       $flac        = $config{'FLAC'};
$mac         = $config{'MAC'};          $shorten     = $config{'SHORTEN'};
$faac        = $config{'FAAC'};         $faad        = $config{'FAAD'};
$mplayer     = $config{'MPLAYER'};      $mppenc      = $config{'MPPENC'};
$mppdec      = $config{'MPPDEC'};       $wavpack     = $config{'WAVPACK'};
$wvunpack    = $config{'WVUNPACK'};     $ofr         = $config{'OFR'};
$ofs         = $config{'OFS'};          $ttaenc      = $config{'TTAENC'};
$lpac        = $config{'LPAC'};         $kexis       = $config{'KEXIS'};
$sox         = $config{'SOX'};          $ffmpeg      = $config{'FFMPEG'};
$la          = $config{'LA'};           $bonk        = $config{'BONK'};

$cdparanoia  = $config{'CDPARANOIA'};

$mp3player   = $config{'MP3PLAYER'};    $oggplayer   = $config{'OGGPLAYER'};
$flacplayer  = $config{'FLACPLAYER'};   $mp4player   = $config{'MP4PLAYER'};
$mpcplayer   = $config{'MPCPLAYER'};    $wavplayer   = $config{'WAVPLAYER'};
$wmaplayer   = $config{'WMAPLAYER'};    $raplayer    = $config{'RAPLAYER'};
$bonkplayer  = $config{'BONKPLAYER'}; 

$bitrate     = $config{'BITRATE'};      $quality     = $config{'QUALITY'};
$flevel      = $config{'FLEVEL'};       $alevel      = $config{'ALEVEL'};
$slevel      = $config{'SLEVEL'};       $xlevel      = $config{'XLEVEL'};
$plevel      = $config{'PLEVEL'};       $mode        = $config{'MODE'};
$optimize    = $config{'OPTIMIZE'};     $freq        = $config{'FREQ'};
$channels    = $config{'CHANNELS'};     $qlevel      = $config{'QLEVEL'};
$psize       = $config{'PSIZE'};        $dratio      = $config{'DRATIO'};

$use_nice    = $config{'USENICE'};
$nice_level  = $config{'NICLEVEL'};

$kdialog     = $config{'KDIALOG'};      $kpopup      = $config{'KPOPUP'};
$kwarn       = $config{'KWARN'};        $kuseropts   = $config{'KUSEROPTS'};
$koutdir     = $config{'KOUTDIR'};      $kdelay      = $config{'KDELAY'};
$knotice     = $config{'KNOTICE'};

$usetags     = $config{'USETAGS'};

$id3v        = $config{'ID3V'};        

##################################################
# Load tagging modules if enabled in config file #
##################################################
if ($usetags) {

my @tag_mods = qw( MP3::Tag
                   MP4::Info
                   Audio::FLAC::Header
                   Audio::APETags
                   Audio::Musepack
                   Audio::WMA
                 );

   foreach my $tagm (@tag_mods) {
      eval("use $tagm");
      pac_msg("$lang{$mylang}{error_loading} $tagm.\n$lang{$mylang}{install_mod_or_edit_conf}\n\n$!","error") if $@;
   }
}
        
# Conversion variables
my ($mp3tomp3,  $oggtomp3,  $flactomp3,  $apetomp3,  
    $mp3toogg,  $oggtoogg,  $flactoogg,  $apetoogg,  
    $mp3toflac, $oggtoflac, $flactoflac, $apetoflac, 
    $mp3tofla,  $oggtofla,  $flactofla,  $apetofla,
    $mp3toape,	$oggtoape,  $flactoape,  $apetoape,  
    $mp3toshn,	$oggtoshn,  $flactoshn,  $apetoshn,  
    $mp3toaac,	$oggtoaac,  $flactoaac,  $apetoaac,  
    $mp3tom4a,  $oggtom4a,  $flactom4a,  $apetom4a,  
    $mp3tomp4,	$oggtomp4,  $flactomp4,  $apetomp4,  
    $mp3tompc,  $oggtompc,  $flactompc,  $apetompc,  
    $mp3tompp,  $oggtompp,  $flactompp,  $apetompp,
    $mp3towv,   $oggtowv,   $flactowv,   $apetowv,   
    $mp3toofr,  $oggtoofr,  $flactoofr,  $apetoofr,  
    $mp3toofs,  $oggtoofs,  $flactoofs,  $apetoofs,
    $mp3totta,  $oggtotta,  $flactotta,  $apetotta,
    $mp3topac,  $oggtopac,  $flactopac,  $apetopac,
    $mp3tolpac, $oggtolpac, $flactolpac, $apetolpac,
    $mp3tokxs,  $oggtokxs,  $flactokxs,  $apetokxs,
    $mp3toaiff, $oggtoaiff, $flactoaiff, $apetoaiff,
    $mp3toau,   $oggtoau,   $flactoau,   $apetoau,
    $mp3tosnd,  $oggtosnd,  $flactosnd,  $apetosnd,
    $mp3toraw,  $oggtoraw,  $flactoraw,  $apetoraw,
    $mp3tovoc,  $oggtovoc,  $flactovoc,  $apetovoc,
    $mp3tosmp,  $oggtosmp,  $flactosmp,  $apetosmp,
    $mp3tomp2,  $oggtomp2,  $flactomp2,  $apetomp2,
    $mp3toac3,  $oggtoac3,  $flactoac3,  $apetoac3,
    $mp3tola,   $oggtola,   $flactola,   $apetola,
    $mp3tobonk, $oggtobonk, $flactobonk, $apetobonk,
    $mp3towav,  $oggtowav,  $flactowav,  $apetowav,
    $mp3tora,   $oggtora,   $flactora,   $apetora,

    $shntomp3,  $aactomp3,  $mp4tomp3,   $mpctomp3,
    $shntoogg,  $aactoogg,  $mp4toogg,   $mpctoogg,
    $shntoflac, $aactoflac, $mp4toflac,  $mpctoflac,
    $shntofla,  $aactofla,  $mp4tofla,   $mpctofla,
    $shntoape,  $aactoape,  $mp4toape,   $mpctoape,
    $shntoshn,  $aactoshn,  $mp4toshn,   $mpctoshn,
    $shntoaac,  $aactoaac,  $mp4toaac,   $mpctoaac,
    $shntom4a,  $aactom4a,  $mp4tom4a,   $mpctom4a,
    $shntomp4,  $aactomp4,  $mp4tomp4,   $mpctomp4,
    $shntompc,  $aactompc,  $mp4tompc,   $mpctompc,
    $shntompp,  $aactompp,  $mp4tompp,   $mpctompp,
    $shntowv,   $aactowv,   $mp4towv,    $mpctowv,
    $shntoofr,  $aactoofr,  $mp4toofr,   $mpctoofr,
    $shntoofs,  $aactoofs,  $mp4toofs,   $mpctoofs,
    $shntotta,  $aactotta,  $mp4totta,   $mpctotta,
    $shntopac,  $aactopac,  $mp4topac,   $mpctopac,
    $shntolpac, $aactolpac, $mp4tolpac,  $mpctolpac,
    $shntokxs,  $aactokxs,  $mp4tokxs,   $mpctokxs,
    $shntoaiff, $aactoaiff, $mp4toaiff,  $mpctoaiff,
    $shntoau,   $aactoau,   $mp4toau,    $mpctoau,
    $shntosnd,  $aactosnd,  $mp4tosnd,   $mpctosnd,
    $shntoraw,  $aactoraw,  $mp4toraw,   $mpctoraw,
    $shntovoc,  $aactovoc,  $mp4tovoc,   $mpctovoc,
    $shntosmp,  $aactosmp,  $mp4tosmp,   $mpctosmp,
    $shntomp2,  $aactomp2,  $mp4tomp2,   $mpctomp2,
    $shntoac3,  $aactoac3,  $mp4toac3,   $mpctoac3,
    $shntola,   $aactola,   $mp4tola,    $mpctola,
    $shntobonk, $aactobonk, $mp4tobonk,  $mpctobonk,
    $shntowav,  $aactowav,  $mp4towav,   $mpctowav,
    $shntora,   $aactora,   $mp4tora,    $mpctora,
 
    $wvtomp3,   $wmatomp3,  $ratomp3,    $wavtomp3,
    $wvtoogg,   $wmatoogg,  $ratoogg,    $wavtoogg,
    $wvtoflac,  $wmatoflac, $ratoflac,   $wavtoflac,
    $wvtofla,   $wmatofla,  $ratofla,    $wavtofla,
    $wvtoape,   $wmatoape,  $ratoape,    $wavtoape,
    $wvtoshn,   $wmatoshn,  $ratoshn,    $wavtoshn,
    $wvtoaac,   $wmatoaac,  $ratoaac,    $wavtoaac,
    $wvtom4a,   $wmatom4a,  $ratom4a,    $wavtom4a,
    $wvtomp4,   $wmatomp4,  $ratomp4,    $wavtomp4,
    $wvtompc,   $wmatompc,  $ratompc,    $wavtompc,
    $wvtompp,   $wmatompp,  $ratompp,    $wavtompp,
    $wvtowv,    $wmatowv,   $ratowv,     $wavtowv,
    $wvtoofr,   $wmatoofr,  $ratoofr,    $wavtoofr,
    $wvtoofs,   $wmatoofs,  $ratoofs,    $wavtoofs,
    $wvtotta,   $wmatotta,  $ratotta,    $wavtotta,
    $wvtopac,   $wmatopac,  $ratopac,    $wavtopac,
    $wvtolpac,  $wmatolpac, $ratolpac,   $wavtolpac,
    $wvtokxs,   $wmatokxs,  $ratokxs,    $wavtokxs,
    $wvtoaiff,  $wmatoaiff, $ratoaiff,   $wavtoaiff,
    $wvtoau,    $wmatoau,   $ratoau,     $wavtoau,
    $wvtosnd,   $wmatosnd,  $ratosnd,    $wavtosnd,
    $wvtoraw,   $wmatoraw,  $ratoraw,    $wavtoraw,
    $wvtovoc,   $wmatovoc,  $ratovoc,    $wavtovoc,
    $wvtosmp,   $wmatosmp,  $ratosmp,    $wavtosmp,
    $wvtomp2,   $wmatomp2,  $ratomp2,    $wavtomp2,
    $wvtoac3,   $wmatoac3,  $ratoac3,    $wavtoac3,
    $wvtola,    $wmatola,   $ratola,     $wavtola,
    $wvtobonk,  $wmatobonk, $ratobonk,   $wavtobonk,
    $wvtowav,   $wmatowav,  $ratowav,    
    $wvtora,    $wmatora,   $ratora,     $wavtora,
    
    $ofrtomp3,  $ofstomp3,  $m4atomp3,   $ttatomp3,
    $ofrtoogg,  $ofstoogg,  $m4atoogg,   $ttatoogg,
    $ofrtoflac, $ofstoflac, $m4atoflac,  $ttatoflac,
    $ofrtofla,  $ofstofla,  $m4atofla,   $ttatofla,
    $ofrtoape,  $ofstoape,  $m4atoape,   $ttatoape,
    $ofrtoshn,  $ofstoshn,  $m4atoshn,   $ttatoshn,
    $ofrtoaac,  $ofstoaac,  $m4atoaac,   $ttatoaac,
    $ofrtom4a,  $ofstom4a,  $m4atom4a,   $ttatom4a,
    $ofrtomp4,  $ofstomp4,  $m4atomp4,   $ttatomp4,
    $ofrtompc,  $ofstompc,  $m4atompc,   $ttatompc,
    $ofrtompp,  $ofstompp,  $m4atompp,   $ttatompp,
    $ofrtowv,   $ofstowv,   $m4atowv,    $ttatowv,
    $ofrtoofr,  $ofstoofr,  $m4atoofr,   $ttatoofr,
    $ofrtoofs,  $ofstoofs,  $m4atoofs,   $ttatoofs,
    $ofrtotta,  $ofstotta,  $m4atotta,   $ttatotta,
    $ofrtopac,  $ofstopac,  $m4atopac,   $ttatopac,
    $ofrtolpac, $ofstolpac, $m4atolpac,  $ttatolpac,
    $ofrtokxs,  $ofstokxs,  $m4atokxs,   $ttatokxs,
    $ofrtoaiff, $ofstoaiff, $m4atoaiff,  $ttatoaiff,
    $ofrtoau,   $ofstoau,   $m4atoau,    $ttatoau,
    $ofrtosnd,  $ofstosnd,  $m4atosnd,   $ttatosnd,
    $ofrtoraw,  $ofstoraw,  $m4atoraw,   $ttatoraw,
    $ofrtovoc,  $ofstovoc,  $m4atovoc,   $ttatovoc,
    $ofrtosmp,  $ofstosmp,  $m4atosmp,   $ttatosmp,
    $ofrtomp2,  $ofstomp2,  $m4atomp2,   $ttatomp2,
    $ofrtoac3,  $ofstoac3,  $m4atoac3,   $ttatoac3, 
    $ofrtola,   $ofstola,   $m4atola,    $ttatola,
    $ofrtobonk, $ofstobonk, $m4atobonk,  $ttatobonk,
    $ofrtowav,  $ofstowav,  $m4atowav,   $ttatowav,
    $ofrtora,   $ofstora,   $m4atora,    $ttatora,
    
    $pactomp3,  $kxstomp3,  $aifftomp3,  $automp3,
    $pactoogg,  $kxstoogg,  $aifftoogg,  $autoogg,
    $pactoflac, $kxstoflac, $aifftoflac, $autoflac,
    $pactofla,  $kxstofla,  $aifftofla,  $autofla, 
    $pactoape,  $kxstoape,  $aifftoape,  $autoape,
    $pactoshn,  $kxstoshn,  $aifftoshn,  $autoshn,
    $pactoaac,  $kxstoaac,  $aifftoaac,  $autoaac,
    $pactom4a,  $kxstom4a,  $aifftom4a,  $autom4a,
    $pactomp4,  $kxstomp4,  $aifftomp4,  $automp4, 
    $pactompc,  $kxstompc,  $aifftompc,  $autompc,
    $pactompp,  $kxstompp,  $aifftompp,  $autompp,
    $pactowv,   $kxstowv,   $aifftowv,   $autowv,
    $pactoofr,  $kxstoofr,  $aifftoofr,  $autoofr,
    $pactoofs,  $kxstoofs,  $aifftoofs,  $autoofs,
    $pactotta,  $kxstotta,  $aifftotta,  $autotta,
    $pactopac,  $kxstopac,  $aifftopac,  $autopac,
    $pactolpac, $kxstolpac, $aifftolpac, $autolpac,
    $pactokxs,  $kxstokxs,  $aifftokxs,  $autokxs,
    $pactoaiff, $kxstoaiff, $aifftoaiff, $autoaiff,
    $pactoau,   $kxstoau,   $aifftoau,   $autoau,
    $pactosnd,  $kxstosnd,  $aifftosnd,  $autosnd,
    $pactoraw,  $kxstoraw,  $aifftoraw,  $autoraw,
    $pactovoc,  $kxstovoc,  $aifftovoc,  $autovoc,
    $pactosmp,  $kxstosmp,  $aifftosmp,  $autosmp,
    $pactomp2,  $kxstomp2,  $aifftomp2,  $automp2, 
    $pactoac3,  $kxstoac3,  $aifftoac3,  $autoac3,
    $pactola,   $kxstola,   $aifftola,   $autola,
    $pactobonk, $kxstobonk, $aifftobonk, $autobonk,
    $pactowav,  $kxstowav,  $aifftowav,  $autowav,
    $pactora,   $kxstora,   $aifftora,   $autora,
    
    $sndtomp3,  $mp2tomp3,  $ac3tomp3,   $ramtomp3,
    $sndtoogg,  $mp2toogg,  $ac3toogg,   $ramtoogg,
    $sndtoflac, $mp2toflac, $ac3toflac,  $ramtoflac,
    $sndtofla,  $mp2tofla,  $ac3tofla,   $ramtofla,
    $sndtoape,  $mp2toape,  $ac3toape,   $ramtoape,
    $sndtoshn,  $mp2toshn,  $ac3toshn,   $ramtoshn,
    $sndtoaac,  $mp2toaac,  $ac3toaac,   $ramtoaac,
    $sndtom4a,  $mp2tom4a,  $ac3tom4a,   $ramtom4a,
    $sndtomp4,  $mp2tomp4,  $ac3tomp4,   $ramtomp4,
    $sndtompc,  $mp2tompc,  $ac3tompc,   $ramtompc,
    $sndtompp,  $mp2tompp,  $ac3tompp,   $ramtompp,
    $sndtowv,   $mp2towv,   $ac3towv,    $ramtowv,
    $sndtoofr,  $mp2toofr,  $ac3toofr,   $ramtoofr,
    $sndtoofs,  $mp2toofs,  $ac3toofs,   $ramtoofs,
    $sndtotta,  $mp2totta,  $ac3totta,   $ramtotta,
    $sndtopac,  $mp2topac,  $ac3topac,   $ramtopac,
    $sndtolpac, $mp2tolpac, $ac3tolpac,  $ramtolpac,
    $sndtokxs,  $mp2tokxs,  $ac3tokxs,   $ramtokxs,
    $sndtoaiff, $mp2toaiff, $ac3toaiff,  $ramtoaiff,
    $sndtoau,   $mp2toau,   $ac3toau,    $ramtoau,
    $sndtosnd,  $mp2tosnd,  $ac3tosnd,   $ramtosnd,
    $sndtoraw,  $mp2toraw,  $ac3toraw,   $ramtoraw,
    $sndtovoc,  $mp2tovoc,  $ac3tovoc,   $ramtovoc,
    $sndtosmp,  $mp2tosmp,  $ac3tosmp,   $ramtosmp,
    $sndtomp2,  $mp2tomp2,  $ac3tomp2,   $ramtomp2,
    $sndtoac3,  $mp2toac3,  $ac3toac3,   $ramtoac3,
    $sndtola,   $mp2tola,   $ac3tola,    $ramtola,
    $sndtobonk, $mp2tobonk, $ac3tobonk,  $ramtobonk,
    $sndtowav,  $mp2towav,  $ac3towav,   $ramtowav,
    $sndtora,   $mp2tora,   $ac3tora,    $ramtora,
    
    $rawtomp3,  $voctomp3,  $smptomp3,   $latomp3,
    $rawtoogg,  $voctoogg,  $smptoogg,   $latoogg,
    $rawtoflac, $voctoflac, $smptoflac,  $latoflac,
    $rawtofla,  $voctofla,  $smptofla,   $latofla,
    $rawtoape,  $voctoape,  $smptoape,   $latoape,
    $rawtoshn,  $voctoshn,  $smptoshn,   $latoshn,
    $rawtoaac,  $voctoaac,  $smptoaac,   $latoaac,
    $rawtom4a,  $voctom4a,  $smptom4a,   $latom4a,
    $rawtomp4,  $voctomp4,  $smptomp4,   $latomp4,
    $rawtompc,  $voctompc,  $smptompc,   $latompc,
    $rawtompp,  $voctompp,  $smptompp,   $latompp,
    $rawtowv,   $voctowv,   $smptowv,    $latowv,
    $rawtoofr,  $voctoofr,  $smptoofr,   $latoofr,
    $rawtoofs,  $voctoofs,  $smptoofs,   $latoofs,
    $rawtotta,  $voctotta,  $smptotta,   $latotta,
    $rawtopac,  $voctopac,  $smptopac,   $latopac,
    $rawtolpac, $voctolpac, $smptolpac,  $latolpac,
    $rawtokxs,  $voctokxs,  $smptokxs,   $latokxs,
    $rawtoaiff, $voctoaiff, $smptoaiff,  $latoaiff,
    $rawtoau,   $voctoau,   $smptoau,    $latoau,
    $rawtosnd,  $voctosnd,  $smptosnd,   $latosnd,
    $rawtoraw,  $voctoraw,  $smptoraw,   $latoraw,
    $rawtovoc,  $voctovoc,  $smptovoc,   $latovoc,
    $rawtosmp,  $voctosmp,  $smptosmp,   $latosmp,
    $rawtomp2,  $voctomp2,  $smptomp2,   $latomp2,
    $rawtoac3,  $voctoac3,  $smptoac3,   $latoac3,
    $rawtola,   $voctola,   $smptola,    $latola,
    $rawtobonk, $voctobonk, $smptobonk,  $latobonk,
    $rawtowav,  $voctowav,  $smptowav,   $latowav,
    $rawtora,   $voctora,   $smptora,    $latora,
    
    $bonktomp3, $flatomp3,   $mpptomp3,
    $bonktoogg, $flatoogg,   $mpptoogg,
    $bonktoflac,$flatoflac,  $mpptoflac,
    $bonktofla, $flatofla,   $mpptofla,
    $bonktoape, $flatoape,   $mpptoape,
    $bonktoshn, $flatoshn,   $mpptoshn,
    $bonktoaac, $flatoaac,   $mpptoaac,
    $bonktom4a, $flatom4a,   $mpptom4a,
    $bonktomp4, $flatomp4,   $mpptomp4,
    $bonktompc, $flatompc,   $mpptompc,
    $bonktompp, $flatompp,   $mpptompp,
    $bonktowv,  $flatowv,    $mpptowv,
    $bonktoofr, $flatoofr,   $mpptoofr,
    $bonktoofs, $flatoofs,   $mpptoofs,
    $bonktotta, $flatotta,   $mpptotta,
    $bonktopac, $flatopac,   $mpptopac,
    $bonktolpac,$flatolpac,  $mpptolpac,
    $bonktokxs, $flatokxs,   $mpptokxs,
    $bonktoaiff,$flatoaiff,  $mpptoaiff,
    $bonktoau,  $flatoau,    $mpptoau,
    $bonktosnd, $flatosnd,   $mpptosnd,
    $bonktoraw, $flatoraw,   $mpptoraw,
    $bonktovoc, $flatovoc,   $mpptovoc,
    $bonktosmp, $flatosmp,   $mpptosmp,
    $bonktomp2, $flatomp2,   $mpptomp2,
    $bonktoac3, $flatoac3,   $mpptoac3,
    $bonktola,  $flatola,    $mpptola,
    $bonktobonk,$flatobonk,  $mpptobonk,
    $bonktowav, $flatowav,   $mpptowav,
    $bonktora,  $flatora,    $mpptora,
    
    $lpactomp3,
    $lpactoogg,
    $lpactoflac,
    $lpactofla,
    $lpactoape,
    $lpactoshn,
    $lpactoaac,
    $lpactom4a,
    $lpactomp4,
    $lpactompc,
    $lpactompp,
    $lpactowv,
    $lpactoofr,
    $lpactoofs,
    $lpactotta,
    $lpactopac,
    $lpactolpac,
    $lpactokxs,
    $lpactoaiff,
    $lpactoau,
    $lpactosnd,
    $lpactoraw,
    $lpactovoc,
    $lpactosmp,
    $lpactomp2,
    $lpactoac3,
    $lpactola,
    $lpactobonk,
    $lpactowav,
    $lpactora); 

my ($cdtomp3,   $cdtoogg,   $cdtoflac,
    $cdtofla,   $cdtoape,   $cdtoshn,   
    $cdtoaac,   $cdtom4a,   $cdtomp4,   
    $cdtompc,   $cdtompp,   $cdtowv,    
    $cdtoofr,   $cdtoofs,   $cdtotta,   
    $cdtopac,   $cdtolpac,  $cdtokxs,   
    $cdtoaiff,  $cdtoau,    $cdtosnd,   
    $cdtoraw,   $cdtovoc,   $cdtosmp,   
    $cdtomp2,   $cdtoac3,   $cdtola,    
    $cdtobonk,  $cdtowav,   $cdtora);

my ($out_dir,           $new_file,    $outfile,
    $delete,            $out_file,    $riphelp,
    $help,              $all,         $ver,  
    $audio_file,        $gui,         $conv_to,
    $get_out_directory, $longhelp,    $taghelp,
    $daemon,
    
    $artist,            $album,       $title,
    $genre,             $year,        $comment,
    $track,             $showtag,     $play,
    $videohelp,         $man,         $url,
    $presdir,           $pdir,        $pfmt,
    $out_copy,          $recursive,   $overwrite,
    
    @file, @dir, @track, 
    
    %usertag);
    
 my ($audio_opts, $enc_name, $dec_name) = '';
    
 GetOptions('cdtomp3'         => \$cdtomp3,
            'cdtoogg'         => \$cdtoogg,
            'cdtoflac'        => \$cdtoflac,
            'cdtofla'         => \$cdtofla,
            'cdtoape'         => \$cdtoape,
            'cdtoshn'         => \$cdtoshn,
            'cdtoaac'         => \$cdtoaac,
            'cdtom4a'         => \$cdtom4a,
            'cdtomp4'         => \$cdtomp4,
            'cdtompc'         => \$cdtompc,
            'cdtompp'         => \$cdtompp,
            'cdtowv'          => \$cdtowv,
            'cdtoofr'         => \$cdtoofr,
            'cdtoofs'         => \$cdtoofs,
            'cdtotta'         => \$cdtotta,
            'cdtopac'         => \$cdtopac,
            'cdtolpac'        => \$cdtolpac,
            'cdtokxs'         => \$cdtokxs,
            'cdtoaiff'        => \$cdtoaiff,
            'cdtoau'          => \$cdtoau,
            'cdtosnd'         => \$cdtosnd,
            'cdtoraw'         => \$cdtoraw,
            'cdtovoc'         => \$cdtovoc,
            'cdtosmp'         => \$cdtosmp,
            'cdtomp2'         => \$cdtomp2,
            'cdtoac3'         => \$cdtoac3,
            'cdtola'          => \$cdtola,
            'cdtobonk'        => \$cdtobonk,
            'cdtowav'         => \$cdtowav,
            'cdtora'          => \$cdtora,

            'mp3tomp3'        => \$mp3tomp3,
            'mp3toogg'        => \$mp3toogg,
            'mp3toflac'       => \$mp3toflac,
            'mp3tofla'        => \$mp3tofla,
            'mp3toape'        => \$mp3toape,
            'mp3toshn'        => \$mp3toshn,
            'mp3toaac'        => \$mp3toaac,
            'mp3tom4a'        => \$mp3tom4a,
            'mp3tomp4'        => \$mp3tomp4,
            'mp3tompc'        => \$mp3tompc,
            'mp3tompp'        => \$mp3tompp,
            'mp3towv'         => \$mp3towv,
            'mp3toofr'        => \$mp3toofr,
            'mp3toofs'        => \$mp3toofs,
            'mp3totta'        => \$mp3totta,
            'mp3topac'        => \$mp3topac,
            'mp3tolpac'       => \$mp3tolpac,
            'mp3tokxs'        => \$mp3tokxs,
            'mp3toaiff'       => \$mp3toaiff,
            'mp3toau'         => \$mp3toau,
            'mp3tosnd'        => \$mp3tosnd,
            'mp3toraw'        => \$mp3toraw,
            'mp3tovoc'        => \$mp3tovoc,
            'mp3tosmp'        => \$mp3tosmp,
            'mp3tomp2'        => \$mp3tomp2,
            'mp3toac3'        => \$mp3toac3,
            'mp3tola'         => \$mp3tola,
            'mp3tobonk'       => \$mp3tobonk,
            'mp3towav'        => \$mp3towav,
            'mp3tora'         => \$mp3tora,

            'oggtomp3'        => \$oggtomp3, 
            'oggtoogg'        => \$oggtoogg,
            'oggtoflac'       => \$oggtoflac,
            'oggtofla'        => \$oggtofla,
            'oggtoape'        => \$oggtoape,
            'oggtoshn'        => \$oggtoshn,
            'oggtoaac'        => \$oggtoaac,
            'oggtom4a'        => \$oggtom4a,
            'oggtomp4'        => \$oggtomp4,
            'oggtompc'        => \$oggtompc,
            'oggtompp'        => \$oggtompp,
            'oggtowv'         => \$oggtowv,
            'oggtoofr'        => \$oggtoofr,
            'oggtoofs'        => \$oggtoofs,
            'oggtotta'        => \$oggtotta,
            'oggtopac'        => \$oggtopac,
            'oggtolpac'       => \$oggtolpac,
            'oggtokxs'        => \$oggtokxs,
            'oggtoaiff'       => \$oggtoaiff,
            'oggtoau'         => \$oggtoau,
            'oggtosnd'        => \$oggtosnd,
            'oggtoraw'        => \$oggtoraw,
            'oggtovoc'        => \$oggtovoc,
            'oggtosmp'        => \$oggtosmp,
            'oggtomp2'        => \$oggtomp2,
            'oggtoac3'        => \$oggtoac3,
            'oggtola'         => \$oggtola,
            'oggtobonk'       => \$oggtobonk,
            'oggtowav'        => \$oggtowav, 
            'oggtora'         => \$oggtora,

            'flactomp3'       => \$flactomp3,
            'flactoogg'       => \$flactoogg,
            'flactoflac'      => \$flactoflac,
            'flactofla'       => \$flactofla,
            'flactoape'       => \$flactoape,
            'flactoshn'       => \$flactoshn,
            'flactoaac'       => \$flactoaac,
            'flactom4a'       => \$flactom4a,
            'flactomp4'       => \$flactomp4,
            'flactompc'       => \$flactompc,
            'flactompp'       => \$flactompp,
            'flactowv'        => \$flactowv,
            'flactoofr'       => \$flactoofr,
            'flactoofs'       => \$flactoofs,
            'flactotta'       => \$flactotta,
            'flactopac'       => \$flactopac,
            'flactolpac'      => \$flactolpac,
            'flactokxs'       => \$flactokxs,
            'flactoaiff'      => \$flactoaiff,
            'flactoau'        => \$flactoau,
            'flactosnd'       => \$flactosnd,
            'flactoraw'       => \$flactoraw,
            'flactovoc'       => \$flactovoc,
            'flactosmp'       => \$flactosmp,
            'flactomp2'       => \$flactomp2,
            'flactoac3'       => \$flactoac3,
            'flactola'        => \$flactola,
            'flactobonk'      => \$flactobonk,
            'flactowav'       => \$flactowav,
            'flactora'        => \$flactora,
            
            'flatomp3'        => \$flatomp3,
            'flatoogg'        => \$flatoogg,
            'flatoflac'       => \$flatoflac,
            'flatofla'        => \$flatofla,
            'flatoape'        => \$flatoape,
            'flatoshn'        => \$flatoshn,
            'flatoaac'        => \$flatoaac,
            'flatom4a'        => \$flatom4a,
            'flatomp4'        => \$flatomp4,
            'flatompc'        => \$flatompc,
            'flatompp'        => \$flatompp,
            'flatowv'         => \$flatowv,
            'flatoofr'        => \$flatoofr,
            'flatoofs'        => \$flatoofs,
            'flatotta'        => \$flatotta,
            'flatopac'        => \$flatopac,
            'flatolpac'       => \$flactolpac,
            'flatokxs'        => \$flatokxs,
            'flatoaiff'       => \$flatoaiff,
            'flatoau'         => \$flatoau,
            'flatosnd'        => \$flatosnd,
            'flatoraw'        => \$flatoraw,
            'flatovoc'        => \$flatovoc,
            'flatosmp'        => \$flatosmp,
            'flatomp2'        => \$flatomp2,
            'flatoac3'        => \$flatoac3,
            'flatola'         => \$flatola,
            'flatobonk'       => \$flatobonk,
            'flatowav'        => \$flatowav,
            'flatora'         => \$flatora,

            'apetomp3'        => \$apetomp3,
            'apetoogg'        => \$apetoogg,
            'apetoflac'       => \$apetoflac,
            'apetofla'        => \$apetofla,
            'apetoape'        => \$apetoape,
            'apetoshn'        => \$apetoshn,
            'apetoaac'        => \$apetoaac,
            'apetom4a'        => \$apetom4a,
            'apetomp4'        => \$apetomp4,
            'apetompc'        => \$apetompc,
            'apetompp'        => \$apetompp,
            'apetowv'         => \$apetowv,
            'apetoofr'        => \$apetoofr,
            'apetoofs'        => \$apetoofs,
            'apetotta'        => \$apetotta,
            'apetopac'        => \$apetopac,
            'apetolpac'       => \$apetolpac,
            'apetokxs'        => \$apetokxs,
            'apetoaiff'       => \$apetoaiff,
            'apetoau'         => \$apetoau,
            'apetosnd'        => \$apetosnd,
            'apetoraw'        => \$apetoraw,
            'apetovoc'        => \$apetovoc,
            'apetosmp'        => \$apetosmp,
            'apetomp2'        => \$apetomp2,
            'apetoac3'        => \$apetoac3,
            'apetola'         => \$apetola,
            'apetobonk'       => \$apetobonk,
            'apetowav'        => \$apetowav,
            'apetora'         => \$apetora,
            
            'shntomp3'        => \$shntomp3,
            'shntoogg'        => \$shntoogg,
            'shntoflac'       => \$shntoflac,
            'shntofla'        => \$shntofla,
            'shntoape'        => \$shntoape,
            'shntoshn'        => \$shntoshn,
            'shntoaac'        => \$shntoaac,
            'shntom4a'        => \$shntom4a,
            'shntomp4'        => \$shntomp4,
            'shntompc'        => \$shntompc,
            'shntompp'        => \$shntompp,
            'shntowv'         => \$shntowv,
            'shntoofr'        => \$shntoofr,
            'shntoofs'        => \$shntoofs,
            'shntotta'        => \$shntotta,
            'shntopac'        => \$shntopac,
            'shntolpac'       => \$shntolpac,
            'shntokxs'        => \$shntokxs,
            'shntoaiff'       => \$shntoaiff,
            'shntoau'         => \$shntoau,
            'shntosnd'        => \$shntosnd,
            'shntoraw'        => \$shntoraw,
            'shntovoc'        => \$shntovoc,
            'shntosmp'        => \$shntosmp,
            'shntomp2'        => \$shntomp2,
            'shntoac3'        => \$shntoac3,
            'shntola'         => \$shntola,
            'shntobonk'       => \$shntobonk,
            'shntowav'        => \$shntowav,
            'shntora'         => \$shntora,

            'aactomp3'        => \$aactomp3,
            'aactoogg'        => \$aactoogg,
            'aactoflac'       => \$aactoflac,
            'aactofla'        => \$aactofla,
            'aactoape'        => \$aactoape,
            'aactoshn'        => \$aactoshn,
            'aactoaac'        => \$aactoaac,
            'aactom4a'        => \$aactom4a,
            'aactomp4'        => \$aactomp4,
            'aactompc'        => \$aactompc,
            'aactompp'        => \$aactompp,
            'aactowv'         => \$aactowv,
            'aactoofr'        => \$aactoofr,
            'aactoofs'        => \$aactoofs,
            'aactotta'        => \$aactotta,
            'aactopac'        => \$aactopac,
            'aactolpac'       => \$aactolpac,
            'aactokxs'        => \$aactokxs,
            'aactoaiff'       => \$aactoaiff,
            'aactoau'         => \$aactoau,
            'aactosnd'        => \$aactosnd,
            'aactoraw'        => \$aactoraw,
            'aactovoc'        => \$aactovoc,
            'aactosmp'        => \$aactosmp,
            'aactomp2'        => \$aactomp2,
            'aactoac3'        => \$aactoac3,
            'aactola'         => \$aactola,
            'aactobonk'       => \$aactobonk,
            'aactowav'        => \$aactowav,
            'aactora'         => \$aactora,
            
            'm4atomp3'        => \$m4atomp3,
            'm4atoogg'        => \$m4atoogg,
            'm4atoflac'       => \$m4atoflac,
            'm4atofla'        => \$m4atofla,
            'm4atoape'        => \$m4atoape,
            'm4atoshn'        => \$m4atoshn,
            'm4atoaac'        => \$m4atoaac,
            'm4atom4a'        => \$m4atom4a,
            'm4atomp4'        => \$m4atomp4,
            'm4atompc'        => \$m4atompc,
            'm4atompp'        => \$m4atompp,
            'm4atowv'         => \$m4atowv,
            'm4atoofr'        => \$m4atoofr,
            'm4atoofs'        => \$m4atoofs,
            'm4atotta'        => \$m4atotta,
            'm4atopac'        => \$m4atopac,
            'm4atolpac'       => \$m4atolpac,
            'm4atokxs'        => \$m4atokxs,
            'm4atoaiff'       => \$m4atoaiff,
            'm4atoau'         => \$m4atoau,
            'm4atosnd'        => \$m4atosnd,
            'm4atoraw'        => \$m4atoraw,
            'm4atovoc'        => \$m4atovoc,
            'm4atosmp'        => \$m4atosmp,
            'm4atomp2'        => \$m4atomp2,
            'm4atoac3'        => \$m4atoac3,
            'm4atola'         => \$m4atola,
            'm4atobonk'       => \$m4atobonk,
            'm4atowav'        => \$m4atowav,
            'm4atora'         => \$m4atora,

            'mp4tomp3'        => \$mp4tomp3,
            'mp4toogg'        => \$mp4toogg,
            'mp4toflac'       => \$mp4toflac,
            'mp4tofla'        => \$mp4tofla,
            'mp4toape'        => \$mp4toape,
            'mp4toshn'        => \$mp4toshn,
            'mp4toaac'        => \$mp4toaac,
            'mp4tom4a'        => \$mp4tom4a,
            'mp4tomp4'        => \$mp4tomp4,
            'mp4tompc'        => \$mp4tompc,
            'mp4tompp'        => \$mp4tompp,
            'mp4towv'         => \$mp4towv,
            'mp4toofr'        => \$mp4toofr,
            'mp4toofs'        => \$mp4toofs,
            'mp4totta'        => \$mp4totta, 
            'mp4topac'        => \$mp4topac,
            'mp4tolpac'       => \$mp4tolpac,
            'mp4tokxs'        => \$mp4tokxs,
            'mp4toaiff'       => \$mp4toaiff,
            'mp4toau'         => \$mp4toau,
            'mp4tosnd'        => \$mp4tosnd,
            'mp4toraw'        => \$mp4toraw,
            'mp4tovoc'        => \$mp4tovoc,
            'mp4tosmp'        => \$mp4tosmp,
            'mp4tomp2'        => \$mp4tomp2,
            'mp4toac3'        => \$mp4toac3,
            'mp4tola'         => \$mp4tola,
            'mp4tobonk'       => \$mp4tobonk,
            'mp4towav'        => \$mp4towav,
            'mp4tora'         => \$mp4tora,

            'mpctomp3'        => \$mpctomp3,
            'mpctoogg'        => \$mpctoogg,
            'mpctoflac'       => \$mpctoflac,
            'mpctofla'        => \$mpctofla,
            'mpctoape'        => \$mpctoape,
            'mpctoshn'        => \$mpctoshn,
            'mpctoaac'        => \$mpctoaac,
            'mpctom4a'        => \$mpctom4a,
            'mpctomp4'        => \$mpctomp4,
            'mpctompc'        => \$mpctompc,
            'mpctompp'        => \$mpctompp,
            'mpctowv'         => \$mpctowv,
            'mpctoofr'        => \$mpctoofr,
            'mpctoofs'        => \$mpctoofs,
            'mpctotta'        => \$mpctotta,
            'mpctopac'        => \$mpctopac,
            'mpctolpac'       => \$mpctolpac,
            'mpctokxs'        => \$mpctokxs,
            'mpctoaiff'       => \$mpctoaiff,
            'mpctoau'         => \$mpctoau,
            'mpctosnd'        => \$mpctosnd,
            'mpctoraw'        => \$mpctoraw,
            'mpctovoc'        => \$mpctovoc,
            'mpctosmp'        => \$mpctosmp,
            'mpctomp2'        => \$mpctomp2,
            'mpctoac3'        => \$mpctoac3,
            'mpctola'         => \$mpctola,
            'mpctobonk'       => \$mpctobonk,
            'mpctowav'        => \$mpctowav,
            'mpctora'         => \$mpctora,
            
            'mpptomp3'        => \$mpptomp3,
            'mpptoogg'        => \$mpptoogg,
            'mpptoflac'       => \$mpptoflac,
            'mpptoape'        => \$mpptoape,
            'mpptoshn'        => \$mpptoshn,
            'mpptoaac'        => \$mpptoaac,
            'mpptom4a'        => \$mpptom4a,
            'mpptomp4'        => \$mpptomp4,
            'mpptompc'        => \$mpptompc,
            'mpptompp'        => \$mpptompp,
            'mpptowv'         => \$mpptowv,
            'mpptoofr'        => \$mpptoofr,
            'mpptoofs'        => \$mpptoofs,
            'mpptotta'        => \$mpptotta,
            'mpptopac'        => \$mpptopac,
            'mpptolpac'       => \$mpptolpac,
            'mpptokxs'        => \$mpptokxs,
            'mpptoaiff'       => \$mpptoaiff,
            'mpptoau'         => \$mpptoau,
            'mpptosnd'        => \$mpptosnd,
            'mpptoraw'        => \$mpptoraw,
            'mpptovoc'        => \$mpptovoc,
            'mpptosmp'        => \$mpptosmp,
            'mpptomp2'        => \$mpptomp2,
            'mpptoac3'        => \$mpptoac3,
            'mpptola'         => \$mpptola,
            'mpptobonk'       => \$mpptobonk,
            'mpptowav'        => \$mpptowav,
            'mpptora'         => \$mpptora,
            
            'wvtomp3'         => \$wvtomp3,
            'wvtoogg'         => \$wvtoogg,
            'wvtoflac'        => \$wvtoflac,
            'wvtofla'         => \$wvtofla,
            'wvtoape'         => \$wvtoape,
            'wvtoshn'         => \$wvtoshn,
            'wvtoaac'         => \$wvtoaac,
            'wvtom4a'         => \$wvtom4a,
            'wvtomp4'         => \$wvtomp4,
            'wvtompc'         => \$wvtompc,
            'wvtompp'         => \$wvtompp,
            'wvtowv'          => \$wvtowv,
            'wvtoofr'         => \$wvtoofr,
            'wvtoofs'         => \$wvtoofs,
            'wvtotta'         => \$wvtotta,
            'wvtopac'         => \$wvtopac,
            'wvtolpac'        => \$wvtolpac,
            'wvtokxs'         => \$wvtokxs,
            'wvtoaiff'        => \$wvtoaiff,
            'wvtoau'          => \$wvtoau,
            'wvtosnd'         => \$wvtosnd,
            'wvtoraw'         => \$wvtoraw,
            'wvtovoc'         => \$wvtovoc,
            'wvtosmp'         => \$wvtosmp,
            'wvtomp2'         => \$wvtomp2,
            'wvtoac3'         => \$wvtoac3,
            'wvtola'          => \$wvtola,
            'wvtobonk'        => \$wvtobonk,
            'wvtowav'         => \$wvtowav,
            'wvtora'          => \$wvtora,
            
            'ofrtomp3'        => \$ofrtomp3,
            'ofrtoogg'        => \$ofrtoogg,
            'ofrtoflac'       => \$ofrtoflac,
            'ofrtofla'        => \$ofrtofla,
            'ofrtoape'        => \$ofrtoape,
            'ofrtoshn'        => \$ofrtoshn,
            'ofrtoaac'        => \$ofrtoaac,
            'ofrtom4a'        => \$ofrtom4a,
            'ofrtomp4'        => \$ofrtomp4,
            'ofrtompc'        => \$ofrtompc,
            'ofrtompp'        => \$ofrtompp,
            'ofrtowv'         => \$ofrtowv,
            'ofrtoofr'        => \$ofrtoofr,
            'ofrtoofs'        => \$ofrtoofs,
            'ofrtotta'        => \$ofrtotta,
            'ofrtopac'        => \$ofrtopac,
            'ofrtolpac'       => \$ofrtolpac,
            'ofrtokxs'        => \$ofrtokxs,
            'ofrtoaiff'       => \$ofrtoaiff,
            'ofrtoau'         => \$ofrtoau,
            'ofrtosnd'        => \$ofrtosnd,
            'ofrtoraw'        => \$ofrtoraw,
            'ofrtovoc'        => \$ofrtovoc,
            'ofrtosmp'        => \$ofrtosmp,
            'ofrtomp2'        => \$ofrtomp2,
            'ofrtoac3'        => \$ofrtoac3,
            'ofrtola'         => \$ofrtola,
            'ofrtobonk'       => \$ofrtobonk,
            'ofrtowav'        => \$ofrtowav,
            'ofrtora'         => \$ofrtora,
            
            'ofstomp3'        => \$ofstomp3,
            'ofstoogg'        => \$ofstoogg,
            'ofstoflac'       => \$ofstoflac,
            'ofstofla'        => \$ofstofla,
            'ofstoape'        => \$ofstoape,
            'ofstoshn'        => \$ofstoshn,
            'ofstoaac'        => \$ofstoaac,
            'ofstom4a'        => \$ofstom4a,
            'ofstomp4'        => \$ofstomp4,
            'ofstompc'        => \$ofstompc,
            'ofstompp'        => \$ofstompp,
            'ofstowv'         => \$ofstowv,
            'ofstoofr'        => \$ofstoofr,
            'ofstoofs'        => \$ofstoofs,
            'ofstotta'        => \$ofstotta,
            'ofstopac'        => \$ofstopac,
            'ofstolpac'       => \$ofstolpac,
            'ofstokxs'        => \$ofstokxs,
            'ofstoaiff'       => \$ofstoaiff,
            'ofstoau'         => \$ofstoau,
            'ofstosnd'        => \$ofstosnd,
            'ofstoraw'        => \$ofstoraw,
            'ofstovoc'        => \$ofstovoc,
            'ofstosmp'        => \$ofstosmp,
            'ofstomp2'        => \$ofstomp2,
            'ofstoac3'        => \$ofstoac3,
            'ofstola'         => \$ofstola,
            'ofstobonk'       => \$ofstobonk,
            'ofstowav'        => \$ofstowav,
            'ofstora'         => \$ofstora,
            
            'ttatomp3'        => \$ttatomp3,
            'ttatoogg'        => \$ttatoogg,
            'ttatoflac'       => \$ttatoflac,
            'ttatofla'        => \$ttatofla,
            'ttatoape'        => \$ttatoape,
            'ttatoshn'        => \$ttatoshn,
            'ttatoaac'        => \$ttatoaac,
            'ttatom4a'        => \$ttatom4a,
            'ttatomp4'        => \$ttatomp4,
            'ttatompc'        => \$ttatompc,
            'ttatompp'        => \$ttatompp,
            'ttatowv'         => \$ttatowv,
            'ttatoofr'        => \$ttatoofr,
            'ttatoofs'        => \$ttatoofs,
            'ttatotta'        => \$ttatotta,
            'ttatopac'        => \$ttatopac,
            'ttatolpac'       => \$ttatolpac,
            'ttatokxs'        => \$ttatokxs,
            'ttatoaiff'       => \$ttatoaiff,
            'ttatoau'         => \$ttatoau,
            'ttatosnd'        => \$ttatosnd,
            'ttatoraw'        => \$ttatoraw,
            'ttatovoc'        => \$ttatovoc,
            'ttatosmp'        => \$ttatosmp,
            'ttatomp2'        => \$ttatomp2,
            'ttatoac3'        => \$ttatoac3,
            'ttatola'         => \$ttatola,
            'ttatobonk'       => \$ttatobonk,
            'ttatowav'        => \$ttatowav,
            'ttatora'         => \$ttatora,
            
            'pactomp3'        => \$pactomp3,
            'pactoogg'        => \$pactoogg,
            'pactoflac'       => \$pactoflac,
            'pactofla'        => \$pactofla,
            'pactoape'        => \$pactoape,
            'pactoshn'        => \$pactoshn,
            'pactoaac'        => \$pactoaac,
            'pactom4a'        => \$pactom4a,
            'pactomp4'        => \$pactomp4,
            'pactompc'        => \$pactompc,
            'pactompp'        => \$pactompp,
            'pactowv'         => \$pactowv,
            'pactoofr'        => \$pactoofr,
            'pactoofs'        => \$pactoofs,
            'pactotta'        => \$pactotta,
            'pactopac'        => \$pactopac,
            'pactolpac'       => \$pactolpac,
            'pactokxs'        => \$pactokxs,
            'pactoaiff'       => \$pactoaiff,
            'pactoau'         => \$pactoau,
            'pactosnd'        => \$pactosnd,
            'pactoraw'        => \$pactoraw,
            'pactovoc'        => \$pactovoc,
            'pactosmp'        => \$pactosmp,
            'pactomp2'        => \$pactomp2,
            'pactoac3'        => \$pactoac3,
            'pactola'         => \$pactola,
            'pactobonk'       => \$pactobonk,
            'pactowav'        => \$pactowav,
            'pactora'         => \$pactora,
            
            'lpactomp3'       => \$lpactomp3,
            'lpactoogg'       => \$lpactoogg,
            'lpactoflac'      => \$lpactoflac,
            'lpactofla'       => \$lpactofla,
            'lpactoape'       => \$lpactoape,
            'lpactoshn'       => \$lpactoshn,
            'lpactoaac'       => \$lpactoaac,
            'lpactom4a'       => \$lpactom4a,
            'lpactomp4'       => \$lpactomp4,
            'lpactompc'       => \$lpactompc,
            'lpactompp'       => \$lpactompp,
            'lpactowv'        => \$lpactowv,
            'lpactoofr'       => \$lpactoofr,
            'lpactoofs'       => \$lpactoofs,
            'lpactotta'       => \$lpactotta,
            'lpactopac'       => \$lpactopac,
            'lpactolpac'      => \$lpactolpac,
            'lpactokxs'       => \$lpactokxs,
            'lpactoaiff'      => \$lpactoaiff,
            'lpactoau'        => \$lpactoau,
            'lpactosnd'       => \$lpactosnd,
            'lpactoraw'       => \$lpactoraw,
            'lpactovoc'       => \$lpactovoc,
            'lpactosmp'       => \$lpactosmp,
            'lpactomp2'       => \$lpactomp2,
            'lpactoac3'       => \$lpactoac3,
            'lpactola'        => \$lpactola,
            'lpactobonk'      => \$lpactobonk,
            'lpactowav'       => \$lpactowav,
            'lpactora'        => \$lpactora,
            
            'kxstomp3'        => \$kxstomp3,
            'kxstoogg'        => \$kxstoogg,
            'kxstoflac'       => \$kxstoflac,
            'kxstofla'        => \$kxstofla,
            'kxstoape'        => \$kxstoape,
            'kxstoshn'        => \$kxstoshn,
            'kxstoaac'        => \$kxstoaac,
            'kxstom4a'        => \$kxstom4a,
            'kxstomp4'        => \$kxstomp4,
            'kxstompc'        => \$kxstompc,
            'kxstompp'        => \$kxstompp,
            'kxstowv'         => \$kxstowv,
            'kxstoofr'        => \$kxstoofr,
            'kxstoofs'        => \$kxstoofs,
            'kxstotta'        => \$kxstotta,
            'kxstopac'        => \$kxstopac,
            'kxstolpac'       => \$kxstolpac,
            'kxstokxs'        => \$kxstokxs,
            'kxstoaiff'       => \$kxstoaiff,
            'kxstoau'         => \$kxstoau,
            'kxstosnd'        => \$kxstosnd,
            'kxstoraw'        => \$kxstoraw,
            'kxstovoc'        => \$kxstovoc,
            'kxstosmp'        => \$kxstosmp,
            'kxstomp2'        => \$kxstomp2,
            'kxstoac3'        => \$kxstoac3,
            'kxstola'         => \$kxstola,
            'kxstobonk'       => \$kxstobonk,
            'kxstowav'        => \$kxstowav,
            'kxstora'         => \$kxstora,
            
            'aifftomp3'       => \$aifftomp3,
            'aifftoogg'       => \$aifftoogg,
            'aifftoflac'      => \$aifftoflac,
            'aifftofla'       => \$aifftofla,
            'aifftoape'       => \$aifftoape,
            'aifftoshn'       => \$aifftoshn,
            'aifftoaac'       => \$aifftoaac,
            'aifftom4a'       => \$aifftom4a,
            'aifftomp4'       => \$aifftomp4,
            'aifftompc'       => \$aifftompc,
            'aifftompp'       => \$aifftompp,
            'aifftowv'        => \$aifftowv,
            'aifftoofr'       => \$aifftoofr,
            'aifftoofs'       => \$aifftoofs,
            'aifftotta'       => \$aifftotta,
            'aifftopac'       => \$aifftopac,
            'aifftolpac'      => \$aifftolpac,
            'aifftokxs'       => \$aifftokxs,
            'aifftoaiff'      => \$aifftoaiff,
            'aifftoau'        => \$aifftoau,
            'aifftosnd'       => \$aifftosnd,
            'aifftoraw'       => \$aifftoraw,
            'aifftovoc'       => \$aifftovoc,
            'aifftosmp'       => \$aifftosmp,
            'aifftomp2'       => \$aifftomp2,
            'aifftoac3'       => \$aifftoac3,
            'aifftola'        => \$aifftola,
            'aifftobonk'      => \$aifftobonk,
            'aifftowav'       => \$aifftowav,
            'aifftora'        => \$aifftora,
            
            'automp3'         => \$automp3,
            'autoogg'         => \$autoogg,
            'autoflac'        => \$autoflac,
            'autofla'         => \$autofla,
            'autoape'         => \$autoape,
            'autoshn'         => \$autoshn,
            'autoaac'         => \$autoaac,
            'autom4a'         => \$autom4a,
            'automp4'         => \$automp4,
            'autompc'         => \$autompc,
            'autompp'         => \$autompp,
            'autowv'          => \$autowv,
            'autoofr'         => \$autoofr,
            'autoofs'         => \$autoofs,
            'autotta'         => \$autotta,
            'autopac'         => \$autopac,
            'autolpac'        => \$autolpac,
            'autokxs'         => \$autokxs,
            'autoaiff'        => \$autoaiff,
            'autoau'          => \$autoau,
            'autosnd'         => \$autosnd,
            'autoraw'         => \$autoraw,
            'autovoc'         => \$autovoc,
            'autosmp'         => \$autosmp,
            'automp2'         => \$automp2,
            'autoac3'         => \$autoac3,
            'autola'          => \$autola,
            'autobonk'        => \$autobonk,
            'autowav'         => \$autowav,
            'autora'          => \$autora,
            
            'sndtomp3'        => \$sndtomp3,
            'sndtoogg'        => \$sndtoogg,
            'sndtoflac'       => \$sndtoflac,
            'sndtofla'        => \$sndtofla,
            'sndtoape'        => \$sndtoape,
            'sndtoshn'        => \$sndtoshn,
            'sndtoaac'        => \$sndtoaac,
            'sndtom4a'        => \$sndtom4a,
            'sndtomp4'        => \$sndtomp4,
            'sndtompc'        => \$sndtompc,
            'sndtompp'        => \$sndtompp,
            'sndtowv'         => \$sndtowv,
            'sndtoofr'        => \$sndtoofr,
            'sndtoofs'        => \$sndtoofs,
            'sndtotta'        => \$sndtotta, 
            'sndtopac'        => \$sndtopac,
            'sndtolpac'       => \$sndtolpac,
            'sndtokxs'        => \$sndtokxs,
            'sndtoaiff'       => \$sndtoaiff,
            'sndtoau'         => \$sndtoau,
            'sndtosnd'        => \$sndtosnd,
            'sndtoraw'        => \$sndtoraw,
            'sndtovoc'        => \$sndtovoc,
            'sndtosmp'        => \$sndtosmp,
            'sndtomp2'        => \$sndtomp2,
            'sndtoac3'        => \$sndtoac3,
            'sndtola'         => \$sndtola,
            'sndtobonk'       => \$sndtobonk,
            'sndtowav'        => \$sndtowav,
            'sndtora'         => \$sndtora,

            'rawtomp3'        => \$rawtomp3,
            'rawtoogg'        => \$rawtoogg,
            'rawtoflac'       => \$rawtoflac,
            'rawtofla'        => \$rawtofla,
            'rawtoape'        => \$rawtoape,
            'rawtoshn'        => \$rawtoshn,
            'rawtoaac'        => \$rawtoaac,
            'rawtom4a'        => \$rawtom4a,
            'rawtomp4'        => \$rawtomp4,
            'rawtompc'        => \$rawtompc,
            'rawtompp'        => \$rawtompp,
            'rawtowv'         => \$rawtowv,
            'rawtoofr'        => \$rawtoofr,
            'rawtoofs'        => \$rawtoofs,
            'rawtotta'        => \$rawtotta,
            'rawtopac'        => \$rawtopac,
            'rawtolpac'       => \$rawtolpac,
            'rawtokxs'        => \$rawtokxs,
            'rawtoaiff'       => \$rawtoaiff,
            'rawtoau'         => \$rawtoau,
            'rawtosnd'        => \$rawtosnd,
            'rawtoraw'        => \$rawtoraw,
            'rawtovoc'        => \$rawtovoc,
            'rawtosmp'        => \$rawtosmp,
            'rawtomp2'        => \$rawtomp2,
            'rawtoac3'        => \$rawtoac3,
            'rawtola'         => \$rawtola,
            'rawtobonk'       => \$rawtobonk,
            'rawtowav'        => \$rawtowav,
            'rawtora'         => \$rawtora,
            
            'voctomp3'        => \$voctomp3,
            'voctoogg'        => \$voctoogg,
            'voctoflac'       => \$voctoflac,
            'voctofla'        => \$voctofla,
            'voctoape'        => \$voctoape,
            'voctoshn'        => \$voctoshn,
            'voctoaac'        => \$voctoaac,
            'voctom4a'        => \$voctom4a,
            'voctomp4'        => \$voctomp4,
            'voctompc'        => \$voctompc,
            'voctompp'        => \$voctompp,
            'voctowv'         => \$voctowv,
            'voctoofr'        => \$voctoofr,
            'voctoofs'        => \$voctoofs,
            'voctotta'        => \$voctotta,
            'voctopac'        => \$voctopac,
            'voctolpac'       => \$voctolpac,
            'voctokxs'        => \$voctokxs,
            'voctoaiff'       => \$voctoaiff,
            'voctoau'         => \$voctoau,
            'voctosnd'        => \$voctosnd,
            'voctoraw'        => \$voctoraw,
            'voctovoc'        => \$voctovoc,
            'voctosmp'        => \$voctosmp,
            'voctomp2'        => \$voctomp2,
            'voctoac3'        => \$voctoac3,
            'voctola'         => \$voctola,
            'voctobonk'       => \$voctobonk,
            'voctowav'        => \$voctowav,
            'voctora'         => \$voctora,
            
            'smptomp3'        => \$smptomp3,
            'smptoogg'        => \$smptoogg,
            'smptoflac'       => \$smptoflac,
            'smptofla'        => \$smptofla,
            'smptoape'        => \$smptoape,
            'smptoshn'        => \$smptoshn,
            'smptoaac'        => \$smptoaac,
            'smptom4a'        => \$smptom4a,
            'smptomp4'        => \$smptomp4,
            'smptompc'        => \$smptompc,
            'smptompp'        => \$smptompp,
            'smptowv'         => \$smptowv,
            'smptoofr'        => \$smptoofr,
            'smptoofs'        => \$smptoofs,
            'smptotta'        => \$smptotta,
            'smptopac'        => \$smptopac,
            'smptolpac'       => \$smptolpac,
            'smptokxs'        => \$smptokxs,
            'smptoaiff'       => \$smptoaiff,
            'smptoau'         => \$smptoau,
            'smptosnd'        => \$smptosnd,
            'smptoraw'        => \$smptoraw,
            'smptovoc'        => \$smptovoc,
            'smptosmp'        => \$smptosmp,
            'smptomp2'        => \$smptomp2,
            'smptoac3'        => \$smptoac3,
            'smptola'         => \$smptola,
            'smptobonk'       => \$smptobonk,
            'smptowav'        => \$smptowav,
            'smptora'         => \$smptora,
            
            'mp2tomp3'        => \$mp2tomp3,
            'mp2toogg'        => \$mp2toogg,
            'mp2toflac'       => \$mp2toflac,
            'mp2tofla'        => \$mp2tofla,
            'mp2toape'        => \$mp2toape,
            'mp2toshn'        => \$mp2toshn,
            'mp2toaac'        => \$mp2toaac,
            'mp2tom4a'        => \$mp2tom4a,
            'mp2tomp4'        => \$mp2tomp4,
            'mp2tompc'        => \$mp2tompc,
            'mp2tompp'        => \$mp2tompp,
            'mp2towv'         => \$mp2towv,
            'mp2toofr'        => \$mp2toofr,
            'mp2toofs'        => \$mp2toofs,
            'mp2totta'        => \$mp2totta,
            'mp2topac'        => \$mp2topac,
            'mp2tolpac'       => \$mp2tolpac,
            'mp2tokxs'        => \$mp2tokxs,
            'mp2toaiff'       => \$mp2toaiff,
            'mp2toau'         => \$mp2toau,
            'mp2tosnd'        => \$mp2tosnd,
            'mp2toraw'        => \$mp2toraw,
            'mp2tovoc'        => \$mp2tovoc,
            'mp2tosmp'        => \$mp2tosmp,
            'mp2tomp2'        => \$mp2tomp2,
            'mp2toac3'        => \$mp2toac3,
            'mp2tola'         => \$mp2tola,
            'mp2tobonk'       => \$mp2tobonk,
            'mp2tora'         => \$mp2tora,
            'mp2towav'        => \$mp2towav,
            
            'ac3tomp3'        => \$ac3tomp3,
            'ac3toogg'        => \$ac3toogg,
            'ac3toflac'       => \$ac3toflac,
            'ac3tofla'        => \$ac3tofla,
            'ac3toape'        => \$ac3toape,
            'ac3toshn'        => \$ac3toshn,
            'ac3toaac'        => \$ac3toaac,
            'ac3tom4a'        => \$ac3tom4a,
            'ac3tomp4'        => \$ac3tomp4,
            'ac3tompc'        => \$ac3tompc,
            'ac3tompp'        => \$ac3tompp,
            'ac3towv'         => \$ac3towv,
            'ac3toofr'        => \$ac3toofr,
            'ac3toofs'        => \$ac3toofs,
            'ac3totta'        => \$ac3totta,
            'ac3topac'        => \$ac3topac,
            'ac3tolpac'       => \$ac3tolpac,
            'ac3tokxs'        => \$ac3tokxs,
            'ac3toaiff'       => \$ac3toaiff,
            'ac3toau'         => \$ac3toau,
            'ac3tosnd'        => \$ac3tosnd,
            'ac3toraw'        => \$ac3toraw,
            'ac3tovoc'        => \$ac3tovoc,
            'ac3tosmp'        => \$ac3tosmp,
            'ac3tomp2'        => \$ac3tomp2,
            'ac3toac3'        => \$ac3toac3,
            'ac3tola'         => \$ac3tola,
            'ac3tobonk'       => \$ac3tobonk,
            'ac3towav'        => \$ac3towav,
            'ac3tora'         => \$ac3tora,
            
            'latomp3'         => \$latomp3,
            'latoogg'         => \$latoogg,
            'latoflac'        => \$latoflac,
            'latofla'         => \$latofla,
            'latoape'         => \$latoape,
            'latoshn'         => \$latoshn,
            'latoaac'         => \$latoaac,
            'latom4a'         => \$latom4a,
            'latomp4'         => \$latomp4,
            'latompc'         => \$latompc,
            'latompp'         => \$latompp,
            'latowv'          => \$latowv,
            'latoofr'         => \$latoofr,
            'latoofs'         => \$latoofs,
            'latotta'         => \$latotta,
            'latopac'         => \$latopac,
            'latolpac'        => \$latolpac,
            'latokxs'         => \$latokxs,
            'latoaiff'        => \$latoaiff,
            'latoau'          => \$latoau,
            'latosnd'         => \$latosnd,
            'latoraw'         => \$latoraw,
            'latovoc'         => \$latovoc,
            'latosmp'         => \$latosmp,
            'latomp2'         => \$latomp2,
            'latoac3'         => \$latoac3,
            'latola'          => \$latola,
            'latobonk'        => \$latobonk,
            'latowav'         => \$latowav,
            'latora'          => \$latora,
            
            'bonktomp3'       => \$bonktomp3,
            'bonktoogg'       => \$bonktoogg,
            'bonktoflac'      => \$bonktoflac,
            'bonktofla'       => \$bonktofla,
            'bonktoape'       => \$bonktoape,
            'bonktoshn'       => \$bonktoshn,
            'bonktoaac'       => \$bonktoaac,
            'bonktom4a'       => \$bonktom4a,
            'bonktomp4'       => \$bonktomp4,
            'bonktompc'       => \$bonktompc,
            'bonktompp'       => \$bonktompp,
            'bonktowv'        => \$bonktowv,
            'bonktoofr'       => \$bonktoofr,
            'bonktoofs'       => \$bonktoofs,
            'bonktotta'       => \$bonktotta,
            'bonktopac'       => \$bonktopac,
            'bonktolpac'      => \$bonktolpac,
            'bonktokxs'       => \$bonktokxs,
            'bonktoaiff'      => \$bonktoaiff,
            'bonktoau'        => \$bonktoau,
            'bonktosnd'       => \$bonktosnd,
            'bonktoraw'       => \$bonktoraw,
            'bonktovoc'       => \$bonktovoc,
            'bonktosmp'       => \$bonktosmp,
            'bonktomp2'       => \$bonktomp2,
            'bonktoac3'       => \$bonktoac3,
            'bonktola'        => \$bonktola,
            'bonktobonk'      => \$bonktobonk,
            'bonktowav'       => \$bonktowav,
            'bonktora'        => \$bonktora,
            
            'wavtomp3'        => \$wavtomp3,
            'wavtoogg'        => \$wavtoogg,
            'wavtoflac'       => \$wavtoflac,
            'wavtofla'        => \$wavtofla,
            'wavtoape'        => \$wavtoape,
            'wavtoshn'        => \$wavtoshn,
            'wavtoaac'        => \$wavtoaac,
            'wavtom4a'        => \$wavtom4a,
            'wavtomp4'        => \$wavtomp4,
            'wavtompc'        => \$wavtompc,
            'wavtompp'        => \$wavtompp,
            'wavtowv'         => \$wavtowv,
            'wavtoofr'        => \$wavtoofr,
            'wavtoofs'        => \$wavtoofs,
            'wavtotta'        => \$wavtotta,
            'wavtopac'        => \$wavtopac,
            'wavtolpac'       => \$wavtolpac,
            'wavtokxs'        => \$wavtokxs,
            'wavtoaiff'       => \$wavtoaiff,
            'wavtoau'         => \$wavtoau,
            'wavtosnd'        => \$wavtosnd,
            'wavtoraw'        => \$wavtoraw,
            'wavtovoc'        => \$wavtovoc,
            'wavtosmp'        => \$wavtosmp,
            'wavtomp2'        => \$wavtomp2,
            'wavtoac3'        => \$wavtoac3,
            'wavtola'         => \$wavtola,
            'wavtobonk'       => \$wavtobonk,
            'wavtora'         => \$wavtora,
            
            'wmatomp3'        => \$wmatomp3,
            'wmatoogg'        => \$wmatoogg,
            'wmatoflac'       => \$wmatoflac,
            'wmatofla'        => \$wmatofla,
            'wmatoape'        => \$wmatoape,
            'wmatoshn'        => \$wmatoshn,
            'wmatoaac'        => \$wmatoaac,
            'wmatom4a'        => \$wmatom4a,
            'wmatomp4'        => \$wmatomp4,
            'wmatompc'        => \$wmatompc,
            'wmatompp'        => \$wmatompp,
            'wmatowv'         => \$wmatowv,
            'wmatoofr'        => \$wmatoofr,
            'wmatoofs'        => \$wmatoofs,
            'wmatotta'        => \$wmatotta,
            'wmatopac'        => \$wmatopac,
            'wmatolpac'       => \$wmatolpac,
            'wmatokxs'        => \$wmatokxs,
            'wmatoaiff'       => \$wmatoaiff,
            'wmatoau'         => \$wmatoau,
            'wmatosnd'        => \$wmatosnd,
            'wmatoraw'        => \$wmatoraw,
            'wmatovoc'        => \$wmatovoc,
            'wmatosmp'        => \$wmatosmp,
            'wmatomp2'        => \$wmatomp2,
            'wmatoac3'        => \$wmatoac3,
            'wmatola'         => \$wmatola,
            'wmatobonk'       => \$wmatobonk,
            'wmatowav'        => \$wmatowav,
            'wmatora'         => \$wmatora,
            
            'ratomp3'         => \$ratomp3,
            'ratoogg'         => \$ratoogg,
            'ratoflac'        => \$ratoflac,
            'ratofla'         => \$ratofla,
            'ratoape'         => \$ratoape,
            'ratoshn'         => \$ratoshn,
            'ratoaac'         => \$ratoaac,
            'ratom4a'         => \$ratom4a,
            'ratomp4'         => \$ratomp4,
            'ratompc'         => \$ratompc,
            'ratompp'         => \$ratompp,
            'ratowv'          => \$ratowv,
            'ratoofr'         => \$ratoofr,
            'ratoofs'         => \$ratoofs,
            'ratotta'         => \$ratotta,
            'ratopac'         => \$ratopac,
            'ratolpac'        => \$ratolpac,
            'ratokxs'         => \$ratokxs,
            'ratoaiff'        => \$ratoaiff,
            'ratoau'          => \$ratoau,
            'ratosnd'         => \$ratosnd,
            'ratoraw'         => \$ratoraw,
            'ratovoc'         => \$ratovoc,
            'ratosmp'         => \$ratosmp,
            'ratomp2'         => \$ratomp2,
            'ratoac3'         => \$ratoac3,
            'ratola'          => \$ratola,
            'ratobonk'        => \$ratobonk,
            'ratowav'         => \$ratowav,
            'ratora'          => \$ratora,
            
            'ramtomp3'        => \$ramtomp3,
            'ramtoogg'        => \$ramtoogg,
            'ramtoflac'       => \$ramtoflac,
            'ramtofla'        => \$ramtofla,
            'ramtoape'        => \$ramtoape,
            'ramtoshn'        => \$ramtoshn,
            'ramtoaac'        => \$ramtoaac,
            'ramtom4a'        => \$ramtom4a,
            'ramtomp4'        => \$ramtomp4,
            'ramtompc'        => \$ramtompc,
            'ramtompp'        => \$ramtompp,
            'ramtowv'         => \$ramtowv,
            'ramtoofr'        => \$ramtoofr,
            'ramtoofs'        => \$ramtoofs,
            'ramtotta'        => \$ramtotta,
            'ramtopac'        => \$ramtopac,
            'ramtolpac'       => \$ramtolpac,
            'ramtokxs'        => \$ramtokxs,
            'ramtoaiff'       => \$ramtoaiff,
            'ramtoau'         => \$ramtoau,
            'ramtosnd'        => \$ramtosnd,
            'ramtoraw'        => \$ramtoraw,
            'ramtovoc'        => \$ramtovoc,
            'ramtosmp'        => \$ramtosmp,
            'ramtomp2'        => \$ramtomp2,
            'ramtoac3'        => \$ramtoac3,
            'ramtola'         => \$ramtola,
            'ramtobonk'       => \$ramtobonk,
            'ramtowav'        => \$ramtowav,
            'ramtora'         => \$ramtora,  
          
            'h|help'          => \$help,
            'man'             => \$man,
            'url=s'           => \$url,
            'lh|longhelp'     => \$longhelp,
            'rh|riphelp'      => \$riphelp,
            'th|taghelp'      => \$taghelp,
            'vh|videohelp'    => \$videohelp,
            
            'nocddb'          => \$nocddb,
            'noinput'         => \$noinput,
            'cdinfo'          => \$cdinfo,
            
            'b|bitrate=i'     => \$bitrate,
            'ql|qlevel=i'     => \$qlevel,
            'dr|dratio=i'     => \$dratio,
            'ps|psize=i'      => \$psize,
            'll|lossless'     => \$lossless,
            'ac|channels=i'   => \$channels,
            'ar|arate=i'      => \$freq,
            'q|quality=i'     => \$quality,
            'c|flevel=i'      => \$flevel,
            'z|alevel=s'      => \$alevel,
            'i|slevel=i'      => \$slevel,
            'x|xlevel=s'      => \$xlevel,
            'm|mode=s'        => \$mode,
            'op|optimize=s'   => \$optimize,
            'e|plevel=i'      => \$plevel,
            'o|outdir=s'      => \$out_dir,
            'p|outfile=s'     => \$outfile,
            'version'         => \$ver,
            'delete'          => \$delete,
            'u|uopts=s'       => \$audio_opts,
            'ro|rawopts=s'    => \$raw_opts,
            'so|soxopts=s'    => \$sox_opts,
            'ef|effect=s'     => \$effect,
            'py|play=s'       => \$play,
            
            'tag=s'           => \%usertag,
            'showtag=s'       => \$showtag,

            'a|all'           => \$all,
            'pl|playlist=s'   => \$playlist,
            're|recursive'    => \$recursive,
            'pd|presdir'      => \$presdir,
            'f|file=s'        => \@file,
            'd|dir=s'         => \@dir,
            't|track=s'       => \@track,
            'ov|overwrite'    => \$overwrite,
            
            'ct|convertto=s'  => \$conv_to,
            'gui'             => \$gui,
            'daemon'          => \$daemon)
            
            or pac_msg("$lang{$mylang}{help_and_options}","error");
            
            pod2usage(-exitstatus => 0, -verbose => 2) if $man;



my $daemon_msg = 0;

# Daemon Mode
sub start_daemon {

    no warnings "recursion";
    
    pac_msg("$lang{$mylang}{mon_dirs_empty}", "error") unless($config{MONITOR} and $config{RECMON});
    pac_msg("$lang{$mylang}{pacpl_not_found}","error") unless(`which pacpl 2>/dev/null`);

    my $mdelsrc = '';
    my $moverw  = '';
    my $mout;

    if ($config{MOVERW}  eq "1") {   $moverw  = "--overwrite";   }

    print "\n$name - $version\n\n" if $daemon_msg ne 1;
    
    foreach my $mondir (split(/,/, $config{MONITOR})) { print "$lang{$mylang}{mon_dir} $mondir\n"     if $daemon_msg ne 1;  }
    foreach my $recmon (split(/,/, $config{RECMON}))  { print "$lang{$mylang}{rec_mon_dir} $recmon\n" if $daemon_msg ne 1;  }
    
               # process separate user defined directories
               foreach my $mdir (split(/,/, $config{MONITOR})) {
    
                          opendir(MDIR, "$mdir") or pac_msg("$lang{$mylang}{could_not_open_dir}: $mdir","error");
          
                       foreach my $mfile (readdir(MDIR)) {
                 
                               if ($mfile !~ /\.$config{COLTYPE}$/ and $mfile ne "." and $mfile ne ".." and $mfile ne "$mdir/.directory") {
                               
                                      $mout = $mfile;
                                      $mout =~ s/\.\w\w\w$|\.\w\w\w\w$//i;
                                      $mout = "$mout.$config{COLTYPE}";
                                      
                                   if (not -d "$mdir/$mfile" and -e "$mdir/$mfile") {
                                       system("pacpl -ct $config{COLTYPE} $moverw \"$mdir/$mfile\"");
                                       unlink("$mdir/$mfile") if $config{MDELSRC} eq 1 and -e "$mdir/$mout";
                                   }

                               }
                       }
               }
               
               # now process all user defined directories marked recursive...
               foreach my $r (split(/,/, $config{RECMON}))  {
               
                          $r = abs_path($r);
                          
                          find ( sub {
                                          
                                        my $rfile = $File::Find::name;
                                        
                                           if ($rfile !~ /\.$config{COLTYPE}$/ and $rfile ne "$r/.directory" and $rfile ne "." and $rfile ne "..") {
                                           
                                                    $mout = $rfile;
                                                    $mout =~ s/\.\w\w\w$|\.\w\w\w\w$//i;
                                                    $mout = "$mout.$config{COLTYPE}";
                                                                
      
                                                 if (not -d "$rfile" and -e "$rfile") {
                                                     system("pacpl -ct $config{COLTYPE} $moverw \"$rfile\"");
                                                     unlink("$r/$rfile") if $config{MDELSRC} eq 1 and -e "$r/$mout";
                                                 }
                                     
                                           }
                                                                                                                                          
                                     }, $r

                               );
               }
                                                                                                                                                                                      

               sleep($config{MINTERVAL});

               $daemon_msg = 1;

               start_daemon();

}
    
# Console / KDE - Notifications & Warnings
sub pac_msg {
   
   my ($message, $type) = @_;
   
   # Warnings / Error messages
   if ($type eq "error") {

        if ($kwarn eq '1' and $gui) {
            system("$kdialog --title \"$name - $version\" --$type \"$message\" &"); 
            exit(1);

        } else { print "\n$name - $version\n\n$message\n\n"; exit(1); } 

   }
   
   # Other messages / Notices
   elsif ($type eq "notice") {

        if ($kpopup eq '1' and $gui) {
            system("$kdialog --title \"PAC $version\" --$knotice \"$message\" $kdelay &"); 
    
        } else { print "\n$name - $version\n\n$message\n\n"; } 

   }
   
}

# Application URLs
my %app_location = ( lame       => 'http://lame.sourceforge.net',
                     oggenc     => 'http://www.vorbis.com',
                     oggdec     => 'http://www.vorbis.com',
                     flac       => 'http://flac.sourceforge.net',
                     mac        => 'http://www.sourceforge.net/projects/mac-port',
                     shorten    => 'http://www.etree.org/linux.html#reqsoft',
                     faac       => 'http://www.audiocoding.com',
                     faad       => 'http://www.audiocoding.com',
                     mppenc     => 'http://www.musepack.com',
                     mppdec     => 'http://www.musepack.com',
                     wavpack    => 'http://www.wavpack.com',
                     wvunpack   => 'http://www.wavpack.com',
                     ofr        => 'http://www.LosslessAudio.org',
                     ofs        => 'http://www.LosslessAudio.org',
                     ttaenc     => 'http://www.true-audio.com',
                     lpac       => 'http://www.nue.tu-berlin.de/wer/liebchen/lpac.html',
                     kexis      => 'http://sourceforge.net/projects/kexis',
                     sox        => 'http://sox.sourceforge.net',
                     mplayer    => 'http://www.mplayerhq.hu',
                     ffmpeg     => 'http://ffmpeg.sourceforge.net',
                     la         => 'http://www.lossless-audio.com',
                     bonk       => 'http://www.logarithmic.net/pfh/bonk',
                     cdparanoia => 'http://www.xiph.org/paranoia/',
                     kdialog    => 'http://www.kde.org/'
                   );
                   
# Check if required applications exist
sub check_apps {

  my ($encoder, $decoder) = '';
     ($encoder, $decoder) = @_;
  
  my  $enc_name = basename("$encoder") if $encoder;
  my  $dec_name = basename("$decoder") if $decoder;

  if ($encoder and not -e $encoder) { pac_msg("$lang{$mylang}{missing_app} $encoder\n\n$!","error");
                                      pac_msg("\n\n$lang{$mylang}{edit_conf_or_dl_from}\n\n$app_location{$enc_name}","error") if $app_location{$enc_name}; 
                                    }
                                    
  if ($decoder and not -e $decoder) { pac_msg("$lang{$mylang}{missing_app} $decoder\n\n$!","error");
                                      pac_msg("\n\n$lang{$mylang}{edit_conf_or_dl_from}\n\n$app_location{$dec_name}","error") if $app_location{$dec_name}; 
                                    }
      
}

# Make sure we have kdialog if any of the KDE options are set to 1
if ($kpopup    eq '1' and $gui and not -e $kdialog) { pac_msg("$lang{$mylang}{could_not_find} '$kdialog'\n\n$lang{$mylang}{edit_conf_or_check_inst}","error"); }
if ($kwarn     eq '1' and $gui and not -e $kdialog) { pac_msg("$lang{$mylang}{could_not_find} '$kdialog'\n\n$lang{$mylang}{edit_conf_or_check_inst}","error"); }
if ($kuseropts eq '1' and $gui and not -e $kdialog) { pac_msg("$lang{$mylang}{could_not_find} '$kdialog'\n\n$lang{$mylang}{edit_conf_or_check_inst}","error"); }

sub check_value { 
  my $value = shift;
      chomp($value);
    
  if (not $value) { exit 1; }
}

# Get user options through kdialog
sub get_user_opts {

 if ($kuseropts eq '1' and $gui) {

      if (grep(/bitrate/,    @_))  { $bitrate  = `$kdialog --default $bitrate  --combobox \"$name - $version\n\nSelect an Average Bitrate\n\nvoice             = 56kbps/mono\nfm/radio/tape = 112kbps\nhifi                 = 160kbps\ncd                  = 192kbps\nstudio            = 256kbps\n\" 56 112 128 160 192 256`; check_value("$bitrate"); }
      if (grep(/oggquality/, @_))  { $quality  = `$kdialog --default $quality  --combobox \"$name - $version\n\nEncoding quality.\n\n0 (low) and 10 (high).\" 0 1 2 3 4 5 6 7 8 9 10`; check_value("$quality"); }
      if (grep(/flevel/,     @_))  { $flevel   = `$kdialog --default $flevel   --combobox \"$name - $version\n\nFLAC\n\nCompression level\n\n0-8 (0 = fastest & 8 = highest )\" 0 1 2 3 4 5 6 7 8`; check_value("$flevel"); }
      if (grep(/alevel/,     @_))  { $alevel   = `$kdialog --default $alevel   --combobox \"$name - $version\n\nMonkey Audio (APE)\nCompression level\n\nFast: '1000'\nNormal: '2000'\nHigh: '3000'\nExtra high: '4000'\nInsane: '5000'\" 1000 2000 3000 4000 5000`; check_value("$alevel"); }
      if (grep(/slevel/,     @_))  { $slevel   = `$kdialog --default $slevel   --combobox \"$name - $version\n\nShorten (SHN)\nFormat version number\n\n(2: no seek info; 3: default)\" 2 3`; check_value("$slevel"); }
      if (grep(/aacquality/, @_))  { $quality  = `$kdialog --default 100       --combobox \"$name - $version\n\nFAAC (AAC/MP4)\nQuantizer quality\n\n\" 50 75 100 125 150`; check_value("$quality"); }
      if (grep(/xlevel/,     @_))  { $xlevel   = `$kdialog --default $xlevel   --combobox \"$name - $version\n\nMusepack (MPC)\nCompression level\n\nthumb        low quality/internet, (typ.  58... 86 kbps)\nradio         medium (MP3) quality, (typ. 112...152 kbps)\nstandard    high quality (dflt),  (typ. 142...184 kbps)\nxtreme      extreme high quality, (typ. 168...212 kbps)\ninsane       extreme high quality, (typ. 232...268 kbps)\nbraindead  extreme high quality, (typ. 232...278 kbps)\" thumb radio standard xtreme insane braindead`; check_value("$xlevel"); }
      if (grep(/plevel/,     @_))  { $plevel   = `$kdialog --default $plevel   --combobox \"$name - $version\n\nLPAC Compression\n\n1 = Fast, 2 = Simple, 3 = Medium (default), 4 = High, 5 = Extra High\" 1 2 3 4 5`; check_value("$plevel"); }
      if (grep(/mode/,       @_))  { $mode     = `$kdialog --default $mode     --combobox \"$name - $version\n\nOptimFrog (OFR/OFS) Compression mode\n\n(fast, normal, high, extra, best, highnew, extranew, bestnew)\" fast normal high extra best highnew extranew bestnew`; check_value("$mode"); }
      if (grep(/optimize/,   @_))  { $optimize = `$kdialog --default $optimize --combobox \"$name - $version\n\nOptimFrog (OFR/OFS) Optimization level\n\n(none, fast, normal, high, best)\" none fast normal high best`; check_value("$optimize"); }
      if (grep(/rate/,       @_))  { $freq     = `$kdialog --default $freq     --combobox \"$name - $version\n\nAudio Sampling Rate\" 32000 44100 48000`; check_value("$freq"); }
      if (grep(/channels/,   @_))  { $channels = `$kdialog --default $channels --combobox \"$name - $version\n\nNumber of audio channels\" 1 2 4`; check_value("$channels"); }
      if (grep(/qlevel/,     @_))  { $qlevel   = `$kdialog --default $qlevel   --combobox \"$name - $version\n\nQuantization level\" 1.0 1.5 2.0 2.5 3.0 3.5`; check_value("$qlevel"); }
      if (grep(/dratio/,     @_))  { $dratio   = `$kdialog --default $dratio   --combobox \"$name - $version\n\nDownsampling ratio\" 1 2 3 4 5`; check_value("$dratio"); }
      if (grep(/psize/,      @_))  { $psize    = `$kdialog --default $psize    --combobox \"$name - $version\n\nPredictor size\" 10 128`; check_value("$psize"); }
      if (grep(/lossless/,   @_))  { $lossless = `$kdialog --default 1         --combobox \"$name - $version\n\nLossless = 1  Lossy = 2\" 1 2`; check_value("$lossless"); }
   
   chomp($bitrate, $flevel,   $alevel,   
         $slevel,  $xlevel,   $plevel,  
         $mode,    $optimize, $quality,
         $freq,    $channels, $qlevel,
         $dratio,  $psize,    $lossless);
   
   undef($lossless) if $lossless eq 2;
   undef($kuseropts);
   
 }
}

# Play Audio
if (defined $play) {

   my $song = "$play";

   pac_play("mp3",  "$song")   if $play =~  /\.mp3$/i;
   pac_play("ogg",  "$song")   if $play =~  /\.ogg$/i;
   pac_play("flac", "$song")   if $play =~ /\.flac$/i;
   pac_play("mp4",  "$song")   if $play =~  /\.mp4$/i;
   pac_play("mp4",  "$song")   if $play =~  /\.m4a$/i;
   pac_play("mp4",  "$song")   if $play =~  /\.m4p$/i;
   pac_play("mpc",  "$song")   if $play =~  /\.mpc$/i;
   pac_play("bonk", "$song")   if $play =~ /\.bonk$/i;
   pac_play("wav",  "$song")   if $play =~  /\.wav$/i;
   pac_play("wav",  "$song")   if $play =~ /\.aiff$/i;
   pac_play("wav",  "$song")   if $play =~   /\.au$/i;
   pac_play("wav",  "$song")   if $play =~  /\.snd$/i;
   pac_play("raw",  "$song")   if $play =~  /\.raw$/i;
   pac_play("wav",  "$song")   if $play =~  /\.voc$/i;
   pac_play("wav",  "$song")   if $play =~  /\.smp$/i;
   pac_play("wma",  "$song")   if $play =~  /\.wma$/i;
   pac_play("ra",   "$song")   if $play =~   /\.ra$/i;
   pac_play("ra",   "$song")   if $play =~  /\.ram$/i;
   
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.ape$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.shn$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.aac$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~  /\.wv$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.ofr$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.ofs$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.tta$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.pac$/i;
   pac_msg("$lang{$mylang}{could_not_play}","error")   if $play =~ /\.kxs$/i;
   
}

sub pac_play {

    my $type = shift;
       
    # Priority Scheduling
    $nice = '';
    $nice = "$config{'NICE'} $config{'NICLEVEL'}" if $use_nice eq 1;
    check_apps($config{'NICE'})                   if $use_nice eq 1;
      
    pac_msg("$lang{$mylang}{playing}:-> \"$play\"","notice");
    
    if ($type eq  "mp3")  { check_apps($mp3player);  system("$nice $mp3player  $audio_opts \"$play\""); }
    if ($type eq  "ogg")  { check_apps($oggplayer);  system("$nice $oggplayer  $audio_opts \"$play\""); }
    if ($type eq "flac")  { check_apps($flacplayer); system("$nice $flacplayer $audio_opts \"$play\""); }
    if ($type eq  "mp4")  { check_apps($mp4player);  system("$nice $mp4player  $audio_opts \"$play\""); }
    if ($type eq  "mpc")  { check_apps($mpcplayer);  system("$nice $mpcplayer  $audio_opts \"$play\""); }
    if ($type eq  "wma")  { check_apps($wmaplayer);  system("$nice $wmaplayer  $audio_opts \"$play\""); }
    if ($type eq "bonk")  { check_apps($bonkplayer); system("$nice $bonkplayer $audio_opts \"$play\""); }
    if ($type eq  "wav")  { check_apps($wavplayer);  system("$nice $wavplayer  $audio_opts \"$play\""); }
    if ($type eq  "raw")  { check_apps($wavplayer);  system("$nice $wavplayer -c $channels -r $freq -f s -s w -t raw \"$play\""); }
    if ($type eq   "ra")  { check_apps($raplayer);   system("$nice $raplayer   $audio_opts \"$play\""); }
    
    exit(0);

}

# Get absolute path of out_dir
$out_dir = abs_path($out_dir) if $out_dir and not $presdir;
    
# Main
sub pac_convert {

if (%usertag) { pac_msg("'--tag' $lang{$mylang}{could_not_use_option}.","error"); }

my ($ext, $new_ext, $enc_opt, $ulink) = @_;

# Playlist Conversion
if ($playlist) {

    if (not -e $playlist or -z $playlist) {
        pac_msg("$lang{$mylang}{could_not_open} '$playlist'\n\n$!","error");
    }
    
open(FILE, "$playlist") or pac_msg("$lang{$mylang}{could_not_open} '$playlist'\n\n$!","error");
                        
        my @list = <FILE>;
           @list = grep(!/^#/, @list); # XMMS Playlist
        
        close(FILE);

        foreach my $i (@list) {
                chomp($i);
                push(@file, $i) if ($i =~/\.$ext/i);
    } 
                           
}
                                
# Single & Multiple Files
if (@file) {

   foreach $audio_file (@file) {
   
       unless(-e $audio_file) { pac_msg("'$audio_file' $lang{$mylang}{does_not_exist}","notice"); next }
   
       if ($audio_file =~ /\.$ext$/i) {

           $new_file = $audio_file;
           $new_file =~ s/\.$ext//gi;
           
           $out_file = "$new_file.$new_ext";           

       my $base_name = basename($new_file);
       my $dir_name  = dirname($new_file);
       
       # Remove commas from file names
       $new_file =~ s/,//g;
       
       if ($#file eq '0' and defined($outfile)) { 
 
           $out_file = "$outfile"; 
 
       } elsif ($#file gt '0' and defined($outfile)) { 
                pac_msg("'--outfile' $lang{$mylang}{error_multi_files}","error"); 
         }
                
       if ($koutdir eq '1' and $gui and not $get_out_directory and not $out_dir) { 

           my $cmd = "$kdialog --title \"$name - $version - $lang{$mylang}{file_destination}\" --getexistingdirectory ".getcwd(); 
           $out_dir = `$cmd`;
           chomp($out_dir); 
    
           $get_out_directory = 1;   

         if ($out_dir eq '') { exit 1; }
      
      unless(-w $out_dir) { 
             pac_msg("$lang{$mylang}{error_write_perm} '$out_dir'","error");
      }

    }       
    
      if ($out_dir) {
        
         if (-d $out_dir) {
              
                $out_file = "$out_dir/$base_name.$new_ext";
                      
         } else { pac_msg("$lang{$mylang}{could_not_open_dir}: $out_dir\n\n$!","error"); }
                            
      }
    
    if (-e $out_file and $overwrite or not -e $out_file) {
    
    pac_msg("$lang{$mylang}{start_convert}\n$base_name.$ext ->\n$out_file", "notice")            if     $outfile;
    pac_msg("$lang{$mylang}{start_convert}\n$base_name.$ext ->\n$base_name.$new_ext", "notice")  if not $outfile;
    
    # Make System Call
    
    sys_call($enc_opt, $audio_file, $new_file, $out_file);

    pac_msg("$lang{$mylang}{end_convert}\n\n$base_name.$ext ->\n$out_file\n", "notice")           if     $outfile and -e $out_file;
    pac_msg("$lang{$mylang}{end_convert}\n\n$base_name.$ext ->\n$base_name.$new_ext\n", "notice") if not $outfile and -e $out_file;
    
    } else { pac_msg("'$out_file' $lang{$mylang}{outfile_exists}","notice"); }
    
    sleep($kdelay) if $gui;
    
    # Remove temp wav file if created
    unlink("$new_file.wav") if $ulink eq 1 and "$new_file.wav" ne $audio_file;

    # Remove source file after conversion (--delete)
    if (defined $delete and $audio_file ne $out_file and -e $out_file) {
        unlink("$audio_file");
        pac_msg("$lang{$mylang}{remove_src_file} '$audio_file'","notice");
    }
    
   } else { pac_msg("'$audio_file' $lang{$mylang}{not_src_type}.","notice") if not $gui and not $recursive; }
  }

} # End --file

                                                                 
# Directory Conversion
if (@dir) {

# Recursivley scan directory
if ($recursive and not $conv_to and not $presdir) {

      my @rec_dir = @dir;
      undef(@dir);

  foreach my $r (@rec_dir)  {
   
             $r = abs_path($r);

                  find ( sub {
   
                          my $rfile = $File::Find::name;
                          @file=();
                          push(@file, $rfile);
                          pac_convert("$ext", "$new_ext", "$enc_opt", "$ulink");
                       
                         }, $r
                                 
                       );
  }
  
} elsif ($recursive and not $conv_to and $presdir) {

         my @rec_dir = @dir;
             undef(@dir);

         $pdir = "$rec_dir[0]";
         
         $pdir = abs_path($pdir);
         $pfmt = $new_ext;
                                             
         preserve_dir($pdir);
         
  } else {
                                      
    my $pwd = getcwd();

       foreach my $audio_dir (@dir) {

               chdir($pwd);

       unless(-d $audio_dir) { pac_msg("$lang{$mylang}{could_not_open_dir} '$audio_dir'","notice"); next }

               opendir(DIR, "$audio_dir") or pac_msg("$lang{$mylang}{could_not_open_dir} '$audio_dir'\n\n$!","error");
               chdir($audio_dir)          or pac_msg("$lang{$mylang}{could_not_open_dir} '$audio_dir'\n\n$!","error");

     my @dir_content = readdir(DIR);
                      closedir(DIR); 

     if ($#dir_content) { pac_msg("$#dir_content Directory empty, try using the --recursive option","error"); }                      

     foreach $audio_file (@dir_content) {

           if ($audio_file =~ /\.$ext$/i) {
        
               $new_file = $audio_file;
               $new_file =~ s/\.$ext//gi;
               
               $out_file = "$new_file.$new_ext";
               
           my ($base_name, $dir) = fileparse($new_file);
     
     # Remove commas from filename
     $new_file =~ s/,//g;
     
     if ($gui and not $get_out_directory and $koutdir eq 1 and not $out_dir) {

         my $cmd = "$kdialog --title \"PAC $version - $lang{$mylang}{file_destination}\" --getexistingdirectory ".getcwd();
         $out_dir = `$cmd`;
         chomp($out_dir);

         $get_out_directory = 1;

          if ($out_dir eq '') { exit 1; }

          unless(-w $out_dir) { pac_msg("$lang{$mylang}{error_write_perm} '$out_dir'","error"); }

     }

     if ($out_dir) {
       if (-d $out_dir) { $out_file = "$out_dir/$base_name.$new_ext";
     } else { pac_msg("$lang{$mylang}{could_not_open_dir} '$out_dir':\n\n$!","error"); } }
                                              
     if (-e $out_file and $overwrite or not -e $out_file) {

     pac_msg("$lang{$mylang}{start_convert}\n$base_name.$ext ->\n$base_name.$new_ext", "notice");
     
     # Make System Call
     sys_call($enc_opt, $audio_file, $new_file, $out_file);

     pac_msg("$lang{$mylang}{end_convert}\n\n$base_name.$ext ->\n$base_name.$new_ext\n", "notice") if -e $out_file;

     } else { pac_msg("'$out_file' $lang{$mylang}{outfile_exists}","notice"); }

     # Remove tmp wav file if created
     unlink("$new_file.wav") if $ulink eq 1 and "$new_file.wav" ne $audio_file;
     
     # Remove source file after conversion (--delete)
     if (defined $delete and $audio_file ne $out_file and -e $out_file) {
         unlink("$audio_file");
         pac_msg("$lang{$mylang}{remove_src_file} '$audio_file'","notice");
      }
     } 
    }
   }
  } 
} # End --dir
 
if (not @dir and not @file and not $playlist) { pac_msg("$lang{$mylang}{please_specify_opt} --dir, --file, --playlist\n\n$!","error"); }

} 

$out_copy = $out_dir if defined($out_dir);

# Preserve Directory Structure
sub post_preserve {

        my $to = $pfmt;
    
            undef $out_dir if defined $out_dir;
        
         if (! -d $out_copy) { mkdir($out_copy); }
            
             $out_copy = abs_path($out_copy);
                
             my $i = $File::Find::name;
                    
             my $presdirs;
             my $outdirs;
                            
                if (-d $i and $i ne $pdir) {

                    my $out = $i;
                       $out =~ s/$pdir\///g;
                     
                       $presdirs = "$pdir/$out";
                       $outdirs  = "$out_copy/$out";
                                    
                       $out_dir = "$outdirs";
                       
                       if (-d $i and not -d $outdirs) { mkdir("$out_dir"); }
                                           
                        opendir(IN, "$presdirs") or pac_msg("$lang{$mylang}{could_not_open_diir} '$out_dir':\n\n$!","error");
                                                  
                              foreach my $i (readdir(IN)) {
                                                          
                                      if (not -d $i and not -d "$presdirs/$i") {
                                                                  
                                          mkdir("$outdirs") if not -d $outdirs;
                                          @file=();
                                          push(@file,      "$presdirs/$i");
                                          convert_to("$to","$presdirs/$i");
                                       }
                              }
                     
                              undef $presdirs;
                              undef $outdirs;
                                   
                } elsif (-d $i and $i eq $pdir) {
    
                          $presdirs = "$pdir";
                          $outdirs  = "$out_copy";
    
                          $out_dir = "$outdirs";
                         
                          opendir(IN, "$presdirs") or pac_msg("$lang{$mylang}{could_not_open_dir} '$out_dir':\n\n$!","error");
                                
                             foreach my $i (readdir(IN)) {
                                       
                                     if (not -d $i and not -d "$presdirs/$i") {
                                         @file=();
                                         push(@file,       "$presdirs/$i"); 
                                         convert_to("$to", "$presdirs/$i");
                                     }
                             }
                             
                             undef $presdirs;
                             undef $outdirs;                                                                                            
                   }
}

# Find all directories (Preserve Directory)
sub preserve_dir {
    find ({wanted => \&post_preserve, no_chdir => 1, follow => 0}, $pdir);
}

# Batch transcoding
sub batch_convert { 

    my @batch_files;

    # File Batch
    if (@file)  {

             @batch_files = @file;

     foreach my $i (@batch_files)  {
             @file=();
             push(@file, $i);
             convert_to("$conv_to","$i");
     }

    # Directory batch
    } elsif (@dir) {
    
         my @batch_dir = @dir;
            undef(@dir);
            
            $pdir = $batch_dir[0];
        
       if (not $recursive) { 
         foreach my $d (@batch_dir) {

                 opendir(BATCHDIR, "$d") or pac_msg("$lang{$mylang}{could_not_open_dir} '$d'\n\n$!","error");
                 @batch_files = readdir(BATCHDIR);
                 closedir(BATCHDIR);
      
               foreach my $f (@batch_files) {
                       @file=();
                       push(@file, "$d/$f")             if not -d $f and not -d "$d/$f";
                       convert_to("$conv_to","$d/$f")   if not -d $f and not -d "$d/$f";
               }
         }
       } elsif ($recursive) { 

            if (not $presdir) {

             foreach my $r (@batch_dir) {
             
                        $r = abs_path($r);
             
                     find ( sub {
                              
                             my $rfile = $File::Find::name;
                                @file=();
                              
                                push(@file, $rfile);
                                convert_to("$conv_to","$rfile") if not -d $rfile;

                                }, $r
                          );
             }
            } #end if (not presdir) 
            
            elsif ($presdir) {
            
                   $pdir = abs_path($pdir);
                   $pfmt = $conv_to;
            
                   preserve_dir($pdir);
            } # end elsif (presdir)
            
         }

      }  elsif ($playlist) { 
             
             if (not -e $playlist or -z $playlist) {
                 pac_msg("$lang{$mylang}{could_not_open} '$playlist'\n\n$!","error");
             }
                
                 open(FILE, "$playlist") or pac_msg("$lang{$mylang}{could_not_open} '$playlist'\n\n$!","error");
                 
                 my @list = <FILE>;
                    @list = grep(!/^#/, @list); # XMMS Playlist
                                   
                    close(FILE);
                    undef($playlist);
                                           
                           foreach my $i (@list) {
                                         chomp($i);
                                         @file=();
                                         push(@file, $i);
                                         convert_to("$conv_to","$i");
                           }
                                                                                       
         } else { pac_msg("$lang{$mylang}{please_specify_opt} --dir, --file, --playlist\n\n$!","error"); }
}

sub convert_to {

    my ($format, $file) = @_;
    
    # -> MP3
    if ($format eq "mp3")   {  
    
          check_apps($lame);
          get_user_opts("bitrate","rate") if $gui;
                     
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "mp3",  "mp3tomp3",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "mp3",  "oggtomp3",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "mp3",  "flactomp3", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "mp3",  "flactomp3", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "mp3",  "apetomp3",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "mp3",  "shntomp3",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "mp3",  "aactomp3",  "0"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "mp3",  "mp4tomp3",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "mp3",  "mp4tomp3",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "mp3",  "mpctomp3",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "mp3",  "mpctomp3",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "mp3",  "wvtomp3",   "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "mp3",  "ofrtomp3",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "mp3",  "ofstomp3",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "mp3",  "ttatomp3",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "mp3",  "pactomp3",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "mp3",  "pactomp3",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "mp3",  "kxstomp3",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "mp3",  "aifftomp3", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "mp3",  "aifftomp3", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "mp3",  "aifftomp3", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "mp3",  "rawtomp3",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "mp3",  "aifftomp3", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "mp3",  "aifftomp3", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "mp3",  "mp2tomp3",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "mp3",  "mp2tomp3",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "mp3",  "latomp3",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "mp3",  "bonktomp3", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($lame);      pac_convert("wav",  "mp3",  "wavtomp3",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "mp3",  "wmatomp3",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "mp3",  "ratomp3",   "1"); }

          # Video 
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "mp3",  "ratomp3",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "mp3",  "ratomp3",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "mp3",  "ratomp3",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
          
    }
    
    # -> Ogg Vorbis
    elsif ($format eq "ogg")   {
    
          check_apps($oggenc);
          get_user_opts("oggquality","rate") if $gui;
          
          # Audio 
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "ogg",  "mp3toogg",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "ogg",  "oggtoogg",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "ogg",  "flactoogg", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "ogg",  "flactoogg", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "ogg",  "apetoogg",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "ogg",  "shntoogg",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "ogg",  "aactoogg",  "0"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "ogg",  "mp4toogg",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "ogg",  "mp4toogg",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "ogg",  "mpctoogg",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "ogg",  "mpctoogg",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "ogg",  "wvtoogg",   "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "ogg",  "ofrtoogg",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "ogg",  "ofstoogg",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "ogg",  "ttatoogg",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "ogg",  "pactoogg",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "ogg",  "pactoogg",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "ogg",  "kxstoogg",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "ogg",  "aifftoogg", "1"); } 
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "ogg",  "aifftoogg", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "ogg",  "aifftoogg", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "ogg",  "rawtoogg",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "ogg",  "aifftoogg", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "ogg",  "aifftoogg", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "ogg",  "mp2toogg",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "ogg",  "mp2toogg",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "ogg",  "latoogg",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "ogg",  "bonktoogg", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($oggenc);    pac_convert("wav",  "ogg",  "wavtoogg",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "ogg",  "wmatoogg",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "ogg",  "ratoogg",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "ogg",  "ratoogg",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "ogg",  "ratoogg",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "ogg",  "ratoogg",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
          
    }
    
    # -> FLAC
    elsif ($format eq "flac")  {
          
          check_apps($flac);
          get_user_opts("flevel") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "flac", "mp3toflac", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "flac", "oggtoflac", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "flac", "flactoflac","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "flac", "flactoflac","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "flac", "apetoflac", "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "flac", "shntoflac", "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "flac", "aactoflac", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "flac", "mp4toflac", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "flac", "mp4toflac", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "flac", "mpctoflac", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "flac", "mpctoflac", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "flac", "wvtoflac",  "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "flac", "ofrtoflac", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "flac", "ofstoflac", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "flac", "ttatoflac", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "flac", "pactoflac", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "flac", "pactoflac", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "flac", "kxstoflac", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "flac", "aifftoflac","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "flac", "aifftoflac","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "flac", "aifftoflac","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "flac", "rawtoflac", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "flac", "aifftoflac","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "flac", "aifftoflac","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "flac", "mp2toflac", "0"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "flac", "mp2toflac", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "flac", "latoflac",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "flac", "bonktoflac","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($flac);      pac_convert("wav",  "flac", "wavtoflac", "1"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "flac", "wmatoflac", "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "flac", "ratoflac",  "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "flac", "ratoflac",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "flac", "ratoflac",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "flac", "ratoflac",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "flac", "ratoflac",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "flac", "ratoflac",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "flac", "ratoflac",  "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> FLAC (FLA)
    elsif ($format eq "fla")  {
            
          check_apps($flac);
          get_user_opts("flevel") if $gui;
                                
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "fla", "mp3toflac", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "fla", "oggtoflac", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "fla", "flactoflac","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "fla", "flactoflac","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "fla", "apetoflac", "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "fla", "shntoflac", "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "fla", "aactoflac", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "fla", "mp4toflac", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "fla", "mp4toflac", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "fla", "mpctoflac", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "fla", "mpctoflac", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "fla", "wvtoflac",  "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "fla", "ofrtoflac", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "fla", "ofstoflac", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "fla", "ttatoflac", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "fla", "pactoflac", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "fla", "pactoflac", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "fla", "kxstoflac", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "fla", "aifftoflac","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "fla", "aifftoflac","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "fla", "aifftoflac","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "fla", "rawtoflac", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "fla", "aifftoflac","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "fla", "aifftoflac","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "fla", "mp2toflac", "0"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "fla", "mp2toflac", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "fla", "latoflac",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "fla", "bonktoflac","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($flac);      pac_convert("wav",  "fla", "wavtoflac", "1"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "fla", "wmatoflac", "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "fla", "ratoflac",  "1"); }
                                                                                                                                                      
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "fla", "ratoflac",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "fla", "ratoflac",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "fla", "ratoflac",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "fla", "ratoflac",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "fla", "ratoflac",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "fla", "ratoflac",  "1"); }
                          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                                
    }

    # -> Monkey Audio (APE)
    elsif ($format eq "ape")   {
      
          check_apps($mac);
          get_user_opts("alevel") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "ape",  "mp3toape",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "ape",  "oggtoape",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "ape",  "flactoape", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "ape",  "flactoape", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "ape",  "apetoape",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "ape",  "shntoape",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "ape",  "aactoape",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "ape",  "mp4toape",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "ape",  "mp4toape",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "ape",  "mpctoape",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "ape",  "mpctoape",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "ape",  "wvtoape",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "ape",  "ofrtoape",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "ape",  "ofstoape",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "ape",  "ttatoape",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "ape",  "pactoape",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "ape",  "pactoape",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "ape",  "kxstoape",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "ape",  "aifftoape", "1"); } 
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "ape",  "aifftoape", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "ape",  "aifftoape", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "ape",  "rawtoape",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "ape",  "aifftoape", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "ape",  "aifftoape", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "ape",  "mp2toape",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "ape",  "mp2toape",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "ape",  "latoape",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "ape",  "bonktoape", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($mac);       pac_convert("wav",  "ape",  "wavtoape",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "ape",  "wmatoape",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "ape",  "ratoape",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "ape",  "ratoape",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "ape",  "ratoape",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "ape",  "ratoape",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "ape",  "ratoape",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "ape",  "ratoape",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "ape",  "ratoape",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
            
    }
    
    # -> Shorten (SHN) 
    elsif ($format eq "shn")   {
    
          check_apps($shorten);
          get_user_opts("slevel","channels") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "shn",  "mp3toshn",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "shn",  "oggtoshn",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "shn",  "flactoshn", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "shn",  "flactoshn", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "shn",  "apetoshn",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "shn",  "shntoshn",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "shn",  "aactoshn",  "0"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "shn",  "mp4toshn",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "shn",  "mp4toshn",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "shn",  "mpctoshn",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "shn",  "mpctoshn",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "shn",  "wvtoshn",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "shn",  "ofrtoshn",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "shn",  "ofstoshn",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "shn",  "ttatoshn",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "shn",  "pactoshn",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "shn",  "pactoshn",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "shn",  "kxstoshn",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "shn",  "aifftoshn", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "shn",  "aifftoshn", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "shn",  "aifftoshn", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "shn",  "rawtoshn",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "shn",  "aifftoshn", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "shn",  "aifftoshn", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "shn",  "mp2toshn",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "shn",  "mp2toshn",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "shn",  "latoshn",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "shn",  "bonktoshn", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($shorten);   pac_convert("wav",  "shn",  "wavtoshn",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "shn",  "wmatoshn",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "shn",  "ratoshn",   "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "shn",  "ratoshn",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "shn",  "ratoshn",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "shn",  "ratoshn",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
      
    }          

    # -> FAAC (AAC)        
    elsif ($format eq "aac")   {
    
          check_apps($faac);
          get_user_opts("aacquality") if $gui;
          
          # Audio  
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "aac",  "mp3toaac",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "aac",  "oggtoaac",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "aac",  "flactoaac", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "aac",  "flactoaac", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "aac",  "apetoaac",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "aac",  "shntoaac",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "aac",  "aactoaac",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "aac",  "mp4toaac",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "aac",  "mp4toaac",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "aac",  "mpctoaac",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "aac",  "mpctoaac",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "aac",  "wvtoaac",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "aac",  "ofrtoaac",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "aac",  "ofstoaac",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "aac",  "ttatoaac",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "aac",  "pactoaac",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "aac",  "pactoaac",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "aac",  "kxstoaac",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "aac",  "aifftoaac", "1"); } 
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "aac",  "aifftoaac", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "aac",  "aifftoaac", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "aac",  "rawtoaac",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "aac",  "aifftoaac", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "aac",  "aifftoaac", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "aac",  "mp2toaac",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "aac",  "mp2toaac",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "aac",  "latoaac",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "aac",  "bonktoaac", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($faac);      pac_convert("wav",  "aac",  "wavtoaac",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "aac",  "wmatoaac",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "aac",  "ratoaac",   "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "aac",  "ratoaac",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "aac",  "ratoaac",   "1"); }          
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "aac",  "ratoaac",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "aac",  "ratoaac",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                                                         
    }
    
    # -> FAAC (M4A)
    elsif ($format eq "m4a")   {
    
          check_apps($faac);
          get_user_opts("aacquality") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "m4a",  "mp3tomp4",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "m4a",  "oggtomp4",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "m4a",  "flactomp4", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "m4a",  "flactomp4", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "m4a",  "apetomp4",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "m4a",  "shntomp4",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "m4a",  "aactomp4",  "0"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "m4a",  "mp4tomp4",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "m4a",  "mp4tomp4",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "m4a",  "mpctomp4",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "m4a",  "mpctomp4",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "m4a",  "wvtomp4",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "m4a",  "ofrtomp4",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "m4a",  "ofstomp4",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "m4a",  "ttatomp4",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "m4a",  "pactomp4",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "m4a",  "pactomp4",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "m4a",  "kxstomp4",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "m4a",  "aifftomp4", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "m4a",  "aifftomp4", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "m4a",  "aifftomp4", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "m4a",  "rawtomp4",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "m4a",  "aifftomp4", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "m4a",  "aifftomp4", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "m4a",  "mp2tomp4",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "m4a",  "mp2tomp4",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "m4a",  "latomp4",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "m4a",  "bonktomp4", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($faac);      pac_convert("wav",  "m4a",  "wavtomp4",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "m4a",  "wmatomp4",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "m4a",  "ratomp4",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "m4a",  "ratomp4",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "m4a",  "ratomp4",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "m4a",  "ratomp4",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
    
    }
    
    # -> FAAC (MP4)
    elsif ($format eq "mp4")   {
    
          check_apps($faac);
          get_user_opts("aacquality") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "mp4",  "mp3tomp4",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "mp4",  "oggtomp4",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "mp4",  "flactomp4", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "mp4",  "flactomp4", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "mp4",  "apetomp4",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "mp4",  "shntomp4",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "mp4",  "aactomp4",  "0"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "mp4",  "mp4tomp4",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "mp4",  "mp4tomp4",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "mp4",  "mpctomp4",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "mp4",  "mpctomp4",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "mp4",  "wvtomp4",   "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofr);       pac_convert("ofr",  "mp4",  "ofrtomp4",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "mp4",  "ofstomp4",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "mp4",  "ttatomp4",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "mp4",  "pactomp4",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "mp4",  "pactomp4",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "mp4",  "kxstomp4",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "mp4",  "aifftomp4", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "mp4",  "aifftomp4", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "mp4",  "aifftomp4", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "mp4",  "rawtomp4",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "mp4",  "aifftomp4", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "mp4",  "aifftomp4", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "mp4",  "mp2tomp4",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "mp4",  "mp2tomp4",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "mp4",  "latomp4",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "mp4",  "bonktomp4", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($faac);      pac_convert("wav",  "mp4",  "wavtomp4",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "mp4",  "wmatomp4",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "mp4",  "ratomp4",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "mp4",  "ratomp4",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "mp4",  "ratomp4",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "mp4",  "ratomp4",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
    
    }    
    
    # -> Musepack (MPC)
    elsif ($format eq "mpc")   {
    
          check_apps($mppenc);
          get_user_opts("xlevel") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "mpc",  "mp3tompc",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "mpc",  "oggtompc",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "mpc",  "flactompc", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "mpc",  "flactompc", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "mpc",  "apetompc",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "mpc",  "shntompc",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "mpc",  "aactompc",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "mpc",  "mp4tompc",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "mpc",  "mp4tompc",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "mpc",  "mpctompc",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "mpc",  "mpctompc",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "mpc",  "wvtompc",   "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "mpc",  "ofrtompc",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "mpc",  "ofstompc",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "mpc",  "ttatompc",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "mpc",  "pactompc",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "mpc",  "pactompc",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "mpc",  "kxstompc",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "mpc",  "aifftompc", "1"); } 
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "mpc",  "aifftompc", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "mpc",  "aifftompc", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "mpc",  "rawtompc",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "mpc",  "aifftompc", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "mpc",  "aifftompc", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "mpc",  "mp2tompc",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "mpc",  "mp2tompc",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "mpc",  "latompc",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "mpc",  "bonktompc", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($mppenc);    pac_convert("wav",  "mpc",  "wavtompc",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "mpc",  "wmatompc",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "mpc",  "ratompc",   "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "mpc",  "ratompc",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "mpc",  "ratompc",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "mpc",  "ratompc",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }          
    
    # -> Musepack (MPP)
    elsif ($format eq "mpp")   {
    
          check_apps($mppenc); 
          get_user_opts("xlevel") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "mpp",  "mp3tompc",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "mpp",  "oggtompc",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "mpp",  "flactompc", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "mpp",  "flactompc", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "mpp",  "apetompc",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "mpp",  "shntompc",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "mpp",  "aactompc",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "mpp",  "mp4tompc",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "mpp",  "mp4tompc",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "mpp",  "mpctompc",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "mpp",  "mpctompc",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "mpp",  "wvtompc",   "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "mpp",  "ofrtompc",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "mpp",  "ofstompc",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "mpp",  "ttatompc",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "mpp",  "pactompc",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "mpp",  "pactompc",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "mpp",  "kxstompc",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "mpp",  "aifftompc", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "mpp",  "aifftompc", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "mpp",  "aifftompc", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "mpp",  "rawtompc",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "mpp",  "aifftompc", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "mpp",  "aifftompc", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "mpp",  "mp2tompc",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "mpp",  "mp2tompc",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "mpp",  "latompc",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "mpp",  "bonktompc", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($mppenc);    pac_convert("wav",  "mpp",  "wavtompc",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "mpp",  "wmatompc",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "mpp",  "ratompc",   "1"); }
      
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "mpp",  "ratompc",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "mpp",  "ratompc",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "mpp",  "ratompc",   "1"); }
                                                                     
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
    
    }
    
    # -> Wavpack (WV)
    elsif ($format eq "wv")    {
    
          check_apps($wavpack);
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "wv",   "mp3towv",   "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "wv",   "oggtowv",   "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "wv",   "flactowv",  "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "wv",   "flactowv",  "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "wv",   "apetowv",   "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "wv",   "shntowv",   "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "wv",   "aactowv",   "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "wv",   "mp4towv",   "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "wv",   "mp4towv",   "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "wv",   "mpctowv",   "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "wv",   "mpctowv",   "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "wv",   "wvtowv",    "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "wv",   "ofrtowv",   "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "wv",   "ofstowv",   "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "wv",   "ttatowv",   "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "wv",   "pactowv",   "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "wv",   "pactowv",   "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "wv",   "kxstowv",   "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "wv",   "aifftowv",  "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "wv",   "aifftowv",  "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "wv",   "aifftowv",  "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "wv",   "rawtowv",   "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "wv",   "aifftowv",  "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "wv",   "aifftowv",  "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "wv",   "mp2towv",   "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "wv",   "mp2towv",   "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "wv",   "latowv",    "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "wv",   "bonktowv",  "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($wavpack);   pac_convert("wav",  "wv",   "wavtowv",   "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "wv",   "wmatowv",   "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "wv",   "ratowv",    "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "wv",   "ratowv",    "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "wv",   "ratowv",    "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "wv",   "ratowv",    "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "wv",   "ratowv",    "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "wv",   "ratowv",    "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "wv",   "ratowv",    "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
 
    }
    
    # -> OptimFrog (OFR)
    elsif ($format eq "ofr")   {
    
          check_apps($ofr);
          get_user_opts("mode","optimize") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "ofr",  "mp3toofr",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "ofr",  "oggtoofr",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "ofr",  "flactoofr", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "ofr",  "flactoofr", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "ofr",  "apetoofr",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "ofr",  "shntoofr",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "ofr",  "aactoofr",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "ofr",  "mp4toofr",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "ofr",  "mp4toofr",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "ofr",  "mpctoofr",  "1"); } 
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "ofr",  "mpctoofr",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "ofr",  "wvtoofr",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "ofr",  "ofrtoofr",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "ofr",  "ofstoofr",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "ofr",  "ttatoofr",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "ofr",  "pactoofr",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "ofr",  "pactoofr",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "ofr",  "kxstoofr",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "ofr",  "aifftoofr", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "ofr",  "aifftoofr", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "ofr",  "aifftoofr", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "ofr",  "rawtoofr",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "ofr",  "aifftoofr", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "ofr",  "aifftoofr", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "ofr",  "mp2toofr",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "ofr",  "mp2toofr",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "ofr",  "latoofr",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "ofr",  "bonktoofr", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($ofr);       pac_convert("wav",  "ofr",  "wavtoofr",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "ofr",  "wmatoofr",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "ofr",  "ratoofr",   "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "ofr",  "ratoofr",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "ofr",  "ratoofr",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "ofr",  "ratoofr",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> OptimFrog (OFS)
    elsif ($format eq "ofs")   {
    
          check_apps($ofs);
          get_user_opts("mode","optimize") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "ofs",  "mp3toofs",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "ofs",  "oggtoofs",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "ofs",  "flactoofs", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "ofs",  "flactoofs", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "ofs",  "apetoofs",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "ofs",  "shntoofs",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "ofs",  "aactoofs",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "ofs",  "mp4toofs",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "ofs",  "mp4toofs",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "ofs",  "mpctoofs",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "ofs",  "mpctoofs",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "ofs",  "wvtoofs",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "ofs",  "ofrtoofs",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "ofs",  "ofstoofs",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "ofs",  "ttatoofs",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "ofs",  "pactoofs",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "ofs",  "pactoofs",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "ofs",  "kxstoofs",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "ofs",  "aifftoofs", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "ofs",  "aifftoofs", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "ofs",  "aifftoofs", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "ofs",  "rawtoofs",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "ofs",  "aifftoofs", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "ofs",  "aifftoofs", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "ofs",  "mp2toofs",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "ofs",  "mp2toofs",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "ofs",  "latoofs",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "ofs",  "bonktoofs", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($ofs);       pac_convert("wav",  "ofs",  "wavtoofs",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "ofs",  "wmatoofs",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "ofs",  "ratoofs",   "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "ofs",  "ratoofs",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "ofs",  "ratoofs",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "ofs",  "ratoofs",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }      
    
    # -> TTA
    elsif ($format eq "tta")   {
    
          check_apps($ttaenc);
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "tta",  "mp3totta",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "tta",  "oggtotta",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "tta",  "flactotta", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "tta",  "flactotta", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "tta",  "apetotta",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "tta",  "shntotta",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "tta",  "aactotta",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "tta",  "mp4totta",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "tta",  "mp4totta",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "tta",  "mpctotta",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "tta",  "mpctotta",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "tta",  "wvtotta",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "tta",  "ofrtotta",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "tta",  "ofstotta",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "tta",  "ttatotta",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "tta",  "pactotta",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "tta",  "pactotta",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "tta",  "kxstotta",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "tta",  "aifftotta", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "tta",  "aifftotta", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "tta",  "aifftotta", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "tta",  "rawtotta",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "tta",  "aifftotta", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "tta",  "aifftotta", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "tta",  "mp2totta",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "tta",  "mp2totta",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "tta",  "latotta",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "tta",  "bonktotta", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($ttaenc);    pac_convert("wav",  "tta",  "wavtotta",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "tta",  "wmatotta",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "tta",  "ratotta",   "1"); }

          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "tta",  "ratotta",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "tta",  "ratotta",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "tta",  "ratotta",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "tta",  "ratotta",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "tta",  "ratotta",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "tta",  "ratotta",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }          
    
    # -> LPAC (PAC)
    elsif ($format eq "pac")   {
    
          check_apps($lpac);
          get_user_opts("plevel");
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "pac",  "mp3topac",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "pac",  "oggtopac",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "pac",  "flactopac", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "pac",  "flactopac", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "pac",  "apetopac",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "pac",  "shntopac",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "pac",  "aactopac",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "pac",  "mp4topac",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "pac",  "mp4topac",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "pac",  "mpctopac",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "pac",  "mpctopac",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "pac",  "wvtopac",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "pac",  "ofrtopac",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "pac",  "ofstopac",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "pac",  "ttatopac",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "pac",  "pactopac",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "pac",  "pactopac",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "pac",  "kxstopac",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "pac",  "aifftopac", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "pac",  "aifftopac", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "pac",  "aifftopac", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "pac",  "rawtopac",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "pac",  "aifftopac", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "pac",  "aifftopac", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "pac",  "mp2topac",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "pac",  "mp2topac",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "pac",  "latopac",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "pac",  "bonktopac", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($lpac);      pac_convert("wav",  "pac",  "wavtopac",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "pac",  "wmatopac",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "pac",  "ratopac",   "1"); }

          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "pac",  "ratopac",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "pac",  "ratopac",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "pac",  "ratopac",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "pac",  "ratopac",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "pac",  "ratopac",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "pac",  "ratopac",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> LPAC
    elsif ($format eq "lpac")   {
    
          check_apps($lpac);
          get_user_opts("plevel");
                        
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "lpac",  "mp3topac",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "lpac",  "oggtopac",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "lpac",  "flactopac", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "lpac",  "flactopac", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "lpac",  "apetopac",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "lpac",  "shntopac",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "lpac",  "aactopac",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "lpac",  "mp4topac",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "lpac",  "mp4topac",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "lpac",  "mpctopac",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "lpac",  "mpctopac",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "lpac",  "wvtopac",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "lpac",  "ofrtopac",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "lpac",  "ofstopac",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "lpac",  "ttatopac",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "lpac",  "pactopac",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "lpac",  "pactopac",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "lpac",  "kxstopac",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "lpac",  "aifftopac", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "lpac",  "aifftopac", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "lpac",  "aifftopac", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "lpac",  "rawtopac",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "lpac",  "aifftopac", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "lpac",  "aifftopac", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "lpac",  "mp2topac",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "lpac",  "mp2topac",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "lpac",  "latopac",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "lpac",  "bonktopac", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($lpac);      pac_convert("wav",  "lpac",  "wavtopac",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "lpac",  "wmatopac",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "lpac",  "ratopac",   "1"); }

          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "lpac",  "ratopac",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "lpac",  "ratopac",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "lpac",  "ratopac",   "1"); }
                                                                      
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                                
    }
                                                                                                                                                                                                                          
    # -> Kexis (KXS)
    elsif ($format eq "kxs")   {
    
          check_apps($kexis);
           
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "kxs",  "mp3tokxs",  "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "kxs",  "oggtokxs",  "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "kxs",  "flactokxs", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "kxs",  "flactokxs", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "kxs",  "apetokxs",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "kxs",  "shntokxs",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "kxs",  "aactokxs",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "kxs",  "mp4tokxs",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "kxs",  "mp4tokxs",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "kxs",  "mpctokxs",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "kxs",  "mpctokxs",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "kxs",  "wvtokxs",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "kxs",  "ofrtokxs",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "kxs",  "ofstokxs",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "kxs",  "ttatokxs",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "kxs",  "pactokxs",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "kxs",  "pactokxs",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "kxs",  "kxstokxs",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "kxs",  "aifftokxs", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "kxs",  "aifftokxs", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "kxs",  "aifftokxs", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "kxs",  "rawtokxs",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "kxs",  "aifftokxs", "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "kxs",  "aifftokxs", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "kxs",  "mp2tokxs",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "kxs",  "mp2tokxs",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "kxs",  "latokxs",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "kxs",  "bonktokxs", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($kexis);     pac_convert("wav",  "kxs",  "wavtokxs",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "kxs",  "wmatokxs",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "kxs",  "ratokxs",   "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "kxs",  "ratokxs",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "kxs",  "ratokxs",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "kxs",  "ratokxs",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> AIFF  
    elsif ($format eq "aiff")  {
    
          check_apps($sox);
          get_user_opts("rate","channels");
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "aiff", "mp3toaiff", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "aiff", "oggtoaiff", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "aiff", "flactoaiff","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "aiff", "flactoaiff","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "aiff", "apetoaiff", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "aiff", "shntoaiff", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "aiff", "aactoaiff", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "aiff", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "aiff", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "aiff", "mpctoaiff", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "aiff", "mpctoaiff", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "aiff", "wvtoaiff",  "1"); } 
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "aiff", "ofrtoaiff", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "aiff", "ofstoaiff", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "aiff", "ttatoaiff", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "aiff", "pactoaiff", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "aiff", "pactoaiff", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "aiff", "kxstoaiff", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "aiff", "aifftoaiff","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "aiff", "aifftoaiff","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "aiff", "aifftoaiff","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "aiff", "rawtoaiff", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "aiff", "aifftoaiff","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "aiff", "aifftoaiff","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "aiff", "mp2toaiff", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "aiff", "mp2toaiff", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "aiff", "latoaiff",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "aiff", "bonktoaiff","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($sox);       pac_convert("wav",  "aiff", "wavtoaiff", "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "aiff", "wmatoaiff", "1"); } 
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "aiff", "ratoaiff",  "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "aiff", "ratoaiff",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "aiff", "ratoaiff",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "aiff", "ratoaiff",  "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> AU
    elsif ($format eq "au")  {
    
          check_apps($sox);
          get_user_opts("rate","channels");
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "au", "mp3toaiff", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "au", "oggtoaiff", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "au", "flactoaiff","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "au", "flactoaiff","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "au", "apetoaiff", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "au", "shntoaiff", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "au", "aactoaiff", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "au", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "au", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "au", "mpctoaiff", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "au", "mpctoaiff", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "au", "wvtoaiff",  "1"); } 
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "au", "ofrtoaiff", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "au", "ofstoaiff", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "au", "ttatoaiff", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "au", "pactoaiff", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "au", "pactoaiff", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "au", "kxstoaiff", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "au", "aifftoaiff","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "au", "aifftoaiff","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "au", "aifftoaiff","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "au", "rawtoaiff", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "au", "aifftoaiff","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "au", "aifftoaiff","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "au", "mp2toaiff", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "au", "mp2toaiff", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "au", "latoaiff",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "au", "bonktoaiff","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($sox);       pac_convert("wav",  "au", "wavtoaiff", "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "au", "wmatoaiff", "1"); } 
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "au", "ratoaiff",  "1"); }
    
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "au", "ratoaiff",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "au", "ratoaiff",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "au", "ratoaiff",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "au", "ratoaiff",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "au", "ratoaiff",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "au", "ratoaiff",  "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> SND
    elsif ($format eq "snd")  {
    
          check_apps($sox);
          get_user_opts("rate","channels");
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "snd", "mp3toaiff", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "snd", "oggtoaiff", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "snd", "flactoaiff","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "snd", "flactoaiff","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "snd", "apetoaiff", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "snd", "shntoaiff", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "snd", "aactoaiff", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "snd", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "snd", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "snd", "mpctoaiff", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "snd", "mpctoaiff", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "snd", "wvtoaiff",  "1"); } 
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "snd", "ofrtoaiff", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "snd", "ofstoaiff", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "snd", "ttatoaiff", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "snd", "pactoaiff", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "snd", "pactoaiff", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "snd", "kxstoaiff", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "snd", "aifftoaiff","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "snd", "aifftoaiff","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "snd", "aifftoaiff","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "snd", "rawtoaiff", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "snd", "aifftoaiff","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "snd", "aifftoaiff","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "snd", "mp2toaiff", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "snd", "mp2toaiff", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "snd", "latoaiff",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "snd", "bonktoaiff","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($sox);       pac_convert("wav",  "snd", "wavtoaiff", "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "snd", "wmatoaiff", "1"); } 
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "snd", "ratoaiff",  "1"); }

          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "snd", "ratoaiff",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "snd", "ratoaiff",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "snd", "ratoaiff",  "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
          
    }
    
    # -> RAW
    elsif ($format eq "raw")   {
    
          check_apps($sox);
          
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "raw", "mp3toaiff", "1"); }  
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "raw", "oggtoaiff", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "raw", "flactoaiff","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "raw", "flactoaiff","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "raw", "apetoaiff", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "raw", "shntoaiff", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "raw", "aactoaiff", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "raw", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "raw", "mp4toaiff", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "raw", "mpctoaiff", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "raw", "mpctoaiff", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "raw", "wvtoaiff",  "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "raw", "ofrtoaiff", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "raw", "ofstoaiff", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "raw", "ttatoaiff", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "raw", "pactoaiff", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "raw", "pactoaiff", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "raw", "kxstoaiff", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "raw", "aifftoaiff","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "raw", "aifftoaiff","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "raw", "aifftoaiff","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "raw", "rawtoraw",  "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "raw", "aifftoaiff","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "raw", "aifftoaiff","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "raw", "mp2toaiff", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "raw", "mp2toaiff", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "raw", "latoaiff",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "raw", "bonktoaiff","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($sox);       pac_convert("wav",  "raw", "wavtoaiff", "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "raw", "wmatoaiff", "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "raw", "ratoaiff",  "1"); }
      
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "raw", "ratoaiff",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "raw", "ratoaiff",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "raw", "ratoaiff",  "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                      
    }
    
    # -> VOC
    elsif ($format eq "voc")   {
    
          check_apps($sox);
          get_user_opts("rate","channels");
          
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "voc",  "mp3toaiff", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "voc",  "oggtoaiff", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "voc",  "flactoaiff","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "voc",  "flactoaiff","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "voc",  "apetoaiff", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "voc",  "shntoaiff", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "voc",  "aactoaiff", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "voc",  "mp4toaiff", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "voc",  "mp4toaiff", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "voc",  "mpctoaiff", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "voc",  "mpctoaiff", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "voc",  "wvtoaiff",  "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "voc",  "ofrtoaiff", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "voc",  "ofstoaiff", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "voc",  "ttatoaiff", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "voc",  "pactoaiff", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "voc",  "pactoaiff", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "voc",  "kxstoaiff", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "voc",  "aifftoaiff","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "voc",  "aifftoaiff","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "voc",  "aifftoaiff","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "voc",  "rawtoaiff", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "voc",  "aifftoaiff","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "voc",  "aifftoaiff","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "voc",  "mp2toaiff", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "voc",  "mp2toaiff", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "voc",  "latoaiff",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "voc",  "bonktoaiff","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($sox);       pac_convert("wav",  "voc",  "wavtoaiff", "1"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "voc",  "wmatoaiff", "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "voc",  "ratoaiff",  "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "voc",  "ratoaiff",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "voc",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "voc",  "ratoaiff",  "1"); }
                                                
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                          
    }
    
    # -> SMP
    elsif ($format eq "smp")   {
          
          check_apps($sox);
          get_user_opts("rate","channels");
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);     pac_convert("mp3",   "smp",  "mp3toaiff", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);   pac_convert("ogg",   "smp",  "oggtoaiff", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);     pac_convert("flac",  "smp",  "flactoaiff","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);     pac_convert("fla",   "smp",  "flactoaiff","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);      pac_convert("ape",   "smp",  "apetoaiff", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);  pac_convert("shn",   "smp",  "shntoaiff", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);     pac_convert("aac",   "smp",  "aactoaiff", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);     pac_convert("m4a",   "smp",  "mp4toaiff", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);     pac_convert("mp4",   "smp",  "mp4toaiff", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);   pac_convert("mpc",   "smp",  "mpctoaiff", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);   pac_convert("mpp",   "smp",  "mpctoaiff", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack); pac_convert("wv",    "smp",  "wvtoaiff",  "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);      pac_convert("ofr",   "smp",  "ofrtoaiff", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);      pac_convert("ofs",   "smp",  "ofstoaiff", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);   pac_convert("tta",   "smp",  "ttatoaiff", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);     pac_convert("pac",   "smp",  "pactoaiff", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);     pac_convert("lpac",  "smp",  "pactoaiff", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);    pac_convert("kxs",   "smp",  "kxstoaiff", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);      pac_convert("aiff",  "smp",  "aifftoaiff","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);      pac_convert("au",    "smp",  "aifftoaiff","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);      pac_convert("snd",   "smp",  "aifftoaiff","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);      pac_convert("raw",   "smp",  "rawtoaiff", "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);      pac_convert("voc",   "smp",  "aifftoaiff","1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);      pac_convert("smp",   "smp",  "aifftoaiff","1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);   pac_convert("mp2",   "smp",  "mp2toaiff", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);   pac_convert("ac3",   "smp",  "mp2toaiff", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);       pac_convert("la",    "smp",  "latoaiff",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);     pac_convert("bonk",  "smp",  "bonktoaiff","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($sox);      pac_convert("wav",   "smp",  "wavtoaiff", "1"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);  pac_convert("wma",   "smp",  "wmatoaiff", "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);  pac_convert("ra",    "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);  pac_convert("ram",   "smp",  "ratoaiff",  "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "smp",  "ratoaiff",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "smp",  "ratoaiff",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "smp",  "ratoaiff",  "1"); }
                                               
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                          
    }        
       
    # -> MP2
    elsif ($format eq "mp2")   {
    
          check_apps($ffmpeg);
          get_user_opts("bitrate","rate","channels") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($ffmpeg);    pac_convert("mp3",  "mp2",  "mp3tomp2",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($ffmpeg);    pac_convert("ogg",  "mp2",  "oggtomp2",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "mp2",  "flactomp2", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "mp2",  "flactomp2", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "mp2",  "apetomp2",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "mp2",  "shntomp2",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "mp2",  "aactomp2",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "mp2",  "mp4tomp2",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "mp2",  "mp4tomp2",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "mp2",  "mpctomp2",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "mp2",  "mpctomp2",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "mp2",  "wvtomp2",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "mp2",  "ofrtomp2",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "mp2",  "ofstomp2",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "mp2",  "ttatomp2",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "mp2",  "pactomp2",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "mp2",  "pactomp2",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "mp2",  "kxstomp2",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "mp2",  "aifftomp2", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "mp2",  "aifftomp2", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "mp2",  "aifftomp2", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "mp2",  "rawtomp2",  "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "mp2",  "mp2tomp2",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "mp2",  "mp2tomp2",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "mp2",  "latomp2",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "mp2",  "bonktomp2", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($ffmpeg);    pac_convert("wav",  "mp2",  "wavtomp2",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "mp2",  "wmatomp2",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "mp2",  "ratomp2",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "mp2",  "ratomp2",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "mp2",  "ratomp2",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "mp2",  "ratomp2",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
          
    }
    
    # -> AC3
    elsif ($format eq "ac3")   {
    
          check_apps($ffmpeg);
          get_user_opts("bitrate","rate","channels") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($ffmpeg);    pac_convert("mp3",  "ac3",  "mp3tomp2",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($ffmpeg);    pac_convert("ogg",  "ac3",  "oggtomp2",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "ac3",  "flactomp2", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "ac3",  "flactomp2", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "ac3",  "apetomp2",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "ac3",  "shntomp2",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "ac3",  "aactomp2",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "ac3",  "mp4tomp2",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "ac3",  "mp4tomp2",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "ac3",  "mpctomp2",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "ac3",  "mpctomp2",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "ac3",  "wvtomp2",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "ac3",  "ofrtomp2",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "ac3",  "ofstomp2",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "ac3",  "ttatomp2",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "ac3",  "pactomp2",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "ac3",  "pactomp2",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "ac3",  "kxstomp2",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "ac3",  "aifftomp2", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "ac3",  "aifftomp2", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "ac3",  "aifftomp2", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "ac3",  "rawtomp2",  "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "ac3",  "mp2tomp2",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "ac3",  "mp2tomp2",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "ac3",  "latomp2",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "ac3",  "bonktomp2", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($ffmpeg);    pac_convert("wav",  "ac3",  "wavtomp2",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "ac3",  "wmatomp2",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "ac3",  "ratomp2",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "ac3",  "ratomp2",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "ac3",  "ratomp2",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "ac3",  "ratomp2",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
        
    }
    
    # -> Lossless Audio (LA)
    elsif ($format eq "la")    {
    
          check_apps($la);

          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "la",   "mp3tola",   "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "la",   "oggtola",   "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "la",   "flactola",  "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "la",   "flactola",  "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "la",   "apetola",   "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "la",   "shntola",   "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "la",   "aactola",   "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "la",   "mp4tola",   "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "la",   "mp4tola",   "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "la",   "mpctola",   "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "la",   "mpctola",   "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "la",   "wvtola",    "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "la",   "ofrtola",   "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "la",   "ofstola",   "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "la",   "ttatola",   "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "la",   "pactola",   "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "la",   "pactola",   "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "la",   "kxstola",   "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "la",   "aifftola",  "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "la",   "aifftola",  "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "la",   "aifftola",  "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "la",   "rawtola",   "1"); }
          elsif ($file =~  /\.voc$/i)  { check_apps($sox);       pac_convert("voc",  "la",   "aifftola",  "1"); }
          elsif ($file =~  /\.smp$/i)  { check_apps($sox);       pac_convert("smp",  "la",   "aifftola",  "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "la",   "mp2tola",   "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "la",   "mp2tola",   "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "la",   "latola",    "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "la",   "bonktola",  "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($la);        pac_convert("wav",  "la",   "wavtola",   "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "la",   "wmatola",   "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "la",   "ratola",    "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "la",   "ratola",    "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "la",   "ratola",    "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "la",   "ratola",    "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "la",   "ratola",    "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "la",   "ratola",    "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "la",   "ratola",    "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "la",   "ratola",    "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "la",   "ratola",    "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "la",   "ratola",    "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "la",   "ratola",    "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "la",   "ratola",    "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "la",   "ratola",    "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "la",   "ratola",    "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "la",   "ratola",    "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "la",   "ratola",    "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "la",   "ratola",    "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }

    }
    
    # -> BONK
    elsif ($format eq "bonk")  {
          
          check_apps($bonk);
          get_user_opts("qlevel", "dratio", "psize", "lossless");

          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "bonk", "mp3tobonk", "1"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "bonk", "oggtobonk", "1"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "bonk", "flactobonk","1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "bonk", "flactobonk","1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "bonk", "apetobonk", "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "bonk", "shntobonk", "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "bonk", "aactobonk", "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "bonk", "mp4tobonk", "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "bonk", "mp4tobonk", "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "bonk", "mpctobonk", "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "bonk", "mpctobonk", "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "bonk", "wvtobonk",  "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "bonk", "ofrtobonk", "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "bonk", "ofstobonk", "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "bonk", "ttatobonk", "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "bonk", "pactobonk", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "bonk", "pactobonk", "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "bonk", "pactobonk", "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "bonk", "kxstobonk", "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "bonk", "aifftobonk","1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "bonk", "aifftobonk","1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "bonk", "aifftobonk","1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "bonk", "rawtobonk", "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "bonk", "mp2tobonk", "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "bonk", "mp2tobonk", "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "bonk", "latobonk",  "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "bonk", "bonktobonk","1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($bonk);      pac_convert("wav",  "bonk", "wavtobonk", "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "bonk", "wmatobonk", "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "bonk", "ratobonk",  "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "bonk", "ratobonk",  "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "bonk", "ratobonk",  "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "bonk", "ratobonk",  "1"); }
                                                                     
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
                                                                          
    }          
        
    # -> WAV
    elsif ($format eq "wav")   {
    
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($lame);      pac_convert("mp3",  "wav",  "mp3towav",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($oggdec);    pac_convert("ogg",  "wav",  "oggtowav",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "wav",  "flactowav", "0"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "wav",  "flactowav", "0"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "wav",  "apetowav",  "0"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "wav",  "shntowav",  "0"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "wav",  "aactowav",  "0"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "wav",  "mp4towav",  "0"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "wav",  "mp4towav",  "0"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "wav",  "mpctowav",  "0"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "wav",  "mpctowav",  "0"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "wav",  "wvtowav",   "0"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "wav",  "ofrtowav",  "0"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "wav",  "ofstowav",  "0"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "wav",  "ttatowav",  "0"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "wav",  "pactowav",  "0"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "wav",  "pactowav",  "0"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "wav",  "kxstowav",  "0"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "wav",  "aifftowav", "0"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "wav",  "aifftowav", "0"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "wav",  "aifftowav", "0"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "wav",  "rawtowav",  "0"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "wav",  "mp2towav",  "0"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "wav",  "mp2towav",  "0"); } 
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "wav",  "latowav",   "0"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "wav",  "bonktowav", "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "wav",  "wmatowav",  "0"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "wav",  "ratowav",   "0"); }

          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "wav",  "ratowav",   "0"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "wav",  "ratowav",   "0"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "wav",  "ratowav",   "0"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "wav",  "ratowav",   "0"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "wav",  "ratowav",   "0"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "wav",  "ratowav",   "0"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
 
    } 
    
    # -> RealAudio (RA)
    elsif ($format eq "ra")   {
    
          check_apps($ffmpeg);
          get_user_opts("rate","channels") if $gui;
          
          # Audio
          if    ($file =~  /\.mp3$/i)  { check_apps($ffmpeg);    pac_convert("mp3",  "ra",  "mp3tomp2",  "0"); }
          elsif ($file =~  /\.ogg$/i)  { check_apps($ffmpeg);    pac_convert("ogg",  "ra",  "oggtomp2",  "0"); }
          elsif ($file =~ /\.flac$/i)  { check_apps($flac);      pac_convert("flac", "ra",  "flactomp2", "1"); }
          elsif ($file =~  /\.fla$/i)  { check_apps($flac);      pac_convert("fla",  "ra",  "flactomp2", "1"); }
          elsif ($file =~  /\.ape$/i)  { check_apps($mac);       pac_convert("ape",  "ra",  "apetomp2",  "1"); }
          elsif ($file =~  /\.shn$/i)  { check_apps($shorten);   pac_convert("shn",  "ra",  "shntomp2",  "1"); }
          elsif ($file =~  /\.aac$/i)  { check_apps($faad);      pac_convert("aac",  "ra",  "aactomp2",  "1"); }
          elsif ($file =~  /\.m4a$/i)  { check_apps($faad);      pac_convert("m4a",  "ra",  "mp4tomp2",  "1"); }
          elsif ($file =~  /\.mp4$/i)  { check_apps($faad);      pac_convert("mp4",  "ra",  "mp4tomp2",  "1"); }
          elsif ($file =~  /\.mpc$/i)  { check_apps($mppdec);    pac_convert("mpc",  "ra",  "mpctomp2",  "1"); }
          elsif ($file =~  /\.mpp$/i)  { check_apps($mppdec);    pac_convert("mpp",  "ra",  "mpctomp2",  "1"); }
          elsif ($file =~   /\.wv$/i)  { check_apps($wvunpack);  pac_convert("wv",   "ra",  "wvtomp2",   "1"); }
          elsif ($file =~  /\.ofr$/i)  { check_apps($ofr);       pac_convert("ofr",  "ra",  "ofrtomp2",  "1"); }
          elsif ($file =~  /\.ofs$/i)  { check_apps($ofs);       pac_convert("ofs",  "ra",  "ofstomp2",  "1"); }
          elsif ($file =~  /\.tta$/i)  { check_apps($ttaenc);    pac_convert("tta",  "ra",  "ttatomp2",  "1"); }
          elsif ($file =~  /\.pac$/i)  { check_apps($lpac);      pac_convert("pac",  "ra",  "pactomp2",  "1"); }
          elsif ($file =~ /\.lpac$/i)  { check_apps($lpac);      pac_convert("lpac", "ra",  "pactomp2",  "1"); }
          elsif ($file =~  /\.kxs$/i)  { check_apps($kexis);     pac_convert("kxs",  "ra",  "kxstomp2",  "1"); }
          elsif ($file =~ /\.aiff$/i)  { check_apps($sox);       pac_convert("aiff", "ra",  "aifftomp2", "1"); }
          elsif ($file =~   /\.au$/i)  { check_apps($sox);       pac_convert("au",   "ra",  "aifftomp2", "1"); }
          elsif ($file =~  /\.snd$/i)  { check_apps($sox);       pac_convert("snd",  "ra",  "aifftomp2", "1"); }
          elsif ($file =~  /\.raw$/i)  { check_apps($sox);       pac_convert("raw",  "ra",  "rawtomp2",  "1"); }
          elsif ($file =~  /\.mp2$/i)  { check_apps($ffmpeg);    pac_convert("mp2",  "ra",  "mp2tomp2",  "1"); }
          elsif ($file =~  /\.ac3$/i)  { check_apps($ffmpeg);    pac_convert("ac3",  "ra",  "mp2tomp2",  "1"); }
          elsif ($file =~   /\.la$/i)  { check_apps($la);        pac_convert("la",   "ra",  "latomp2",   "1"); }
          elsif ($file =~ /\.bonk$/i)  { check_apps($bonk);      pac_convert("bonk", "ra",  "bonktomp2", "1"); }
          elsif ($file =~  /\.wav$/i)  { check_apps($ffmpeg);    pac_convert("wav",  "ra",  "wavtomp2",  "0"); }
          elsif ($file =~  /\.wma$/i)  { check_apps($mplayer);   pac_convert("wma",  "ra",  "wmatomp2",  "1"); }
          elsif ($file =~   /\.ra$/i)  { check_apps($mplayer);   pac_convert("ra",   "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.ram$/i)  { check_apps($mplayer);   pac_convert("ram",  "ra",  "ratomp2",   "1"); }
          
          # Video
          elsif ($file =~   /\.rm$/i)  { check_apps($mplayer);   pac_convert("rm",   "ra",  "ratomp2",   "1"); }
          elsif ($file =~   /\.rv$/i)  { check_apps($mplayer);   pac_convert("rv",   "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.asf$/i)  { check_apps($mplayer);   pac_convert("asf",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.avi$/i)  { check_apps($mplayer);   pac_convert("avi",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~ /\.divx$/i)  { check_apps($mplayer);   pac_convert("divx", "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mkv$/i)  { check_apps($mplayer);   pac_convert("mkv",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mpg$/i)  { check_apps($mplayer);   pac_convert("mpg",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~ /\.mpeg$/i)  { check_apps($mplayer);   pac_convert("mpeg", "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.mov$/i)  { check_apps($mplayer);   pac_convert("mov",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.ogm$/i)  { check_apps($mplayer);   pac_convert("ogm",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~   /\.qt$/i)  { check_apps($mplayer);   pac_convert("qt",   "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.vcd$/i)  { check_apps($mplayer);   pac_convert("vcd",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.vob$/i)  { check_apps($mplayer);   pac_convert("vob",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.wmv$/i)  { check_apps($mplayer);   pac_convert("wmv",  "ra",  "ratomp2",   "1"); }
          elsif ($file =~  /\.flv$/i)  { check_apps($mplayer);   pac_convert("flv",  "ra",  "ratomp2",   "1"); }
          
          else { pac_msg("$lang{$mylang}{format_not_supported} '$file'.","notice"); }
          
    }
    
    else { pac_msg("$lang{$mylang}{format_not_supported} '$format'.\n\n$lang{$mylang}{help_and_options}","error"); }
}             


sub sys_call {

    my ($enc_opt, $audio_file, $new_file, $out_file) = @_;
    
    # Use BONK lossless encoding if --lossless option is passed
    my $bonk_opts = ''; if ($lossless) { $bonk_opts = "-l"; }
    
    # Priority Scheduling
    $nice = '';
    $nice = "$config{'NICE'} $config{'NICLEVEL'}" if $use_nice eq 1;
    check_apps($config{'NICE'})                    if $use_nice eq 1;
    
    ##############################
    # MP3 -> MP3
    if ($enc_opt eq "mp3tomp3")   {

         system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
         system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\""); 
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $old_tag = MP3::Tag->new($audio_file);
       my @tags = $old_tag->autoinfo();
                     
       my $mp3_tag = MP3::Tag->new($out_file);
          $mp3_tag->new_tag("$id3v");
       
       my $id3;
       
       $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
       
       $id3->title($tags[0])     if $tags[0];
       $id3->track($tags[1])     if $tags[1];
       $id3->artist($tags[2])    if $tags[2];
       $id3->album($tags[3])     if $tags[3];    
       $id3->comment($tags[4])   if $tags[4];
       $id3->year($tags[5])      if $tags[5];
       $id3->genre($tags[6])     if $tags[6];

       $id3->write_tag;

     }
       
    }
            
    # MP3 -> Ogg Vorbis
    if ($enc_opt eq "mp3toogg")   {

    system("$nice $lame --decode \"$audio_file\" \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");

     if ($usetags eq 1 and -e $out_file)  {
     
       my $mp3_tag = MP3::Tag->new($audio_file);
       my ($tit, $tra, $art, $alb, $com, $yea, $gen) = $mp3_tag->autoinfo();
        
       my $ogg_tag = Ogg::Vorbis::Header->new($out_file);
                   
          $ogg_tag->add_comments("ARTIST",      "$art")   if $art;
          $ogg_tag->add_comments("TITLE",       "$tit")   if $tit;
          $ogg_tag->add_comments("YEAR",        "$yea")   if $yea;
          $ogg_tag->add_comments("DATE",        "$yea")   if $yea;
          $ogg_tag->add_comments("COMMENT",     "$com")   if $com;
          $ogg_tag->add_comments("GENRE",       "$gen")   if $gen;
          $ogg_tag->add_comments("ALBUM",       "$alb")   if $alb;
          $ogg_tag->add_comments("TRACKNUMBER", "$tra")   if $tra;

          $ogg_tag->write_vorbis;
     }

    }

    # MP3 -> FLAC
    if ($enc_opt eq "mp3toflac")  {

       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");

     if ($usetags eq 1 and -e $out_file) {
     
       my $mp3_tag    = MP3::Tag->new($audio_file);
       my ($tit, $tra, $art, $alb, $com, $yea, $gen) = $mp3_tag->autoinfo();

       my $flac_head = Audio::FLAC::Header->new($out_file);
       my $flac_tag  = $flac_head->tags();
       
       $flac_tag->{ARTIST}       = "$art"    if $art;
       $flac_tag->{ALBUM}        = "$alb"    if $alb;
       $flac_tag->{TITLE}        = "$tit"    if $tit;
       $flac_tag->{DATE}         = "$yea"    if $yea;
       $flac_tag->{DESCRIPTION}  = "$com"    if $com;
       $flac_tag->{GENRE}        = "$gen"    if $gen;
       $flac_tag->{TRACKNUMBER}  = "$tra"    if $tra;
       
       $flac_head->write();

     }
              
    }       
    
    # MP3 -> Monkey Audio (APE)
    if ($enc_opt eq "mp3toape")   {

       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");

    }                    
    
    # MP3 -> Shorten (SHN) 
    if ($enc_opt eq "mp3toshn")   {

       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");

    }                       
    
    # MP3 -> FAAC (AAC)
    if ($enc_opt eq "mp3toaac")   {

       system("$nice $lame --decode \"$audio_file\" \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");

    }       
    
    # MP3 -> FAAC (M4A/MP4)
    if ($enc_opt eq "mp3tomp4")   {

           my $mp4_tag = '';

        if ($usetags eq 1) {
   
           my  $mp3_tag = MP3::Tag->new($audio_file);
           my ($tit, $tra, $art, $alb, $com, $yea, $gen) = $mp3_tag->autoinfo();
                       
               $mp4_tag = "--artist \"$art\""             if $art;
               $mp4_tag = "$mp4_tag --album \"$alb\""     if $alb;
               $mp4_tag = "$mp4_tag --title \"$tit\""     if $tit;
               $mp4_tag = "$mp4_tag --year \"$yea\""      if $yea;
               $mp4_tag = "$mp4_tag --comment \"$com\""   if $com;
               $mp4_tag = "$mp4_tag --genre \"$gen\""     if $gen;
               $mp4_tag = "$mp4_tag --track \"$tra\""     if $tra;
        }

           system("$nice $lame --decode \"$audio_file\" \"-\" | $nice $faac $audio_opts $mp4_tag -w -q $quality \"-\" -o \"$out_file\"");
       
    }
    
    # MP3 -> Musepack (MPC)
    if ($enc_opt eq "mp3tompc")   {

     my $mpc_tag = '';

     if ($usetags) {
     
       my $mp3_tag = MP3::Tag->new($audio_file);
       my ($tit, $tra, $art, $alb, $com, $yea, $gen) = $mp3_tag->autoinfo();
       
       $mpc_tag = "--artist \"$art\""                 if $art;
       $mpc_tag = "$mpc_tag --tag \"Album=$alb\""     if $alb;     
       $mpc_tag = "$mpc_tag --tag \"Title=$tit\""     if $tit;     
       $mpc_tag = "$mpc_tag --tag \"Year=$yea\""      if $yea;       
       $mpc_tag = "$mpc_tag --tag \"Comment=$com\""   if $com; 
       $mpc_tag = "$mpc_tag --tag \"Genre=$gen\""     if $gen;     
       $mpc_tag = "$mpc_tag --tag \"Track=$tra\""     if $tra;  

     }
       
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$new_file.wav\" \"$out_file\"");

    }     
    
    # MP3 -> Wavpack (WV)
    if ($enc_opt eq "mp3towv") {
    
     my $wv_tag = '';

     if ($usetags eq 1) {
     
       my $mp3_tag = MP3::Tag->new($audio_file);
       my ($tit, $tra, $art, $alb, $com, $yea, $gen) = $mp3_tag->autoinfo();
       
       $wv_tag = "-w \"Artist=$art\""            if $art;
       $wv_tag = "$wv_tag -w \"Album=$alb\""     if $alb;
       $wv_tag = "$wv_tag -w \"Title=$tit\""     if $tit;
       $wv_tag = "$wv_tag -w \"Year=$yea\""      if $yea;
       $wv_tag = "$wv_tag -w \"Comment=$com\""   if $com;
       $wv_tag = "$wv_tag -w \"Genre=$gen\""     if $gen;
       $wv_tag = "$wv_tag -w \"Track=$tra\""     if $tra;
    
     }
       
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    
    }
    
    # MP3 -> OptimFrog (OFR)
    if ($enc_opt eq "mp3toofr")   {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # MP3 -> OptimFrog (OFS)
    if ($enc_opt eq "mp3toofs")   {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # MP3 -> TTA
    if ($enc_opt eq "mp3totta")   {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP3 -> LPAC
    if ($enc_opt eq "mp3topac")   {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP3 -> Kexis (KXS)
    if ($enc_opt eq "mp3tokxs")   {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $kexis $audio_opts -p \"$new_file.wav\"");

       move("$new_file.kxs","$out_file"); 
    }
    
    # MP3 -> (AIFF/AU/SND/RAW/SMP)
    if ($enc_opt eq "mp3toaiff")  {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # MP3 -> (MP2/AC3/RA)
    if ($enc_opt eq "mp3tomp2")   {
       system("$nice $ffmpeg -y -i \"$audio_file\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # MP3 -> Lossless Audio (LA)
    if ($enc_opt eq "mp3tola")    {
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP3 -> BONK
    if ($enc_opt eq "mp3tobonk")  {

     my $bonk_tag = '';
     
     if ($usetags eq 1) {
          
       my $mp3_tag = MP3::Tag->new($audio_file);
       my ($tit, $tra, $art, $alb, $com, $yea, $gen) = $mp3_tag->autoinfo();
                        
       $bonk_tag = "$bonk_tag -a \"$art\""  if $art;
       $bonk_tag = "$bonk_tag -t \"$tit\""  if $tit;
       $bonk_tag = "$bonk_tag -c \"$com\""  if $com;
                                                                         
     }
                                                                              
       system("$nice $lame --decode \"$audio_file\" \"$new_file.wav\"");
       system("$nice $bonk encode $bonk_tag $audio_opts $bonk_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }

    # MP3 -> WAV
    if ($enc_opt eq "mp3towav")   {
        system("$nice $lame --decode \"$audio_file\" \"$out_file\"");
    }





    ##############################    
    # Ogg Vorbis -> MP3
    if ($enc_opt eq "oggtomp3")   {

     system("$nice $oggdec \"$audio_file\" -o \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");

     if ($usetags eq 1 and -e $out_file)  {

       my $ogg_tag = Ogg::Vorbis::Header->new("$audio_file");
       my ($art, $tit, $yea, $gen, $alb, $tra, $com);
    
       foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~  /ARTIST/i) { $art   = \$ogg_tag->comment($i); }
           if ($i =~   /TITLE/i) { $tit   = \$ogg_tag->comment($i); }
           if ($i =~    /YEAR/i) { $yea   = \$ogg_tag->comment($i); }
           if ($i =~   /GENRE/i) { $gen   = \$ogg_tag->comment($i); }
           if ($i =~   /ALBUM/i) { $alb   = \$ogg_tag->comment($i); }
           if ($i =~   /TRACK/i) { $tra   = \$ogg_tag->comment($i); }
           if ($i =~ /COMMENT/i) { $com   = \$ogg_tag->comment($i); }
       }       

       my $mp3_tag = MP3::Tag->new($out_file);
          $mp3_tag->new_tag("$id3v");
       
       my $id3;
          $id3 = $mp3_tag->{$id3v};
       
          $id3->artist("${$art}")   if defined(${$art});
          $id3->title("${$tit}")    if defined(${$tit});
          $id3->year("${$yea}")     if defined(${$yea});
          $id3->genre("${$gen}")    if defined(${$gen});
          $id3->album("${$alb}")    if defined(${$alb});
          $id3->track("${$tra}")    if defined(${$tra});
          $id3->comment("${$com}")  if defined(${$com});
     
          $id3->write_tag;
     }                             

    }

    # Ogg Vorbis -> Ogg Vorbis
    if ($enc_opt eq "oggtoogg")   {

       system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");

     if ($usetags eq 1 and -e $out_file) {
     
       my $old_tag = Ogg::Vorbis::Header->new("$audio_file");
       my ($art, $tit, $yea, $gen, $alb, $tra, $com);

       foreach my $i ($old_tag->comment_tags) {
           if ($i =~  /ARTIST/i) { $art   = \$old_tag->comment($i); }
           if ($i =~   /TITLE/i) { $tit   = \$old_tag->comment($i); }
           if ($i =~    /YEAR/i) { $yea   = \$old_tag->comment($i); }
           if ($i =~   /GENRE/i) { $gen   = \$old_tag->comment($i); }
           if ($i =~   /ALBUM/i) { $alb   = \$old_tag->comment($i); }
           if ($i =~   /TRACK/i) { $tra   = \$old_tag->comment($i); }
           if ($i =~ /COMMENT/i) { $com   = \$old_tag->comment($i); }
       }
                                                        
       my $ogg_tag = Ogg::Vorbis::Header->new($out_file);
       
       $ogg_tag->add_comments("ARTIST",      "${$art}")    if defined(${$art});
       $ogg_tag->add_comments("TITLE",       "${$tit}")    if defined(${$tit});
       $ogg_tag->add_comments("YEAR",        "${$yea}")    if defined(${$yea});
       $ogg_tag->add_comments("DATE",        "${$yea}")    if defined(${$yea});
       $ogg_tag->add_comments("COMMENT",     "${$com}")    if defined(${$com}); 
       $ogg_tag->add_comments("GENRE",       "${$gen}")    if defined(${$gen});   
       $ogg_tag->add_comments("ALBUM",       "${$alb}")    if defined(${$alb});
       $ogg_tag->add_comments("TRACKNUMBER", "${$tra}")    if defined(${$tra});
                                   
       $ogg_tag->write_vorbis;
      
     }

    }

    # Ogg Vorbis -> FLAC
    if ($enc_opt eq "oggtoflac")  {

       system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");

     if ($usetags eq 1 and -e $out_file) { 
     
       my $ogg_tag = Ogg::Vorbis::Header->new("$audio_file");
       my ($art, $tit, $yea, $gen, $alb, $tra, $com);
       
       foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~  /ARTIST/i) { $art   = \$ogg_tag->comment($i); }
           if ($i =~   /TITLE/i) { $tit   = \$ogg_tag->comment($i); }
           if ($i =~    /YEAR/i) { $yea   = \$ogg_tag->comment($i); }
           if ($i =~   /GENRE/i) { $gen   = \$ogg_tag->comment($i); }
           if ($i =~   /ALBUM/i) { $alb   = \$ogg_tag->comment($i); }
           if ($i =~   /TRACK/i) { $tra   = \$ogg_tag->comment($i); }
           if ($i =~ /COMMENT/i) { $com   = \$ogg_tag->comment($i); }
       }
                                                                       
       my $flac_head = Audio::FLAC::Header->new($out_file);
       my $flac_tag  = $flac_head->tags();
             
       $flac_tag->{ARTIST}       = ${$art}    if defined(${$art});
       $flac_tag->{TRACKNUMBER}  = ${$tra}    if defined(${$tra});
       $flac_tag->{TITLE}        = ${$tit}    if defined(${$tit});
       $flac_tag->{DATE}         = ${$yea}    if defined(${$yea});
       $flac_tag->{DESCRIPTION}  = ${$com}    if defined(${com});
       $flac_tag->{GENRE}        = ${$gen}    if defined(${gen});
       $flac_tag->{ALBUM}        = ${$alb}    if defined(${$alb});
       
       $flac_head->write();
       
     }

    }
                
    # Ogg Vorbis -> Monkey Audio (APE)
    if ($enc_opt eq "oggtoape")   {    
       system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }
    
    # Ogg Vorbis -> Shorten (SHN)
    if ($enc_opt eq "oggtoshn")   {
       system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
                    
    # Ogg Vorbis -> FAAC (AAC)
    if ($enc_opt eq "oggtoaac")   {
       system("$nice $oggdec \"$audio_file\" -o \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }

    # Ogg Vorbis -> FAAC (M4A/MP4)
    if ($enc_opt eq "oggtomp4")   {
 
             my $mp4_tag = '';
     
      if ($usetags eq 1) {
      
             my $ogg_tag = Ogg::Vorbis::Header->new("$audio_file");
             my ($art, $tit, $yea, $gen, $alb, $tra, $com);

          foreach my $i ($ogg_tag->comment_tags) {
               if ($i =~  /ARTIST/i) { $art   = \$ogg_tag->comment($i); }
               if ($i =~   /TITLE/i) { $tit   = \$ogg_tag->comment($i); }
               if ($i =~    /YEAR/i) { $yea   = \$ogg_tag->comment($i); }
               if ($i =~   /GENRE/i) { $gen   = \$ogg_tag->comment($i); }
               if ($i =~   /ALBUM/i) { $alb   = \$ogg_tag->comment($i); }
               if ($i =~   /TRACK/i) { $tra   = \$ogg_tag->comment($i); }
               if ($i =~ /COMMENT/i) { $com   = \$ogg_tag->comment($i); }
          }
          
          $mp4_tag = "--artist \"${$art}\""              if defined(${$art});
          $mp4_tag = "$mp4_tag --title \"${$tit}\""      if defined(${$tit});
          $mp4_tag = "$mp4_tag --year \"${$yea}\""       if defined(${$yea});
          $mp4_tag = "$mp4_tag --genre \"${$gen}\""      if defined(${$gen});
          $mp4_tag = "$mp4_tag --album \"${$alb}\""      if defined(${$alb});
          $mp4_tag = "$mp4_tag --track \"${$tra}\""      if defined(${$tra});
          $mp4_tag = "$mp4_tag --comment \"${$com}\""    if defined(${$com});
       
      }
      
          system("$nice $oggdec \"$audio_file\" -o \"-\" | $faac $audio_opts $mp4_tag -w -q $quality \"-\" -o \"$out_file\"");

    }
              
    # Ogg Vorbis -> Musepack (MPC)
    if ($enc_opt eq "oggtompc")   {

     my $mpc_tag = '';

     if ($usetags eq 1) {
     
       my $ogg_tag = Ogg::Vorbis::Header->new("$audio_file");
       my ($art, $tit, $yea, $gen, $alb, $tra, $com);
       
       foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~  /ARTIST/i) { $art   = \$ogg_tag->comment($i); }
           if ($i =~   /TITLE/i) { $tit   = \$ogg_tag->comment($i); }
           if ($i =~    /YEAR/i) { $yea   = \$ogg_tag->comment($i); }
           if ($i =~   /GENRE/i) { $gen   = \$ogg_tag->comment($i); }
           if ($i =~   /ALBUM/i) { $alb   = \$ogg_tag->comment($i); }
           if ($i =~   /TRACK/i) { $tra   = \$ogg_tag->comment($i); }
           if ($i =~ /COMMENT/i) { $com   = \$ogg_tag->comment($i); }
       }
    
          $mpc_tag = "--tag \"Artist=${$art}\""            if defined(${$art});
          $mpc_tag = "$mpc_tag --tag \"Title=${$tit}\""    if defined(${$tit});
          $mpc_tag = "$mpc_tag --tag \"Year=${$yea}\""     if defined(${$yea});
          $mpc_tag = "$mpc_tag --tag \"Genre=${$gen}\""    if defined(${$gen});
          $mpc_tag = "$mpc_tag --tag \"Album=${$alb}\""    if defined(${$alb});
          $mpc_tag = "$mpc_tag --tag \"Track=${$tra}\""    if defined(${$tra});
          $mpc_tag = "$mpc_tag --tag \"Comment=${$com}\""  if defined(${$com});

     }
     
          system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
          system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$new_file.wav\" \"$out_file\"");

    }                

    # Ogg Vorbis -> Wavpack (WV)
    if ($enc_opt eq "oggtowv") {

     my $wv_tag = '';
       
     if ($usetags eq 1) {
     
       my $ogg_tag = Ogg::Vorbis::Header->new("$audio_file");
       my ($art, $tit, $yea, $gen, $alb, $tra, $com);
                     
       foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~  /ARTIST/i) { $art   = \$ogg_tag->comment($i); }
           if ($i =~   /TITLE/i) { $tit   = \$ogg_tag->comment($i); }
           if ($i =~    /YEAR/i) { $yea   = \$ogg_tag->comment($i); }
           if ($i =~   /GENRE/i) { $gen   = \$ogg_tag->comment($i); }
           if ($i =~   /ALBUM/i) { $alb   = \$ogg_tag->comment($i); }
           if ($i =~   /TRACK/i) { $tra   = \$ogg_tag->comment($i); }
           if ($i =~ /COMMENT/i) { $com   = \$ogg_tag->comment($i); }
       }
                                                                                                                
          $wv_tag = "-w \"Artist=${$art}\""            if defined(${$art});
          $wv_tag = "$wv_tag -w \"Album=${$alb}\""     if defined(${$alb});
          $wv_tag = "$wv_tag -w \"Title=${$tit}\""     if defined(${$tit});
          $wv_tag = "$wv_tag -w \"Year=${$yea}\""      if defined(${$yea});
          $wv_tag = "$wv_tag -w \"Comment=${$com}\""   if defined(${$com});
          $wv_tag = "$wv_tag -w \"Genre=${$gen}\""     if defined(${$gen});
          $wv_tag = "$wv_tag -w \"Track=${$tra}\""     if defined(${$tra});

     }

       system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    
    }       
    
    # Ogg Vorbis -> OptimFrog (OFR)
    if ($enc_opt eq "oggtoofr")   {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Ogg Vorbis -> OptimFrog (OFS)
    if ($enc_opt eq "oggtoofs")   {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Ogg Vorbis -> TTA
    if ($enc_opt eq "oggtotta")   {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Ogg Vorbis -> LPAC
    if ($enc_opt eq "oggtopac")   {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Ogg Vorbis -> Kexis (KXS)
    if ($enc_opt eq "oggtokxs")   {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Ogg Vorbis -> (AIFF/AU/SND/RAW/SMP)
    if ($enc_opt eq "oggtoaiff")  {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Ogg Vorbis -> (MP2/AC3/RA)
    if ($enc_opt eq "oggtomp2")   {
        system("$nice $ffmpeg -y -i \"$audio_file\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Ogg Vorbis -> Lossless Audio (LA)
    if ($enc_opt eq "oggtola")    {
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");        
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Ogg Vorbis -> BONK
    if ($enc_opt eq "oggtobonk")  {

     my $bonk_tag = '';
 
     if ($usetags eq 1) {
     
       my $ogg_tag = Ogg::Vorbis::Header->new("$audio_file");
       my ($art, $tit, $yea, $gen, $alb, $tra, $com);
                   
       foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~  /ARTIST/i) { $art   = \$ogg_tag->comment($i); }
           if ($i =~   /TITLE/i) { $tit   = \$ogg_tag->comment($i); }
           if ($i =~ /COMMENT/i) { $com   = \$ogg_tag->comment($i); }
       }
                                                                                                              
          $bonk_tag = "$bonk_tag -a \"${$art}\""   if defined(${$art});
          $bonk_tag = "$bonk_tag -t \"${$tit}\""   if defined(${$tit});
          $bonk_tag = "$bonk_tag -c \"${$com}\""   if defined(${$com});
                                                                                                                                                                                 
     }
                                                                                                                                                                                         
        system("$nice $oggdec \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_tag $audio_opts $bonk_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Ogg Vorbis -> WAV
    if ($enc_opt eq "oggtowav")   {
       system("$nice $oggdec \"$audio_file\" -o \"$out_file\"");
    }





    ###############################
    # FLAC -> MP3
    if ($enc_opt eq "flactomp3")  {

     system("$nice $flac -d \"$audio_file\" -o \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
   
     if ($usetags eq 1 and -e $out_file) {
     
       my $flac_tag = Audio::FLAC::Header->new($audio_file)->tags();
       my $mp3_tag  = MP3::Tag->new($out_file);
       
          $mp3_tag->new_tag("$id3v");
          
       my $id3;
          $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
       
          $id3->artist($flac_tag->{ARTIST})       if $flac_tag->{ARTIST};
          $id3->title($flac_tag->{TITLE})         if $flac_tag->{TITLE};
          $id3->album($flac_tag->{ALBUM})         if $flac_tag->{ALBUM};
          $id3->genre($flac_tag->{GENRE})         if $flac_tag->{GENRE};
          $id3->year($flac_tag->{DATE})           if $flac_tag->{DATE};
          $id3->comment($flac_tag->{DESCRIPTION}) if $flac_tag->{DESCRIPTION};
          $id3->track($flac_tag->{TRACKNUMBER})   if $flac_tag->{TRACKNUMBER};
       
          $id3->write_tag;
     }

    }
 
    # FLAC -> Ogg Vorbis
    if ($enc_opt eq "flactoogg")  {

       system("$nice $flac -d \"$audio_file\" -o \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
 
     if ($usetags eq 1 and -e $out_file) {
     
       my $flac_tag = Audio::FLAC::Header->new($audio_file)->tags();
       my $ogg_tag  = Ogg::Vorbis::Header->new($out_file);

       $ogg_tag->add_comments("ARTIST",      "$flac_tag->{ARTIST}")      if $flac_tag->{ARTIST};
       $ogg_tag->add_comments("TITLE",       "$flac_tag->{TITLE}")       if $flac_tag->{TITLE};
       $ogg_tag->add_comments("YEAR",        "$flac_tag->{DATE}")        if $flac_tag->{DATE};
       $ogg_tag->add_comments("DATE",        "$flac_tag->{DATE}")        if $flac_tag->{DATE};
       $ogg_tag->add_comments("COMMENT",     "$flac_tag->{DESCRIPTION}") if $flac_tag->{DESCRIPTION};
       $ogg_tag->add_comments("GENRE",       "$flac_tag->{GENRE}")       if $flac_tag->{GENRE};
       $ogg_tag->add_comments("ALBUM",       "$flac_tag->{ALBUM}")       if $flac_tag->{ALBUM};
       $ogg_tag->add_comments("TRACKNUMBER", "$flac_tag->{TRACKNUMBER}") if $flac_tag->{TRACKNUMBER};

       $ogg_tag->write_vorbis;

     }

    }       

    # FLAC -> FLAC
    if ($enc_opt eq "flactoflac") {

       system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\""); 
       system("$nice $flac -f $audio_opts -$flevel \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {

       my $old_tag    = Audio::FLAC::Header->new($audio_file)->tags();
       my $flac_head  = Audio::FLAC::Header->new($out_file);
       my $flac_tag   = $flac_head->tags();
       
       $flac_tag->{ARTIST}       =  $old_tag->{ARTIST}        if $old_tag->{ARTIST};
       $flac_tag->{ALBUM}        =  $old_tag->{ALBUM}         if $old_tag->{ALBUM};
       $flac_tag->{TITLE}        =  $old_tag->{TITLE}         if $old_tag->{TITLE};
       $flac_tag->{DATE}         =  $old_tag->{DATE}          if $old_tag->{DATE};
       $flac_tag->{DESCRIPTION}  =  $old_tag->{DESCRIPTION}   if $old_tag->{DESCRIPTION};
       $flac_tag->{GENRE}        =  $old_tag->{GENRE}         if $old_tag->{GENRE};
       $flac_tag->{TRACKNUMBER}  =  $old_tag->{TRACKNUMBER}   if $old_tag->{TRACKNUMBER};
       
       $flac_head->write();
    
     }

    }
            
    # FLAC -> Monkey Audio (APE)
    if ($enc_opt eq "flactoape")  {

       system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");

    }
                          
    # FLAC -> Shorten (SHN)
    if ($enc_opt eq "flactoshn")  {
        system("$nice $flac -d \"$audio_file\" -o \"-\" | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\"");
    }
    
    # FLAC -> FAAC (AAC)
    if ($enc_opt eq "flactoaac")  {
        system("$nice $flac -d \"$audio_file\" -o \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }

    # FLAC -> FAAC (M4A/MP4)
    if ($enc_opt eq "flactomp4")  {

      my $mp4_tag = '';
           
      if ($usetags eq 1) {

           my $flac_tag = Audio::FLAC::Header->new($audio_file)->tags();
           
           $mp4_tag = "--artist  \"$flac_tag->{ARTIST}\""                 if $flac_tag->{ARTIST};
           $mp4_tag = "$mp4_tag --title   \"$flac_tag->{TITLE}\""         if $flac_tag->{TITLE};
           $mp4_tag = "$mp4_tag --album   \"$flac_tag->{ALBUM}\""         if $flac_tag->{ALBUM};
           $mp4_tag = "$mp4_tag --year    \"$flac_tag->{DATE}\""          if $flac_tag->{DATE};
           $mp4_tag = "$mp4_tag --genre   \"$flac_tag->{GENRE}\""         if $flac_tag->{GENRE};
           $mp4_tag = "$mp4_tag --comment \"$flac_tag->{DESCRIPTION}\""   if $flac_tag->{DESCRIPTION};
           $mp4_tag = "$mp4_tag --track   \"$flac_tag->{TRACKNUMBER}\""   if $flac_tag->{TRACKNUMBER};

      }
           system("$nice $flac -d \"$audio_file\" -o \"-\" | $nice $faac $mp4_tag $audio_opts -w -q $quality \"-\" -o \"$out_file\"");

    }

    # FLAC -> Musepack (MPC)
    if ($enc_opt eq "flactompc")  {

     my $mpc_tag = '';
     
     if ($usetags eq 1) {
     
       my $flac_tag = Audio::FLAC::Header->new($audio_file)->tags();
       
       $mpc_tag = "--tag \"Artist=$flac_tag->{ARTIST}\""                  if $flac_tag->{ARTIST};
       $mpc_tag = "$mpc_tag --tag \"Album=$flac_tag->{ALBUM}\""           if $flac_tag->{ALBUM};
       $mpc_tag = "$mpc_tag --tag \"Title=$flac_tag->{TITLE}\""           if $flac_tag->{TITLE};
       $mpc_tag = "$mpc_tag --tag \"Year=$flac_tag->{DATE}\""             if $flac_tag->{DATE};
       $mpc_tag = "$mpc_tag --tag \"Genre=$flac_tag->{GENRE}\""           if $flac_tag->{GENRE};
       $mpc_tag = "$mpc_tag --tag \"Comment=$flac_tag->{DESCRIPTION}\""   if $flac_tag->{DESCRIPTION};
       $mpc_tag = "$mpc_tag --tag \"Track=$flac_tag->{TRACKNUMBER}\""     if $flac_tag->{TRACKNUMBER};
     
     }

       system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$audio_file\" \"$out_file\"");

    }
    
    # FLAC -> Wavpack (WV)
    if ($enc_opt eq "flactowv") {
    
     my $wv_tag = '';
     
     if ($usetags eq 1) {
     
       my $flac_tag = Audio::FLAC::Header->new($audio_file)->tags();
       
       $wv_tag = "-w \"Artist=$flac_tag->{ARTIST}\""                      if $flac_tag->{ARTIST};
       $wv_tag = "$wv_tag -w \"Album=$flac_tag->{ALBUM}\""                if $flac_tag->{ALBUM};
       $wv_tag = "$wv_tag -w \"Title=$flac_tag->{TITLE}\""                if $flac_tag->{TITLE};
       $wv_tag = "$wv_tag -w \"Year=$flac_tag->{DATE}\""                  if $flac_tag->{DATE};
       $wv_tag = "$wv_tag -w \"Genre=$flac_tag->{GENRE}\""                if $flac_tag->{GENRE};
       $wv_tag = "$wv_tag -w \"Comment=$flac_tag->{DESCRIPTION}\""        if $flac_tag->{DESCRIPTION};
       $wv_tag = "$wv_tag -w \"Track=$flac_tag->{TRACKNUMBER}\""          if $flac_tag->{TRACKNUMBER};
       
     }
       
       system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    
    }        
    
    # FLAC -> OptimFrog (OFR)
    if ($enc_opt eq "flactoofr")  {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # FLAC -> OptimFrog (OFS)
    if ($enc_opt eq "flactoofs")  {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }          
    
    # FLAC -> TTA
    if ($enc_opt eq "flactotta")  {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # FLAC -> LPAC
    if ($enc_opt eq "flactopac")  {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # FLAC -> Kexis (KXS)
    if ($enc_opt eq "flactokxs")  {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # FLAC -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "flactoaiff") { 
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # FLAC -> (MP2/AC3/RA)
    if ($enc_opt eq "flactomp2")  {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # FLAC -> Lossless Audio (LA)
    if ($enc_opt eq "flactola")   {
        system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");        
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # FLAC -> BONK
    if ($enc_opt eq "flactobonk") {
     
     my $bonk_tag = '';
     
     if ($usetags eq 1) {
          
       my $flac_tag = Audio::FLAC::Header->new($audio_file)->tags();
                 
       $bonk_tag = "$bonk_tag -a \"$flac_tag->{ARTIST}\""      if $flac_tag->{ARTIST};
       $bonk_tag = "$bonk_tag -t \"$flac_tag->{TITLE}\""       if $flac_tag->{TITLE};
       $bonk_tag = "$bonk_tag -c \"$flac_tag->{DESCRIPTION}\"" if $flac_tag->{DESCRIPTION};
                                                                  
     }
                                                                            
       system("$nice $flac -f -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $bonk encode $bonk_tag $audio_opts $bonk_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
        
    # FLAC -> WAV
    if ($enc_opt eq "flactowav")  {
       system("$nice $flac -f -d \"$audio_file\" -o \"$out_file\"");
    }





    ###############################
    # Monkey Audio (APE) -> MP3
    if ($enc_opt eq "apetomp3")   {
       system("$nice $mac \"$audio_file\" \"-\" -d | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
    }

    # Monkey Audio (APE) -> Ogg Vorbis
    if ($enc_opt eq "apetoogg")   {
       system("$nice $mac \"$audio_file\" \"-\" -d | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }

    # Monkey Audio (APE) -> FLAC
    if ($enc_opt eq "apetoflac")  {
       system("$nice $mac \"$audio_file\" \"-\" -d | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");
    }   
    
    # Monkey Audio (APE) -> Monkey Audio (APE)
    if ($enc_opt eq "apetoape")   {
       system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # Monkey Audio (APE) -> Shorten (SHN)
    if ($enc_opt eq "apetoshn")   {
       system("$nice $mac \"$audio_file\" \"-\" -d | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> FAAC (AAC)
    if ($enc_opt eq "apetoaac")   {
       system("$nice $mac \"$audio_file\" \"-\" -d | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> FAAC (M4A/MP4)
    if ($enc_opt eq "apetomp4")   {
       system("$nice $mac \"$audio_file\" \"-\" -d | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }

    # Monkey Audio (APE) -> Musepack (MPC)
    if ($enc_opt eq "apetompc")   {
       system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$audio_file\" \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> Wavpack (WV)
    if ($enc_opt eq "apetowv")    {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> OptimFrog (OFR)
    if ($enc_opt eq "apetoofr")   {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> OptimFrog (OFS)
    if ($enc_opt eq "apetoofs")   {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> TTA
    if ($enc_opt eq "apetotta")   {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> LPAC
    if ($enc_opt eq "apetopac")   {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> Kexis (KXS)
    if ($enc_opt eq "apetokxs")   {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Monkey Audio (APE) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "apetoaiff")  {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Monkey Audio (APE) -> (MP2/AC3/RA)
    if ($enc_opt eq "apetomp2")   {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> Lossless Audio (LA)
    if ($enc_opt eq "apetola")    {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d"); 
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Monkey Audio (APE) -> BONK
    if ($enc_opt eq "apetobonk")  {
        system("$nice $mac \"$audio_file\" \"$new_file.wav\" -d");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }

    # Monkey Audio (APE) -> WAV
    if ($enc_opt eq "apetowav")   {
       system("$nice $mac \"$audio_file\" \"$out_file\" -d");
    }       





    ###############################   
    # Shorten (SHN) -> MP3
    if ($enc_opt eq "shntomp3")   {
        system("$nice $shorten -x \"$audio_file\" \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
    }

    # Shorten (SHN) -> Ogg Vorbis
    if ($enc_opt eq "shntoogg")   {
        system("$nice $shorten -x \"$audio_file\" \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }       
    
    # Shorten (SHN) -> FLAC
    if ($enc_opt eq "shntoflac")  {
        system("$nice $shorten -x \"$audio_file\" \"-\" | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");
    }
    
    # Shorten (SHN) -> Monkey Audio (APE)
    if ($enc_opt eq "shntoape")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }                       
    
    # Shorten (SHN) -> Shorten (SHN)
    if ($enc_opt eq "shntoshn")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Shorten (SHN) -> FAAC (AAC)
    if ($enc_opt eq "shntoaac")   {
        system("$nice $shorten -x \"$audio_file\" \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }

    # Shorten (SHN) -> FAAC (M4A/MP4)
    if ($enc_opt eq "shntomp4")   {
        system("$nice $shorten -x \"$audio_file\" \"-\" | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }

    # Shorten (SHN) -> Musepack (MPC)
    if ($enc_opt eq "shntompc")   {
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$audio_file\" \"$out_file\"");
    }
    
    # Shorten (SHN) -> Wavpack (WV)
    if ($enc_opt eq "shntowv")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Shorten (SHN) -> OptimFrog (OFR)
    if ($enc_opt eq "shntoofr")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Shorten (SHN) -> OptimFrog (OFS)
    if ($enc_opt eq "shntoofs")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Shorten (SHN) -> TTA
    if ($enc_opt eq "shntotta")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Shorten (SHN) -> LPAC
    if ($enc_opt eq "shntopac")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Shorten (SHN) -> Kexis (KXS)
    if ($enc_opt eq "shntokxs")   {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Shorten (SHN) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "shntoaiff")  {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Shorten (SHN) -> (MP2/AC3/RA)
    if ($enc_opt eq "shntomp2")   {
        system("$nice $ffmpeg -y -i \"$audio_file\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Shorten (SHN) -> Lossless Audio (LA)
    if ($enc_opt eq "shntola")    {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }        
    
    # Shorten (SHN) -> BONK
    if ($enc_opt eq "shntobonk")  {
        system("$nice $shorten -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Shorten (SHN) -> WAV
    if ($enc_opt eq "shntowav")   {
        system("$nice $shorten -x \"$audio_file\" \"$out_file\"");
    }




    
    ################################
    # FAAC (AAC) -> MP3
    if ($enc_opt eq "aactomp3")   {
        system("$nice $faad -o \"-\" \"$audio_file\" | $nice $lame --resample $freq $audio_opts -b $bitrate -h \"-\" \"$out_file\"");
    }        
    
    # FAAC (AAC) -> Ogg Vorbis
    if ($enc_opt eq "aactoogg")   {
        system("$nice $faad -o \"-\" \"$audio_file\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }
  
    # FAAC (AAC) -> FLAC
    if ($enc_opt eq "aactoflac")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # FAAC (AAC) -> Monkey Audio (APE)
    if ($enc_opt eq "aactoape")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }
    
    # FAAC (AAC) -> Shorten (SHN)
    if ($enc_opt eq "aactoshn")   {
        system("$nice $faad -o \"-\" \"$audio_file\" | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\""); 
    }

    # FAAC (AAC) -> FAAC (AAC)
    if ($enc_opt eq "aactoaac")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    } 
                       
    # FAAC (AAC) -> FAAC (M4A/MP4)
    if ($enc_opt eq "aactomp4")   {
        system("$nice $faad -o \"-\" \"$audio_file\" | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }

    # FAAC (AAC) -> Musepack (MPC)
    if ($enc_opt eq "aactompc")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }    
    
    # FAAC (AAC) -> Wavpack (WV)
    if ($enc_opt eq "aactowv")    {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # FAAC (AAC) -> OptimFrog (OFR)
    if ($enc_opt eq "aactoofr")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # FAAC (AAC) -> OptimFrog (OFS)
    if ($enc_opt eq "aactoofs")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }    
    
    # FAAC (AAC) -> TTA
    if ($enc_opt eq "aactotta")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # FAAC (AAC) -> LPAC
    if ($enc_opt eq "aactopac")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # FAAC (AAC) -> Kexis (KXS)
    if ($enc_opt eq "aactokxs")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }

    # FAAC (AAC) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "aactoaiff")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # FAAC (AAC) -> (MP2/AC3/RA)
    if ($enc_opt eq "aactomp2")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # FAAC (AAC) -> Lossless Audio (LA)
    if ($enc_opt eq "aactola")    {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");        
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # FAAC (AAC) -> BONK
    if ($enc_opt eq "aactobonk")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # FAAC (AAC) -> WAV
    if ($enc_opt eq "aactowav")   {
        system("$nice $faad -o \"$out_file\" \"$audio_file\"");
    }
    
    
    
    
    ###############################
    # FAAC (M4A/MP4) -> MP3
    if ($enc_opt eq "mp4tomp3")   {

      system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
      system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
       
      if ($usetags eq 1 and -e $out_file) {
     
       my $mp4_tag = get_mp4tag($audio_file);
       
       my $mp3_tag = MP3::Tag->new($out_file);
          $mp3_tag->new_tag("$id3v");
       
       my $id3;
          $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
       
          $id3->artist($mp4_tag->{ARTIST})     if $mp4_tag->{ARTIST};
          $id3->album($mp4_tag->{ALBUM})       if $mp4_tag->{ALBUM};
          $id3->genre($mp4_tag->{GENRE})       if $mp4_tag->{GENRE};
          $id3->title($mp4_tag->{TITLE})       if $mp4_tag->{TITLE};
          $id3->year($mp4_tag->{YEAR})         if $mp4_tag->{YEAR};
          $id3->track($mp4_tag->{TRACKNUM})    if $mp4_tag->{TRACKNUM};
          $id3->comment($mp4_tag->{COMMENT})   if $mp4_tag->{COMMENT};
       
          $id3->write_tag; 
      }
    }

    # FAAC (M4A/MP4) -> Ogg Vorbis
    if ($enc_opt eq "mp4toogg")   {

     system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
     system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $mp4_tag = get_mp4tag($audio_file);
       my $ogg_tag = Ogg::Vorbis::Header->new($out_file);
           
       $ogg_tag->add_comments("ARTIST",      "$mp4_tag->{ARTIST}")     if $mp4_tag->{ARTIST};   
       $ogg_tag->add_comments("TITLE",       "$mp4_tag->{TITLE}")      if $mp4_tag->{TITLE};    
       $ogg_tag->add_comments("YEAR",        "$mp4_tag->{YEAR}")       if $mp4_tag->{YEAR};     
       $ogg_tag->add_comments("DATE",        "$mp4_tag->{YEAR}")       if $mp4_tag->{YEAR};
       $ogg_tag->add_comments("COMMENT",     "$mp4_tag->{COMMENT}")    if $mp4_tag->{COMMENT};  
       $ogg_tag->add_comments("GENRE",       "$mp4_tag->{GENRE}")      if $mp4_tag->{GENRE};    
       $ogg_tag->add_comments("ALBUM",       "$mp4_tag->{ALBUM}")      if $mp4_tag->{ALBUM};    
       $ogg_tag->add_comments("TRACKNUMBER", "$mp4_tag->{TRACKNUM}")   if $mp4_tag->{TRACKNUM};
                                       
       $ogg_tag->write_vorbis;

     }
                                           
    }

    # FAAC (M4A/MP4) -> FLAC
    if ($enc_opt eq "mp4toflac")  {

     system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
     system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $mp4_tag  = get_mp4tag($audio_file);
       
       my $flac_head = Audio::FLAC::Header->new($out_file);
       my $flac_tag  = $flac_head->tags();
       
       $flac_tag->{ARTIST}      = "$mp4_tag->{ARTIST}"    if $mp4_tag->{ARTIST};
       $flac_tag->{TITLE}       = "$mp4_tag->{TITLE}"     if $mp4_tag->{TITLE};
       $flac_tag->{DATE}        = "$mp4_tag->{YEAR}"      if $mp4_tag->{YEAR};
       $flac_tag->{GENRE}       = "$mp4_tag->{GENRE}"     if $mp4_tag->{GENRE};
       $flac_tag->{ALBUM}       = "$mp4_tag->{ALBUM}"     if $mp4_tag->{ALBUM};
       $flac_tag->{TRACKNUMBER} = "$mp4_tag->{TRACKNUM}"  if $mp4_tag->{TRACKNUM};
       $flac_tag->{DESCRIPTION} = "$mp4_tag->{COMMENT}"   if $mp4_tag->{COMMENT};
       
       $flac_head->write();
       
     }

    }
    
    # FAAC (M4A/MP4) -> Monkey Audio (APE)
    if ($enc_opt eq "mp4toape")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }                    
       
    # FAAC (M4A/MP4) -> Shorten (SHN)
    if ($enc_opt eq "mp4toshn")   {   
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }

    # FAAC (M4A/MP4) -> FAAC (AAC)
    if ($enc_opt eq "mp4toaac")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }

    # FAAC (M4A/MP4) -> FAAC (M4A/MP4)
    if ($enc_opt eq "mp4tomp4")   {

     my $mp4_tag = '';
     
     if ($usetags eq 1) {
     
       my $old_tag = get_mp4tag($audio_file);
       
       $mp4_tag = "--artist \"$old_tag->{ARTIST}\""             if $old_tag->{ARTIST};    
       $mp4_tag = "$mp4_tag --title \"$old_tag->{TITLE}\""       if $old_tag->{TITLE};      
       $mp4_tag = "$mp4_tag --genre \"$old_tag->{GENRE}\""       if $old_tag->{GENRE};      
       $mp4_tag = "$mp4_tag --year \"$old_tag->{YEAR}\""         if $old_tag->{YEAR};        
       $mp4_tag = "$mp4_tag --album \"$old_tag->{ALBUM}\""       if $old_tag->{ALBUM};      
       $mp4_tag = "$mp4_tag --comment \"$old_tag->{COMMENT}\""   if $old_tag->{COMMENT};  
       $mp4_tag = "$mp4_tag --track \"$old_tag->{TRACKNUM}\""    if $old_tag->{TRACKNUM};
     
     }
       
       system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
       system("$nice $faac $mp4_tag $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
       
    }
    
    # FAAC (M4A/MP4) -> Musepack (MPC)
    if ($enc_opt eq "mp4tompc")   {

      my $mpc_tag = '';
      
     if ($usetags eq 1) {
     
       my $mp4_tag = get_mp4tag($audio_file);
       
       $mpc_tag = "--artist \"$mp4_tag->{ARTIST}\""                 if $mp4_tag->{ARTIST};
       $mpc_tag = "$mpc_tag --tag \"Title=$mp4_tag->{TITLE}\""      if $mp4_tag->{TITLE};
       $mpc_tag = "$mpc_tag --tag \"Genre=$mp4_tag->{GENRE}\""      if $mp4_tag->{GENRE};
       $mpc_tag = "$mpc_tag --tag \"Album=$mp4_tag->{ALBUM}\""      if $mp4_tag->{ALBUM};
       $mpc_tag = "$mpc_tag --tag \"Year=$mp4_tag->{YEAR}\""        if $mp4_tag->{YEAR};
       $mpc_tag = "$mpc_tag --tag \"Track=$mp4_tag->{TRACKNUM}\""   if $mp4_tag->{TRACKNUM};
       $mpc_tag = "$mpc_tag --tag \"Comment=$mp4_tag->{COMMENT}\""  if $mp4_tag->{COMMENT};
    
     }
       
       system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
       system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$new_file.wav\" \"$out_file\"");

    }
    
    # FAAC (M4A/MP4) -> Wavpack (WV)
    if ($enc_opt eq "mp4towv") {
    
     my $wv_tag = '';

     if ($usetags eq 1) {
     
       my $mp4_tag = get_mp4tag($audio_file);

       $wv_tag = "-w \"Artist=$mp4_tag->{ARTIST}\""              if $mp4_tag->{ARTIST};
       $wv_tag = "$wv_tag -w \"Title=$mp4_tag->{TITLE}\""        if $mp4_tag->{TITLE};
       $wv_tag = "$wv_tag -w \"Genre=$mp4_tag->{GENRE}\""        if $mp4_tag->{GENRE};
       $wv_tag = "$wv_tag -w \"Album=$mp4_tag->{ALBUM}\""        if $mp4_tag->{ALBUM};
       $wv_tag = "$wv_tag -w \"Year=$mp4_tag->{YEAR}\""          if $mp4_tag->{YEAR};
       $wv_tag = "$wv_tag -w \"Track=$mp4_tag->{TRACKNUM}\""     if $mp4_tag->{TRACKNUM};
       $wv_tag = "$wv_tag -w \"Comment=$mp4_tag->{COMMENT}\""    if $mp4_tag->{COMMENT};
    
     }

       system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
       system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
                     
    }                     
    
    # FAAC (M4A/MP4) -> OptimFrog (OFR)
    if ($enc_opt eq "mp4toofr")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # FAAC (M4A/MP4) -> OptimFrog (OFS)
    if ($enc_opt eq "mp4toofs")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # FAAC (M4A/MP4) -> TTA
    if ($enc_opt eq "mp4totta")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # FAAC (M4A/MP4) -> LPAC
    if ($enc_opt eq "mp4topac")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # FAAC (M4A/MP4) -> Kexis (KXS)
    if ($enc_opt eq "mp4tokxs")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # FAAC (M4A/MP4) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "mp4toaiff") {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # FAAC (M4A/MP4) -> (MP2/AC3/RA)
    if ($enc_opt eq "mp4tomp2")  {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # FAAC (M4A/MP4) -> Lossless Audio (LA)
    if ($enc_opt eq "mp4tola")   {
        system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # FAAC (M4A/MP4) -> BONK
    if ($enc_opt eq "mp4tobonk") {
        
     my $bonk_tag = '';
             
     if ($usetags eq 1) {
                  
       my $mp4_tag = get_mp4tag($audio_file);
                         
          $bonk_tag = "$bonk_tag -a \"$mp4_tag->{ARTIST}\""  if $mp4_tag->{ARTIST};
          $bonk_tag = "$bonk_tag -t \"$mp4_tag->{TITLE}\""   if $mp4_tag->{TITLE};
          $bonk_tag = "$bonk_tag -c \"$mp4_tag->{COMMENT}\"" if $mp4_tag->{COMMENT};
                                                                          
     }
     
       system("$nice $faad -o \"$new_file.wav\" \"$audio_file\"");
       system("$nice $bonk encode $bonk_tag $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }                                                                           
    
    # FAAC (M4A/MP4) -> WAV
    if ($enc_opt eq "mp4towav")  {
       system("$nice $faad -o \"$out_file\" \"$audio_file\"");
    }
    
    
    
    
    
    ############################### 
    # Musepack (MPC/MPP) -> MP3
    if ($enc_opt eq "mpctomp3")   {

     system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
     system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file)  {
     
       my $mpc_tag = Audio::Musepack->new($audio_file)->tags();
       
       my $mp3_tag = MP3::Tag->new($out_file);
          $mp3_tag->new_tag("$id3v");
       
       my $id3;
          $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
       
          $id3->artist($mpc_tag->{Artist})    if $mpc_tag->{Artist};
          $id3->title($mpc_tag->{Title})      if $mpc_tag->{Title};
          $id3->genre($mpc_tag->{Genre})      if $mpc_tag->{Genre};
          $id3->album($mpc_tag->{Album})      if $mpc_tag->{Album};
          $id3->year($mpc_tag->{Year})        if $mpc_tag->{Year};
          $id3->comment($mpc_tag->{Comment})  if $mpc_tag->{Comment};
          $id3->track($mpc_tag->{Track})      if $mpc_tag->{Track};
       
          $id3->write_tag;
     }

    }

    # Musepack (MPC/MPP) -> Ogg Vorbis 
    if ($enc_opt eq "mpctoogg")   {

     system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
     system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");

     if ($usetags eq 1 and -e $out_file) {
     
       my $mpc_tag = Audio::Musepack->new($audio_file)->tags();
       my $ogg_tag = Ogg::Vorbis::Header->new($out_file);

       $ogg_tag->add_comments("ARTIST",      "$mpc_tag->{Artist}")    if $mpc_tag->{Artist};
       $ogg_tag->add_comments("TITLE",       "$mpc_tag->{Title}")     if $mpc_tag->{Title};
       $ogg_tag->add_comments("YEAR",        "$mpc_tag->{Year}")      if $mpc_tag->{Year};
       $ogg_tag->add_comments("DATE",        "$mpc_tag->{Year}")      if $mpc_tag->{Year};
       $ogg_tag->add_comments("COMMENT",     "$mpc_tag->{Comment}")   if $mpc_tag->{Comment};  
       $ogg_tag->add_comments("GENRE",       "$mpc_tag->{Genre}")     if $mpc_tag->{Genre};    
       $ogg_tag->add_comments("ALBUM",       "$mpc_tag->{Album}")     if $mpc_tag->{Album};    
       $ogg_tag->add_comments("TRACKNUMBER", "$mpc_tag->{Track}")     if $mpc_tag->{Track};

       $ogg_tag->write_vorbis;       

     }
 
    }   
    
    # Musepack (MPC/MPP) -> FLAC
    if ($enc_opt eq "mpctoflac")  {

     system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
     system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $mpc_tag   = Audio::Musepack->new($audio_file)->tags();
       my $flac_head = Audio::FLAC::Header->new($out_file);
       my $flac_tag  = $flac_head->tags();
       
       $flac_tag->{ARTIST}      = "$mpc_tag->{Artist}"   if $mpc_tag->{Artist};  
       $flac_tag->{TITLE}       = "$mpc_tag->{Title}"    if $mpc_tag->{Title};   
       $flac_tag->{DATE}        = "$mpc_tag->{Year}"     if $mpc_tag->{Year};    
       $flac_tag->{GENRE}       = "$mpc_tag->{Genre}"    if $mpc_tag->{Genre};   
       $flac_tag->{ALBUM}       = "$mpc_tag->{Album}"    if $mpc_tag->{Album};   
       $flac_tag->{TRACKNUMBER} = "$mpc_tag->{Track}"    if $mpc_tag->{Track};   
       $flac_tag->{DESCRIPTION} = "$mpc_tag->{Comment}"  if $mpc_tag->{Comment}; 
       
       $flac_head->write();

     }

    }

    # Musepack (MPC/MPP) -> Monkey Audio (APE)
    if ($enc_opt eq "mpctoape")   {
       system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }

    # Musepack (MPC/MPP) -> Shorten (SHN)
    if ($enc_opt eq "mpctoshn")   {
       system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }

    # Musepack (MPC/MPP) -> FAAC (AAC)
    if ($enc_opt eq "mpctoaac")   {
       system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");       
       system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> FAAC (M4A/MP4)
    if ($enc_opt eq "mpctomp4")   {

     my $mp4_tag = '';
     
     if ($usetags eq 1) {
     
       my $mpc_tag = Audio::Musepack->new($audio_file)->tags();
       
       $mp4_tag = "--artist \"$mpc_tag->{Artist}\""              if $mpc_tag->{Artist};
       $mp4_tag = "$mp4_tag --title \"$mpc_tag->{Title}\""       if $mpc_tag->{Title};     
       $mp4_tag = "$mp4_tag --album \"$mpc_tag->{Album}\""       if $mpc_tag->{Album};     
       $mp4_tag = "$mp4_tag --genre \"$mpc_tag->{Genre}\""       if $mpc_tag->{Genre};     
       $mp4_tag = "$mp4_tag --track \"$mpc_tag->{Track}\""       if $mpc_tag->{Track};     
       $mp4_tag = "$mp4_tag --year \"$mpc_tag->{Year}\""         if $mpc_tag->{Year};       
       $mp4_tag = "$mp4_tag --comment \"$mpc_tag->{Comment}\""   if $mpc_tag->{Comment}; 

     }
       
       system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
       system("$nice $faac $mp4_tag $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");

    }
    
    # Musepack (MPC/MPP) -> Musepack (MPC)
    if ($enc_opt eq "mpctompc")   {

     my $mpc_tag = '';

     if ($usetags eq 1) {
     
       my $old_tag = Audio::Musepack->new($audio_file)->tags();
       
       $mpc_tag = "--artist \"$old_tag->{Artist}\""                  if $old_tag->{Artist};
       $mpc_tag = "$mpc_tag --tag \"Title=$old_tag->{Title}\""       if $old_tag->{Title};     
       $mpc_tag = "$mpc_tag --tag \"Genre=$old_tag->{Genre}\""       if $old_tag->{Genre};     
       $mpc_tag = "$mpc_tag --tag \"Year=$old_tag->{Year}\""         if $old_tag->{Year};       
       $mpc_tag = "$mpc_tag --tag \"Track=$old_tag->{Track}\""       if $old_tag->{Track};     
       $mpc_tag = "$mpc_tag --tag \"Album=$old_tag->{Album}\""       if $old_tag->{Album};     
       $mpc_tag = "$mpc_tag --tag \"Comment=$old_tag->{Comment}\""   if $old_tag->{Comment}; 
       
     }
       
       system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
       system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$new_file.wav\" \"$out_file\"");

    }
    
    # Musepack (MPC/MPP) -> Wavpack (WV)
    if ($enc_opt eq "mpctowv") {
    
     my $wv_tag = '';

     if ($usetags eq 1) {
     
       my $mpc_tag = Audio::Musepack->new($audio_file)->tags();
       
       $wv_tag = "-w \"Artist=$mpc_tag->{Artist}\""            if $mpc_tag->{Artist};
       $wv_tag = "$wv_tag -w \"Title=$mpc_tag->{Title}\""      if $mpc_tag->{Title};
       $wv_tag = "$wv_tag -w \"Genre=$mpc_tag->{Genre}\""      if $mpc_tag->{Genre};
       $wv_tag = "$wv_tag -w \"Year=$mpc_tag->{Year}\""        if $mpc_tag->{Year};
       $wv_tag = "$wv_tag -w \"Track=$mpc_tag->{Track}\""      if $mpc_tag->{Track};
       $wv_tag = "$wv_tag -w \"Album=$mpc_tag->{Album}\""      if $mpc_tag->{Album};
       $wv_tag = "$wv_tag -w \"Comment=$mpc_tag->{Comment}\""  if $mpc_tag->{Comment};

     }
       
       system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
       system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
       
    }       
    
    # Musepack (MPC/MPP) -> OptimFrog (OFR)
    if ($enc_opt eq "mpctoofr")  {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> OptimFrog (OFS)
    if ($enc_opt eq "mpctoofs")  {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> TTA
    if ($enc_opt eq "mpctotta")  {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> LPAC
    if ($enc_opt eq "mpctopac")  {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> Kexis (KXS)
    if ($enc_opt eq "mpctokxs")  {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Musepack (MPC/MPP) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "mpctoaiff") {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Musepack (MPC/MPP) -> (MP2/AC3/RA)
    if ($enc_opt eq "mpctomp2")  {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> Lossless Audio (LA)
    if ($enc_opt eq "mpctola")   {
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> BONK
    if ($enc_opt eq "mpctobonk") {

     my $bonk_tag = '';
     
     if ($usetags eq 1) {
          
       my $mpc_tag = Audio::Musepack->new($audio_file)->tags();
                 
          $bonk_tag = "$bonk_tag -a \"$mpc_tag->{Artist}\""   if $mpc_tag->{Artist};
          $bonk_tag = "$bonk_tag -t \"$mpc_tag->{Title}\""    if $mpc_tag->{Title};
          $bonk_tag = "$bonk_tag -c \"$mpc_tag->{Comment}\""  if $mpc_tag->{Comment};
                                                                 
     }
        system("$nice $mppdec \"$audio_file\" \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_tag $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Musepack (MPC/MPP) -> WAV
    if ($enc_opt eq "mpctowav")  {
       system("$nice $mppdec \"$audio_file\" \"$out_file\"");
    }
    
    
    
    
    
    #############################
    # Wavpack (WV) -> MP3
    if ($enc_opt eq "wvtomp3") {
    
       system("$nice $wvunpack \"$audio_file\" -o \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $wv_tag  = Audio::APETags->getTags($audio_file)->{'tags'};
       
       my $mp3_tag = MP3::Tag->new($out_file);
          $mp3_tag->new_tag("$id3v");
                        
       my $id3;
          $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
                                         
          $id3->artist($wv_tag->{Artist})    if $wv_tag->{Artist};
          $id3->title($wv_tag->{Title})      if $wv_tag->{Title};
          $id3->genre($wv_tag->{Genre})      if $wv_tag->{Genre};
          $id3->album($wv_tag->{Album})      if $wv_tag->{Album};
          $id3->year($wv_tag->{Year})        if $wv_tag->{Year};
          $id3->comment($wv_tag->{Comment})  if $wv_tag->{Comment};
          $id3->track($wv_tag->{Track})      if $wv_tag->{Track};
                
          $id3->write_tag;
     }
            
    }
    
    # Wavpack (WV) -> Ogg Vorgis 
    if ($enc_opt eq "wvtoogg") {
   
       system("$nice $wvunpack \"$audio_file\" -o \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
   
     if ($usetags eq 1 and -e $out_file) {
     
       my $wv_tag  = Audio::APETags->getTags($audio_file)->{'tags'};
       my $ogg_tag = Ogg::Vorbis::Header->new($out_file);
          
          $ogg_tag->add_comments("ARTIST",   "$wv_tag->{Artist}")    if $wv_tag->{Artist};
          $ogg_tag->add_comments("TITLE",    "$wv_tag->{Title}")     if $wv_tag->{Title};
          $ogg_tag->add_comments("YEAR",     "$wv_tag->{Year}")      if $wv_tag->{Year};
          $ogg_tag->add_comments("COMMENT",  "$wv_tag->{Comment}")   if $wv_tag->{Comment};
          $ogg_tag->add_comments("GENRE",    "$wv_tag->{Genre}")     if $wv_tag->{Genre};
          $ogg_tag->add_comments("ALBUM",    "$wv_tag->{Album}")     if $wv_tag->{Album};
          $ogg_tag->add_comments("TRACKNUM", "$wv_tag->{Track}")     if $wv_tag->{Track};
                                                           
          $ogg_tag->write_vorbis;

     }
                                                                   
    }
    
    # Wavpack (WV) -> FLAC
    if ($enc_opt eq "wvtoflac") {
        
       system("$nice $wvunpack \"$audio_file\" -o \"-\" | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");

     if ($usetags eq 1 and -e $out_file) {
     
       my $wv_tag    = Audio::APETags->getTags($audio_file)->{'tags'};
       my $flac_head = Audio::FLAC::Header->new($out_file);
       my $flac_tag  = $flac_head->tags();
              
          $flac_tag->{ARTIST}      = "$wv_tag->{Artist}"   if $wv_tag->{Artist};
          $flac_tag->{TITLE}       = "$wv_tag->{Title}"    if $wv_tag->{Title};
          $flac_tag->{DATE}        = "$wv_tag->{Year}"     if $wv_tag->{Year};
          $flac_tag->{GENRE}       = "$wv_tag->{Genre}"    if $wv_tag->{Genre};
          $flac_tag->{ALBUM}       = "$wv_tag->{Album}"    if $wv_tag->{Album};
          $flac_tag->{TRACKNUMBER} = "$wv_tag->{Track}"    if $wv_tag->{Track};
          $flac_tag->{DESCRIPTION} = "$wv_tag->{Comment}"  if $wv_tag->{Comment};
                                                              
          $flac_head->write();
      
     }

    }
    
    # Wavpack (WV) -> Monkey Audio (APE)
    if ($enc_opt eq "wvtoape") {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # Wavpack (WV) -> Shorten (SHN)
    if ($enc_opt eq "wvtoshn") {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Wavpack (WV) -> FAAC (AAC)
    if ($enc_opt eq "wvtoaac") {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Wavpack (WV) -> FAAC (M4A/MP4) 
    if ($enc_opt eq "wvtomp4") {
           
     my $mp4_tag = '';
     
     if ($usetags eq 1) {
     
       my $wv_tag  = Audio::APETags->getTags($audio_file)->{'tags'};

       $mp4_tag = "--artist \"$wv_tag->{Artist}\""              if $wv_tag->{Artist};
       $mp4_tag = "$mp4_tag --title \"$wv_tag->{Title}\""       if $wv_tag->{Title};
       $mp4_tag = "$mp4_tag --album \"$wv_tag->{Album}\""       if $wv_tag->{Album};
       $mp4_tag = "$mp4_tag --genre \"$wv_tag->{Genre}\""       if $wv_tag->{Genre};
       $mp4_tag = "$mp4_tag --track \"$wv_tag->{Track}\""       if $wv_tag->{Track};
       $mp4_tag = "$mp4_tag --year \"$wv_tag->{Year}\""         if $wv_tag->{Year};
       $mp4_tag = "$mp4_tag --comment \"$wv_tag->{Comment}\""   if $wv_tag->{Comment};
    
     }
       
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $faac $mp4_tag $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
       
    }   
    
    # Wavpack (WV) -> Musepack (MPC)
    if ($enc_opt eq "wvtompc") {
       
     my $mpc_tag = '';
     
     if ($usetags eq 1) {

       my $wv_tag  = Audio::APETags->getTags($audio_file)->{'tags'};
       
       $mpc_tag = "--artist \"$wv_tag->{Artist}\""                  if $wv_tag->{Artist};
       $mpc_tag = "$mpc_tag --tag \"Title=$wv_tag->{Title}\""       if $wv_tag->{Title};
       $mpc_tag = "$mpc_tag --tag \"Genre=$wv_tag->{Genre}\""       if $wv_tag->{Genre};
       $mpc_tag = "$mpc_tag --tag \"Year=$wv_tag->{Year}\""         if $wv_tag->{Year};
       $mpc_tag = "$mpc_tag --tag \"Track=$wv_tag->{Track}\""       if $wv_tag->{Track};
       $mpc_tag = "$mpc_tag --tag \"Album=$wv_tag->{Album}\""       if $wv_tag->{Album};
       $mpc_tag = "$mpc_tag --tag \"Comment=$wv_tag->{Comment}\""   if $wv_tag->{Comment};
       
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$new_file.wav\" \"$out_file\"");
      
     }
       
    }        
    
    # Wavpack (WV) -> Wavpack (WV)
    if ($enc_opt eq "wvtowv") {
       
     my $wv_tag = '';
     
       if ($usetags eq 1) {

       my $old_tag  = Audio::APETags->getTags($audio_file)->{'tags'};
       
          $wv_tag = "-w \"Artist=$old_tag->{Artist}\""            if $old_tag->{Artist};
          $wv_tag = "$wv_tag -w \"Title=$old_tag->{Title}\""      if $old_tag->{Title};
          $wv_tag = "$wv_tag -w \"Genre=$old_tag->{Genre}\""      if $old_tag->{Genre};
          $wv_tag = "$wv_tag -w \"Year=$old_tag->{Year}\""        if $old_tag->{Year};
          $wv_tag = "$wv_tag -w \"Track=$old_tag->{Track}\""      if $old_tag->{Track};
          $wv_tag = "$wv_tag -w \"Album=$old_tag->{Album}\""      if $old_tag->{Album};
          $wv_tag = "$wv_tag -w \"Comment=$old_tag->{Comment}\""  if $old_tag->{Comment};
       }
          
          system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
          system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }                            
    
    # Wavpack (WV) -> OptimFrog (OFR)
    if ($enc_opt eq "wvtoofr")  {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Wavpack (WV) -> OptimFrog (OFS)
    if ($enc_opt eq "wvtoofs")  {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Wavpack (WV) -> TTA
    if ($enc_opt eq "wvtotta")  {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Wavpack (WV) -> LPAC
    if ($enc_opt eq "wvtopac")  {
       system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Wavpack (WV) -> Kexis (KXS)
    if ($enc_opt eq "wvtokxs")  {
        system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Wavpack (WV) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "wvtoaiff") {
        system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Wavpack (WV) -> (MP2/AC3/RA)
    if ($enc_opt eq "wvtomp2")  {
        system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Wavpack (WV) -> Lossless Audio (LA)
    if ($enc_opt eq "wvtola")   {
        system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Wavpack (WV) -> BONK
    if ($enc_opt eq "wvtobonk") {

     my $bonk_tag = '';
     
       if ($usetags eq 1) {
            
       my $wv_tag  = Audio::APETags->getTags($audio_file)->{'tags'};
                   
          $bonk_tag = "$bonk_tag -a \"$wv_tag->{Artist}\""   if $wv_tag->{Artist};
          $bonk_tag = "$bonk_tag -t \"$wv_tag->{Title}\""    if $wv_tag->{Title};
          $bonk_tag = "$bonk_tag -c \"$wv_tag->{Comment}\""  if $wv_tag->{Comment};
       }

        system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_tag $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Wavpack (WV) -> WAV
    if ($enc_opt eq "wvtowav")  {
        system("$nice $wvunpack -y \"$audio_file\" -o \"$new_file.wav\"");
    }
    
    
    
    
    ###############################    
    # OptimFrog (OFR) -> MP3
    if ($enc_opt eq "ofrtomp3")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> Ogg Vorbis
    if ($enc_opt eq "ofrtoogg")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> FLAC
    if ($enc_opt eq "ofrtoflac") {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> Monkey Audio (APE)
    if ($enc_opt eq "ofrtoape")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # OptimFrog (OFR) -> Shorten (SHN)
    if ($enc_opt eq "ofrtoshn")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> FAAC (AAC)
    if ($enc_opt eq "ofrtoaac")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> FAAC (M4A/MP4)
    if ($enc_opt eq "ofrtomp4")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> Musepack (MPC)
    if ($enc_opt eq "ofrtompc")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $mppenc --overwrite --$xlevel $audio_opts \"-\" \"$out_file\"");
    }       
    
    # OptimFrog (OFR) -> Wavpack (WV)
    if ($enc_opt eq "ofrtowv")   {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $wavpack -y $audio_opts \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> OptimFrog (OFR)
    if ($enc_opt eq "ofrtoofr")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }       
    
    # OptimFrog (OFR) -> OptimFrog (OFS)
    if ($enc_opt eq "ofrtoofs")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> TTA
    if ($enc_opt eq "ofrtotta")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> LPAC
    if ($enc_opt eq "ofrtopac")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> Kexis (KXS)
    if ($enc_opt eq "ofrtokxs")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }        
    
    # OptimFrog (OFR) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "ofrtoaiff") {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # OptimFrog (OFR) -> (MP2/AC3/RA)
    if ($enc_opt eq "ofrtomp2")  {
        system("$nice $ofr --decode \"$audio_file\" --output \"-\" | $nice $ffmpeg -y -i \"-\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> Lossless Audio (LA)
    if ($enc_opt eq "ofrtola")   {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> BONK
    if ($enc_opt eq "ofrtobonk") {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFR) -> WAV
    if ($enc_opt eq "ofrtowav")  {
        system("$nice $ofr --overwrite --decode \"$audio_file\" --output \"$out_file\"");
    }
       




    ###############################
    # OptimFrog (OFS) -> MP3
    if ($enc_opt eq "ofstomp3")  {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> Ogg Vorbis
    if ($enc_opt eq "ofstoogg")  {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> FLAC
    if ($enc_opt eq "ofstoflac")  {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> Monkey Audio (APE)
    if ($enc_opt eq "ofstoape")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # OptimFrog (OFS) -> Shorten (SHN)
    if ($enc_opt eq "ofstoshn")   {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> FAAC (AAC)
    if ($enc_opt eq "ofstoaac")   {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> FAAC (M4A/MP4)
    if ($enc_opt eq "ofstomp4")   {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> Musepack (MPC)
    if ($enc_opt eq "ofstompc")   {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $mppenc --overwrite --$xlevel $audio_opts \"-\" \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> Wavpack (WV)
    if ($enc_opt eq "ofstowv")    {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $wavpack -y $audio_opts \"-\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> OptimFrog (OFR)
    if ($enc_opt eq "ofstoofr")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> OptimFrog (OFS)
    if ($enc_opt eq "ofstoofs")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> TTA
    if ($enc_opt eq "ofstotta")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> LPAC
    if ($enc_opt eq "ofstopac")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> Kexis (KXS)
    if ($enc_opt eq "ofstokxs")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
        
    }
    
    # OptimFrog (OFS) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "ofstoaiff")  {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # OptimFrog (OFS) -> (MP2/AC3/RA)
    if ($enc_opt eq "ofstomp2")   {
        system("$nice $ofs --decode \"$audio_file\" --output \"-\" | $nice $ffmpeg -y -i \"-\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> Lossless Audio (LA)
    if ($enc_opt eq "ofstola")    {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> BONK
    if ($enc_opt eq "ofstobonk")  {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # OptimFrog (OFS) -> WAV
    if ($enc_opt eq "ofstowav")   {
        system("$nice $ofs --overwrite --decode \"$audio_file\" --output \"$out_file\"");
    }
    
    
    
    
    
    
    ###############################
    # TTA -> MP3
    if ($enc_opt eq "ttatomp3")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # TTA -> Ogg Vorbis
    if ($enc_opt eq "ttatoogg")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> FLAC
    if ($enc_opt eq "ttatoflac")  {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> Monkey Audio (APE)
    if ($enc_opt eq "ttatoape")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # TTA -> Shorten (SHN)
    if ($enc_opt eq "ttatoshn")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # TTA -> FAAC (AAC)
    if ($enc_opt eq "ttatoaac")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> FAAC (M4A/MP4)
    if ($enc_opt eq "ttatomp4")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> Musepack (MPC)
    if ($enc_opt eq "ttatompc")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # TTA -> Wavpack (WV)
    if ($enc_opt eq "ttatowv")    {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> OptimFrog (OFR)
    if ($enc_opt eq "ttatoofr")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # TTA -> OptimFrog (OFS)
    if ($enc_opt eq "ttatoofs")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # TTA -> TTA
    if ($enc_opt eq "ttatotta")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> LPAC
    if ($enc_opt eq "ttatopac")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
       system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # TTA -> Kexis (KXS)
    if ($enc_opt eq "ttatokxs")   {
        system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # TTA -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "ttatoaiff")  {
        system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # TTA -> (MP2/AC3/RA)
    if ($enc_opt eq "ttatomp2")   {
        system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # TTA -> Lossless Audio (LA)
    if ($enc_opt eq "ttatola")    {
        system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # TTA -> BONK
    if ($enc_opt eq "ttatobonk")  {
        system("$nice $ttaenc -d \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # TTA -> WAV
    if ($enc_opt eq "ttatowav")   {
       system("$nice $ttaenc -d \"$audio_file\" -o \"$out_file\"");
    }
    
    
    
    
    
    
    ###############################
    # LPAC -> MP3
    if ($enc_opt eq "pactomp3")   {
       system("$nice $lpac -v -x \"$audio_file\" \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
    }
    
    # LPAC -> Ogg Vorbis
    if ($enc_opt eq "pactoogg")   {
       system("$nice $lpac -v -x \"$audio_file\" \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }
    
    # LPAC -> FLAC
    if ($enc_opt eq "pactoflac")  {
       system("$nice $lpac -v -x \"$audio_file\" \"-\" | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");
    }
    
    # LPAC -> Monkey Audio (APE)
    if ($enc_opt eq "pactoape")   {
       system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # LPAC -> Shorten (SHN)
    if ($enc_opt eq "pactoshn")   {
       system("$nice $lpac -x \"$audio_file\" \"-\" | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\"");
    }
    
    # LPAC -> FAAC (AAC)
    if ($enc_opt eq "pactoaac")   {
       system("$nice $lpac -x \"$audio_file\" \"-\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }
    
    # LPAC -> FAAC (M4A/MP4)
    if ($enc_opt eq "pactomp4")   {
       system("$nice $lpac -x \"$audio_file\" \"-\" | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }
    
    # LPAC -> Musepack (MPC)
    if ($enc_opt eq "pactompc")   {
       system("$nice $lpac -x \"$audio_file\" \"-\" | $nice $mppenc --overwrite --$xlevel $audio_opts \"-\" \"$out_file\"");
    }
    
    # LPAC -> Wavpack (WV)
    if ($enc_opt eq "pactowv")    {
       system("$nice $lpac -x \"$audio_file\" \"-\" | $nice $wavpack -y $audio_opts \"-\" -o \"$out_file\"");
    }
    
    # LPAC -> OptimFrog (OFR)
    if ($enc_opt eq "pactoofr")   {
       system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
       system("$nice $ofr $audio_opts --overwrite  --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # LPAC -> OptimFrog (OFS)
    if ($enc_opt eq "pactoofs")   {
       system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
       system("$nice $ofs $audio_opts --overwrite  --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # LPAC -> TTA
    if ($enc_opt eq "pactotta")   {
       system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
       system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # LPAC -> LPAC
    if ($enc_opt eq "pactopac")   {
       system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
       system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # LPAC -> Kexis (KXS)
    if ($enc_opt eq "pactokxs")   {
        system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # LPAC -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "pactoaiff")  {
        system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # LPAC -> (MP2/AC3/RA)
    if ($enc_opt eq "pactomp2")   {
        system("$nice $lpac -x \"$audio_file\" \"-\" | $nice $ffmpeg -y -i \"-\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # LPAC -> Lossless Audio (LA)
    if ($enc_opt eq "pactola")    {
        system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # LPAC -> BONK
    if ($enc_opt eq "pactobonk")  {
        system("$nice $lpac -v -x \"$audio_file\" \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # LPAC -> WAV
    if ($enc_opt eq "pactowav")   {
       system("$nice $lpac -v -x \"$audio_file\" \"$out_file\"");
    }
    
    
    
    
    
    
    ###############################
    # Kexis (KXS) -> MP3
    if ($enc_opt eq "kxstomp3")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # Kexis (KXS) -> Ogg Vorbis 
    if ($enc_opt eq "kxstoogg")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> FLAC
    if ($enc_opt eq "kxstoflac")  {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> Monkey Audio (APE)
    if ($enc_opt eq "kxstoape")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # Kexis (KXS) -> Shroten (SHN)
    if ($enc_opt eq "kxstoshn")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $shorten $audio_opts -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Kexis (KXS) -> FAAC (AAC)
    if ($enc_opt eq "kxstoaac")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> (M4A/MP4)
    if ($enc_opt eq "kxstomp4")   {
        system("$nice $kexis -p -x \"$audio_file\"");        
        system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> Musepack (MPC)
    if ($enc_opt eq "kxstompc")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Kexis (KXS) -> Wavpack (WV)
    if ($enc_opt eq "kxstowv")    {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> OptimFrog (OFR)
    if ($enc_opt eq "kxstoofr")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Kexis (KXS) -> OptimFrog (OFS)
    if ($enc_opt eq "kxstoofs")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }        
    
    # Kexis (KXS) -> TTA
    if ($enc_opt eq "kxstotta")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> LPAC
    if ($enc_opt eq "kxstopac")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Kexis (KXS) -> Kexis (KXS)
    if ($enc_opt eq "kxstokxs")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Kexis (KXS) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "kxstoaiff")  {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Kexis (KXS) -> (MP2/AC3/RA)
    if ($enc_opt eq "kxstomp2")   {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Kexis (KXS) -> Lossless Audio (LA)
    if ($enc_opt eq "kxstola")    {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Kexis (KXS) -> BONK
    if ($enc_opt eq "kxstobonk")  {
        system("$nice $kexis -p -x \"$audio_file\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Kexis (KXS) -> WAV
    if ($enc_opt eq "kxstowav")   {
        system("$nice $kexis -p -x \"$audio_file\"");
    }
    
    
    
    
    
    
    ###############################
    # AIFF -> MP3
    if ($enc_opt eq "aifftomp3")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # AIFF -> Ogg Vorbis
    if ($enc_opt eq "aifftoogg")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> FLAC
    if ($enc_opt eq "aifftoflac") {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> Moneky Audio (APE)
    if ($enc_opt eq "aifftoape")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");        
    }
    
    # AIFF -> Shorten (SHN)
    if ($enc_opt eq "aifftoshn")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # AIFF -> FAAC (AAC)
    if ($enc_opt eq "aifftoaac")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> FAAC (M4A/MP4)
    if ($enc_opt eq "aifftomp4")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> Musepack (MPC)
    if ($enc_opt eq "aifftompc")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # AIFF -> Wavpack (WV)
    if ($enc_opt eq "aifftowv")   {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> OptimFrog (OFR)
    if ($enc_opt eq "aifftoofr")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # AIFF -> OptimFrog (OFS)
    if ($enc_opt eq "aifftoofs")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # AIFF -> TTA
    if ($enc_opt eq "aifftotta")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> LPAC
    if ($enc_opt eq "aifftopac")  {
        system("$nice $sox \"$audio_file\" \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # AIFF -> Kexis (KXS)
    if ($enc_opt eq "aifftokxs")  {
        system("$nice $sox \"$audio_file\" -c 2 $sox_opts \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # AIFF -> (AIFF/AU/SND/VOC/SMP)
    if ($enc_opt eq "aifftoaiff")  {
        system("$nice $sox \"$audio_file\" \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # AIFF -> (MP2/AC3/RA)
    if ($enc_opt eq "aifftomp2")   {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\""); 
    }
    
    # AIFF -> Lossless Audio (LA)
    if ($enc_opt eq "aifftola")    {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # AIFF -> BONK
    if ($enc_opt eq "aifftobonk")  {
        system("$nice $sox \"$audio_file\" $sox_opts \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # AIFF -> WAV
    if ($enc_opt eq "aifftowav")   {
        system("$nice $sox $sox_opts \"$audio_file\" $audio_opts \"$out_file\"");
    }
    
    
    
    ###############################
    # RAW -> MP3
    if ($enc_opt eq "rawtomp3")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # RAW -> Ogg Vorbis
    if ($enc_opt eq "rawtoogg")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> FLAC
    if ($enc_opt eq "rawtoflac")  {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> Monkey Audio (APE)
    if ($enc_opt eq "rawtoape")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # RAW -> Shorten (SHN)
    if ($enc_opt eq "rawtoshn")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # RAW -> FAAC (AAC)
    if ($enc_opt eq "rawtoaac")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> FAAC (M4A/MP4)
    if ($enc_opt eq "rawtomp4")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> Musepack (MPC)
    if ($enc_opt eq "rawtompc")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # RAW -> Wavpack (WV)
    if ($enc_opt eq "rawtowv")    {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> OptimFrog (OFR)
    if ($enc_opt eq "rawtoofr")   { 
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # RAW -> OptimFrog (OFS)
    if ($enc_opt eq "rawtoofs")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # RAW -> TTA
    if ($enc_opt eq "rawtotta")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\""); 
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> LPAC
    if ($enc_opt eq "rawtopac")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # RAW -> Kexis (KXS)
    if ($enc_opt eq "rawtokxs")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # RAW -> (AIFF/AU/SND/VOC/SMP)
    if ($enc_opt eq "rawtoaiff")  {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$out_file\" $effect");
    }
    
    # RAW -> RAW
    if ($enc_opt eq "rawtoraw")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" $audio_opts \"$out_file\" $effect");
    }
    
    # RAW -> (MP2/AC3/RA)
    if ($enc_opt eq "rawtomp2")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # RAW -> Lossless Audio (LA)
    if ($enc_opt eq "rawtola")    {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # RAW -> BONK
    if ($enc_opt eq "rawtobonk")  {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RAW -> WAV
    if ($enc_opt eq "rawtowav")   {
        system("$nice $sox $raw_opts -c $channels -r $freq \"$audio_file\" $audio_opts \"$out_file\"");
    }
                                                 
        
        
    
             
    ###############################
    # MP2 -> MP3
    if ($enc_opt eq "mp2tomp3")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP2 -> Ogg Vorbis
    if ($enc_opt eq "mp2toogg")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\""); 
    }
    
    # MP2 -> FLAC
    if ($enc_opt eq "mp2toflac")   {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP2 -> Monkey Audio (APE)
    if ($enc_opt eq "mp2toape")    { 
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");        
    }
    
    # MP2 -> Shorten (SHN)
    if ($enc_opt eq "mp2toshn")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP2 -> FAAC (AAC)
    if ($enc_opt eq "mp2toaac")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP2 -> FAAC (M4A/MP4)
    if ($enc_opt eq "mp2tomp4")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP2 -> Musepack (MPC)
    if ($enc_opt eq "mp2tompc")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP2 -> Wavpack (WV)
    if ($enc_opt eq "mp2towv")     {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP2 -> OptimFrog (OFR)
    if ($enc_opt eq "mp2toofr")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # MP2 -> OptimFrog (OFS)
    if ($enc_opt eq "mp2toofs")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # MP2 -> TTA
    if ($enc_opt eq "mp2totta")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP2 -> LPAC
    if ($enc_opt eq "mp2topac")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP2 -> Kexis (KXS)
    if ($enc_opt eq "mp2tokxs")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # MP2 -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "mp2toaiff")   {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # MP2 -> (MP2/AC3/RA)
    if ($enc_opt eq "mp2tomp2")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # MP2 -> Lossless Audio (LA)
    if ($enc_opt eq "mp2tola")     {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # MP2 -> BONK
    if ($enc_opt eq "mp2tobonk")   {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $psize \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # MP2 -> WAV
    if ($enc_opt eq "mp2towav")    {
        system("$nice $ffmpeg -y -i \"$audio_file\" \"$out_file\"");
    }
    
    
    
    
    
    
    ############################
    # Lossless Audio (LA) -> MP3
    if ($enc_opt eq "latomp3")     {
        system("$nice $la -console \"$audio_file\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h \"-\" \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> Ogg Vorbis
    if ($enc_opt eq "latoogg")     {
        system("$nice $la -console \"$audio_file\" | $nice $oggenc $audio_opts --resample $freq -q $quality \"-\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> FLAC
    if ($enc_opt eq "latoflac")    {
        system("$nice $la -console \"$audio_file\" | $nice $flac $audio_opts -f -$flevel \"-\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> Monkey Audio (APE)
    if ($enc_opt eq "latoape")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # Lossless Audio (LA) -> Shorten (SHN)
    if ($enc_opt eq "latoshn")     {
        system("$nice $la -console \"$audio_file\" | $nice $shorten $audio_opts -c $channels -v $slevel \"-\" \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> FAAC (AAC)
    if ($enc_opt eq "latoaac")     {
        system("$nice $la -console \"$audio_file\" | $nice $faac $audio_opts -q $quality \"-\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> FAAC (M4A/MP4)
    if ($enc_opt eq "latomp4")     {
        system("$nice $la -console \"$audio_file\" | $nice $faac $audio_opts -w -q $quality \"-\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> Musepack (MPC)
    if ($enc_opt eq "latompc")     {
        system("$nice $la -console \"$audio_file\" | $nice $mppenc --overwrite --$xlevel $audio_opts \"-\" \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> Wavpack (WV)
    if ($enc_opt eq "latowv")      {
        system("$nice $la -console \"$audio_file\" | $nice $wavpack -y $audio_opts \"-\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> OptimFrog (OFR)
    if ($enc_opt eq "latoofr")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> OptimFrog (OFS)
    if ($enc_opt eq "latoofs")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> TTA
    if ($enc_opt eq "latotta")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> LPAC
    if ($enc_opt eq "latopac")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> Kexis (KXS)
    if ($enc_opt eq "latokxs")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # Lossless Audio (LA) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "latoaiff")    {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # Lossless Audio (LA) -> (MP2/AC3/RA)
    if ($enc_opt eq "latomp2")     {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> Lossless Audio (LA)
    if ($enc_opt eq "latola")      {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> BONK
    if ($enc_opt eq "latobonk")    {
        system("$nice $la -console \"$audio_file\" > \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $plevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # Lossless Audio (LA) -> WAV
    if ($enc_opt eq "latowav")     {
        system("$nice $la $audio_opts -console \"$audio_file\" > \"$out_file\"");
    }
        
    

 
 
 
    ################################
    # BONK -> MP3
    if ($enc_opt eq "bonktomp3")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # BONK -> Ogg Vorbis
    if ($enc_opt eq "bonktoogg")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # BONK -> FLAC
    if ($enc_opt eq "bonktoflac") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }        
    
    # BONK -> Monkey Audio (APE)
    if ($enc_opt eq "bonktoape")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel");
    }
    
    # BONK -> Shorten (SHN)
    if ($enc_opt eq "bonktoshn")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # BONK -> FAAC (AAC)
    if ($enc_opt eq "bonktoaac")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # BONK -> FAAC (M4A/MP4)
    if ($enc_opt eq "bonktomp4")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # BONK -> Musepack (MPC)
    if ($enc_opt eq "bonktompc")  {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # BONK -> Wavpack (WV)
    if ($enc_opt eq "bonktowv") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # BONK -> OptimFrog (OFR)
    if ($enc_opt eq "bonktoofr") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # BONK -> OptimFrog (OFS)
    if ($enc_opt eq "bonktoofs") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # BONK -> TTA
    if ($enc_opt eq "bonktotta") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # BONK -> LPAC
    if ($enc_opt eq "bonktopac") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");        
        system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # BONK -> Kexis (KXS)
    if ($enc_opt eq "bonktokxs") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
               
        move("$new_file.kxs","$out_file");
    }
    
    # BONK -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "bonktoaiff") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # BONK -> (MP2/AC3/RA)
    if ($enc_opt eq "bonktomp2") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # BONK -> Lossless Audio (LA)
    if ($enc_opt eq "bonktola") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # BONK -> BONK
    if ($enc_opt eq "bonktobonk") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$new_file.wav\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $plevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # BONK -> WAV
    if ($enc_opt eq "bonktowav") {
        system("$nice $bonk decode $audio_opts \"$audio_file\" -o \"$out_file\"");
    }
    
        
                                
        
    
    
    ###############################
    # WAV -> MP3
    if ($enc_opt eq "wavtomp3")   {
       system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$audio_file\" \"$out_file\"");
    }
    
    # WAV -> Ogg Vorbis
    if ($enc_opt eq "wavtoogg")   {
       system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$audio_file\" -o \"$out_file\"");
    }
    
    # WAV -> FLAC
    if ($enc_opt eq "wavtoflac")  {
       system("$nice $flac $audio_opts -f -$flevel \"$audio_file\" -o \"$out_file\"");
    }
    
    # WAV -> Monkey Audio (APE)
    if ($enc_opt eq "wavtoape")   {
       system("$nice $mac \"$audio_file\" \"$out_file\" -c$alevel");
    }
    
    # WAV -> Shorten (SHN)
    if ($enc_opt eq "wavtoshn")   {
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$audio_file\" \"$out_file\""); 
    }
    
    # WAV -> FAAC (AAC)
    if ($enc_opt eq "wavtoaac")   {
       system("$nice $faac $audio_opts -q $quality \"$audio_file\" -o \"$out_file\"");
    }
    
    # WAV -> FAAC (M4A/MP4)
    if ($enc_opt eq "wavtomp4")   {
       system("$nice $faac $audio_opts -w -q $quality \"$audio_file\" -o \"$out_file\"");
    }
    
    # WAV -> Musepack (MPC)
    if ($enc_opt eq "wavtompc")   {
       system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$audio_file\" \"$out_file\"");
    }
    
    # WAV -> Wavpack (WV)
    if ($enc_opt eq "wavtowv")    {
       system("$nice $wavpack -y $audio_opts \"$audio_file\" -o \"$out_file\"");
    }       
    
    # WAV -> OptimFrog (OFR)
    if ($enc_opt eq "wavtoofr")   {
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$audio_file\" --output \"$out_file\"");
    }
    
    # WAV -> OptimFrog (OFS)
    if ($enc_opt eq "wavtoofs")   {
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$audio_file\" --output \"$out_file\"");
    }
    
    # WAV -> TTA
    if ($enc_opt eq "wavtotta")   {
        system("$nice $ttaenc $audio_opts -e \"$audio_file\" -o \"$out_file\"");
    }
    
    # WAV -> LPAC
    if ($enc_opt eq "wavtopac")   {
        system("$nice $lpac $audio_opts -v -$plevel \"$audio_file\" \"$out_file\"");
    }
    
    # WAV -> Kexis (KXS)
    if ($enc_opt eq "wavtokxs")   {
        system("$nice $kexis $audio_opts -p \"$audio_file\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # WAV -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "wavtoaiff")  {
        system("$nice $sox $sox_opts \"$audio_file\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # WAV -> (MP2/AC3/RA)
    if ($enc_opt eq "wavtomp2")   {
        system("$nice $ffmpeg -y -i \"$audio_file\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # WAV -> Lossless Audio (LA)
    if ($enc_opt eq "wavtola")    {
        system("$nice $la -overwrite $audio_opts \"$audio_file\" \"$out_file\"");
    }
    
    # WAV -> BONK
    if ($enc_opt eq "wavtobonk")  {
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $plevel \"$audio_file\" -o \"$out_file\"");
    }
        
        
    
    
    
    
    ###############################
    # WMA -> MP3
    if ($enc_opt eq "wmatomp3")   {
    
     system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
     system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $wma_tag = Audio::WMA->new($audio_file)->tags();
       my $mp3_tag = MP3::Tag->new($out_file);

          $mp3_tag->new_tag("$id3v");
          
       my $id3;
          $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
       
          $id3->artist($wma_tag->{ALBUMARTIST})   if $wma_tag->{ALBUMARTIST};
          $id3->title($wma_tag->{TITLE})          if $wma_tag->{TITLE};
          $id3->album($wma_tag->{ALBUMTITLE})     if $wma_tag->{ALBUMTITLE};
          $id3->genre($wma_tag->{GENRE})          if $wma_tag->{GENRE};
          $id3->year($wma_tag->{YEAR})            if $wma_tag->{YEAR};
          $id3->comment($wma_tag->{DESCRIPTION})  if $wma_tag->{DESCRIPTION};
          $id3->track($wma_tag->{TRACKNUMBER})    if $wma_tag->{TRACKNUMBER};
       
          $id3->write_tag;
          
     }

    }

    # WMA -> Ogg Vorbis
    if ($enc_opt eq "wmatoogg")   {
    
     system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
     system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $wma_tag = Audio::WMA->new($audio_file)->tags();
       my $ogg_tag = Ogg::Vorbis::Header->new($out_file);
             
       $ogg_tag->add_comments("ARTIST",      "$wma_tag->{ALBUMARTIST}")    if $wma_tag->{ALBUMARTIST};   
       $ogg_tag->add_comments("TITLE",       "$wma_tag->{TITLE}")          if $wma_tag->{TITLE};    
       $ogg_tag->add_comments("YEAR",        "$wma_tag->{YEAR}")           if $wma_tag->{YEAR};     
       $ogg_tag->add_comments("DATE",        "$wma_tag->{YEAR}")           if $wma_tag->{YEAR};
       $ogg_tag->add_comments("COMMENT",     "$wma_tag->{DESCRIPTION}")    if $wma_tag->{DESCRIPTION};
       $ogg_tag->add_comments("GENRE",       "$wma_tag->{GENRE}")          if $wma_tag->{GENRE};    
       $ogg_tag->add_comments("ALBUM",       "$wma_tag->{ALBUMTITLE}")     if $wma_tag->{ALBUMTITLE};    
       $ogg_tag->add_comments("TRACKNUMBER", "$wma_tag->{TRACKNUMBER}")    if $wma_tag->{TRACKNUMBER};
                                                           
       $ogg_tag->write_vorbis;
      
     }
  
    }

    # WMA -> FLAC
    if ($enc_opt eq "wmatoflac")  {
    
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
       
     if ($usetags eq 1 and -e $out_file) {
     
       my $wma_tag   = Audio::WMA->new($audio_file)->tags();
       my $flac_head = Audio::FLAC::Header->new($out_file);
       my $flac_tag  = $flac_head->tags();
       
       $flac_tag->{ARTIST}       = $wma_tag->{ALBUMARTIST}   if $wma_tag->{ALBUMARTIST};
       $flac_tag->{TITLE}        = $wma_tag->{TITLE}         if $wma_tag->{TITLE};
       $flac_tag->{ALBUM}        = $wma_tag->{ALBUMTITLE}    if $wma_tag->{ALBUMTITLE};
       $flac_tag->{DATE}         = $wma_tag->{YEAR}          if $wma_tag->{YEAR};
       $flac_tag->{GENRE}        = $wma_tag->{GENRE}         if $wma_tag->{GENRE};
       $flac_tag->{DESCRIPTION}  = $wma_tag->{DESCRIPTION}   if $wma_tag->{DESCRIPTION};
       $flac_tag->{TRACKNUMBER}  = $wma_tag->{TRACKNUMBER}   if $wma_tag->{TRACKNUMBER};
       
       $flac_head->write();
      
     }
    
    }

    # WMA -> Monkey Audio (APE)
    if ($enc_opt eq "wmatoape")   {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }

    # WMA -> Shorten (SHN)
    if ($enc_opt eq "wmatoshn")   {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }

    # WMA -> FAAC (AAC)
    if ($enc_opt eq "wmatoaac")   {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }                   
    
    # WMA -> FAAC (M4A/MP4)
    if ($enc_opt eq "wmatomp4")   {
    
     my $mp4_tag = '';
     
     if ($usetags eq 1) {
     
       my $wma_tag = Audio::WMA->new($audio_file)->tags();

       $mp4_tag = "--artist \"$wma_tag->{ALBUMARTIST}\""              if $wma_tag->{ALBUMARTIST};
       $mp4_tag = "$mp4_tag --title \"$wma_tag->{TITLE}\""            if $wma_tag->{TITLE};
       $mp4_tag = "$mp4_tag --year \"$wma_tag->{YEAR}\""              if $wma_tag->{YEAR};
       $mp4_tag = "$mp4_tag --genre \"$wma_tag->{GENRE}\""            if $wma_tag->{GENRE};
       $mp4_tag = "$mp4_tag --album \"$wma_tag->{ALBUMTITLE}\""       if $wma_tag->{ALBUMTITLE};
       $mp4_tag = "$mp4_tag --track \"$wma_tag->{TRACKNUMBER}\""      if $wma_tag->{TRACKNUMBER};
       $mp4_tag = "$mp4_tag --comment \"$wma_tag->{DESCRIPTION}\""    if $wma_tag->{DESCRIPTION};
      
     }
       
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $faac $mp4_tag $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");

    }

    # WMA -> Musepack (MPC)
    if ($enc_opt eq "wmatompc")   {

     my $mpc_tag = '';
     
     if ($usetags eq 1) {

       my $wma_tag = Audio::WMA->new($audio_file)->tags();

       $mpc_tag = "--artist \"$wma_tag->{ALBUMARTIST}\""                if $wma_tag->{ALBUMARTIST};
       $mpc_tag = "$mpc_tag --tag \"Title=$wma_tag->{TITLE}\""          if $wma_tag->{TITLE};     
       $mpc_tag = "$mpc_tag --tag \"Year=$wma_tag->{YEAR}\""            if $wma_tag->{YEAR};
       $mpc_tag = "$mpc_tag --tag \"Genre=$wma_tag->{GENRE}\""          if $wma_tag->{GENRE};     
       $mpc_tag = "$mpc_tag --tag \"Comment=$wma_tag->{DESCRIPTION}\""  if $wma_tag->{DESCRIPTION}; 
       $mpc_tag = "$mpc_tag --tag \"Album=$wma_tag->{ALBUMTITLE}\""     if $wma_tag->{ALBUMTITLE};     
       $mpc_tag = "$mpc_tag --tag \"Track=$wma_tag->{TRACKNUMBER}\""    if $wma_tag->{TRACKNUMBER};     
       
     }
       
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts \"$new_file.wav\" \"$out_file\"");

    }
    
    # WMA -> Wavpack (WV)
    if ($enc_opt eq "wmatowv") {
    
     my $wv_tag = '';
     
     if ($usetags eq 1) {
     
       my $wma_tag = Audio::WMA->new($audio_file)->tags();
       
       $wv_tag = "-w \"Artist=$wma_tag->{ALBUMARTIST}\""           if $wma_tag->{ALBUMARTIST};
       $wv_tag = "$wv_tag -w \"Title=$wma_tag->{TITLE}\""          if $wma_tag->{TITLE};
       $wv_tag = "$wv_tag -w \"Year=$wma_tag->{YEAR}\""            if $wma_tag->{YEAR};
       $wv_tag = "$wv_tag -w \"Genre=$wma_tag->{GENRE}\""          if $wma_tag->{GENRE};
       $wv_tag = "$wv_tag -w \"Comment=$wma_tag->{DESCRIPTION}\""  if $wma_tag->{DESCRIPTION};
       $wv_tag = "$wv_tag -w \"Album=$wma_tag->{ALBUMTITLE}\""     if $wma_tag->{ALBUMTITLE};
       $wv_tag = "$wv_tag -w \"Track=$wma_tag->{TRACKNUMBER}\""    if $wma_tag->{TRACKNUMB};
       
     }
       
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $wavpack -y $wv_tag $audio_opts \"$new_file.wav\" -o \"$out_file\"");
 
    }
    
    # WMA -> OptimFrog (OFR)
    if ($enc_opt eq "wmatoofr")   {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # WMA -> OptimFrog (OFS)
    if ($enc_opt eq "wmatoofs")   {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # WMA -> TTA
    if ($enc_opt eq "wmatotta")   {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # WMA -> LPAC
    if ($enc_opt eq "wmatopac")   {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # WMA -> Kexis (KXS)
    if ($enc_opt eq "wmatokxs")   {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # WMA -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "wmatoaiff")  {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # WMA -> (MP2/AC3/RA)
    if ($enc_opt eq "wmatomp2")   {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
    }
    
    # WMA -> Lossless Audio (LA)
    if ($enc_opt eq "wmatola")    {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # WMA -> BONK
    if ($enc_opt eq "wmatobonk")  {
    
         my $bonk_tag = '';
         
         if ($usetags eq 1) {
              
         my $wma_tag = Audio::WMA->new($audio_file)->tags();
                     
            $bonk_tag = "$bonk_tag -a \"Artist=$wma_tag->{ALBUMARTIST}\""   if $wma_tag->{ALBUMARTIST};
            $bonk_tag = "$bonk_tag -t \"Title=$wma_tag->{TITLE}\""          if $wma_tag->{TITLE};
            $bonk_tag = "$bonk_tag -c \"Comment=$wma_tag->{DESCRIPTION}\""  if $wma_tag->{DESCRIPTION};
                                                                      
         }
                                                                           
         system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
         system("$nice $bonk encode $bonk_tag $bonk_opts $audio_opts -q $qlevel -d $dratio -s $plevel \"$new_file.wav\" -o \"$out_file\"");
    }

    # WMA -> WAV 
    if ($enc_opt eq "wmatowav")   {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$out_file\" \"$audio_file\"");
    }   






    ###############################
    # RealAudio (RA/RAM) -> MP3
    if ($enc_opt eq "ratomp3")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $lame $audio_opts --resample $freq -b $bitrate -h \"$new_file.wav\" \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> Ogg Vorbis
    if ($enc_opt eq "ratoogg")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $oggenc $audio_opts --resample $freq -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> FLAC
    if ($enc_opt eq "ratoflac")   { 
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $flac $audio_opts -f -$flevel \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> Monkey Audio (APE)
    if ($enc_opt eq "ratoape")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $mac \"$new_file.wav\" \"$out_file\" -c$alevel $audio_opts");
    }

    # RealAudio (RA/RAM) -> Shorten (SHN)
    if ($enc_opt eq "ratoshn")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $shorten $audio_opts -c $channels -v $slevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> FAAC (AAC)
    if ($enc_opt eq "ratoaac")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $faac $audio_opts -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> FAAC (M4A/MP4)
    if ($enc_opt eq "ratomp4")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $faac $audio_opts -w -q $quality \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> Musepack (MPC)
    if ($enc_opt eq "ratompc")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $mppenc --overwrite --$xlevel $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> Wavpack (WV)
    if ($enc_opt eq "ratowv")     {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $wavpack -y $audio_opts \"$new_file.wav\" -o \"$out_file\"");
    }       
    
    # RealAudio (RA/RAM) -> OptimFrog (OFR)
    if ($enc_opt eq "ratoofr")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> OptimFrog (OFS)
    if ($enc_opt eq "ratoofs")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize \"$new_file.wav\" --output \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> TTA
    if ($enc_opt eq "ratotta")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");       
       system("$nice $ttaenc $audio_opts -e \"$new_file.wav\" -o \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> LPAC
    if ($enc_opt eq "ratopac")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
       system("$nice $lpac $audio_opts -v -$plevel \"$new_file.wav\" \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> Kexis (KXS)
    if ($enc_opt eq "ratokxs")    {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $kexis $audio_opts -p \"$new_file.wav\"");
        
        move("$new_file.kxs","$out_file");
    }
    
    # RealAudio (RA/RAM) -> (AIFF/AU/SND/RAW/VOC/SMP)
    if ($enc_opt eq "ratoaiff")   {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $sox $sox_opts \"$new_file.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
    }
    
    # RealAudio (RA/RAM) -> (MP2/AC3/RA)
    if ($enc_opt eq "ratomp2")    {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $ffmpeg -y -i \"$new_file.wav\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\""); 
    }    
    
    # RealAudio (RA/RAM) -> Lossless Audio (LA)
    if ($enc_opt eq "ratola")     {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $la -overwrite $audio_opts \"$new_file.wav\" \"$out_file\"");
    }
    
    # RealAudio (RA/RAM) -> BONK
    if ($enc_opt eq "ratobonk")   {
        system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$new_file.wav\" \"$audio_file\"");
        system("$nice $bonk encode $bonk_opts $audio_opts -q $qlevel -d $dratio -s $plevel \"$new_file.wav\" -o \"$out_file\"");
    }
        
    
    # RealAudio (RA/RAM) -> WAV
    if ($enc_opt eq "ratowav")    {
       system("$nice $mplayer -vc dummy -vo null -ao pcm:file=\"$out_file\" \"$audio_file\"");
    }

}

# Check to see if theres a CD in the CDROM
sub checkCdQuery {
  system("$cdparanoia -q -d $config{'CDROM'} -Q 1>/dev/null 2>/dev/null");
  if ($? == 256) { pac_msg("Unable to open disc.  Is there an audio CD in the drive?","error"); }
}


# Accept command line arguments without --file, or --dir
if (@ARGV) {
  foreach my $files (@ARGV) { 
      if    (-f $files) { push(@file,$files); } 
      elsif (-d $files) { push(@dir, $files); }
 }
}

# Show meta-data for MP3, Ogg Vorbis, FLAC, MP4, MPC, WV, and WMA
sub display_tag {

    my $file = shift;
    my $base_name = fileparse($file);
    
    if (not $file) { pac_msg("$lang{$mylang}{could_not_open} '$file'", "error"); }
    if (not -e $file or -z $file) { pac_msg("$lang{$mylang}{could_not_open} '$file':\n\n$!","error"); }
    
    pac_msg("$lang{$mylang}{tag_info} ($base_name)", "notice");

    # MP3
    if ($file =~ /\.mp3$/i) {
       
        my $mp3 = MP3::Tag->new($file);
        my @id3info = $mp3->autoinfo;
        
        if ($showtag =~  /ARTIST/i)  { printf "Artist  = ". $id3info[2]. "\n";  }
        if ($showtag =~   /TITLE/i)  { printf "Title   = ". $id3info[0]. "\n";  }
        if ($showtag =~   /TRACK/i)  { printf "Track   = ". $id3info[1]. "\n";  }
        if ($showtag =~   /ALBUM/i)  { printf "Album   = ". $id3info[3]. "\n";  }
        if ($showtag =~   /GENRE/i)  { printf "Genre   = ". $id3info[6]. "\n";  }
        if ($showtag =~    /YEAR/i)  { printf "Year    = ". $id3info[5]. "\n";  }
        if ($showtag =~ /COMMENT/i)  { printf "Comment = ". $id3info[4]. "\n";  }
        
        if ($showtag =~     /ALL/i)  {
                                       printf "Title   = ". $id3info[0]. "\n" if $id3info[0];
                                       printf "Track   = ". $id3info[1]. "\n" if $id3info[1];
                                       printf "Artist  = ". $id3info[2]. "\n" if $id3info[2];
                                       printf "Album   = ". $id3info[3]. "\n" if $id3info[3];
                                       printf "Comment = ". $id3info[4]. "\n" if $id3info[4];
                                       printf "Year    = ". $id3info[5]. "\n" if $id3info[5];
                                       printf "Genre   = ". $id3info[6]. "\n" if $id3info[6];
        }
        
     printf "\n";
     }
     
     # Ogg Vorbis
     elsif ($file =~ /\.ogg$/i) {

        my $ogg_tag = Ogg::Vorbis::Header->new($file);
        
        if ($showtag =~ /ARTIST/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /ARTIST/i) {
           my $artist = \$ogg_tag->comment($i);
           printf "Artist = ". ${$artist}. "\n" if defined(${$artist});
           }
         }
        }
     
        elsif ($showtag =~ /TITLE/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /TITLE/i) {
           my $title = \$ogg_tag->comment($i);
           printf "Title = ". ${$title}. "\n" if defined(${$title});
           }
         }
        }
        
        elsif ($showtag =~ /ALBUM/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /ALBUM/i) {
           my $album = \$ogg_tag->comment($i);
           printf "Album = ". ${$album}. "\n" if defined(${$album});
           }
         }
        }

        elsif ($showtag =~ /YEAR/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /YEAR/i) {
           my $year = \$ogg_tag->comment($i);
           printf "Year = ". ${$year}. "\n" if defined(${$year});
           }
         }
        }

        elsif ($showtag =~ /GENRE/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /GENRE/i) {
           my $genre = \$ogg_tag->comment($i);
           printf "Genre = ". ${$genre}. "\n" if defined(${$genre});
           }
         }
        }

        elsif ($showtag =~ /TRACK/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /TRACK/i) {
           my $track = \$ogg_tag->comment($i);
           printf "Track = ". ${$track}. "\n" if defined(${$track});
           }
         }
        }
        
        elsif ($showtag =~ /COMMENT/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /COMMENT/i) {
           my $comment = \$ogg_tag->comment($i);
           printf "Comment = ". ${$comment}. "\n" if defined(${$comment});
           }
         }
        }

        elsif ($showtag =~ /ALL/i) {
         foreach my $i ($ogg_tag->comment_tags) {
           if ($i =~ /ARTIST/i) {
           my $artist = \$ogg_tag->comment($i);
           printf "Artist  = ". ${$artist}. "\n" if defined(${$artist});
           }
           
           if ($i =~ /TITLE/i) {
           my $title = \$ogg_tag->comment($i);
           printf "Title   = ". ${$title}. "\n" if defined(${$title});
           }
           
           if ($i =~ /GENRE/i) {
           my $genre = \$ogg_tag->comment($i);
           printf "Genre   = ". ${$genre}. "\n" if defined(${$genre});
           }
           
           if ($i =~ /ALBUM/i) {
           my $album = \$ogg_tag->comment($i);
           printf "Album   = ". ${$album}. "\n" if defined(${$album});
           }
           
           if ($i =~ /YEAR/i) {
           my $year = \$ogg_tag->comment($i);
           printf "Year    = ". ${$year}. "\n" if defined(${year});
           }
           
           if ($i =~ /TRACK/i) {
           my $track = \$ogg_tag->comment($i);
           printf "Track   = ". ${$track}. "\n" if defined(${track});
           }
           
           if ($i =~ /COMMENT/i) {
           my $comment = \$ogg_tag->comment($i);
           printf "Comment = ". ${$comment}. "\n" if defined(${comment});
           }
         }
        }
        printf "\n";
     }
        
     # FLAC
     elsif ($file =~ /\.flac$/i or $file =~ /\.fla$/i) {
     
      if ($usetags eq 1) {
      
        my $flac_tag = Audio::FLAC::Header->new($file)->tags();
        
           if ($showtag =~  /ARTIST/i) { printf "Artist  = ". $flac_tag->{ARTIST}. "\n"      if defined($flac_tag->{ARTIST});       }
           if ($showtag =~   /TITLE/i) { printf "Title   = ". $flac_tag->{TITLE}. "\n"       if defined($flac_tag->{TITLE});        }
           if ($showtag =~   /ALBUM/i) { printf "Album   = ". $flac_tag->{ALBUM}. "\n"       if defined($flac_tag->{ALBUM});        }
           if ($showtag =~    /YEAR/i) { printf "Year    = ". $flac_tag->{DATE}. "\n"        if defined($flac_tag->{DATE});         }
           if ($showtag =~   /GENRE/i) { printf "Genre   = ". $flac_tag->{GENRE}. "\n"       if defined($flac_tag->{GENRE});        }
           if ($showtag =~   /TRACK/i) { printf "Track   = ". $flac_tag->{TRACKNUMBER}. "\n" if defined($flac_tag->{TRACKNUMBER});  }
           if ($showtag =~ /COMMENT/i) { printf "Comment = ". $flac_tag->{DESCRIPTION}. "\n" if defined($flac_tag->{DESCRIPTION});  }
           
           if ($showtag =~     /ALL/i) {
                                         printf "Artist  = ". $flac_tag->{ARTIST}.      "\n" if defined($flac_tag->{ARTIST});
                                         printf "Title   = ". $flac_tag->{TITLE}.       "\n" if defined($flac_tag->{TITLE});
                                         printf "Album   = ". $flac_tag->{ALBUM}.       "\n" if defined($flac_tag->{ALBUM});
                                         printf "Year    = ". $flac_tag->{DATE}.        "\n" if defined($flac_tag->{DATE});
                                         printf "Genre   = ". $flac_tag->{GENRE}.       "\n" if defined($flac_tag->{GENRE});
                                         printf "Track   = ". $flac_tag->{TRACKNUMBER}. "\n" if defined($flac_tag->{TRACKNUMBER});
                                         printf "Comment = ". $flac_tag->{DESCRIPTION}. "\n" if defined($flac_tag->{DESCRIPTION});
           }             
        
      } else { printf "$lang{$mylang}{edit_conf_or_check_inst}"; }
 
     printf "\n";

     }     
     
     # FAAC (M4A/MP4)
     elsif ($file =~ /\.mp4$/i or $file =~ /\.m4a$/i or $file =~ /\.m4p$/i) {

         my $mp4_tag = get_mp4tag($file);
         
             if ($showtag =~  /ARTIST/i) { printf "Artist  = ". $mp4_tag->{ARTIST}.   "\n" if $mp4_tag->{ARTIST};    }
             if ($showtag =~   /TITLE/i) { printf "Title   = ". $mp4_tag->{TITLE}.    "\n" if $mp4_tag->{TITLE};     }
             if ($showtag =~   /ALBUM/i) { printf "Album   = ". $mp4_tag->{ALBUM}.    "\n" if $mp4_tag->{ALBUM};     }
             if ($showtag =~   /GENRE/i) { printf "Genre   = ". $mp4_tag->{GENRE}.    "\n" if $mp4_tag->{GENRE};     }
             if ($showtag =~    /YEAR/i) { printf "Year    = ". $mp4_tag->{YEAR}.     "\n" if $mp4_tag->{YEAR};      }
             if ($showtag =~   /TRACK/i) { printf "Track   = ". $mp4_tag->{TRACKNUM}. "\n" if $mp4_tag->{TRACKNUM};  }
             if ($showtag =~ /COMMENT/i) { printf "Comment = ". $mp4_tag->{COMMENT}.  "\n" if $mp4_tag->{COMMENT};   }
           
             if ($showtag =~     /ALL/i) {
                                           printf "Artist   = ". $mp4_tag->{ARTIST}.   "\n" if $mp4_tag->{ARTIST};
                                           printf "Title    = ". $mp4_tag->{TITLE}.    "\n" if $mp4_tag->{TITLE};
                                           printf "Album    = ". $mp4_tag->{ALBUM}.    "\n" if $mp4_tag->{ALBUM};
                                           printf "Genre    = ". $mp4_tag->{GENRE}.    "\n" if $mp4_tag->{GENRE};
                                           printf "Year     = ". $mp4_tag->{YEAR}.     "\n" if $mp4_tag->{YEAR};
                                           printf "Track    = ". $mp4_tag->{TRACKNUM}. "\n" if $mp4_tag->{TRACKNUM};
                                           printf "Comment  = ". $mp4_tag->{COMMENT}.  "\n" if $mp4_tag->{COMMENT};
             } 

     printf "\n";

     }
     
     # Musepack (MPC)
     elsif ($file =~ /\.mpc$/i or $file =~ /\.mpp$/i) {

        my $mpc_tag = Audio::Musepack->new($file)->tags();

           if ($showtag =~  /ARTIST/i) { printf "Artist  = ". $mpc_tag->{Artist}. "\n" if $mpc_tag->{Artist};   }
           if ($showtag =~   /TITLE/i) { printf "Title   = ". $mpc_tag->{Title}. "\n" if $mpc_tag->{Title};     }
           if ($showtag =~   /ALBUM/i) { printf "Album   = ". $mpc_tag->{Album}. "\n" if $mpc_tag->{Album};     }
           if ($showtag =~   /GENRE/i) { printf "Genre   = ". $mpc_tag->{Genre}. "\n" if $mpc_tag->{Genre};     }
           if ($showtag =~    /YEAR/i) { printf "Year    = ". $mpc_tag->{Year}. "\n" if $mpc_tag->{Year};       }
           if ($showtag =~   /TRACK/i) { printf "Track   = ". $mpc_tag->{Track}. "\n" if $mpc_tag->{Track};     }
           if ($showtag =~ /COMMENT/i) { printf "Comment = ". $mpc_tag->{Comment}. "\n" if $mpc_tag->{Comment}; }
           
           if ($showtag =~     /ALL/i) {
                                         printf "Artist   = ". $mpc_tag->{Artist}.  "\n" if $mpc_tag->{Artist};
                                         printf "Title    = ". $mpc_tag->{Title}.   "\n" if $mpc_tag->{Title};
                                         printf "Album    = ". $mpc_tag->{Album}.   "\n" if $mpc_tag->{Album};
                                         printf "Genre    = ". $mpc_tag->{Genre}.   "\n" if $mpc_tag->{Genre};
                                         printf "Year     = ". $mpc_tag->{Year}.    "\n" if $mpc_tag->{Year};
                                         printf "Track    = ". $mpc_tag->{Track}.   "\n" if $mpc_tag->{Track};
                                         printf "Comment  = ". $mpc_tag->{Comment}. "\n" if $mpc_tag->{Comment};
           }
           
     printf "\n";
     }
     
     # Wavpack (WV)
     elsif ($file =~ /\.wv$/i) {
     
        my $wv_tag = Audio::APETags->getTags($file)->{'tags'};

           if ($showtag =~  /ARTIST/i)  {  printf "Artist  = ". $wv_tag->{Artist}.  "\n" if $wv_tag->{Artist};  }
           if ($showtag =~   /TITLE/i)  {  printf "Title   = ". $wv_tag->{Title}.   "\n" if $wv_tag->{Title};   }
           if ($showtag =~   /ALBUM/i)  {  printf "Album   = ". $wv_tag->{Album}.   "\n" if $wv_tag->{Album};   }
           if ($showtag =~   /GENRE/i)  {  printf "Genre   = ". $wv_tag->{Genre}.   "\n" if $wv_tag->{Genre};   }
           if ($showtag =~    /YEAR/i)  {  printf "Year    = ". $wv_tag->{Year}.    "\n" if $wv_tag->{Year};    }
           if ($showtag =~   /TRACK/i)  {  printf "Track   = ". $wv_tag->{Track}.   "\n" if $wv_tag->{Track};   }
           if ($showtag =~ /COMMENT/i)  {  printf "Comment = ". $wv_tag->{Comment}. "\n" if $wv_tag->{Comment}; }        
           
           if ($showtag =~     /ALL/i)  {
                                           printf "Artist  = ". $wv_tag->{Artist}.  "\n" if $wv_tag->{Artist};
                                           printf "Title   = ". $wv_tag->{Title}.   "\n" if $wv_tag->{Title};
                                           printf "Album   = ". $wv_tag->{Album}.   "\n" if $wv_tag->{Album};
                                           printf "Genre   = ". $wv_tag->{Genre}.   "\n" if $wv_tag->{Genre};
                                           printf "Year    = ". $wv_tag->{Year}.    "\n" if $wv_tag->{Year};
                                           printf "Track   = ". $wv_tag->{Track}.   "\n" if $wv_tag->{Track};
                                           printf "Comment = ". $wv_tag->{Comment}. "\n" if $wv_tag->{Comment};
           }
           
     printf "\n";
     }
     
     # WMA
     elsif ($file =~ /\.wma$/i) {
      
        my $wma_tag = Audio::WMA->new($file)->tags();
        
           if ($showtag =~  /ARTIST/i) { printf "Artist  = ". $wma_tag->{ALBUMARTIST}. "\n" if $wma_tag->{ALBUMARTIST}; }
           if ($showtag =~   /TITLE/i) { printf "Title   = ". $wma_tag->{TITLE}. "\n" if $wma_tag->{TITLE};             }
           if ($showtag =~   /ALBUM/i) { printf "Album   = ". $wma_tag->{ALBUMTITLE}. "\n" if $wma_tag->{ALBUMTITLE};   }  
           if ($showtag =~   /GENRE/i) { printf "Genre   = ". $wma_tag->{GENRE}. "\n" if $wma_tag->{GENRE};             }
           if ($showtag =~    /YEAR/i) { printf "Year    = ". $wma_tag->{YEAR}. "\n" if $wma_tag->{YEAR};               }
           if ($showtag =~   /TRACK/i) { printf "Track   = ". $wma_tag->{TRACKNUMBER}. "\n" if $wma_tag->{TRACKNUMBER}; }
           if ($showtag =~ /COMMENT/i) { printf "Comment = ". $wma_tag->{DESCRIPTION}. "\n" if $wma_tag->{DESCRIPTION}; }
           
           if ($showtag =~     /ALL/i) {
                                         printf "Artist  = ". $wma_tag->{ALBUMARTIST}. "\n" if $wma_tag->{ALBUMARTIST};
                                         printf "Title   = ". $wma_tag->{TITLE}.       "\n" if $wma_tag->{TITLE};
                                         printf "Album   = ". $wma_tag->{ALBUMTITLE}.  "\n" if $wma_tag->{ALBUMTITLE};
                                         printf "Genre   = ". $wma_tag->{GENRE}.       "\n" if $wma_tag->{GENRE};
                                         printf "Year    = ". $wma_tag->{YEAR}.        "\n" if $wma_tag->{YEAR};
                                         printf "Track   = ". $wma_tag->{TRACKNUMBER}. "\n" if $wma_tag->{TRACKNUMBER};
                                         printf "Comment = ". $wma_tag->{DESCRIPTION}. "\n" if $wma_tag->{DESCRIPTION};
           }
        
     printf "\n"
     } else { printf "$lang{$mylang}{error_display_tag_info}\n'$file'\n"; }

}


# Write meta-data for MP3, Ogg Vorbis, FLAC
sub edit_tag {

 foreach my $file (@ARGV) {

    # MP3 Tagging
    if ($file =~ /\.mp3$/i) {

     my $mp3_tag = MP3::Tag->new($file);
        $mp3_tag->get_tags;

     my $id3;
           
        unless(exists $mp3_tag->{ID3v1}) { $mp3_tag->new_tag("ID3v1"); }
        unless(exists $mp3_tag->{ID3v2}) { $mp3_tag->new_tag("ID3v2"); }
        
        $id3 = $mp3_tag->{ID3v2} if exists $mp3_tag->{$id3v};
        
      pac_msg("$lang{$mylang}{tagging} ($file) - ($id3v)", "notice");

      if ($usertag{artist}) {

          $id3->artist("$usertag{artist}");     
          printf "artist    = '$usertag{artist}'\n";

      }
      
      if ($usertag{title}) {

          $id3->title("$usertag{title}");
          printf "title     = '$usertag{title}'\n";

      }          

      if ($usertag{genre}) {

          $id3->genre("$usertag{genre}");
          printf "genre     = '$usertag{genre}'\n";

      }
      
      if ($usertag{album}) {

          $id3->album("$usertag{album}"); 
          printf "album     = '$usertag{album}'\n";

      }
      
      if ($usertag{year}) {

          $id3->year("$usertag{year}"); 
          printf "year      = '$usertag{year}'\n";

      }
      
      if ($usertag{track}) {

          $id3->track("$usertag{track}");
          printf "track     = '$usertag{track}'\n";

      }
      
      if ($usertag{comment}) {

          $id3->comment("$usertag{comment}");
          printf "comment   = '$usertag{comment}'\n";

      }
      
      printf "\n";
      
      if ($id3->write_tag) {
          #do nothing
      } else { print "Could not write tag"; }
      
    }
  

  # Ogg Tagging
  elsif ($file =~ /\.ogg/i) {
  
      my $ogg_tag = Ogg::Vorbis::Header->new($file);
      
      pac_msg("Tagging ($file) - (Vorbis)", "notice");
      
      if ($usertag{artist}) {
      
          $ogg_tag->delete_comment("artist");
          $ogg_tag->add_comments("ARTIST",   "$usertag{artist}");
          
          printf "artist     = '$usertag{artist}'\n";
      }
      
      if ($usertag{title}) {
          
          $ogg_tag->delete_comment("title");
          $ogg_tag->add_comments("TITLE", "$usertag{title}");
          
          printf "title      = '$usertag{title}'\n";
          
      }
      
      if ($usertag{genre}) {
       
          $ogg_tag->delete_comment("genre");
          $ogg_tag->add_comments("GENRE", "$usertag{genre}");
          
          printf "genre      = '$usertag{genre}'\n";
          
      }
      
      if ($usertag{album}) {
      
          $ogg_tag->delete_comment("album");
          $ogg_tag->add_comments("ALBUM", "$usertag{album}");
          
          printf "album      = '$usertag{album}'\n";
          
      }
      
      if ($usertag{year}) {
      
          $ogg_tag->delete_comment("year");
          $ogg_tag->add_comments("YEAR", "$usertag{year}");
          
          printf "year       = '$usertag{year}'\n";
          
      }
      
      if ($usertag{track}) {
      
          $ogg_tag->delete_comment("tracknum");
          $ogg_tag->add_comments("TRACKNUM", "$usertag{track}");
          
          printf "track      = '$usertag{track}'\n";
          
      }
      
      if ($usertag{comment}) {
      
          $ogg_tag->delete_comment("comment");
          $ogg_tag->add_comments("COMMENT", "$usertag{comment}");
          
          printf "comment    = '$usertag{comment}'\n";
          
      }    
      
      printf "\n";
      $ogg_tag->write_vorbis;

  } 

  # FLAC Tagging
  elsif ($file =~ /\.flac$/i or $file =~ /\.fla$/i) {
  
      my $flac_head = Audio::FLAC::Header->new($file);
      my $flac_tag  = $flac_head->tags();

      pac_msg("Tagging ($file) - (Vorbis)", "notice");
      
      if ($usertag{artist}) {
          $flac_tag->{ARTIST} = "$usertag{artist}";
          printf "artist      = '$usertag{artist}'\n";
      }
      
      if ($usertag{title}) {
          $flac_tag->{TITLE}  = "$usertag{title}";
          printf "title       = '$usertag{title}'\n";
      }
      
      if ($usertag{genre}) {
          $flac_tag->{GENRE}  = "$usertag{genre}";
          printf "genre       = '$usertag{genre}'\n";
      }
      
      if ($usertag{album}) {
          $flac_tag->{ALBUM}  = "$usertag{album}";
          printf "album       = '$usertag{album}'\n";
      }
      
      if ($usertag{year}) {
          $flac_tag->{DATE}   = "$usertag{year}";
          printf "year        = '$usertag{year}'\n";
      }
      
      if ($usertag{track}) {
          $flac_tag->{TRACKNUMBER} = "$usertag{track}";
               printf "track       = '$usertag{track}'\n";
          
      }
      
      if ($usertag{comment}) {
          $flac_tag->{DESCRIPTION} = "$usertag{comment}";
               printf "comment     = '$usertag{comment}'\n";
      }
      
      printf "\n";
      $flac_head->write();
      
       
  } else { 
    pac_msg("$lang{$mylang}{error_write_tag}\n'$file'\n","error"); 
    }
      
 }  
  exit(0);   
}   

sub cd_info {

if ($noinput) { $config{'CDDB_INPUT'} = 0; }

    eval("use CDDB_get qw( get_cddb );"); pac_msg("$lang{$mylang}{error_loading} CDDB_get\n$lang{$mylang}{install_mod_or_edit_conf}\n\n$!","error") if $@;
            
        $cddb_config{'CDDB_HOST'} = "$config{'CDDB_HOST'}";
        $cddb_config{'CDDB_PORT'} = "$config{'CDDB_PORT'}";
        $cddb_config{'CDDB_MODE'} = "$config{'CDDB_MODE'}";
        
        $config{'CD_DEVICE'}      = "$config{'CDROM'}";
                                        
        $cddb_config{'input'}     = "$config{'CDDB_INPUT'}";
                                               
        $cddb_active = 1;
                                                      
        %cd=get_cddb(\%cddb_config);
                                                             
        unless(defined $cd{title}) { pac_msg("$lang{$mylang}{no_cddb_entry}.","notice"); }
                                                                         
printf  "
$name - $version
        
Artist = $cd{artist}
Album  = $cd{title}
Genre  = $cd{cat}
Tracks = $cd{tno}
Year   = $cd{year}

";

my $n = 1;

foreach my $i (@{$cd{track}}) {
        printf "Track $n: $i\n";
        $n++;
}

                                               
}                                                                                       $track_total = $cd{tno};
                                                                                       

# CD Ripping
sub pac_rip {

checkCdQuery();

my ($enc_opt, $ext, $ulink) = @_;
my (%cd, %cddb_config, @cdtrack, $track_total) = ();

if ($nocddb)  { $config{'USE_CDDB'}   = 0; $cddb_active = 0;}
if ($noinput) { $config{'CDDB_INPUT'} = 0; }

if ($config{'USE_CDDB'} eq 1) { 

    eval("use CDDB_get qw( get_cddb );"); pac_msg("$lang{$mylang}{error_loading} CDDB_get\n$lang{$mylang}{install_mod_or_edit_conf}\n\n$!","error") if $@;
    
       $cddb_config{CDDB_HOST} = "$config{'CDDB_HOST'}";
       $cddb_config{CDDB_PORT} = "$config{'CDDB_PORT'}";
       $cddb_config{CDDB_MODE} = "$config{'CDDB_MODE'}";
       
       $config{CD_DEVICE}      = "$config{'CDROM'}";
                                                          
       $cddb_config{input}     = "$config{'CDDB_INPUT'}";
       
       $cddb_active = 1;
                                                                    
       %cd=get_cddb(\%cddb_config);
                                                                           
    unless(defined $cd{title}) { pac_msg("$lang{$mylang}{no_cddb_entry}\n\n$lang{$mylang}{use_no_cddb}","notice"); $cddb_active = 0; }
    
       @cdtrack     = @{$cd{track}}; 
       $track_total = $cd{tno}; 
                                                                                                       
}

if ($all and $cddb_active eq 0) {

       my $count = 1;

            do {

                 $out_file = "$count.$ext";
                           
                 if (defined $out_dir) {
                 if (-d $out_dir) { $out_file = "$out_dir/$count.$ext";
                 } else { pac_msg("$lang{$mylang}{could_not_open_dir} '$out_dir':\n\n$!\n","error"); } }
                                                             
                 pac_msg("$lang{$mylang}{ripping_track} $count -> $count.$ext", "notice");

                 cdCall($enc_opt, $count, $out_file);
 
                 $count++;

               } until ($? eq 256);

                 unlink("$count.wav") if $ulink eq 1;
                                                      
 exit(0);

} 

if ($all and $cddb_active eq 1) {

       my $n=1;
       
       foreach my $i (@cdtrack) {

             my $track_name = $n-1;
                chomp($cdtrack[$track_name]);
                $out_file   = "$cd{artist} - $cdtrack[$track_name].$ext";
                
                if (defined $out_dir) {
                if (-d $out_dir) {  $out_file = "$out_dir/$out_file";
                } else { pac_msg("$lang{$mylang}{could_not_open_dir} '$out_dir':\n\n$!\n","error"); } }
              
                pac_msg("$lang{$mylang}{ripping_track} $n -> $out_file","notice");

                cdCall($enc_opt, $n, $out_file, $cd{artist}, $cd{title}, $cd{cat}, $cdtrack[$track_name], $cd{year});
   
                $n++;

       }

exit(0);

}
        
if (@track) {

  # Comma separated input lists
  @track = split(/,/, join(',',@track));

  foreach my $count (@track) {

       my $track_name = $count-1;
       
       if ($cddb_active eq 0) {  $out_file = "$count.$ext"; }
       if ($cddb_active eq 1) {  $out_file = "$cd{artist} - $cdtrack[$track_name].$ext"; }
           
       if (defined $out_dir) {
       if (-d $out_dir) {  $out_file = "$out_dir/$out_file";
       } else { pac_msg("$lang{$mylang}{could_not_open_dir} '$out_dir':\n\n$!\n","error"); } }
        
       pac_msg("$lang{$mylang}{ripping_track} $count -> $out_file", "notice");

       cdCall($enc_opt, $count, $out_file)                                                           if $cddb_active eq 0;
       cdCall($enc_opt, $count, $out_file, $cd{artist}, $cd{title}, $cd{cat}, $cdtrack[$track_name], $cd{year}) if $cddb_active eq 1;

       unlink("$count.wav") if $ulink eq 1;

  }

}
 
if (not $all and not @track) { pac_msg("$lang{$mylang}{please_specify_opt} --all, --track","error"); }

}

sub cdCall {

       my ($enc_opt, $count, $out_file, @taginfo) = @_;
       
       # Remove backslashes from output file name
       $out_file =~ s/\//_/g;
       
       # Use BONK lossless encoding if --lossless option is passed
       my $bonk_opts = ''; if ($lossless) { $bonk_opts = "-l"; }
           
       # Priority Scheduling
       $nice = '';
       $nice = "$config{'NICE'} $config{'NICLEVEL'}" if $use_nice eq 1;
       check_apps($config{'NICE'})                    if $use_nice eq 1;
       
       # CD -> MP3
       if ($enc_opt eq "cdtomp3") {

         system("$nice $cdparanoia -d $config{'CDROM'} $count \"-\" | $nice $lame $audio_opts --resample $freq -b $bitrate -h - -o \"$out_file\"");
          
         if ($usetags eq 1 and @taginfo and -e $out_file) {

             my $mp3_tag = MP3::Tag->new($out_file);
                $mp3_tag->new_tag("$id3v");

             my $id3;
                                
                $id3 = $mp3_tag->{$id3v} if exists $mp3_tag->{$id3v};
                
                $id3->artist($taginfo[0]) if $taginfo[0];
                $id3->album($taginfo[1])  if $taginfo[1];
                $id3->genre($taginfo[2])  if $taginfo[2];
                $id3->title($taginfo[3])  if $taginfo[3];
                $id3->year($taginfo[4])   if $taginfo[4];
                $id3->track($count)       if $count;
                
                $id3->write_tag;
         }
                
       }
       
       # CD -> Ogg Vorbis
       if ($enc_opt eq "cdtoogg") {

         system("$nice $cdparanoia -d $config{'CDROM'} $count \"-\" | $nice $oggenc $audio_opts --resample $freq -q $quality - -o \"$out_file\"");
        
         if ($usetags eq 1 and @taginfo and -e $out_file) {
         
              my $ogg_tag = Ogg::Vorbis::Header->new($out_file);
              
                 $ogg_tag->add_comments("ARTIST",      "$taginfo[0]")   if $taginfo[0];
                 $ogg_tag->add_comments("ALBUM",       "$taginfo[1]")   if $taginfo[1];
                 $ogg_tag->add_comments("GENRE",       "$taginfo[2]")   if $taginfo[2];
                 $ogg_tag->add_comments("TITLE",       "$taginfo[3]")   if $taginfo[3];
                 $ogg_tag->add_comments("YEAR",        "$taginfo[4]")   if $taginfo[4];
                 $ogg_tag->add_comments("DATE",        "$taginfo[4]")   if $taginfo[4];
                 $ogg_tag->add_comments("TRACKNUMBER", "$count")        if $count;
                                                                                    
                 $ogg_tag->write_vorbis;
         }                                                                                              
          
       }

       # CD -> FLAC
       if ($enc_opt eq "cdtoflac") {

         system("$nice $cdparanoia -d $config{'CDROM'} $count \"-\" | $nice $flac $audio_opts -$flevel - -o \"$out_file\"");
          
         if ($usetags eq 1 and @taginfo and -e $out_file) {
         
              my $flac_head = Audio::FLAC::Header->new($out_file);
              my $flac_tag  = $flac_head->tags();
                           
                 $flac_tag->{ARTIST}       = "$taginfo[0]"    if $taginfo[0];
                 $flac_tag->{ALBUM}        = "$taginfo[1]"    if $taginfo[1];
                 $flac_tag->{GENRE}        = "$taginfo[2]"    if $taginfo[2];
                 $flac_tag->{TITLE}        = "$taginfo[3]"    if $taginfo[3];
                 $flac_tag->{DATE}         = "$taginfo[4]"    if $taginfo[4];
                 $flac_tag->{TRACKNUMBER}  = "$count"         if $count;
                
                 $flac_head->write();
         }
                                                                                   
       }
       
       # CD -> Monkey Audio (APE)
       if ($enc_opt eq "cdtoape") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $mac $count.wav \"$out_file\" -c$alevel");
       }                                    

       # CD -> Shorten (SHN)
       if ($enc_opt eq "cdtoshn") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count \"-\" | $nice $shorten $audio_opts -c $channels -v $slevel - \"$out_file\"");
       }
       
       # CD -> FAAC (AAC)
       if ($enc_opt eq "cdtoaac") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count \"-\" | $nice $faac $audio_opts -q $quality - -o \"$out_file\"");
       }
       
       # CD -> FAAC (M4A/MP4)
       if ($enc_opt eq "cdtomp4") {

         my $mp4_tag = '';
         
         if ($usetags eq 1 and @taginfo) {
         
             $mp4_tag = "--artist \"$taginfo[0]\""             if $taginfo[0];
             $mp4_tag = "$mp4_tag --album \"$taginfo[1]\""     if $taginfo[1];
             $mp4_tag = "$mp4_tag --genre \"$taginfo[2]\""     if $taginfo[2];
             $mp4_tag = "$mp4_tag --title \"$taginfo[3]\""     if $taginfo[3];
             $mp4_tag = "$mp4_tag --year  \"$taginfo[4]\""     if $taginfo[4];
             $mp4_tag = "$mp4_tag --track \"$count\""          if $count;
             
         }

          system("$nice $cdparanoia -d $config{'CDROM'} $count \"-\" | $nice $faac $audio_opts $mp4_tag -w -q $quality - -o \"$out_file\"");
       }
       
       # CD -> Musepack (MPC)
       if ($enc_opt eq "cdtompc") {

         my $mpc_tag = '';
         
         if ($usetags eq 1 and @taginfo) {
         
             $mpc_tag = "--artist \"$taginfo[0]\""                 if $taginfo[0];
             $mpc_tag = "$mpc_tag --tag \"Album=$taginfo[1]\""     if $taginfo[1];
             $mpc_tag = "$mpc_tag --tag \"Genre=$taginfo[2]\""     if $taginfo[2];
             $mpc_tag = "$mpc_tag --tag \"Title=$taginfo[3]\""     if $taginfo[3];
             $mpc_tag = "$mpc_tag --tag \"Year=$taginfo[4]\""      if $taginfo[4];
             $mpc_tag = "$mpc_tag --tag \"Track=$count\""          if $count;
             
         }
         
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $mppenc --overwrite --$xlevel $mpc_tag $audio_opts $count.wav \"$out_file\"");
       }
       
       # CD -> Wavpack (WV)
       if ($enc_opt eq "cdtowv")  {

         my $wv_tag = '';
         
         if ($usetags eq 1 and @taginfo) {
         
             $wv_tag = "-w \"Artist=$taginfo[0]\""            if $taginfo[0];
             $wv_tag = "$wv_tag -w \"Album=$taginfo[1]\""     if $taginfo[1];
             $wv_tag = "$wv_tag -w \"Genre=$taginfo[2]\""     if $taginfo[2];
             $wv_tag = "$wv_tag -w \"Title=$taginfo[3]\""     if $taginfo[3];
             $wv_tag = "$wv_tag -w \"Year=$taginfo[4]\""      if $taginfo[4];
             $wv_tag = "$wv_tag -w \"Track=$count\""          if $count;
                                                              
             chomp($wv_tag);
             
         }
                  
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $wavpack $audio_opts -y $wv_tag $count.wav -o \"$out_file\"");
       }
       
       # CD -> OptimFrog (OFR)
       if ($enc_opt eq "cdtoofr") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $ofr $audio_opts --overwrite --mode $mode --optimize $optimize $count.wav --output \"$out_file\"");
       }
       
       # CD -> OptimFrog (OFS)
       if ($enc_opt eq "cdtoofs") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $ofs $audio_opts --overwrite --mode $mode --optimize $optimize $count.wav --output \"$out_file\"");
       }
       
       # CD -> TTA
       if ($enc_opt eq "cdtotta") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $ttaenc $audio_opts -e \"$count.wav\" -o \"$out_file\"");
       }
       
       # CD -> LPAC
       if ($enc_opt eq "cdtopac") {
          system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
          system("$nice $lpac $audio_opts -v -$plevel \"$count.wav\" \"$out_file\"");
       }
       
       # CD -> Kexis (KXS)
       if ($enc_opt eq "cdtokxs")  {
           system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
           system("$nice $kexis $audio_opts -p \"$count.wav\"");
           
           move("$new_file.kxs","$out_file");
       }
       
       # CD -> (AIFF/AU/SND/RAW/VOC/SMP)
       if ($enc_opt eq "cdtoaiff") {
           system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
           system("$nice $sox $sox_opts \"$count.wav\" -r $freq -c $channels $audio_opts \"$out_file\" $effect");
       }
       
       # CD -> (MP2/AC3/RA)
       if ($enc_opt eq "cdtomp2")  {
           system("$nice $cdparanoia -d $config{'CDROM'} $count - | $nice $ffmpeg -y -i \"-\" -ab $bitrate -ar $freq -ac $channels $audio_opts \"$out_file\"");
       }
       
       # CD -> Lossless Audio (LA)
       if ($enc_opt eq "cdtola")   {
           system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
           system("$nice $la -overwrite $audio_opts \"$count.wav\" \"$out_file\"");
       }
       
       # CD -> BONK
       if ($enc_opt eq "cdtobonk") {
       
         my $bonk_tag = '';
                
         if ($usetags eq 1 and @taginfo) {
         
             $bonk_tag = "$bonk_tag -a \"$taginfo[0]\""  if $taginfo[0];
             $bonk_tag = "$bonk_tag -t \"$taginfo[3]\""  if $taginfo[1];
             
         }
             system("$nice $cdparanoia -d $config{'CDROM'} $count $count.wav");
             system("$nice $bonk encode $bonk_tag $audio_opts $bonk_opts -q $qlevel -d $dratio -s $plevel \"$count.wav\" -o \"$out_file\"");
       }
       
       # CD -> WAV
       if ($enc_opt eq "cdtowav")  {
          system("$nice $cdparanoia -d $config{'CDROM'} $count \"$out_file\"");
       }

}


# Encoding Instructions

# MP3
if    (defined $mp3tomp3)    { check_apps($lame);              pac_convert("mp3",  "mp3",  "mp3tomp3",    "1");   }   
elsif (defined $mp3toogg)    { check_apps($lame, $oggenc);     pac_convert("mp3",  "ogg",  "mp3toogg",    "0");   }
elsif (defined $mp3toflac)   { check_apps($lame, $flac);       pac_convert("mp3",  "flac", "mp3toflac",   "1");   }
elsif (defined $mp3tofla)    { check_apps($lame, $flac);       pac_convert("mp3",  "fla",  "mp3toflac",   "1");   }
elsif (defined $mp3toape)    { check_apps($lame, $mac);        pac_convert("mp3",  "ape",  "mp3toape",    "1");   }
elsif (defined $mp3toshn)    { check_apps($lame, $shorten);    pac_convert("mp3",  "shn",  "mp3toshn",    "1");   }
elsif (defined $mp3toaac)    { check_apps($lame, $faac);       pac_convert("mp3",  "aac",  "mp3toaac",    "0");   }
elsif (defined $mp3tom4a)    { check_apps($lame, $faac);       pac_convert("mp3",  "m4a",  "mp3tomp4",    "0");   }
elsif (defined $mp3tomp4)    { check_apps($lame, $faac);       pac_convert("mp3",  "mp4",  "mp3tomp4",    "0");   }
elsif (defined $mp3tompc)    { check_apps($lame, $mppenc);     pac_convert("mp3",  "mpc",  "mp3tompc",    "1");   }
elsif (defined $mp3tompp)    { check_apps($lame, $mppenc);     pac_convert("mp3",  "mpp",  "mp3tompc",    "1");   }
elsif (defined $mp3towv)     { check_apps($lame, $wavpack);    pac_convert("mp3",  "wv",   "mp3towv",     "1");   }
elsif (defined $mp3toofr)    { check_apps($lame, $ofr);        pac_convert("mp3",  "ofr",  "mp3toofr",    "1");   }
elsif (defined $mp3toofs)    { check_apps($lame, $ofs);        pac_convert("mp3",  "ofs",  "mp3toofs",    "1");   }
elsif (defined $mp3totta)    { check_apps($lame, $ttaenc);     pac_convert("mp3",  "tta",  "mp3totta",    "1");   }
elsif (defined $mp3topac)    { check_apps($lame, $lpac);       pac_convert("mp3",  "pac",  "mp3topac",    "1");   }
elsif (defined $mp3tolpac)   { check_apps($lame, $lpac);       pac_convert("mp3",  "lpac", "mp3topac",    "1");   }
elsif (defined $mp3tokxs)    { check_apps($lame, $kexis);      pac_convert("mp3",  "kxs",  "mp3tokxs",    "1");   }
elsif (defined $mp3toaiff)   { check_apps($lame, $sox);        pac_convert("mp3",  "aiff", "mp3toaiff",   "1");   }
elsif (defined $mp3toau)     { check_apps($lame, $sox);        pac_convert("mp3",  "au",   "mp3toaiff",   "1");   }
elsif (defined $mp3tosnd)    { check_apps($lame, $sox);        pac_convert("mp3",  "snd",  "mp3toaiff",   "1");   }
elsif (defined $mp3toraw)    { check_apps($lame, $sox);        pac_convert("mp3",  "raw",  "mp3toaiff",   "1");   }
elsif (defined $mp3tovoc)    { check_apps($lame, $sox);        pac_convert("mp3",  "voc",  "mp3toaiff",   "1");   }
elsif (defined $mp3tosmp)    { check_apps($lame, $sox);        pac_convert("mp3",  "smp",  "mp3toaiff",   "1");   }
elsif (defined $mp3tomp2)    { check_apps($lame, $ffmpeg);     pac_convert("mp3",  "mp2",  "mp3tomp2",    "0");   }
elsif (defined $mp3toac3)    { check_apps($lame, $ffmpeg);     pac_convert("mp3",  "ac3",  "mp3tomp2",    "0");   }
elsif (defined $mp3tola)     { check_apps($lame, $la);         pac_convert("mp3",  "la",   "mp3tola",     "1");   }
elsif (defined $mp3tobonk)   { check_apps($lame, $bonk);       pac_convert("mp3",  "bonk", "mp3tobonk",   "1");   }
elsif (defined $mp3towav)    { check_apps($lame);              pac_convert("mp3",  "wav",  "mp3towav",    "0");   }
elsif (defined $mp3tora)     { check_apps($lame, $ffmpeg);     pac_convert("mp3",  "ra",   "mp3tomp2",    "0");   }


# Ogg Vorbis
elsif (defined $oggtomp3)    { check_apps($oggdec, $lame);     pac_convert("ogg",  "mp3",  "oggtomp3",    "0");   }
elsif (defined $oggtoogg)    { check_apps($oggdec, $oggenc);   pac_convert("ogg",  "ogg",  "oggtoogg",    "1");   }
elsif (defined $oggtoflac)   { check_apps($oggdec, $flac);     pac_convert("ogg",  "flac", "oggtoflac",   "1");   }
elsif (defined $oggtofla)    { check_apps($oggdec, $flac);     pac_convert("ogg",  "fla",  "oggtoflac",   "1");   }
elsif (defined $oggtoape)    { check_apps($oggdec, $mac);      pac_convert("ogg",  "ape",  "oggtoape",    "1");   }
elsif (defined $oggtoshn)    { check_apps($oggdec, $shorten);  pac_convert("ogg",  "shn",  "oggtoshn",    "1");   }
elsif (defined $oggtoaac)    { check_apps($oggdec, $faac);     pac_convert("ogg",  "aac",  "oggtoaac",    "0");   }
elsif (defined $oggtom4a)    { check_apps($oggdec, $faac);     pac_convert("ogg",  "m4a",  "oggtomp4",    "0");   }
elsif (defined $oggtomp4)    { check_apps($oggdec, $faac);     pac_convert("ogg",  "mp4",  "oggtomp4",    "0");   }
elsif (defined $oggtompc)    { check_apps($oggdec, $mppenc);   pac_convert("ogg",  "mpc",  "oggtompc",    "1");   }
elsif (defined $oggtompp)    { check_apps($oggdec, $mppenc);   pac_convert("ogg",  "mpp",  "oggtompc",    "1");   }
elsif (defined $oggtowv)     { check_apps($oggdec, $wavpack);  pac_convert("ogg",  "wv",   "oggtowv",     "1");   }
elsif (defined $oggtoofr)    { check_apps($oggdec, $ofr);      pac_convert("ogg",  "ofr",  "oggtoofr",    "1");   }
elsif (defined $oggtoofs)    { check_apps($oggdec, $ofs);      pac_convert("ogg",  "ofs",  "oggtoofs",    "1");   }
elsif (defined $oggtotta)    { check_apps($oggdec, $ttaenc);   pac_convert("ogg",  "tta",  "oggtotta",    "1");   }
elsif (defined $oggtopac)    { check_apps($oggdec, $lpac);     pac_convert("ogg",  "pac",  "oggtopac",    "1");   }
elsif (defined $oggtolpac)   { check_apps($oggdec, $lpac);     pac_convert("ogg",  "lpac", "oggtopac",    "1");   }
elsif (defined $oggtokxs)    { check_apps($oggdec, $kexis);    pac_convert("ogg",  "kxs",  "oggtokxs",    "1");   }
elsif (defined $oggtoaiff)   { check_apps($oggdec, $sox);      pac_convert("ogg",  "aiff", "oggtoaiff",   "1");   }
elsif (defined $oggtoau)     { check_apps($oggdec, $sox);      pac_convert("ogg",  "au",   "oggtoaiff",   "1");   }
elsif (defined $oggtosnd)    { check_apps($oggdec, $sox);      pac_convert("ogg",  "snd",  "oggtoaiff",   "1");   }
elsif (defined $oggtoraw)    { check_apps($oggdec, $sox);      pac_convert("ogg",  "raw",  "oggtoaiff",   "1");   }
elsif (defined $oggtovoc)    { check_apps($oggdec, $sox);      pac_convert("ogg",  "voc",  "oggtoaiff",   "1");   }
elsif (defined $oggtosmp)    { check_apps($oggdec, $sox);      pac_convert("ogg",  "smp",  "oggtoaiff",   "1");   }
elsif (defined $oggtomp2)    { check_apps($oggdec, $ffmpeg);   pac_convert("ogg",  "mp2",  "oggtomp2",    "1");   }
elsif (defined $oggtoac3)    { check_apps($oggdec, $ffmpeg);   pac_convert("ogg",  "ac3",  "oggtomp2",    "1");   }
elsif (defined $oggtola)     { check_apps($oggdec, $la);       pac_convert("ogg",  "la",   "oggtola",     "1");   }
elsif (defined $oggtobonk)   { check_apps($oggdec, $bonk);     pac_convert("ogg",  "bonk", "oggtobonk",   "1");   }
elsif (defined $oggtowav)    { check_apps($oggdec);            pac_convert("ogg",  "wav",  "oggtowav",    "0");   }
elsif (defined $oggtora)     { check_apps($oggdec, $ffmpeg);   pac_convert("ogg",  "ra",   "oggtomp2",    "1");   }
              

# FLAC
elsif (defined $flactomp3)   { check_apps($flac, $lame);       pac_convert("flac", "mp3",  "flactomp3",   "0");   }
elsif (defined $flactoogg)   { check_apps($flac, $oggenc);     pac_convert("flac", "ogg",  "flactoogg",   "0");   }
elsif (defined $flactoflac)  { check_apps($flac);              pac_convert("flac", "flac", "flactoflac",  "1");   }
elsif (defined $flactofla)   { check_apps($flac);              pac_convert("flac", "fla",  "flactoflac",  "1");   }
elsif (defined $flactoape)   { check_apps($flac, $mac);        pac_convert("flac", "ape",  "flactoape",   "1");   }
elsif (defined $flactoshn)   { check_apps($flac, $shorten);    pac_convert("flac", "shn",  "flactoshn",   "0");   }
elsif (defined $flactoaac)   { check_apps($flac, $faac);       pac_convert("flac", "aac",  "flactoaac",   "0");   }
elsif (defined $flactom4a)   { check_apps($flac, $faac);       pac_convert("flac", "m4a",  "flactomp4",   "0");   }
elsif (defined $flactomp4)   { check_apps($flac, $faac);       pac_convert("flac", "mp4",  "flactomp4",   "0");   }
elsif (defined $flactompc)   { check_apps($flac, $mppenc);     pac_convert("flac", "mpc",  "flactompc",   "0");   }
elsif (defined $flactompp)   { check_apps($flac, $mppenc);     pac_convert("flac", "mpp",  "flactompc",   "0");   }
elsif (defined $flactowv)    { check_apps($flac, $wavpack);    pac_convert("flac", "wv",   "flactowv",    "1");   }
elsif (defined $flactoofr)   { check_apps($flac, $ofr);        pac_convert("flac", "ofr",  "flactoofr",   "1");   }
elsif (defined $flactoofs)   { check_apps($flac, $ofs);        pac_convert("flac", "ofs",  "flactoofs",   "1");   }
elsif (defined $flactotta)   { check_apps($flac, $ttaenc);     pac_convert("flac", "tta",  "flactotta",   "1");   }
elsif (defined $flactopac)   { check_apps($flac, $lpac);       pac_convert("flac", "pac",  "flactopac",   "1");   }
elsif (defined $flactolpac)  { check_apps($flac, $lpac);       pac_convert("flac", "lpac", "flactopac",   "1");   }
elsif (defined $flactokxs)   { check_apps($flac, $kexis);      pac_convert("flac", "kxs",  "flactokxs",   "1");   }
elsif (defined $flactoaiff)  { check_apps($flac, $sox);        pac_convert("flac", "aiff", "flactoaiff",  "1");   }
elsif (defined $flactoau)    { check_apps($flac, $sox);        pac_convert("flac", "au",   "flactoaiff",  "1");   }
elsif (defined $flactosnd)   { check_apps($flac, $sox);        pac_convert("flac", "snd",  "flactoaiff",  "1");   }
elsif (defined $flactoraw)   { check_apps($flac, $sox);        pac_convert("flac", "raw",  "flactoaiff",  "1");   }
elsif (defined $flactovoc)   { check_apps($flac, $sox);        pac_convert("flac", "voc",  "flactoaiff",  "1");   }
elsif (defined $flactosmp)   { check_apps($flac, $sox);        pac_convert("flac", "smp",  "flactoaiff",  "1");   }
elsif (defined $flactomp2)   { check_apps($flac, $ffmpeg);     pac_convert("flac", "mp2",  "flactomp2",   "1");   }
elsif (defined $flactoac3)   { check_apps($flac, $ffmpeg);     pac_convert("flac", "ac3",  "flactomp2",   "1");   }
elsif (defined $flactola)    { check_apps($flac, $la);         pac_convert("flac", "la",   "flactola",    "1");   }
elsif (defined $flactobonk)  { check_apps($flac, $bonk);       pac_convert("flac", "bonk", "flactobonk",  "1");   }
elsif (defined $flactowav)   { check_apps($flac);              pac_convert("flac", "wav",  "flactowav",   "0");   }
elsif (defined $flactora)    { check_apps($flac, $ffmpeg);     pac_convert("flac", "ra",   "flactomp2",   "1");   }


# FLAC (FLA)
elsif (defined $flatomp3)   { check_apps($flac, $lame);        pac_convert("fla",  "mp3",  "flactomp3",   "0");   }
elsif (defined $flatoogg)   { check_apps($flac, $oggenc);      pac_convert("fla",  "ogg",  "flactoogg",   "0");   }
elsif (defined $flatoflac)  { check_apps($flac);               pac_convert("fla",  "flac", "flactoflac",  "1");   }
elsif (defined $flatofla)   { check_apps($flac);               pac_convert("fla",  "fla",  "flactoflac",  "1");   }
elsif (defined $flatoape)   { check_apps($flac, $mac);         pac_convert("fla",  "ape",  "flactoape",   "1");   }
elsif (defined $flatoshn)   { check_apps($flac, $shorten);     pac_convert("fla",  "shn",  "flactoshn",   "0");   }
elsif (defined $flatoaac)   { check_apps($flac, $faac);        pac_convert("fla",  "aac",  "flactoaac",   "0");   }
elsif (defined $flatom4a)   { check_apps($flac, $faac);        pac_convert("fla",  "m4a",  "flactomp4",   "0");   }
elsif (defined $flatomp4)   { check_apps($flac, $faac);        pac_convert("fla",  "mp4",  "flactomp4",   "0");   }
elsif (defined $flatompc)   { check_apps($flac, $mppenc);      pac_convert("fla",  "mpc",  "flactompc",   "0");   }
elsif (defined $flatompp)   { check_apps($flac, $mppenc);      pac_convert("fla",  "mpp",  "flactompc",   "0");   }
elsif (defined $flatowv)    { check_apps($flac, $wavpack);     pac_convert("fla",  "wv",   "flactowv",    "1");   }
elsif (defined $flatoofr)   { check_apps($flac, $ofr);         pac_convert("fla",  "ofr",  "flactoofr",   "1");   }
elsif (defined $flatoofs)   { check_apps($flac, $ofs);         pac_convert("fla",  "ofs",  "flactoofs",   "1");   }
elsif (defined $flatotta)   { check_apps($flac, $ttaenc);      pac_convert("fla",  "tta",  "flactotta",   "1");   }
elsif (defined $flatopac)   { check_apps($flac, $lpac);        pac_convert("fla",  "pac",  "flactopac",   "1");   }
elsif (defined $flatolpac)  { check_apps($flac, $lpac);        pac_convert("fla",  "lpac", "flactopac",   "1");   }
elsif (defined $flatokxs)   { check_apps($flac, $kexis);       pac_convert("fla",  "kxs",  "flactokxs",   "1");   }
elsif (defined $flatoaiff)  { check_apps($flac, $sox);         pac_convert("fla",  "aiff", "flactoaiff",  "1");   }
elsif (defined $flatoau)    { check_apps($flac, $sox);         pac_convert("fla",  "au",   "flactoaiff",  "1");   }
elsif (defined $flatosnd)   { check_apps($flac, $sox);         pac_convert("fla",  "snd",  "flactoaiff",  "1");   }
elsif (defined $flatoraw)   { check_apps($flac, $sox);         pac_convert("fla",  "raw",  "flactoaiff",  "1");   }
elsif (defined $flatovoc)   { check_apps($flac, $sox);         pac_convert("fla",  "voc",  "flactoaiff",  "1");   }
elsif (defined $flatosmp)   { check_apps($flac, $sox);         pac_convert("fla",  "smp",  "flactoaiff",  "1");   }
elsif (defined $flatomp2)   { check_apps($flac, $ffmpeg);      pac_convert("fla",  "mp2",  "flactomp2",   "1");   }
elsif (defined $flatoac3)   { check_apps($flac, $ffmpeg);      pac_convert("fla",  "ac3",  "flactomp2",   "1");   }
elsif (defined $flatola)    { check_apps($flac, $la);          pac_convert("fla",  "la",   "flactola",    "1");   }
elsif (defined $flatobonk)  { check_apps($flac, $bonk);        pac_convert("fla",  "bonk", "flactobonk",  "1");   }
elsif (defined $flatowav)   { check_apps($flac);               pac_convert("fla",  "wav",  "flactowav",   "0");   }
elsif (defined $flatora)    { check_apps($flac, $ffmpeg);      pac_convert("fla",  "ra",   "flactomp2",   "1");   }


# Monkey Audio (APE)
elsif (defined $apetomp3)    { check_apps($mac, $lame);        pac_convert("ape",  "mp3",  "apetomp3",    "0");   }
elsif (defined $apetoogg)    { check_apps($mac, $oggenc);      pac_convert("ape",  "ogg",  "apetoogg",    "0");   }
elsif (defined $apetoflac)   { check_apps($mac, $flac);        pac_convert("ape",  "flac", "apetoflac",   "0");   }
elsif (defined $apetofla)    { check_apps($mac, $flac);        pac_convert("ape",  "fla",  "apetoflac",   "0");   }
elsif (defined $apetoape)    { check_apps($mac);               pac_convert("ape",  "ape",  "apetoape",    "1");   }
elsif (defined $apetoshn)    { check_apps($mac, $shorten);     pac_convert("ape",  "shn",  "apetoshn",    "0");   }
elsif (defined $apetoaac)    { check_apps($mac, $faac);        pac_convert("ape",  "aac",  "apetoaac",    "0");   }
elsif (defined $apetom4a)    { check_apps($mac, $faac);        pac_convert("ape",  "m4a",  "apetomp4",    "0");   }
elsif (defined $apetomp4)    { check_apps($mac, $faac);        pac_convert("ape",  "mp4",  "apetomp4",    "0");   }
elsif (defined $apetompc)    { check_apps($mac, $mppenc);      pac_convert("ape",  "mpc",  "apetompc",    "0");   }
elsif (defined $apetompp)    { check_apps($mac, $mppenc);      pac_convert("ape",  "mpp",  "apetompc",    "0");   }
elsif (defined $apetowv)     { check_apps($mac, $wavpack);     pac_convert("ape",  "wv",   "apetowv",     "1");   }
elsif (defined $apetoofr)    { check_apps($mac, $ofr);         pac_convert("ape",  "ofr",  "apetoofr",    "1");   }
elsif (defined $apetoofs)    { check_apps($mac, $ofs);         pac_convert("ape",  "ofs",  "apetoofs",    "1");   }
elsif (defined $apetotta)    { check_apps($mac, $ttaenc);      pac_convert("ape",  "tta",  "apetotta",    "1");   }
elsif (defined $apetopac)    { check_apps($mac, $lpac);        pac_convert("ape",  "pac",  "apetopac",    "1");   }
elsif (defined $apetolpac)   { check_apps($mac, $lpac);        pac_convert("ape",  "lpac", "apetopac",    "1");   }
elsif (defined $apetokxs)    { check_apps($mac, $kexis);       pac_convert("ape",  "kxs",  "apetokxs",    "1");   }
elsif (defined $apetoaiff)   { check_apps($mac, $sox);         pac_convert("ape",  "aiff", "apetoaiff",   "1");   }
elsif (defined $apetoau)     { check_apps($mac, $sox);         pac_convert("ape",  "au",   "apetoaiff",   "1");   }
elsif (defined $apetosnd)    { check_apps($mac, $sox);         pac_convert("ape",  "snd",  "apetoaiff",   "1");   }
elsif (defined $apetoraw)    { check_apps($mac, $sox);         pac_convert("ape",  "raw",  "apetoaiff",   "1");   }
elsif (defined $apetovoc)    { check_apps($mac, $sox);         pac_convert("ape",  "voc",  "apetoaiff",   "1");   }
elsif (defined $apetosmp)    { check_apps($mac, $sox);         pac_convert("ape",  "smp",  "apetoaiff",   "1");   }
elsif (defined $apetomp2)    { check_apps($mac, $ffmpeg);      pac_convert("ape",  "mp2",  "apetomp2",    "1");   }
elsif (defined $apetoac3)    { check_apps($mac, $ffmpeg);      pac_convert("ape",  "ac3",  "apetomp2",    "1");   }
elsif (defined $apetola)     { check_apps($mac, $la);          pac_convert("ape",  "la",   "apetola",     "1");   }
elsif (defined $apetobonk)   { check_apps($mac, $bonk);        pac_convert("ape",  "bonk", "apetobonk",   "1");   }
elsif (defined $apetowav)    { check_apps($mac);               pac_convert("ape",  "wav",  "apetowav",    "0");   }
elsif (defined $apetora)     { check_apps($mac, $ffmpeg);      pac_convert("ape",  "ra",   "apetomp2",    "1");   }


# Shorten (SHN)
elsif (defined $shntomp3)    { check_apps($shorten, $lame);    pac_convert("shn",  "mp3",  "shntomp3",    "0");   }
elsif (defined $shntoogg)    { check_apps($shorten, $oggenc);  pac_convert("shn",  "ogg",  "shntoogg",    "0");   }
elsif (defined $shntoflac)   { check_apps($shorten, $flac);    pac_convert("shn",  "flac", "shntoflac",   "0");   }
elsif (defined $shntofla)    { check_apps($shorten, $flac);    pac_convert("shn",  "fla",  "shntoflac",   "0");   }
elsif (defined $shntoape)    { check_apps($shorten, $mac);     pac_convert("shn",  "ape",  "shntoape",    "1");   }
elsif (defined $shntoshn)    { check_apps($shorten);           pac_convert("shn",  "shn",  "shntoshn",    "1");   }
elsif (defined $shntoaac)    { check_apps($shorten, $faac);    pac_convert("shn",  "aac",  "shntoaac",    "0");   }
elsif (defined $shntom4a)    { check_apps($shorten, $faac);    pac_convert("shn",  "m4a",  "shntomp4",    "0");   }
elsif (defined $shntomp4)    { check_apps($shorten, $faac);    pac_convert("shn",  "mp4",  "shntomp4",    "0");   }
elsif (defined $shntompc)    { check_apps($shorten, $mppenc);  pac_convert("shn",  "mpc",  "shntompc",    "0");   }
elsif (defined $shntompp)    { check_apps($shorten, $mppenc);  pac_convert("shn",  "mpp",  "shntompc",    "0");   }
elsif (defined $shntowv)     { check_apps($shorten, $wavpack); pac_convert("shn",  "wv",   "shntowv",     "1");   }
elsif (defined $shntoofr)    { check_apps($shorten, $ofr);     pac_convert("shn",  "ofr",  "shntoofr",    "1");   }
elsif (defined $shntoofs)    { check_apps($shorten, $ofs);     pac_convert("shn",  "ofs",  "shntoofs",    "1");   }
elsif (defined $shntotta)    { check_apps($shorten, $ttaenc);  pac_convert("shn",  "tta",  "shntotta",    "1");   }
elsif (defined $shntopac)    { check_apps($shorten, $lpac);    pac_convert("shn",  "pac",  "shntopac",    "1");   }
elsif (defined $shntolpac)   { check_apps($shorten, $lpac);    pac_convert("shn",  "lpac", "shntopac",    "1");   }
elsif (defined $shntokxs)    { check_apps($shorten, $kexis);   pac_convert("shn",  "kxs",  "shntokxs",    "1");   }
elsif (defined $shntoaiff)   { check_apps($shorten, $sox);     pac_convert("shn",  "aiff", "shntoaiff",   "1");   }
elsif (defined $shntoau)     { check_apps($shorten, $sox);     pac_convert("shn",  "au",   "shntoaiff",   "1");   }
elsif (defined $shntosnd)    { check_apps($shorten, $sox);     pac_convert("shn",  "snd",  "shntoaiff",   "1");   }
elsif (defined $shntoraw)    { check_apps($shorten, $sox);     pac_convert("shn",  "raw",  "shntoaiff",   "1");   }
elsif (defined $shntovoc)    { check_apps($shorten, $sox);     pac_convert("shn",  "voc",  "shntoaiff",   "1");   }
elsif (defined $shntosmp)    { check_apps($shorten, $sox);     pac_convert("shn",  "smp",  "shntoaiff",   "1");   }
elsif (defined $shntomp2)    { check_apps($shorten, $ffmpeg);  pac_convert("shn",  "mp2",  "shntomp2",    "1");   }
elsif (defined $shntoac3)    { check_apps($shorten, $ffmpeg);  pac_convert("shn",  "ac3",  "shntomp2",    "1");   }
elsif (defined $shntola)     { check_apps($shorten, $la);      pac_convert("shn",  "la",   "shntola",     "1");   }
elsif (defined $shntobonk)   { check_apps($shorten, $bonk);    pac_convert("shn",  "bonk", "shntobonk",   "1");   }
elsif (defined $shntowav)    { check_apps($shorten);           pac_convert("shn",  "wav",  "shntowav",    "0");   }
elsif (defined $shntora)     { check_apps($shorten, $ffmpeg);  pac_convert("shn",  "ra",   "shntomp2",    "1");   }



# FAAC (AAC)
elsif (defined $aactomp3)    { check_apps($faad, $lame);       pac_convert("aac",  "mp3",  "aactomp3",    "0");   } 
elsif (defined $aactoogg)    { check_apps($faad, $oggenc);     pac_convert("aac",  "ogg",  "aactoogg",    "0");   }
elsif (defined $aactoflac)   { check_apps($faad, $flac);       pac_convert("aac",  "flac", "aactoflac",   "1");   }
elsif (defined $aactofla)    { check_apps($faad, $flac);       pac_convert("aac",  "fla",  "aactoflac",   "1");   }
elsif (defined $aactoape)    { check_apps($faad, $mac);        pac_convert("aac",  "ape",  "aactoape",    "1");   }
elsif (defined $aactoshn)    { check_apps($faad, $shorten);    pac_convert("aac",  "shn",  "aactoshn",    "0");   }
elsif (defined $aactoaac)    { check_apps($faad, $faac);       pac_convert("aac",  "aac",  "aactoaac",    "1");   }
elsif (defined $aactom4a)    { check_apps($faad, $faac);       pac_convert("aac",  "m4a",  "aactomp4",    "0");   }
elsif (defined $aactomp4)    { check_apps($faad, $faac);       pac_convert("aac",  "mp4",  "aactomp4",    "0");   }
elsif (defined $aactompc)    { check_apps($faad, $mppenc);     pac_convert("aac",  "mpc",  "aactompc",    "1");   }
elsif (defined $aactompp)    { check_apps($faad, $mppenc);     pac_convert("aac",  "mpp",  "aactompc",    "1");   }
elsif (defined $aactowv)     { check_apps($faad, $wavpack);    pac_convert("aac",  "wv",   "aactowv",     "1");   }
elsif (defined $aactoofr)    { check_apps($faad, $ofr);        pac_convert("aac",  "ofr",  "aactoofr",    "1");   }
elsif (defined $aactoofs)    { check_apps($faad, $ofs);        pac_convert("aac",  "ofs",  "aactoofs",    "1");   }
elsif (defined $aactotta)    { check_apps($faad, $ttaenc);     pac_convert("aac",  "tta",  "aactotta",    "1");   }
elsif (defined $aactopac)    { check_apps($faad, $lpac);       pac_convert("aac",  "pac",  "aactopac",    "1");   }
elsif (defined $aactolpac)   { check_apps($faad, $lpac);       pac_convert("aac",  "lpac", "aactopac",    "1");   }
elsif (defined $aactokxs)    { check_apps($faad, $kexis);      pac_convert("aac",  "kxs",  "aactokxs",    "1");   }
elsif (defined $aactoaiff)   { check_apps($faad, $sox);        pac_convert("aac",  "aiff", "aactoaiff",   "1");   }
elsif (defined $aactoau)     { check_apps($faad, $sox);        pac_convert("aac",  "au",   "aactoaiff",   "1");   }
elsif (defined $aactosnd)    { check_apps($faad, $sox);        pac_convert("aac",  "snd",  "aactoaiff",   "1");   }
elsif (defined $aactoraw)    { check_apps($faad, $sox);        pac_convert("aac",  "raw",  "aactoaiff",   "1");   }
elsif (defined $aactovoc)    { check_apps($faad, $sox);        pac_convert("aac",  "voc",  "aactoaiff",   "1");   }
elsif (defined $aactosmp)    { check_apps($faad, $sox);        pac_convert("aac",  "smp",  "aactoaiff",   "1");   }
elsif (defined $aactomp2)    { check_apps($faad, $ffmpeg);     pac_convert("aac",  "mp2",  "aactomp2",    "1");   }
elsif (defined $aactoac3)    { check_apps($faad, $ffmpeg);     pac_convert("aac",  "ac3",  "aactomp2",    "1");   }
elsif (defined $aactola)     { check_apps($faad, $la);         pac_convert("aac",  "la",   "aactola",     "1");   }
elsif (defined $aactobonk)   { check_apps($faad, $bonk);       pac_convert("aac",  "bonk", "aactobonk",   "1");   }
elsif (defined $aactowav)    { check_apps($faad);              pac_convert("aac",  "wav",  "aactowav",    "0");   }
elsif (defined $aactora)     { check_apps($faad, $ffmpeg);     pac_convert("aac",  "ra",   "aactomp2",    "1");   }


# FAAC (M4A)
elsif (defined $m4atomp3)    { check_apps($faad, $lame);       pac_convert("m4a",  "mp3",  "mp4tomp3",    "1");   }
elsif (defined $m4atoogg)    { check_apps($faad, $oggenc);     pac_convert("m4a",  "ogg",  "mp4toogg",    "1");   }
elsif (defined $m4atoflac)   { check_apps($faad, $flac);       pac_convert("m4a",  "flac", "mp4toflac",   "1");   }
elsif (defined $m4atofla)    { check_apps($faad, $flac);       pac_convert("m4a",  "fla",  "mp4toflac",   "1");   }
elsif (defined $m4atoape)    { check_apps($faad, $mac);        pac_convert("m4a",  "ape",  "mp4toape",    "1");   }
elsif (defined $m4atoshn)    { check_apps($faad, $shorten);    pac_convert("m4a",  "shn",  "mp4toshn",    "1");   }
elsif (defined $m4atoaac)    { check_apps($faad, $faac);       pac_convert("m4a",  "aac",  "mp4toaac",    "1");   }
elsif (defined $m4atom4a)    { check_apps($faad, $faac);       pac_convert("m4a",  "m4a",  "mp4tomp4",    "1");   }
elsif (defined $m4atomp4)    { check_apps($faad, $faac);       pac_convert("m4a",  "mp4",  "mp4tomp4",    "1");   }
elsif (defined $m4atompc)    { check_apps($faad, $mppenc);     pac_convert("m4a",  "mpc",  "mp4tompc",    "1");   }
elsif (defined $m4atompp)    { check_apps($faad, $mppenc);     pac_convert("m4a",  "mpp",  "mp4tompc",    "1");   }
elsif (defined $m4atowv)     { check_apps($faad, $wavpack);    pac_convert("m4a",  "wv",   "mp4towv",     "1");   }
elsif (defined $m4atoofr)    { check_apps($faad, $ofr);        pac_convert("m4a",  "ofr",  "mp4toofr",    "1");   }
elsif (defined $m4atoofs)    { check_apps($faad, $ofs);        pac_convert("m4a",  "ofs",  "mp4toofs",    "1");   }
elsif (defined $m4atotta)    { check_apps($faad, $ttaenc);     pac_convert("m4a",  "tta",  "mp4totta",    "1");   }
elsif (defined $m4atopac)    { check_apps($faad, $lpac);       pac_convert("m4a",  "pac",  "mp4topac",    "1");   }
elsif (defined $m4atolpac)   { check_apps($faad, $lpac);       pac_convert("m4a",  "lpac", "mp4topac",    "1");   }
elsif (defined $m4atokxs)    { check_apps($faad, $kexis);      pac_convert("m4a",  "kxs",  "mp4tokxs",    "1");   }
elsif (defined $m4atoaiff)   { check_apps($faad, $sox);        pac_convert("m4a",  "aiff", "mp4toaiff",   "1");   }
elsif (defined $m4atoau)     { check_apps($faad, $sox);        pac_convert("m4a",  "au",   "mp4toaiff",   "1");   }
elsif (defined $m4atosnd)    { check_apps($faad, $sox);        pac_convert("m4a",  "snd",  "mp4toaiff",   "1");   }
elsif (defined $m4atoraw)    { check_apps($faad, $sox);        pac_convert("m4a",  "raw",  "mp4toaiff",   "1");   }
elsif (defined $m4atovoc)    { check_apps($faad, $sox);        pac_convert("m4a",  "voc",  "mp4toaiff",   "1");   }
elsif (defined $m4atosmp)    { check_apps($faad, $sox);        pac_convert("m4a",  "smp",  "mp4toaiff",   "1");   }
elsif (defined $m4atomp2)    { check_apps($faad, $ffmpeg);     pac_convert("m4a",  "mp2",  "mp4tomp2",    "1");   }
elsif (defined $m4atoac3)    { check_apps($faad, $ffmpeg);     pac_convert("m4a",  "ac3",  "mp4tomp2",    "1");   }
elsif (defined $m4atola)     { check_apps($faad, $la);         pac_convert("m4a",  "la",   "mp4tola",     "1");   }
elsif (defined $m4atobonk)   { check_apps($faad, $bonk);       pac_convert("m4a",  "bonk", "mp4tobonk",   "1");   }
elsif (defined $m4atowav)    { check_apps($faad);              pac_convert("m4a",  "wav",  "mp4towav",    "0");   }
elsif (defined $m4atora)     { check_apps($faad, $ffmpeg);     pac_convert("m4a",  "ra",   "mp4tomp2",    "1");   }
                     

# FAAC (MP4)
elsif (defined $mp4tomp3)    { check_apps($faad, $lame);       pac_convert("mp4",  "mp3",  "mp4tomp3",    "1");   }
elsif (defined $mp4toogg)    { check_apps($faad, $oggenc);     pac_convert("mp4",  "ogg",  "mp4toogg",    "1");   }
elsif (defined $mp4toflac)   { check_apps($faad, $flac);       pac_convert("mp4",  "flac", "mp4toflac",   "1");   }
elsif (defined $mp4tofla)    { check_apps($faad, $flac);       pac_convert("mp4",  "fla",  "mp4toflac",   "1");   }
elsif (defined $mp4toape)    { check_apps($faad, $mac);        pac_convert("mp4",  "ape",  "mp4toape",    "1");   }
elsif (defined $mp4toshn)    { check_apps($faad, $shorten);    pac_convert("mp4",  "shn",  "mp4toshn",    "1");   }
elsif (defined $mp4toaac)    { check_apps($faad, $faac);       pac_convert("mp4",  "aac",  "mp4toaac",    "1");   }
elsif (defined $mp4tom4a)    { check_apps($faad, $faac);       pac_convert("mp4",  "m4a",  "mp4tomp4",    "1");   }
elsif (defined $mp4tomp4)    { check_apps($faad, $faac);       pac_convert("mp4",  "mp4",  "mp4tomp4",    "1");   }
elsif (defined $mp4tompc)    { check_apps($faad, $mppenc);     pac_convert("mp4",  "mpc",  "mp4tompc",    "1");   }
elsif (defined $mp4tompp)    { check_apps($faad, $mppenc);     pac_convert("mp4",  "mpp",  "mp4tompc",    "1");   }
elsif (defined $mp4towv)     { check_apps($faad, $wavpack);    pac_convert("mp4",  "wv",   "mp4towv",     "1");   }
elsif (defined $mp4toofr)    { check_apps($faad, $ofr);        pac_convert("mp4",  "ofr",  "mp4toofr",    "1");   }
elsif (defined $mp4toofs)    { check_apps($faad, $ofs);        pac_convert("mp4",  "ofs",  "mp4toofs",    "1");   }
elsif (defined $mp4totta)    { check_apps($faad, $ttaenc);     pac_convert("mp4",  "tta",  "mp4totta",    "1");   }
elsif (defined $mp4topac)    { check_apps($faad, $lpac);       pac_convert("mp4",  "pac",  "mp4topac",    "1");   }
elsif (defined $mp4tolpac)   { check_apps($faad, $lpac);       pac_convert("mp4",  "lpac", "mp4topac",    "1");   }
elsif (defined $mp4tokxs)    { check_apps($faad, $kexis);      pac_convert("mp4",  "kxs",  "mp4tokxs",    "1");   }
elsif (defined $mp4toaiff)   { check_apps($faad, $sox);        pac_convert("mp4",  "aiff", "mp4toaiff",   "1");   }
elsif (defined $mp4toau)     { check_apps($faad, $sox);        pac_convert("mp4",  "au",   "mp4toaiff",   "1");   }
elsif (defined $mp4tosnd)    { check_apps($faad, $sox);        pac_convert("mp4",  "snd",  "mp4toaiff",   "1");   }
elsif (defined $mp4toraw)    { check_apps($faad, $sox);        pac_convert("mp4",  "raw",  "mp4toaiff",   "1");   }
elsif (defined $mp4tovoc)    { check_apps($faad, $sox);        pac_convert("mp4",  "voc",  "mp4toaiff",   "1");   }
elsif (defined $mp4tosmp)    { check_apps($faad, $sox);        pac_convert("mp4",  "smp",  "mp4toaiff",   "1");   }
elsif (defined $mp4tomp2)    { check_apps($faad, $ffmpeg);     pac_convert("mp4",  "mp2",  "mp4tomp2",    "1");   }
elsif (defined $mp4toac3)    { check_apps($faad, $ffmpeg);     pac_convert("mp4",  "ac3",  "mp4tomp2",    "1");   }
elsif (defined $mp4tola)     { check_apps($faad, $la);         pac_convert("mp4",  "la",   "mp4tola",     "1");   }
elsif (defined $mp4tobonk)   { check_apps($faad, $bonk);       pac_convert("mp4",  "bonk", "mp4tobonk",   "1");   }
elsif (defined $mp4towav)    { check_apps($faad);              pac_convert("mp4",  "wav",  "mp4towav",    "0");   }
elsif (defined $mp4tora)     { check_apps($faad, $ffmpeg);     pac_convert("mp4",  "ra",   "mp4tomp2",    "1");   }   


# Musepack (MPC)
elsif (defined $mpctomp3)    { check_apps($mppdec, $lame);     pac_convert("mpc",  "mp3",  "mpctomp3",    "1");   }
elsif (defined $mpctoogg)    { check_apps($mppdec, $oggenc);   pac_convert("mpc",  "ogg",  "mpctoogg",    "1");   }
elsif (defined $mpctoflac)   { check_apps($mppdec, $flac);     pac_convert("mpc",  "flac", "mpctoflac",   "1");   }
elsif (defined $mpctofla)    { check_apps($mppdec, $flac);     pac_convert("mpc",  "fla",  "mpctoflac",   "1");   }
elsif (defined $mpctoape)    { check_apps($mppdec, $mac);      pac_convert("mpc",  "ape",  "mpctoape",    "1");   } 
elsif (defined $mpctoshn)    { check_apps($mppdec, $shorten);  pac_convert("mpc",  "shn",  "mpctoshn",    "1");   }
elsif (defined $mpctoaac)    { check_apps($mppdec, $faac);     pac_convert("mpc",  "aac",  "mpctoaac",    "1");   }
elsif (defined $mpctom4a)    { check_apps($mppdec, $faac);     pac_convert("mpc",  "m4a",  "mpctomp4",    "1");   }
elsif (defined $mpctomp4)    { check_apps($mppdec, $faac);     pac_convert("mpc",  "mp4",  "mpctomp4",    "1");   }
elsif (defined $mpctompc)    { check_apps($mppdec, $mppenc);   pac_convert("mpc",  "mpc",  "mpctompc",    "1");   }
elsif (defined $mpctompp)    { check_apps($mppdec, $mppenc);   pac_convert("mpc",  "mpp",  "mpctompc",    "1");   }
elsif (defined $mpctowv)     { check_apps($mppdec, $wavpack);  pac_convert("mpc",  "wv",   "mpctowv",     "1");   }
elsif (defined $mpctoofr)    { check_apps($mppdec, $ofr);      pac_convert("mpc",  "ofr",  "mpctoofr",    "1");   }
elsif (defined $mpctoofs)    { check_apps($mppdec, $ofs);      pac_convert("mpc",  "ofs",  "mpctoofs",    "1");   }
elsif (defined $mpctotta)    { check_apps($mppdec, $ttaenc);   pac_convert("mpc",  "tta",  "mpctotta",    "1");   }
elsif (defined $mpctopac)    { check_apps($mppdec, $lpac);     pac_convert("mpc",  "pac",  "mpctopac",    "1");   }
elsif (defined $mpctolpac)   { check_apps($mppdec, $lpac);     pac_convert("mpc",  "lpac", "mpctopac",    "1");   }
elsif (defined $mpctokxs)    { check_apps($mppdec, $kexis);    pac_convert("mpc",  "kxs",  "mpctokxs",    "1");   }
elsif (defined $mpctoaiff)   { check_apps($mppdec, $sox);      pac_convert("mpc",  "aiff", "mpctoaiff",   "1");   }
elsif (defined $mpctoau)     { check_apps($mppdec, $sox);      pac_convert("mpc",  "au",   "mpctoaiff",   "1");   }
elsif (defined $mpctosnd)    { check_apps($mppdec, $sox);      pac_convert("mpc",  "snd",  "mpctoaiff",   "1");   }
elsif (defined $mpctoraw)    { check_apps($mppdec, $sox);      pac_convert("mpc",  "raw",  "mpctoaiff",   "1");   }
elsif (defined $mpctovoc)    { check_apps($mppdec, $sox);      pac_convert("mpc",  "voc",  "mpctoaiff",   "1");   }
elsif (defined $mpctosmp)    { check_apps($mppdec, $sox);      pac_convert("mpc",  "smp",  "mpctoaiff",   "1");   }
elsif (defined $mpctomp2)    { check_apps($mppdec, $ffmpeg);   pac_convert("mpc",  "mp2",  "mpctomp2",    "1");   }
elsif (defined $mpctoac3)    { check_apps($mppdec, $ffmpeg);   pac_convert("mpc",  "ac3",  "mpctomp2",    "1");   }
elsif (defined $mpctola)     { check_apps($mppdec, $la);       pac_convert("mpc",  "la",   "mpctola",     "1");   }
elsif (defined $mpctobonk)   { check_apps($mppdec, $bonk);     pac_convert("mpc",  "bonk", "mpctobonk",   "1");   }
elsif (defined $mpctowav)    { check_apps($mppdec);            pac_convert("mpc",  "wav",  "mpctowav",    "0");   }
elsif (defined $mpctora)     { check_apps($mppdec, $ffmpeg);   pac_convert("mpc",  "ra",   "mpctomp2",    "1");   }


# Musepack (MPP)
elsif (defined $mpptomp3)    { check_apps($mppdec, $lame);     pac_convert("mpp",  "mp3",  "mpctomp3",    "1");   }
elsif (defined $mpptoogg)    { check_apps($mppdec, $oggenc);   pac_convert("mpp",  "ogg",  "mpctoogg",    "1");   }
elsif (defined $mpptoflac)   { check_apps($mppdec, $flac);     pac_convert("mpp",  "flac", "mpctoflac",   "1");   }
elsif (defined $mpptofla)    { check_apps($mppdec, $flac);     pac_convert("mpp",  "fla",  "mpctoflac",   "1");   }
elsif (defined $mpptoape)    { check_apps($mppdec, $mac);      pac_convert("mpp",  "ape",  "mpctoape",    "1");   }
elsif (defined $mpptoshn)    { check_apps($mppdec, $shorten);  pac_convert("mpp",  "shn",  "mpctoshn",    "1");   }
elsif (defined $mpptoaac)    { check_apps($mppdec, $faac);     pac_convert("mpp",  "aac",  "mpctoaac",    "1");   }
elsif (defined $mpptom4a)    { check_apps($mppdec, $faac);     pac_convert("mpp",  "m4a",  "mpctomp4",    "1");   }
elsif (defined $mpptomp4)    { check_apps($mppdec, $faac);     pac_convert("mpp",  "mp4",  "mpctomp4",    "1");   }
elsif (defined $mpptompc)    { check_apps($mppdec, $mppenc);   pac_convert("mpp",  "mpc",  "mpctompc",    "1");   }
elsif (defined $mpptompp)    { check_apps($mppdec, $mppenc);   pac_convert("mpp",  "mpp",  "mpctompc",    "1");   }
elsif (defined $mpptowv)     { check_apps($mppdec, $wavpack);  pac_convert("mpp",  "wv",   "mpctowv",     "1");   }
elsif (defined $mpptoofr)    { check_apps($mppdec, $ofr);      pac_convert("mpp",  "ofr",  "mpctoofr",    "1");   }
elsif (defined $mpptoofs)    { check_apps($mppdec, $ofs);      pac_convert("mpp",  "ofs",  "mpctoofs",    "1");   }
elsif (defined $mpptotta)    { check_apps($mppdec, $ttaenc);   pac_convert("mpp",  "tta",  "mpctotta",    "1");   }
elsif (defined $mpptopac)    { check_apps($mppdec, $lpac);     pac_convert("mpp",  "pac",  "mpctopac",    "1");   }
elsif (defined $mpptolpac)   { check_apps($mppdec, $lpac);     pac_convert("mpp",  "lpac", "mpctopac",    "1");   }
elsif (defined $mpptokxs)    { check_apps($mppdec, $kexis);    pac_convert("mpp",  "kxs",  "mpctokxs",    "1");   }
elsif (defined $mpptoaiff)   { check_apps($mppdec, $sox);      pac_convert("mpp",  "aiff", "mpctoaiff",   "1");   }
elsif (defined $mpptoau)     { check_apps($mppdec, $sox);      pac_convert("mpp",  "au",   "mpctoaiff",   "1");   }
elsif (defined $mpptosnd)    { check_apps($mppdec, $sox);      pac_convert("mpp",  "snd",  "mpctoaiff",   "1");   }
elsif (defined $mpptoraw)    { check_apps($mppdec, $sox);      pac_convert("mpp",  "raw",  "mpctoaiff",   "1");   }
elsif (defined $mpptovoc)    { check_apps($mppdec, $sox);      pac_convert("mpp",  "voc",  "mpctoaiff",   "1");   }
elsif (defined $mpptosmp)    { check_apps($mppdec, $sox);      pac_convert("mpp",  "smp",  "mpctoaiff",   "1");   }
elsif (defined $mpptomp2)    { check_apps($mppdec, $ffmpeg);   pac_convert("mpp",  "mp2",  "mpctomp2",    "1");   }
elsif (defined $mpptoac3)    { check_apps($mppdec, $ffmpeg);   pac_convert("mpp",  "ac3",  "mpctomp2",    "1");   }
elsif (defined $mpptola)     { check_apps($mppdec, $la);       pac_convert("mpp",  "la",   "mpctola",     "1");   }
elsif (defined $mpptobonk)   { check_apps($mppdec, $bonk);     pac_convert("mpp",  "bonk", "mpctobonk",   "1");   }
elsif (defined $mpptowav)    { check_apps($mppdec);            pac_convert("mpp",  "wav",  "mpctowav",    "0");   }
elsif (defined $mpptora)     { check_apps($mppdec, $ffmpeg);   pac_convert("mpp",  "ra",   "mpctomp2",    "1");   }


# Wavpack (WV)
elsif (defined $wvtomp3)     { check_apps($wvunpack, $lame);   pac_convert("wv",   "mp3",  "wvtomp3",     "0");   }
elsif (defined $wvtoogg)     { check_apps($wvunpack, $oggenc); pac_convert("wv",   "ogg",  "wvtoogg",     "0");   }
elsif (defined $wvtoflac)    { check_apps($wvunpack, $flac);   pac_convert("wv",   "flac", "wvtoflac",    "0");   }
elsif (defined $wvtofla)     { check_apps($wvunpack, $flac);   pac_convert("wv",   "fla",  "wvtoflac",    "0");   }
elsif (defined $wvtoape)     { check_apps($wvunpack, $mac);    pac_convert("wv",   "ape",  "wvtoape",     "1");   }
elsif (defined $wvtoshn)     { check_apps($wvunpack, $shorten);pac_convert("wv",   "shn",  "wvtoshn",     "1");   }
elsif (defined $wvtoaac)     { check_apps($wvunpack, $flac);   pac_convert("wv",   "aac",  "wvtoaac",     "1");   }
elsif (defined $wvtom4a)     { check_apps($wvunpack, $flac);   pac_convert("wv",   "m4a",  "wvtomp4",     "1");   }                     
elsif (defined $wvtomp4)     { check_apps($wvunpack, $flac);   pac_convert("wv",   "mp4",  "wvtomp4",     "1");   }
elsif (defined $wvtompc)     { check_apps($wvunpack, $mppenc); pac_convert("wv",   "mpc",  "wvtompc",     "0");   }
elsif (defined $wvtompp)     { check_apps($wvunpack, $mppenc); pac_convert("wv",   "mpp",  "wvtompc",     "0");   }
elsif (defined $wvtowv)      { check_apps($wvunpack, $wavpack);pac_convert("wv",   "wv",   "wvtowv",      "1");   }
elsif (defined $wvtoofr)     { check_apps($wvunpack, $ofr);    pac_convert("wv",   "ofr",  "wvtoofr",     "1");   }
elsif (defined $wvtoofs)     { check_apps($wvunpack, $ofs);    pac_convert("wv",   "ofs",  "wvtoofs",     "1");   }
elsif (defined $wvtotta)     { check_apps($wvunpack, $ttaenc); pac_convert("wv",   "tta",  "wvtotta",     "1");   }
elsif (defined $wvtopac)     { check_apps($wvunpack, $lpac);   pac_convert("wv",   "pac",  "wvtopac",     "1");   }
elsif (defined $wvtolpac)    { check_apps($wvunpack, $lpac);   pac_convert("wv",   "lpac", "wvtopac",     "1");   }
elsif (defined $wvtokxs)     { check_apps($wvunpack, $kexis);  pac_convert("wv",   "kxs",  "wvtokxs",     "1");   }
elsif (defined $wvtoaiff)    { check_apps($wvunpack, $sox);    pac_convert("wv",   "aiff", "wvtoaiff",    "1");   }
elsif (defined $wvtoau)      { check_apps($wvunpack, $sox);    pac_convert("wv",   "au",   "wvtoaiff",    "1");   }
elsif (defined $wvtosnd)     { check_apps($wvunpack, $sox);    pac_convert("wv",   "snd",  "wvtoaiff",    "1");   }
elsif (defined $wvtoraw)     { check_apps($wvunpack, $sox);    pac_convert("wv",   "raw",  "wvtoaiff",    "1");   }
elsif (defined $wvtovoc)     { check_apps($wvunpack, $sox);    pac_convert("wv",   "voc",  "wvtoaiff",    "1");   }
elsif (defined $wvtosmp)     { check_apps($wvunpack, $sox);    pac_convert("wv",   "smp",  "wvtoaiff",    "1");   }
elsif (defined $wvtomp2)     { check_apps($wvunpack, $ffmpeg); pac_convert("wv",   "mp2",  "wvtomp2",     "1");   }
elsif (defined $wvtoac3)     { check_apps($wvunpack, $ffmpeg); pac_convert("wv",   "ac3",  "wvtomp2",     "1");   }
elsif (defined $wvtola)      { check_apps($wvunpack, $la);     pac_convert("wv",   "la",   "wvtola",      "1");   }
elsif (defined $wvtobonk)    { check_apps($wvunpack, $bonk);   pac_convert("wv",   "bonk", "wvtobonk",    "1");   }
elsif (defined $wvtowav)     { check_apps($wvunpack);          pac_convert("wv",   "wav",  "wvtowav",     "0");   }
elsif (defined $wvtora)      { check_apps($wvunpack, $ffmpeg); pac_convert("wv",   "ra",   "wvtomp2",     "1");   }


# OptimFrog (OFR)
elsif (defined $ofrtomp3)    { check_apps($ofr, $lame);        pac_convert("ofr",  "mp3",  "ofrtomp3",    "0");   }
elsif (defined $ofrtoogg)    { check_apps($ofr, $oggenc);      pac_convert("ofr",  "ogg",  "ofrtoogg",    "0");   }
elsif (defined $ofrtoflac)   { check_apps($ofr, $flac);        pac_convert("ofr",  "flac", "ofrtoflac",   "0");   }
elsif (defined $ofrtofla)    { check_apps($ofr, $flac);        pac_convert("ofr",  "fla",  "ofrtoflac",   "0");   }
elsif (defined $ofrtoape)    { check_apps($ofr, $mac);         pac_convert("ofr",  "ape",  "ofrtoape",    "1");   }
elsif (defined $ofrtoshn)    { check_apps($ofr, $shorten);     pac_convert("ofr",  "shn",  "ofrtoshn",    "0");   }
elsif (defined $ofrtoaac)    { check_apps($ofr, $faac);        pac_convert("ofr",  "aac",  "ofrtoaac",    "0");   }
elsif (defined $ofrtom4a)    { check_apps($ofr, $faac);        pac_convert("ofr",  "m4a",  "ofrtomp4",    "0");   }
elsif (defined $ofrtomp4)    { check_apps($ofr, $faac);        pac_convert("ofr",  "mp4",  "ofrtomp4",    "0");   }
elsif (defined $ofrtompc)    { check_apps($ofr, $mppenc);      pac_convert("ofr",  "mpc",  "ofrtompc",    "0");   }
elsif (defined $ofrtompp)    { check_apps($ofr, $mppenc);      pac_convert("ofr",  "mpp",  "ofrtompc",    "0");   }
elsif (defined $ofrtowv)     { check_apps($ofr, $wavpack);     pac_convert("ofr",  "wv",   "ofrtowv",     "0");   }
elsif (defined $ofrtoofr)    { check_apps($ofr);               pac_convert("ofr",  "ofr",  "ofrtoofr",    "1");   }
elsif (defined $ofrtoofs)    { check_apps($ofr, $ofs);         pac_convert("ofr",  "ofs",  "ofrtoofs",    "1");   }
elsif (defined $ofrtotta)    { check_apps($ofr, $ttaenc);      pac_convert("ofr",  "tta",  "ofrtotta",    "1");   }
elsif (defined $ofrtopac)    { check_apps($ofr, $lpac);        pac_convert("ofr",  "pac",  "ofrtopac",    "1");   }
elsif (defined $ofrtolpac)   { check_apps($ofr, $lpac);        pac_convert("ofr",  "lpac", "ofrtopac",    "1");   }
elsif (defined $ofrtokxs)    { check_apps($ofr, $kexis);       pac_convert("ofr",  "kxs",  "ofrtokxs",    "1");   }
elsif (defined $ofrtoaiff)   { check_apps($ofr, $sox);         pac_convert("ofr",  "aiff", "ofrtoaiff",   "1");   }
elsif (defined $ofrtoau)     { check_apps($ofr, $sox);         pac_convert("ofr",  "au",   "ofrtoaiff",   "1");   }
elsif (defined $ofrtosnd)    { check_apps($ofr, $sox);         pac_convert("ofr",  "snd",  "ofrtoaiff",   "1");   }
elsif (defined $ofrtoraw)    { check_apps($ofr, $sox);         pac_convert("ofr",  "raw",  "ofrtoaiff",   "1");   }
elsif (defined $ofrtovoc)    { check_apps($ofr, $sox);         pac_convert("ofr",  "voc",  "ofrtoaiff",   "1");   }
elsif (defined $ofrtosmp)    { check_apps($ofr, $sox);         pac_convert("ofr",  "smp",  "ofrtoaiff",   "1");   }
elsif (defined $ofrtomp2)    { check_apps($ofr, $ffmpeg);      pac_convert("ofr",  "mp2",  "ofrtomp2",    "0");   }
elsif (defined $ofrtoac3)    { check_apps($ofr, $ffmpeg);      pac_convert("ofr",  "ac3",  "ofrtomp2",    "0");   }
elsif (defined $ofrtola)     { check_apps($ofr, $la);          pac_convert("ofr",  "la",   "ofrtola",     "1");   }
elsif (defined $ofrtobonk)   { check_apps($ofr, $bonk);        pac_convert("ofr",  "bonk", "ofrtobonk",   "1");   }
elsif (defined $ofrtowav)    { check_apps($ofr);               pac_convert("ofr",  "wav",  "ofrtowav",    "0");   }
elsif (defined $ofrtora)     { check_apps($ofr, $ffmpeg);      pac_convert("ofr",  "ra",   "ofrtomp2",    "0");   }


# OptimFrog (OFS)
elsif (defined $ofstomp3)    { check_apps($ofs, $lame);        pac_convert("ofs",  "mp3",  "ofstomp3",    "0");   }
elsif (defined $ofstoogg)    { check_apps($ofs, $oggenc);      pac_convert("ofs",  "ogg",  "ofstoogg",    "0");   }
elsif (defined $ofstoflac)   { check_apps($ofs, $flac);        pac_convert("ofs",  "flac", "ofstoflac",   "0");   }
elsif (defined $ofstofla)    { check_apps($ofs, $flac);        pac_convert("ofs",  "fla",  "ofstoflac",   "0");   }
elsif (defined $ofstoape)    { check_apps($ofs, $mac);         pac_convert("ofs",  "ape",  "ofstoape",    "1");   }
elsif (defined $ofstoshn)    { check_apps($ofs, $shorten);     pac_convert("ofs",  "shn",  "ofstoshn",    "0");   }
elsif (defined $ofstoaac)    { check_apps($ofs, $faac);        pac_convert("ofs",  "aac",  "ofstoaac",    "0");   }
elsif (defined $ofstom4a)    { check_apps($ofs, $faac);        pac_convert("ofs",  "m4a",  "ofstomp4",    "0");   }
elsif (defined $ofstomp4)    { check_apps($ofs, $faac);        pac_convert("ofs",  "mp4",  "ofstomp4",    "0");   }
elsif (defined $ofstompc)    { check_apps($ofs, $mppenc);      pac_convert("ofs",  "mpc",  "ofstompc",    "0");   }
elsif (defined $ofstompp)    { check_apps($ofs, $mppenc);      pac_convert("ofs",  "mpp",  "ofstompc",    "0");   }
elsif (defined $ofstowv)     { check_apps($ofs, $wavpack);     pac_convert("ofs",  "wv",   "ofstowv",     "0");   }
elsif (defined $ofstoofr)    { check_apps($ofs, $ofr);         pac_convert("ofs",  "ofr",  "ofstoofr",    "1");   }
elsif (defined $ofstoofs)    { check_apps($ofs);               pac_convert("ofs",  "ofs",  "ofstoofs",    "1");   }
elsif (defined $ofstotta)    { check_apps($ofs, $ttaenc);      pac_convert("ofs",  "tta",  "ofstotta",    "1");   }
elsif (defined $ofstopac)    { check_apps($ofs, $lpac);        pac_convert("ofs",  "pac",  "ofstopac",    "1");   }
elsif (defined $ofstolpac)   { check_apps($ofs, $lpac);        pac_convert("ofs",  "lpac", "ofstopac",    "1");   }
elsif (defined $ofstokxs)    { check_apps($ofs, $kexis);       pac_convert("ofs",  "kxs",  "ofstokxs",    "1");   }
elsif (defined $ofstoaiff)   { check_apps($ofs, $sox);         pac_convert("ofs",  "aiff", "ofstoaiff",   "1");   }
elsif (defined $ofstoau)     { check_apps($ofs, $sox);         pac_convert("ofs",  "au",   "ofstoaiff",   "1");   }
elsif (defined $ofstosnd)    { check_apps($ofs, $sox);         pac_convert("ofs",  "snd",  "ofstoaiff",   "1");   }
elsif (defined $ofstoraw)    { check_apps($ofs, $sox);         pac_convert("ofs",  "raw",  "ofstoaiff",   "1");   }
elsif (defined $ofstovoc)    { check_apps($ofs, $sox);         pac_convert("ofs",  "voc",  "ofstoaiff",   "1");   }
elsif (defined $ofstosmp)    { check_apps($ofs, $sox);         pac_convert("ofs",  "smp",  "ofstoaiff",   "1");   }
elsif (defined $ofstomp2)    { check_apps($ofs, $ffmpeg);      pac_convert("ofs",  "mp2",  "ofstomp2",    "0");   }
elsif (defined $ofstoac3)    { check_apps($ofs, $ffmpeg);      pac_convert("ofs",  "ac3",  "ofstomp2",    "0");   }
elsif (defined $ofstola)     { check_apps($ofs, $la);          pac_convert("ofs",  "la",   "ofstola",     "1");   }
elsif (defined $ofstobonk)   { check_apps($ofs, $bonk);        pac_convert("ofs",  "bonk", "ofstobonk",   "1");   }
elsif (defined $ofstowav)    { check_apps($ofs);               pac_convert("ofs",  "wav",  "ofstowav",    "0");   }
elsif (defined $ofstora)     { check_apps($ofs, $ffmpeg);      pac_convert("ofs",  "ra",   "ofstomp2",    "0");   }


# TTA
elsif (defined $ttatomp3)    { check_apps($ttaenc, $lame);     pac_convert("tta",  "mp3",  "ttatomp3",    "1");   }
elsif (defined $ttatoogg)    { check_apps($ttaenc, $oggenc);   pac_convert("tta",  "ogg",  "ttatoogg",    "1");   }
elsif (defined $ttatoflac)   { check_apps($ttaenc, $flac);     pac_convert("tta",  "flac", "ttatoflac",   "1");   }
elsif (defined $ttatofla)    { check_apps($ttaenc, $flac);     pac_convert("tta",  "fla",  "ttatoflac",   "1");   }
elsif (defined $ttatoape)    { check_apps($ttaenc, $mac);      pac_convert("tta",  "ape",  "ttatoape",    "1");   }
elsif (defined $ttatoshn)    { check_apps($ttaenc, $shorten);  pac_convert("tta",  "shn",  "ttatoshn",    "1");   }
elsif (defined $ttatoaac)    { check_apps($ttaenc, $faac);     pac_convert("tta",  "aac",  "ttatoaac",    "1");   }
elsif (defined $ttatom4a)    { check_apps($ttaenc, $faac);     pac_convert("tta",  "m4a",  "ttatomp4",    "1");   }
elsif (defined $ttatomp4)    { check_apps($ttaenc, $faac);     pac_convert("tta",  "mp4",  "ttatomp4",    "1");   }
elsif (defined $ttatompc)    { check_apps($ttaenc, $mppenc);   pac_convert("tta",  "mpc",  "ttatompc",    "1");   }
elsif (defined $ttatompp)    { check_apps($ttaenc, $mppenc);   pac_convert("tta",  "mpp",  "ttatompc",    "1");   }
elsif (defined $ttatowv)     { check_apps($ttaenc, $wavpack);  pac_convert("tta",  "wv",   "ttatowv",     "1");   }
elsif (defined $ttatoofr)    { check_apps($ttaenc, $ofr);      pac_convert("tta",  "ofr",  "ttatoofr",    "1");   }
elsif (defined $ttatoofs)    { check_apps($ttaenc, $ofs);      pac_convert("tta",  "ofs",  "ttatoofs",    "1");   }
elsif (defined $ttatotta)    { check_apps($ttaenc);            pac_convert("tta",  "tta",  "ttatotta",    "1");   }
elsif (defined $ttatopac)    { check_apps($ttaenc, $lpac);     pac_convert("tta",  "pac",  "ttatopac",    "1");   }
elsif (defined $ttatolpac)   { check_apps($ttaenc, $lpac);     pac_convert("tta",  "lpac", "ttatopac",    "1");   }
elsif (defined $ttatokxs)    { check_apps($ttaenc, $kexis);    pac_convert("tta",  "kxs",  "ttatokxs",    "1");   }
elsif (defined $ttatoaiff)   { check_apps($ttaenc, $sox);      pac_convert("tta",  "aiff", "ttatoaiff",   "1");   }
elsif (defined $ttatoau)     { check_apps($ttaenc, $sox);      pac_convert("tta",  "au",   "ttatoaiff",   "1");   }
elsif (defined $ttatosnd)    { check_apps($ttaenc, $sox);      pac_convert("tta",  "snd",  "ttatoaiff",   "1");   }
elsif (defined $ttatoraw)    { check_apps($ttaenc, $sox);      pac_convert("tta",  "raw",  "ttatoaiff",   "1");   }
elsif (defined $ttatovoc)    { check_apps($ttaenc, $sox);      pac_convert("tta",  "voc",  "ttatoaiff",   "1");   }
elsif (defined $ttatosmp)    { check_apps($ttaenc, $sox);      pac_convert("tta",  "smp",  "ttatoaiff",   "1");   }
elsif (defined $ttatomp2)    { check_apps($ttaenc, $ffmpeg);   pac_convert("tta",  "mp2",  "ttatomp2",    "1");   }
elsif (defined $ttatoac3)    { check_apps($ttaenc, $ffmpeg);   pac_convert("tta",  "ac3",  "ttatomp2",    "1");   }
elsif (defined $ttatola)     { check_apps($ttaenc, $la);       pac_convert("tta",  "la",   "ttatola",     "1");   }
elsif (defined $ttatobonk)   { check_apps($ttaenc, $bonk);     pac_convert("tta",  "bonk", "ttatobonk",   "1");   }
elsif (defined $ttatowav)    { check_apps($ttaenc);            pac_convert("tta",  "wav",  "ttatowav",    "0");   }
elsif (defined $ttatora)     { check_apps($ttaenc, $ffmpeg);   pac_convert("tta",  "ra",   "ttatomp2",    "1");   }
 
 
# LPAC (PAC)
elsif (defined $pactomp3)    { check_apps($lpac, $lame);       pac_convert("pac",  "mp3",  "pactomp3",    "0");   }
elsif (defined $pactoogg)    { check_apps($lpac, $oggenc);     pac_convert("pac",  "ogg",  "pactoogg",    "0");   }
elsif (defined $pactoflac)   { check_apps($lpac, $flac);       pac_convert("pac",  "flac", "pactoflac",   "0");   }
elsif (defined $pactofla)    { check_apps($lpac, $flac);       pac_convert("pac",  "fla",  "pactoflac",   "0");   }
elsif (defined $pactoape)    { check_apps($lpac, $mac);        pac_convert("pac",  "ape",  "pactoape",    "1");   }
elsif (defined $pactoshn)    { check_apps($lpac, $shorten);    pac_convert("pac",  "shn",  "pactoshn",    "0");   }
elsif (defined $pactoaac)    { check_apps($lpac, $faac);       pac_convert("pac",  "aac",  "pactoaac",    "0");   }
elsif (defined $pactom4a)    { check_apps($lpac, $faac);       pac_convert("pac",  "m4a",  "pactomp4",    "0");   }
elsif (defined $pactomp4)    { check_apps($lpac, $faac);       pac_convert("pac",  "mp4",  "pactomp4",    "0");   }
elsif (defined $pactompc)    { check_apps($lpac, $mppenc);     pac_convert("pac",  "mpc",  "pactompc",    "0");   }
elsif (defined $pactompp)    { check_apps($lpac, $mppenc);     pac_convert("pac",  "mpp",  "pactompc",    "0");   }
elsif (defined $pactowv)     { check_apps($lpac, $wavpack);    pac_convert("pac",  "wv",   "pactowv",     "0");   }
elsif (defined $pactoofr)    { check_apps($lpac, $ofr);        pac_convert("pac",  "ofr",  "pactoofr",    "1");   }
elsif (defined $pactoofs)    { check_apps($lpac, $ofs);        pac_convert("pac",  "ofs",  "pactoofs",    "1");   }
elsif (defined $pactotta)    { check_apps($lpac, $ttaenc);     pac_convert("pac",  "tta",  "pactotta",    "1");   }
elsif (defined $pactopac)    { check_apps($lpac);              pac_convert("pac",  "pac",  "pactopac",    "1");   }
elsif (defined $pactolpac)   { check_apps($lpac);              pac_convert("pac",  "lpac", "pactopac",    "1");   }
elsif (defined $pactokxs)    { check_apps($lpac, $kexis);      pac_convert("pac",  "kxs",  "pactokxs",    "1");   }
elsif (defined $pactoaiff)   { check_apps($lpac, $sox);        pac_convert("pac",  "aiff", "pactoaiff",   "1");   }
elsif (defined $pactoau)     { check_apps($lpac, $sox);        pac_convert("pac",  "au",   "pactoaiff",   "1");   }
elsif (defined $pactosnd)    { check_apps($lpac, $sox);        pac_convert("pac",  "snd",  "pactoaiff",   "1");   }
elsif (defined $pactoraw)    { check_apps($lpac, $sox);        pac_convert("pac",  "raw",  "pactoaiff",   "1");   }
elsif (defined $pactovoc)    { check_apps($lpac, $sox);        pac_convert("pac",  "voc",  "pactoaiff",   "1");   }
elsif (defined $pactosmp)    { check_apps($lpac, $sox);        pac_convert("pac",  "smp",  "pactoaiff",   "1");   }
elsif (defined $pactomp2)    { check_apps($lpac, $ffmpeg);     pac_convert("pac",  "mp2",  "pactomp2",    "0");   }
elsif (defined $pactoac3)    { check_apps($lpac, $ffmpeg);     pac_convert("pac",  "ac3",  "pactomp2",    "0");   }
elsif (defined $pactola)     { check_apps($lpac, $la);         pac_convert("pac",  "la",   "pactola",     "1");   }
elsif (defined $pactobonk)   { check_apps($lpac, $bonk);       pac_convert("pac",  "bonk", "pactobonk",   "1");   }
elsif (defined $pactowav)    { check_apps($lpac);              pac_convert("pac",  "wav",  "pactowav",    "0");   }
elsif (defined $pactora)     { check_apps($lpac, $ffmpeg);     pac_convert("pac",  "ra",   "pactomp2",    "0");   }


# LPAC 
elsif (defined $lpactomp3)    { check_apps($lpac, $lame);      pac_convert("lpac", "mp3",  "pactomp3",    "0");   }
elsif (defined $lpactoogg)    { check_apps($lpac, $oggenc);    pac_convert("lpac", "ogg",  "pactoogg",    "0");   }
elsif (defined $lpactoflac)   { check_apps($lpac, $flac);      pac_convert("lpac", "flac", "pactoflac",   "0");   }
elsif (defined $lpactofla)    { check_apps($lpac, $flac);      pac_convert("lpac", "fla",  "pactoflac",   "0");   }
elsif (defined $lpactoape)    { check_apps($lpac, $mac);       pac_convert("lpac", "ape",  "pactoape",    "1");   }
elsif (defined $lpactoshn)    { check_apps($lpac, $shorten);   pac_convert("lpac", "shn",  "pactoshn",    "0");   }
elsif (defined $lpactoaac)    { check_apps($lpac, $faac);      pac_convert("lpac", "aac",  "pactoaac",    "0");   }
elsif (defined $lpactom4a)    { check_apps($lpac, $faac);      pac_convert("lpac", "m4a",  "pactomp4",    "0");   }
elsif (defined $lpactomp4)    { check_apps($lpac, $faac);      pac_convert("lpac", "mp4",  "pactomp4",    "0");   }
elsif (defined $lpactompc)    { check_apps($lpac, $mppenc);    pac_convert("lpac", "mpc",  "pactompc",    "0");   }
elsif (defined $lpactompp)    { check_apps($lpac, $mppenc);    pac_convert("lpac", "mpp",  "pactompc",    "0");   }
elsif (defined $lpactowv)     { check_apps($lpac, $wavpack);   pac_convert("lpac", "wv",   "pactowv",     "0");   }
elsif (defined $lpactoofr)    { check_apps($lpac, $ofr);       pac_convert("lpac", "ofr",  "pactoofr",    "1");   }
elsif (defined $lpactoofs)    { check_apps($lpac, $ofs);       pac_convert("lpac", "ofs",  "pactoofs",    "1");   }
elsif (defined $lpactotta)    { check_apps($lpac, $ttaenc);    pac_convert("lpac", "tta",  "pactotta",    "1");   }
elsif (defined $lpactopac)    { check_apps($lpac);             pac_convert("lpac", "pac",  "pactopac",    "1");   }
elsif (defined $lpactolpac)   { check_apps($lpac);             pac_convert("lpac", "lpac", "pactopac",    "1");   }
elsif (defined $lpactokxs)    { check_apps($lpac, $kexis);     pac_convert("lpac", "kxs",  "pactokxs",    "1");   }
elsif (defined $lpactoaiff)   { check_apps($lpac, $sox);       pac_convert("lpac", "aiff", "pactoaiff",   "1");   }
elsif (defined $lpactoau)     { check_apps($lpac, $sox);       pac_convert("lpac", "au",   "pactoaiff",   "1");   }
elsif (defined $lpactosnd)    { check_apps($lpac, $sox);       pac_convert("lpac", "snd",  "pactoaiff",   "1");   }
elsif (defined $lpactoraw)    { check_apps($lpac, $sox);       pac_convert("lpac", "raw",  "pactoaiff",   "1");   }
elsif (defined $lpactovoc)    { check_apps($lpac, $sox);       pac_convert("lpac", "voc",  "pactoaiff",   "1");   }
elsif (defined $lpactosmp)    { check_apps($lpac, $sox);       pac_convert("lpac", "smp",  "pactoaiff",   "1");   }
elsif (defined $lpactomp2)    { check_apps($lpac, $ffmpeg);    pac_convert("lpac", "mp2",  "pactomp2",    "0");   }
elsif (defined $lpactoac3)    { check_apps($lpac, $ffmpeg);    pac_convert("lpac", "ac3",  "pactomp2",    "0");   }
elsif (defined $lpactola)     { check_apps($lpac, $la);        pac_convert("lpac", "la",   "pactola",     "1");   }
elsif (defined $lpactobonk)   { check_apps($lpac, $bonk);      pac_convert("lpac", "bonk", "pactobonk",   "1");   }
elsif (defined $lpactowav)    { check_apps($lpac);             pac_convert("lpac", "wav",  "pactowav",    "0");   }
elsif (defined $lpactora)     { check_apps($lpac, $ffmpeg);    pac_convert("lpac", "ra",   "pactomp2",    "0");   }


# Kexis (KXS)
elsif (defined $kxstomp3)    { check_apps($kexis, $lame);      pac_convert("kxs",  "mp3",  "kxstomp3",    "1");   }
elsif (defined $kxstoogg)    { check_apps($kexis, $oggenc);    pac_convert("kxs",  "ogg",  "kxstoogg",    "1");   }
elsif (defined $kxstoflac)   { check_apps($kexis, $flac);      pac_convert("kxs",  "flac", "kxstoflac",   "1");   }
elsif (defined $kxstofla)    { check_apps($kexis, $flac);      pac_convert("kxs",  "fla",  "kxstoflac",   "1");   }
elsif (defined $kxstoape)    { check_apps($kexis, $mac);       pac_convert("kxs",  "ape",  "kxstoape",    "1");   }
elsif (defined $kxstoshn)    { check_apps($kexis, $shorten);   pac_convert("kxs",  "shn",  "kxstoshn",    "1");   }
elsif (defined $kxstoaac)    { check_apps($kexis, $faac);      pac_convert("kxs",  "aac",  "kxstoaac",    "1");   }
elsif (defined $kxstom4a)    { check_apps($kexis, $faac);      pac_convert("kxs",  "m4a",  "kxstomp4",    "1");   }
elsif (defined $kxstomp4)    { check_apps($kexis, $faac);      pac_convert("kxs",  "mp4",  "kxstomp4",    "1");   }
elsif (defined $kxstompc)    { check_apps($kexis, $mppenc);    pac_convert("kxs",  "mpc",  "kxstompc",    "1");   }
elsif (defined $kxstompp)    { check_apps($kexis, $mppenc);    pac_convert("kxs",  "mpp",  "kxstompc",    "1");   }
elsif (defined $kxstowv)     { check_apps($kexis, $wavpack);   pac_convert("kxs",  "wv",   "kxstowv",     "1");   }
elsif (defined $kxstoofr)    { check_apps($kexis, $ofr);       pac_convert("kxs",  "ofr",  "kxstoofr",    "1");   }
elsif (defined $kxstoofs)    { check_apps($kexis, $ofs);       pac_convert("kxs",  "ofs",  "kxstoofs",    "1");   }
elsif (defined $kxstotta)    { check_apps($kexis, $ttaenc);    pac_convert("kxs",  "tta",  "kxstotta",    "1");   }
elsif (defined $kxstopac)    { check_apps($kexis, $lpac);      pac_convert("kxs",  "pac",  "kxstopac",    "1");   }
elsif (defined $kxstolpac)   { check_apps($kexis, $lpac);      pac_convert("kxs",  "lpac", "kxstopac",    "1");   }
elsif (defined $kxstokxs)    { check_apps($kexis);             pac_convert("kxs",  "kxs",  "kxstokxs",    "1");   }
elsif (defined $kxstoaiff)   { check_apps($kexis, $sox);       pac_convert("kxs",  "aiff", "kxstoaiff",   "1");   }
elsif (defined $kxstoau)     { check_apps($kexis, $sox);       pac_convert("kxs",  "au",   "kxstoaiff",   "1");   }
elsif (defined $kxstosnd)    { check_apps($kexis, $sox);       pac_convert("kxs",  "snd",  "kxstoaiff",   "1");   }
elsif (defined $kxstoraw)    { check_apps($kexis, $sox);       pac_convert("kxs",  "raw",  "kxstoaiff",   "1");   }
elsif (defined $kxstovoc)    { check_apps($kexis, $sox);       pac_convert("kxs",  "voc",  "kxstoaiff",   "1");   }
elsif (defined $kxstosmp)    { check_apps($kexis, $sox);       pac_convert("kxs",  "smp",  "kxstoaiff",   "1");   }
elsif (defined $kxstomp2)    { check_apps($kexis, $ffmpeg);    pac_convert("kxs",  "mp2",  "kxstomp2",    "1");   }
elsif (defined $kxstoac3)    { check_apps($kexis, $ffmpeg);    pac_convert("kxs",  "ac3",  "kxstomp2",    "1");   }
elsif (defined $kxstola)     { check_apps($kexis, $la);        pac_convert("kxs",  "la",   "kxstola",     "1");   }
elsif (defined $kxstobonk)   { check_apps($kexis, $bonk);      pac_convert("kxs",  "bonk", "kxstobonk",   "1");   }
elsif (defined $kxstowav)    { check_apps($kexis);             pac_convert("kxs",  "wav",  "kxstowav",    "0");   }
elsif (defined $kxstora)     { check_apps($kexis, $ffmpeg);    pac_convert("kxs",  "ra",   "kxstomp2",    "1");   }


# AIFF
elsif (defined $aifftomp3)   { check_apps($sox, $lame);        pac_convert("aiff", "mp3",  "aifftomp3",   "1");   }
elsif (defined $aifftoogg)   { check_apps($sox, $oggenc);      pac_convert("aiff", "ogg",  "aifftoogg",   "1");   }
elsif (defined $aifftoflac)  { check_apps($sox, $flac);        pac_convert("aiff", "flac", "aifftoflac",  "1");   }
elsif (defined $aifftofla)   { check_apps($sox, $flac);        pac_convert("aiff", "fla",  "aifftofla",   "1");   }
elsif (defined $aifftoape)   { check_apps($sox, $mac);         pac_convert("aiff", "ape",  "aifftoape",   "1");   }
elsif (defined $aifftoshn)   { check_apps($sox, $shorten);     pac_convert("aiff", "shn",  "aifftoshn",   "1");   }
elsif (defined $aifftoaac)   { check_apps($sox, $faac);        pac_convert("aiff", "aac",  "aifftoaac",   "1");   }
elsif (defined $aifftom4a)   { check_apps($sox, $faac);        pac_convert("aiff", "m4a",  "aifftomp4",   "1");   }
elsif (defined $aifftomp4)   { check_apps($sox, $faac);        pac_convert("aiff", "mp4",  "aifftomp4",   "1");   }
elsif (defined $aifftompc)   { check_apps($sox, $mppenc);      pac_convert("aiff", "mpc",  "aifftompc",   "1");   }
elsif (defined $aifftompp)   { check_apps($sox, $mppenc);      pac_convert("aiff", "mpp",  "aifftompc",   "1");   }
elsif (defined $aifftowv)    { check_apps($sox, $wavpack);     pac_convert("aiff", "wv",   "aifftowv",    "1");   }
elsif (defined $aifftoofr)   { check_apps($sox, $ofr);         pac_convert("aiff", "ofr",  "aifftoofr",   "1");   }
elsif (defined $aifftoofs)   { check_apps($sox, $ofs);         pac_convert("aiff", "ofs",  "aifftoofs",   "1");   }
elsif (defined $aifftotta)   { check_apps($sox, $ttaenc);      pac_convert("aiff", "tta",  "aifftotta",   "1");   }
elsif (defined $aifftopac)   { check_apps($sox, $lpac);        pac_convert("aiff", "pac",  "aifftopac",   "1");   }
elsif (defined $aifftolpac)  { check_apps($sox, $lpac);        pac_convert("aiff", "lpac", "aifftopac",   "1");   }
elsif (defined $aifftokxs)   { check_apps($sox, $kexis);       pac_convert("aiff", "kxs",  "aifftokxs",   "1");   }
elsif (defined $aifftoaiff)  { check_apps($sox);               pac_convert("aiff", "aiff", "aifftoaiff",  "1");   }
elsif (defined $aifftoau)    { check_apps($sox);               pac_convert("aiff", "au",   "aifftoaiff",  "1");   }
elsif (defined $aifftosnd)   { check_apps($sox);               pac_convert("aiff", "snd",  "aifftoaiff",  "1");   }
elsif (defined $aifftoraw)   { check_apps($sox);               pac_convert("aiff", "raw",  "aifftoaiff",  "1");   }
elsif (defined $aifftovoc)   { check_apps($sox);               pac_convert("aiff", "voc",  "aifftoaiff",  "1");   }
elsif (defined $aifftosmp)   { check_apps($sox);               pac_convert("aiff", "smp",  "aifftoaiff",  "1");   }
elsif (defined $aifftomp2)   { check_apps($sox, $ffmpeg);      pac_convert("aiff", "mp2",  "aifftomp2",   "1");   }
elsif (defined $aifftoac3)   { check_apps($sox, $ffmpeg);      pac_convert("aiff", "ac3",  "aifftomp2",   "1");   }
elsif (defined $aifftola)    { check_apps($sox, $la);          pac_convert("aiff", "la",   "aifftola",    "1");   }
elsif (defined $aifftobonk)  { check_apps($sox, $bonk);        pac_convert("aiff", "bonk", "aifftobonk",  "1");   }
elsif (defined $aifftowav)   { check_apps($sox);               pac_convert("aiff", "wav",  "aifftowav",   "0");   }
elsif (defined $aifftora)    { check_apps($sox, $ffmpeg);      pac_convert("aiff", "ra",   "aifftomp2",   "1");   }


# AU 
elsif (defined $automp3)     { check_apps($sox, $lame);        pac_convert("au",   "mp3",  "aifftomp3",   "1");   }
elsif (defined $autoogg)     { check_apps($sox, $oggenc);      pac_convert("au",   "ogg",  "aifftoogg",   "1");   }
elsif (defined $autoflac)    { check_apps($sox, $flac);        pac_convert("au",   "flac", "aifftoflac",  "1");   }
elsif (defined $autofla)     { check_apps($sox, $flac);        pac_convert("au",   "fla",  "aifftoflac",  "1");   }
elsif (defined $autoape)     { check_apps($sox, $mac);         pac_convert("au",   "ape",  "aifftoape",   "1");   }
elsif (defined $autoshn)     { check_apps($sox, $shorten);     pac_convert("au",   "shn",  "aifftoshn",   "1");   }
elsif (defined $autoaac)     { check_apps($sox, $faac);        pac_convert("au",   "aac",  "aifftoaac",   "1");   }
elsif (defined $autom4a)     { check_apps($sox, $faac);        pac_convert("au",   "m4a",  "aifftomp4",   "1");   }
elsif (defined $automp4)     { check_apps($sox, $faac);        pac_convert("au",   "mp4",  "aifftomp4",   "1");   }
elsif (defined $autompc)     { check_apps($sox, $mppenc);      pac_convert("au",   "mpc",  "aifftompc",   "1");   }
elsif (defined $autompp)     { check_apps($sox, $mppenc);      pac_convert("au",   "mpp",  "aifftompc",   "1");   }
elsif (defined $autowv)      { check_apps($sox, $wavpack);     pac_convert("au",   "wv",   "aifftowv",    "1");   }
elsif (defined $autoofr)     { check_apps($sox, $ofr);         pac_convert("au",   "ofr",  "aifftoofr",   "1");   }
elsif (defined $autoofs)     { check_apps($sox, $ofs);         pac_convert("au",   "ofs",  "aifftoofs",   "1");   }
elsif (defined $autotta)     { check_apps($sox, $ttaenc);      pac_convert("au",   "tta",  "aifftotta",   "1");   }
elsif (defined $autopac)     { check_apps($sox, $lpac);        pac_convert("au",   "pac",  "aifftopac",   "1");   }
elsif (defined $autolpac)    { check_apps($sox, $lpac);        pac_convert("au",   "lpac", "aifftopac",   "1");   }
elsif (defined $autokxs)     { check_apps($sox, $kexis);       pac_convert("au",   "kxs",  "aifftokxs",   "1");   }
elsif (defined $autoaiff)    { check_apps($sox);               pac_convert("au",   "aiff", "aifftoaiff",  "1");   }
elsif (defined $autoau)      { check_apps($sox);               pac_convert("au",   "au",   "aifftoaiff",  "1");   }
elsif (defined $autosnd)     { check_apps($sox);               pac_convert("au",   "snd",  "aifftoaiff",  "1");   }
elsif (defined $autoraw)     { check_apps($sox);               pac_convert("au",   "raw",  "aifftoaiff",  "1");   }
elsif (defined $autovoc)     { check_apps($sox);               pac_convert("au",   "voc",  "aifftoaiff",  "1");   }
elsif (defined $autosmp)     { check_apps($sox);               pac_convert("au",   "smp",  "aifftoaiff",  "1");   }
elsif (defined $automp2)     { check_apps($sox, $ffmpeg);      pac_convert("au",   "mp2",  "aifftomp2",   "1");   }
elsif (defined $autoac3)     { check_apps($sox, $ffmpeg);      pac_convert("au",   "ac3",  "aifftomp2",   "1");   }
elsif (defined $autola)      { check_apps($sox, $la);          pac_convert("au",   "la",   "aifftola",    "1");   }
elsif (defined $autobonk)    { check_apps($sox, $bonk);        pac_convert("au",   "bonk", "aifftobonk",  "1");   }
elsif (defined $autowav)     { check_apps($sox);               pac_convert("au",   "wav",  "aifftowav",   "0");   }
elsif (defined $autora)      { check_apps($sox, $ffmpeg);      pac_convert("au",   "ra",   "aifftomp2",   "1");   }


# SND 
elsif (defined $sndtomp3)    { check_apps($sox, $lame);        pac_convert("snd",  "mp3",  "aifftomp3",   "1");   }
elsif (defined $sndtoogg)    { check_apps($sox, $oggenc);      pac_convert("snd",  "ogg",  "aifftoogg",   "1");   }
elsif (defined $sndtoflac)   { check_apps($sox, $flac);        pac_convert("snd",  "flac", "aifftoflac",  "1");   }
elsif (defined $sndtofla)    { check_apps($sox, $flac);        pac_convert("snd",  "fla",  "aifftoflac",  "1");   }
elsif (defined $sndtoape)    { check_apps($sox, $mac);         pac_convert("snd",  "ape",  "aifftoape",   "1");   }
elsif (defined $sndtoshn)    { check_apps($sox, $shorten);     pac_convert("snd",  "shn",  "aifftoshn",   "1");   }
elsif (defined $sndtoaac)    { check_apps($sox, $faac);        pac_convert("snd",  "aac",  "aifftoaac",   "1");   }
elsif (defined $sndtom4a)    { check_apps($sox, $faac);        pac_convert("snd",  "m4a",  "aifftomp4",   "1");   }
elsif (defined $sndtomp4)    { check_apps($sox, $faac);        pac_convert("snd",  "mp4",  "aifftomp4",   "1");   }
elsif (defined $sndtompc)    { check_apps($sox, $mppenc);      pac_convert("snd",  "mpc",  "aifftompc",   "1");   }
elsif (defined $sndtompp)    { check_apps($sox, $mppenc);      pac_convert("snd",  "mpp",  "aifftompc",   "1");   }
elsif (defined $sndtowv)     { check_apps($sox, $wavpack);     pac_convert("snd",  "wv",   "aifftowv",    "1");   }
elsif (defined $sndtoofr)    { check_apps($sox, $ofr);         pac_convert("snd",  "ofr",  "aifftoofr",   "1");   }
elsif (defined $sndtoofs)    { check_apps($sox, $ofs);         pac_convert("snd",  "ofs",  "aifftoofs",   "1");   }
elsif (defined $sndtotta)    { check_apps($sox, $ttaenc);      pac_convert("snd",  "tta",  "aifftotta",   "1");   }
elsif (defined $sndtopac)    { check_apps($sox, $lpac);        pac_convert("snd",  "pac",  "aifftopac",   "1");   }
elsif (defined $sndtolpac)   { check_apps($sox, $lpac);        pac_convert("snd",  "lpac", "aifftopac",   "1");   }
elsif (defined $sndtokxs)    { check_apps($sox, $kexis);       pac_convert("snd",  "kxs",  "aifftokxs",   "1");   }
elsif (defined $sndtoaiff)   { check_apps($sox);               pac_convert("snd",  "aiff", "aifftoaiff",  "1");   }
elsif (defined $sndtoau)     { check_apps($sox);               pac_convert("snd",  "au",   "aifftoaiff",  "1");   }
elsif (defined $sndtosnd)    { check_apps($sox);               pac_convert("snd",  "snd",  "aifftoaiff",  "1");   }
elsif (defined $sndtoraw)    { check_apps($sox);               pac_convert("snd",  "raw",  "aifftoaiff",  "1");   }
elsif (defined $sndtovoc)    { check_apps($sox);               pac_convert("snd",  "voc",  "aifftoaiff",  "1");   }
elsif (defined $sndtosmp)    { check_apps($sox);               pac_convert("snd",  "smp",  "aifftoaiff",  "1");   }
elsif (defined $sndtomp2)    { check_apps($sox, $ffmpeg);      pac_convert("snd",  "mp2",  "aifftomp2",   "1");   }
elsif (defined $sndtoac3)    { check_apps($sox, $ffmpeg);      pac_convert("snd",  "ac3",  "aifftomp2",   "1");   }
elsif (defined $sndtola)     { check_apps($sox, $la);          pac_convert("snd",  "la",   "aifftola",    "1");   }
elsif (defined $sndtobonk)   { check_apps($sox, $bonk);        pac_convert("snd",  "bonk", "aifftobonk",  "1");   }
elsif (defined $sndtowav)    { check_apps($sox);               pac_convert("snd",  "wav",  "aifftowav",   "0");   }
elsif (defined $sndtora)     { check_apps($sox, $ffmpeg);      pac_convert("snd",  "ra",   "aifftomp2",   "1");   }
                                                         

# RAW 
elsif (defined $rawtomp3)    { check_apps($sox, $lame);        pac_convert("raw",  "mp3",  "rawtomp3",    "1");   }
elsif (defined $rawtoogg)    { check_apps($sox, $oggenc);      pac_convert("raw",  "ogg",  "rawtoogg",    "1");   }
elsif (defined $rawtoflac)   { check_apps($sox, $flac);        pac_convert("raw",  "flac", "rawtoflac",   "1");   }
elsif (defined $rawtofla)    { check_apps($sox, $flac);        pac_convert("raw",  "fla",  "rawtoflac",   "1");   }
elsif (defined $rawtoape)    { check_apps($sox, $mac);         pac_convert("raw",  "ape",  "rawtoape",    "1");   }
elsif (defined $rawtoshn)    { check_apps($sox, $shorten);     pac_convert("raw",  "shn",  "rawtoshn",    "1");   }
elsif (defined $rawtoaac)    { check_apps($sox, $faac);        pac_convert("raw",  "aac",  "rawtoaac",    "1");   }
elsif (defined $rawtom4a)    { check_apps($sox, $faac);        pac_convert("raw",  "m4a",  "rawtomp4",    "1");   }
elsif (defined $rawtomp4)    { check_apps($sox, $faac);        pac_convert("raw",  "mp4",  "rawtomp4",    "1");   }
elsif (defined $rawtompc)    { check_apps($sox, $mppenc);      pac_convert("raw",  "mpc",  "rawtompc",    "1");   }
elsif (defined $rawtompp)    { check_apps($sox, $mppenc);      pac_convert("raw",  "mpp",  "rawtompc",    "1");   }
elsif (defined $rawtowv)     { check_apps($sox, $wavpack);     pac_convert("raw",  "wv",   "rawtowv",     "1");   }
elsif (defined $rawtoofr)    { check_apps($sox, $ofr);         pac_convert("raw",  "ofr",  "rawtoofr",    "1");   }
elsif (defined $rawtoofs)    { check_apps($sox, $ofs);         pac_convert("raw",  "ofs",  "rawtoofs",    "1");   }
elsif (defined $rawtotta)    { check_apps($sox, $ttaenc);      pac_convert("raw",  "tta",  "rawtotta",    "1");   }
elsif (defined $rawtopac)    { check_apps($sox, $lpac);        pac_convert("raw",  "pac",  "rawtopac",    "1");   }
elsif (defined $rawtolpac)   { check_apps($sox, $lpac);        pac_convert("raw",  "lpac", "rawtopac",    "1");   }
elsif (defined $rawtokxs)    { check_apps($sox, $kexis);       pac_convert("raw",  "kxs",  "rawtokxs",    "1");   }
elsif (defined $rawtoaiff)   { check_apps($sox);               pac_convert("raw",  "aiff", "rawtoaiff",   "1");   }
elsif (defined $rawtoau)     { check_apps($sox);               pac_convert("raw",  "au",   "rawtoaiff",   "1");   }
elsif (defined $rawtosnd)    { check_apps($sox);               pac_convert("raw",  "snd",  "rawtoaiff",   "1");   }
elsif (defined $rawtoraw)    { check_apps($sox);               pac_convert("raw",  "raw",  "rawtoraw",    "1");   }
elsif (defined $rawtovoc)    { check_apps($sox);               pac_convert("raw",  "voc",  "rawtoaiff",   "1");   }
elsif (defined $rawtosmp)    { check_apps($sox);               pac_convert("raw",  "smp",  "rawtoaiff",   "1");   }
elsif (defined $rawtomp2)    { check_apps($sox, $ffmpeg);      pac_convert("raw",  "mp2",  "rawtomp2",    "1");   }
elsif (defined $rawtoac3)    { check_apps($sox, $ffmpeg);      pac_convert("raw",  "ac3",  "rawtomp2",    "1");   }
elsif (defined $rawtola)     { check_apps($sox, $la);          pac_convert("raw",  "la",   "rawtola",     "1");   }
elsif (defined $rawtobonk)   { check_apps($sox, $bonk);        pac_convert("raw",  "bonk", "rawtobonk",   "1");   }
elsif (defined $rawtowav)    { check_apps($sox);               pac_convert("raw",  "wav",  "rawtowav",    "0");   } 
elsif (defined $rawtora)     { check_apps($sox, $ffmpeg);      pac_convert("raw",  "ra",   "rawtomp2",    "1");   }


# VOC
elsif (defined $voctomp3)    { check_apps($sox, $lame);        pac_convert("voc",  "mp3",  "aifftomp3",   "1");   }
elsif (defined $voctoogg)    { check_apps($sox, $oggenc);      pac_convert("voc",  "ogg",  "aifftoogg",   "1");   }
elsif (defined $voctoflac)   { check_apps($sox, $flac);        pac_convert("voc",  "flac", "aifftoflac",  "1");   }
elsif (defined $voctofla)    { check_apps($sox, $flac);        pac_convert("voc",  "fla",  "aifftoflac",  "1");   }
elsif (defined $voctoape)    { check_apps($sox, $mac);         pac_convert("voc",  "ape",  "aifftoape",   "1");   }
elsif (defined $voctoshn)    { check_apps($sox, $shorten);     pac_convert("voc",  "shn",  "aifftoshn",   "1");   }
elsif (defined $voctoaac)    { check_apps($sox, $faac);        pac_convert("voc",  "aac",  "aifftoaac",   "1");   }
elsif (defined $voctom4a)    { check_apps($sox, $faac);        pac_convert("voc",  "m4a",  "aifftomp4",   "1");   }
elsif (defined $voctomp4)    { check_apps($sox, $faac);        pac_convert("voc",  "mp4",  "aifftomp4",   "1");   }
elsif (defined $voctompc)    { check_apps($sox, $mppenc);      pac_convert("voc",  "mpc",  "aifftompc",   "1");   }
elsif (defined $voctompp)    { check_apps($sox, $mppenc);      pac_convert("voc",  "mpp",  "aifftompc",   "1");   }
elsif (defined $voctowv)     { check_apps($sox, $wavpack);     pac_convert("voc",  "wv",   "aifftowv",    "1");   }
elsif (defined $voctoofr)    { check_apps($sox, $ofr);         pac_convert("voc",  "ofr",  "aifftoofr",   "1");   }
elsif (defined $voctoofs)    { check_apps($sox, $ofs);         pac_convert("voc",  "ofs",  "aifftoofs",   "1");   }
elsif (defined $voctotta)    { check_apps($sox, $ttaenc);      pac_convert("voc",  "tta",  "aifftotta",   "1");   }
elsif (defined $voctopac)    { check_apps($sox, $lpac);        pac_convert("voc",  "pac",  "aifftopac",   "1");   }
elsif (defined $voctolpac)   { check_apps($sox, $lpac);        pac_convert("voc",  "lpac", "aifftopac",   "1");   }
elsif (defined $voctokxs)    { check_apps($sox, $kexis);       pac_convert("voc",  "kxs",  "aifftokxs",   "1");   }
elsif (defined $voctoaiff)   { check_apps($sox);               pac_convert("voc",  "aiff", "aifftoaiff",  "1");   }
elsif (defined $voctoau)     { check_apps($sox);               pac_convert("voc",  "au",   "aifftoaiff",  "1");   }
elsif (defined $voctosnd)    { check_apps($sox);               pac_convert("voc",  "snd",  "aifftoaiff",  "1");   }
elsif (defined $voctoraw)    { check_apps($sox);               pac_convert("voc",  "raw",  "aifftoaiff",  "1");   }
elsif (defined $voctovoc)    { check_apps($sox);               pac_convert("voc",  "voc",  "aifftoaiff",  "1");   }
elsif (defined $voctosmp)    { check_apps($sox);               pac_convert("voc",  "smp",  "aifftoaiff",  "1");   }
elsif (defined $voctomp2)    { check_apps($sox, $ffmpeg);      pac_convert("voc",  "mp2",  "aifftomp2",   "1");   }
elsif (defined $voctoac3)    { check_apps($sox, $ffmpeg);      pac_convert("voc",  "ac3",  "aifftomp2",   "1");   }
elsif (defined $voctola)     { check_apps($sox, $la);          pac_convert("voc",  "la",   "aifftola",    "1");   }
elsif (defined $voctobonk)   { check_apps($sox, $bonk);        pac_convert("voc",  "bonk", "aifftobonk",  "1");   }
elsif (defined $voctowav)    { check_apps($sox);               pac_convert("voc",  "wav",  "aifftowav",   "0");   }
elsif (defined $voctora)     { check_apps($sox, $ffmpeg);      pac_convert("voc",  "ra",   "aifftomp2",   "1");   }


# SMP
elsif (defined $smptomp3)    { check_apps($sox, $lame);        pac_convert("smp",  "mp3",  "aifftomp3",   "1");   }
elsif (defined $smptoogg)    { check_apps($sox, $oggenc);      pac_convert("smp",  "ogg",  "aifftoogg",   "1");   }
elsif (defined $smptoflac)   { check_apps($sox, $flac);        pac_convert("smp",  "flac", "aifftoflac",  "1");   }
elsif (defined $smptofla)    { check_apps($sox, $flac);        pac_convert("smp",  "fla",  "aifftoflac",  "1");   }
elsif (defined $smptoape)    { check_apps($sox, $mac);         pac_convert("smp",  "ape",  "aifftoape",   "1");   }
elsif (defined $smptoshn)    { check_apps($sox, $shorten);     pac_convert("smp",  "shn",  "aifftoshn",   "1");   }
elsif (defined $smptoaac)    { check_apps($sox, $faac);        pac_convert("smp",  "aac",  "aifftoaac",   "1");   }
elsif (defined $smptom4a)    { check_apps($sox, $faac);        pac_convert("smp",  "m4a",  "aifftomp4",   "1");   }
elsif (defined $smptomp4)    { check_apps($sox, $faac);        pac_convert("smp",  "mp4",  "aifftomp4",   "1");   }
elsif (defined $smptompc)    { check_apps($sox, $mppenc);      pac_convert("smp",  "mpc",  "aifftompc",   "1");   }
elsif (defined $smptompp)    { check_apps($sox, $mppenc);      pac_convert("smp",  "mpp",  "aifftompc",   "1");   }
elsif (defined $smptowv)     { check_apps($sox, $wavpack);     pac_convert("smp",  "wv",   "aifftowv",    "1");   }
elsif (defined $smptoofr)    { check_apps($sox, $ofr);         pac_convert("smp",  "ofr",  "aifftoofr",   "1");   }
elsif (defined $smptoofs)    { check_apps($sox, $ofs);         pac_convert("smp",  "ofs",  "aifftoofs",   "1");   }
elsif (defined $smptotta)    { check_apps($sox, $ttaenc);      pac_convert("smp",  "tta",  "aifftotta",   "1");   }
elsif (defined $smptopac)    { check_apps($sox, $lpac);        pac_convert("smp",  "pac",  "aifftopac",   "1");   }
elsif (defined $smptolpac)   { check_apps($sox, $lpac);        pac_convert("smp",  "lpac", "aifftopac",   "1");   }
elsif (defined $smptokxs)    { check_apps($sox, $kexis);       pac_convert("smp",  "kxs",  "aifftokxs",   "1");   }
elsif (defined $smptoaiff)   { check_apps($sox);               pac_convert("smp",  "aiff", "aifftoaiff",  "1");   }
elsif (defined $smptoau)     { check_apps($sox);               pac_convert("smp",  "au",   "aifftoaiff",  "1");   }
elsif (defined $smptosnd)    { check_apps($sox);               pac_convert("smp",  "snd",  "aifftoaiff",  "1");   }
elsif (defined $smptoraw)    { check_apps($sox);               pac_convert("smp",  "raw",  "aifftoaiff",  "1");   }
elsif (defined $smptovoc)    { check_apps($sox);               pac_convert("smp",  "voc",  "aifftoaiff",  "1");   }
elsif (defined $smptosmp)    { check_apps($sox);               pac_convert("smp",  "smp",  "aifftoaiff",  "1");   }
elsif (defined $smptomp2)    { check_apps($sox, $ffmpeg);      pac_convert("smp",  "mp2",  "aifftomp2",   "1");   }
elsif (defined $smptoac3)    { check_apps($sox, $ffmpeg);      pac_convert("smp",  "ac3",  "aifftomp2",   "1");   }
elsif (defined $smptola)     { check_apps($sox, $la);          pac_convert("smp",  "la",   "aifftola",    "1");   }
elsif (defined $smptobonk)   { check_apps($sox, $bonk);        pac_convert("smp",  "bonk", "aifftobonk",  "1");   }
elsif (defined $smptowav)    { check_apps($sox);               pac_convert("smp",  "wav",  "aifftowav",   "0");   }
elsif (defined $smptora)     { check_apps($sox, $ffmpeg);      pac_convert("smp",  "ra",   "aifftomp2",   "1");   }
 

# MP2
elsif (defined $mp2tomp3)    { check_apps($ffmpeg);            pac_convert("mp2",  "mp3",  "mp2tomp3",    "0");   }
elsif (defined $mp2toogg)    { check_apps($ffmpeg);            pac_convert("mp2",  "ogg",  "mp2toogg",    "0");   }
elsif (defined $mp2toflac)   { check_apps($ffmpeg, $flac);     pac_convert("mp2",  "flac", "mp2toflac",   "1");   }
elsif (defined $mp2tofla)    { check_apps($ffmpeg, $flac);     pac_convert("mp2",  "fla",  "mp2toflac",   "1");   }
elsif (defined $mp2toape)    { check_apps($ffmpeg, $mac);      pac_convert("mp2",  "ape",  "mp2toape",    "1");   }
elsif (defined $mp2toshn)    { check_apps($ffmpeg, $shorten);  pac_convert("mp2",  "shn",  "mp2toshn",    "1");   }
elsif (defined $mp2toaac)    { check_apps($ffmpeg, $faac);     pac_convert("mp2",  "aac",  "mp2toaac",    "1");   }
elsif (defined $mp2tom4a)    { check_apps($ffmpeg, $faac);     pac_convert("mp2",  "m4a",  "mp2tomp4",    "1");   }
elsif (defined $mp2tomp4)    { check_apps($ffmpeg, $faac);     pac_convert("mp2",  "mp4",  "mp2tomp4",    "1");   }
elsif (defined $mp2tompc)    { check_apps($ffmpeg, $mppenc);   pac_convert("mp2",  "mpc",  "mp2tompc",    "1");   }
elsif (defined $mp2tompp)    { check_apps($ffmpeg, $mppenc);   pac_convert("mp2",  "mpp",  "mp2tompc",    "1");   }
elsif (defined $mp2towv)     { check_apps($ffmpeg, $wavpack);  pac_convert("mp2",  "wv",   "mp2towv",     "1");   }
elsif (defined $mp2toofr)    { check_apps($ffmpeg, $ofr);      pac_convert("mp2",  "ofr",  "mp2toofr",    "1");   }
elsif (defined $mp2toofs)    { check_apps($ffmpeg, $ofs);      pac_convert("mp2",  "ofs",  "mp2toofs",    "1");   }
elsif (defined $mp2totta)    { check_apps($ffmpeg, $ttaenc);   pac_convert("mp2",  "tta",  "mp2totta",    "1");   }
elsif (defined $mp2topac)    { check_apps($ffmpeg, $lpac);     pac_convert("mp2",  "pac",  "mp2topac",    "1");   }
elsif (defined $mp2tolpac)   { check_apps($ffmpeg, $lpac);     pac_convert("mp2",  "lpac", "mp2topac",    "1");   }
elsif (defined $mp2tokxs)    { check_apps($ffmpeg, $kexis);    pac_convert("mp2",  "kxs",  "mp2tokxs",    "1");   }
elsif (defined $mp2toaiff)   { check_apps($ffmpeg, $sox);      pac_convert("mp2",  "aiff", "mp2toaiff",   "1");   }
elsif (defined $mp2toau)     { check_apps($ffmpeg, $sox);      pac_convert("mp2",  "au",   "mp2toaiff",   "1");   }
elsif (defined $mp2tosnd)    { check_apps($ffmpeg, $sox);      pac_convert("mp2",  "snd",  "mp2toaiff",   "1");   }
elsif (defined $mp2toraw)    { check_apps($ffmpeg, $sox);      pac_convert("mp2",  "raw",  "mp2toaiff",   "1");   }
elsif (defined $mp2tovoc)    { check_apps($ffmpeg, $sox);      pac_convert("mp2",  "voc",  "mp2toaiff",   "1");   }
elsif (defined $mp2tosmp)    { check_apps($ffmpeg, $sox);      pac_convert("mp2",  "smp",  "mp2toaiff",   "1");   }
elsif (defined $mp2tomp2)    { check_apps($ffmpeg);            pac_convert("mp2",  "mp2",  "mp2tomp2",    "1");   }
elsif (defined $mp2toac3)    { check_apps($ffmpeg);            pac_convert("mp2",  "ac3",  "mp2tomp2",    "1");   }
elsif (defined $mp2tola)     { check_apps($ffmpeg, $la);       pac_convert("mp2",  "la",   "mp2tola",     "1");   }
elsif (defined $mp2tobonk)   { check_apps($ffmpeg, $bonk);     pac_convert("mp2",  "bonk", "mp2tobonk",   "1");   }
elsif (defined $mp2towav)    { check_apps($ffmpeg);            pac_convert("mp2",  "wav",  "mp2towav",    "0");   }
elsif (defined $mp2tora)     { check_apps($ffmpeg);            pac_convert("mp2",  "ra",   "mp2tomp2",    "1");   }
 

# AC3
elsif (defined $ac3tomp3)    { check_apps($ffmpeg);            pac_convert("ac3",  "mp3",  "mp2tomp3",    "0");   }
elsif (defined $ac3toogg)    { check_apps($ffmpeg);            pac_convert("ac3",  "ogg",  "mp2toogg",    "0");   }
elsif (defined $ac3toflac)   { check_apps($ffmpeg, $flac);     pac_convert("ac3",  "flac", "mp2toflac",   "1");   }
elsif (defined $ac3tofla)    { check_apps($ffmpeg, $flac);     pac_convert("ac3",  "fla",  "mp2toflac",   "1");   }
elsif (defined $ac3toape)    { check_apps($ffmpeg, $mac);      pac_convert("ac3",  "ape",  "mp2toape",    "1");   }
elsif (defined $ac3toshn)    { check_apps($ffmpeg, $shorten);  pac_convert("ac3",  "shn",  "mp2toshn",    "1");   }
elsif (defined $ac3toaac)    { check_apps($ffmpeg, $faac);     pac_convert("ac3",  "aac",  "mp2toaac",    "1");   }
elsif (defined $ac3tom4a)    { check_apps($ffmpeg, $faac);     pac_convert("ac3",  "m4a",  "mp2tomp4",    "1");   }
elsif (defined $ac3tomp4)    { check_apps($ffmpeg, $faac);     pac_convert("ac3",  "mp4",  "mp2tomp4",    "1");   }
elsif (defined $ac3tompc)    { check_apps($ffmpeg, $mppenc);   pac_convert("ac3",  "mpc",  "mp2tompc",    "1");   }
elsif (defined $ac3tompp)    { check_apps($ffmpeg, $mppenc);   pac_convert("ac3",  "mpp",  "mp2tompc",    "1");   }
elsif (defined $ac3towv)     { check_apps($ffmpeg, $wavpack);  pac_convert("ac3",  "wv",   "mp2towv",     "1");   }
elsif (defined $ac3toofr)    { check_apps($ffmpeg, $ofr);      pac_convert("ac3",  "ofr",  "mp2toofr",    "1");   }
elsif (defined $ac3toofs)    { check_apps($ffmpeg, $ofs);      pac_convert("ac3",  "ofs",  "mp2toofs",    "1");   }
elsif (defined $ac3totta)    { check_apps($ffmpeg, $ttaenc);   pac_convert("ac3",  "tta",  "mp2totta",    "1");   }
elsif (defined $ac3topac)    { check_apps($ffmpeg, $lpac);     pac_convert("ac3",  "pac",  "mp2topac",    "1");   }
elsif (defined $ac3tolpac)   { check_apps($ffmpeg, $lpac);     pac_convert("ac3",  "lpac", "mp2topac",    "1");   }
elsif (defined $ac3tokxs)    { check_apps($ffmpeg, $kexis);    pac_convert("ac3",  "kxs",  "mp2tokxs",    "1");   }
elsif (defined $ac3toaiff)   { check_apps($ffmpeg, $sox);      pac_convert("ac3",  "aiff", "mp2toaiff",   "1");   }
elsif (defined $ac3toau)     { check_apps($ffmpeg, $sox);      pac_convert("ac3",  "au",   "mp2toaiff",   "1");   }
elsif (defined $ac3tosnd)    { check_apps($ffmpeg, $sox);      pac_convert("ac3",  "snd",  "mp2toaiff",   "1");   }
elsif (defined $ac3toraw)    { check_apps($ffmpeg, $sox);      pac_convert("ac3",  "raw",  "mp2toaiff",   "1");   }
elsif (defined $ac3tovoc)    { check_apps($ffmpeg, $sox);      pac_convert("ac3",  "voc",  "mp2toaiff",   "1");   }
elsif (defined $ac3tosmp)    { check_apps($ffmpeg, $sox);      pac_convert("ac3",  "smp",  "mp2toaiff",   "1");   }
elsif (defined $ac3tomp2)    { check_apps($ffmpeg);            pac_convert("ac3",  "mp2",  "mp2tomp2",    "1");   }
elsif (defined $ac3toac3)    { check_apps($ffmpeg);            pac_convert("ac3",  "ac3",  "mp2tomp2",    "1");   }
elsif (defined $ac3tola)     { check_apps($ffmpeg, $la);       pac_convert("ac3",  "la",   "mp2tola",     "1");   }
elsif (defined $ac3tobonk)   { check_apps($ffmpeg, $bonk);     pac_convert("ac3",  "bonk", "mp2tobonk",   "1");   }
elsif (defined $ac3towav)    { check_apps($ffmpeg);            pac_convert("ac3",  "wav",  "mp2towav",    "1");   }
elsif (defined $ac3tora)     { check_apps($ffmpeg);            pac_convert("ac3",  "ra",   "mp2tomp2",    "1");   }
 

# Lossless Audio (LA)
elsif (defined $latomp3)     { check_apps($la, $lame);         pac_convert("la",   "mp3",  "latomp3",     "0");   }
elsif (defined $latoogg)     { check_apps($la, $oggenc);       pac_convert("la",   "ogg",  "latoogg",     "0");   }
elsif (defined $latoflac)    { check_apps($la, $flac);         pac_convert("la",   "flac", "latoflac",    "0");   }
elsif (defined $latofla)     { check_apps($la, $flac);         pac_convert("la",   "fla",  "latoflac",    "0");   }
elsif (defined $latoape)     { check_apps($la, $mac);          pac_convert("la",   "ape",  "latoape",     "1");   }
elsif (defined $latoshn)     { check_apps($la, $shorten);      pac_convert("la",   "shn",  "latoshn",     "0");   }
elsif (defined $latoaac)     { check_apps($la, $faac);         pac_convert("la",   "aac",  "latoaac",     "0");   }
elsif (defined $latom4a)     { check_apps($la, $faac);         pac_convert("la",   "m4a",  "latomp4",     "0");   }
elsif (defined $latomp4)     { check_apps($la, $faac);         pac_convert("la",   "mp4",  "latomp4",     "0");   }
elsif (defined $latompc)     { check_apps($la, $mppenc);       pac_convert("la",   "mpc",  "latompc",     "0");   }
elsif (defined $latompp)     { check_apps($la, $mppenc);       pac_convert("la",   "mpp",  "latompc",     "0");   }
elsif (defined $latowv)      { check_apps($la, $wavpack);      pac_convert("la",   "wv",   "latowv",      "0");   }
elsif (defined $latoofr)     { check_apps($la, $ofr);          pac_convert("la",   "ofr",  "latoofr",     "1");   }
elsif (defined $latoofs)     { check_apps($la, $ofs);          pac_convert("la",   "ofs",  "latoofs",     "1");   }
elsif (defined $latotta)     { check_apps($la, $ttaenc);       pac_convert("la",   "tta",  "latotta",     "1");   }
elsif (defined $latopac)     { check_apps($la, $lpac);         pac_convert("la",   "pac",  "latopac",     "1");   }
elsif (defined $latolpac)    { check_apps($la, $lpac);         pac_convert("la",   "lpac", "latopac",     "1");   }
elsif (defined $latokxs)     { check_apps($la, $kexis);        pac_convert("la",   "kxs",  "latokxs",     "1");   }
elsif (defined $latoaiff)    { check_apps($la, $sox);          pac_convert("la",   "aiff", "latoaiff",    "1");   }
elsif (defined $latoau)      { check_apps($la, $sox);          pac_convert("la",   "au",   "latoaiff",    "1");   }
elsif (defined $latosnd)     { check_apps($la, $sox);          pac_convert("la",   "snd",  "latoaiff",    "1");   }
elsif (defined $latoraw)     { check_apps($la, $sox);          pac_convert("la",   "raw",  "latoaiff",    "1");   }
elsif (defined $latovoc)     { check_apps($la, $sox);          pac_convert("la",   "voc",  "latoaiff",    "1");   }
elsif (defined $latosmp)     { check_apps($la, $sox);          pac_convert("la",   "smp",  "latoaiff",    "1");   }
elsif (defined $latomp2)     { check_apps($la, $ffmpeg);       pac_convert("la",   "mp2",  "latomp2",     "0");   }
elsif (defined $latoac3)     { check_apps($la, $ffmpeg);       pac_convert("la",   "ac3",  "latomp2",     "0");   }
elsif (defined $latola)      { check_apps($la);                pac_convert("la",   "la",   "latola",      "1");   }
elsif (defined $latobonk)    { check_apps($la, $bonk);         pac_convert("la",   "bonk", "latobonk",    "1");   }
elsif (defined $latowav)     { check_apps($la);                pac_convert("la",   "wav",  "latowav",     "0");   }
elsif (defined $latora)      { check_apps($la, $ffmpeg);       pac_convert("la",   "ra",   "latomp2",     "0");   }
 

# BONK
elsif (defined $bonktomp3)   { check_apps($bonk, $lame);       pac_convert("bonk", "mp3",  "bonktomp3",   "1");   }
elsif (defined $bonktoogg)   { check_apps($bonk, $oggenc);     pac_convert("bonk", "ogg",  "bonktoogg",   "1");   }
elsif (defined $bonktoflac)  { check_apps($bonk, $flac);       pac_convert("bonk", "flac", "bonktoflac",  "1");   }
elsif (defined $bonktofla)   { check_apps($bonk, $flac);       pac_convert("bonk", "fla",  "bonktoflac",  "1");   }
elsif (defined $bonktoape)   { check_apps($bonk, $mac);        pac_convert("bonk", "ape",  "bonktoape",   "1");   }
elsif (defined $bonktoshn)   { check_apps($bonk, $shorten);    pac_convert("bonk", "shn",  "bonktoshn",   "1");   }
elsif (defined $bonktoaac)   { check_apps($bonk, $faac);       pac_convert("bonk", "aac",  "bonktoaac",   "1");   }
elsif (defined $bonktom4a)   { check_apps($bonk, $faac);       pac_convert("bonk", "m4a",  "bonktomp4",   "1");   }
elsif (defined $bonktomp4)   { check_apps($bonk, $faac);       pac_convert("bonk", "mp4",  "bonktomp4",   "1");   }
elsif (defined $bonktompc)   { check_apps($bonk, $mppenc);     pac_convert("bonk", "mpc",  "bonktompc",   "1");   }
elsif (defined $bonktompp)   { check_apps($bonk, $mppenc);     pac_convert("bonk", "mpp",  "bonktompc",   "1");   }
elsif (defined $bonktowv)    { check_apps($bonk, $wavpack);    pac_convert("bonk", "wv",   "bonktowv",    "1");   }
elsif (defined $bonktoofr)   { check_apps($bonk, $ofr);        pac_convert("bonk", "ofr",  "bonktoofr",   "1");   }
elsif (defined $bonktoofs)   { check_apps($bonk, $ofs);        pac_convert("bonk", "ofs",  "bonktoofs",   "1");   }
elsif (defined $bonktotta)   { check_apps($bonk, $ttaenc);     pac_convert("bonk", "tta",  "bonktotta",   "1");   }
elsif (defined $bonktopac)   { check_apps($bonk, $lpac);       pac_convert("bonk", "pac",  "bonktopac",   "1");   }
elsif (defined $bonktolpac)  { check_apps($bonk, $lpac);       pac_convert("bonk", "lpac", "bonktopac",   "1");   }
elsif (defined $bonktokxs)   { check_apps($bonk, $kexis);      pac_convert("bonk", "kxs",  "bonktokxs",   "1");   }
elsif (defined $bonktoaiff)  { check_apps($bonk, $sox);        pac_convert("bonk", "aiff", "bonktoaiff",  "1");   }
elsif (defined $bonktoau)    { check_apps($bonk, $sox);        pac_convert("bonk", "au",   "bonktoaiff",  "1");   }
elsif (defined $bonktosnd)   { check_apps($bonk, $sox);        pac_convert("bonk", "snd",  "bonktoaiff",  "1");   }
elsif (defined $bonktoraw)   { check_apps($bonk, $sox);        pac_convert("bonk", "raw",  "bonktoaiff",  "1");   }
elsif (defined $bonktovoc)   { check_apps($bonk, $sox);        pac_convert("bonk", "voc",  "bonktoaiff",  "1");   }
elsif (defined $bonktosmp)   { check_apps($bonk, $sox);        pac_convert("bonk", "smp",  "bonktoaiff",  "1");   }
elsif (defined $bonktomp2)   { check_apps($bonk, $ffmpeg);     pac_convert("bonk", "mp2",  "bonktomp2",   "1");   }
elsif (defined $bonktoac3)   { check_apps($bonk, $ffmpeg);     pac_convert("bonk", "ac3",  "bonktomp2",   "1");   }
elsif (defined $bonktola)    { check_apps($bonk, $la);         pac_convert("bonk", "la",   "bonktola",    "1");   }
elsif (defined $bonktobonk)  { check_apps($bonk);              pac_convert("bonk", "bonk", "bonktobonk",  "1");   }
elsif (defined $bonktowav)   { check_apps($bonk);              pac_convert("bonk", "wav",  "bonktowav",   "0");   }
elsif (defined $bonktora)    { check_apps($bonk, $ffmpeg);     pac_convert("bonk", "ra",   "bonktora",    "1");   }


# WAV 
elsif (defined $wavtomp3)    { check_apps($lame);              pac_convert("wav",  "mp3",  "wavtomp3",    "0");   }
elsif (defined $wavtoogg)    { check_apps($oggenc);            pac_convert("wav",  "ogg",  "wavtoogg",    "0");   }
elsif (defined $wavtoflac)   { check_apps($flac);              pac_convert("wav",  "flac", "wavtoflac",   "0");   } 
elsif (defined $wavtofla)    { check_apps($flac);              pac_convert("wav",  "fla",  "wavtoflac",   "0");   }
elsif (defined $wavtoape)    { check_apps($mac);               pac_convert("wav",  "ape",  "wavtoape",    "0");   }
elsif (defined $wavtoshn)    { check_apps($shorten);           pac_convert("wav",  "shn",  "wavtoshn",    "0");   }
elsif (defined $wavtoaac)    { check_apps($faac);              pac_convert("wav",  "aac",  "wavtoaac",    "0");   }
elsif (defined $wavtom4a)    { check_apps($faac);              pac_convert("wav",  "m4a",  "wavtomp4",    "0");   }
elsif (defined $wavtomp4)    { check_apps($faac);              pac_convert("wav",  "mp4",  "wavtomp4",    "0");   }
elsif (defined $wavtompc)    { check_apps($mppenc);            pac_convert("wav",  "mpc",  "wavtompc",    "0");   }
elsif (defined $wavtompp)    { check_apps($mppenc);            pac_convert("wav",  "mpp",  "wavtompc",    "0");   }
elsif (defined $wavtowv)     { check_apps($wavpack);           pac_convert("wav",  "wv",   "wavtowv",     "0");   }
elsif (defined $wavtoofr)    { check_apps($ofr);               pac_convert("wav",  "ofr",  "wavtoofr",    "0");   }
elsif (defined $wavtoofs)    { check_apps($ofs);               pac_convert("wav",  "ofs",  "wavtoofs",    "0");   }
elsif (defined $wavtotta)    { check_apps($ttaenc);            pac_convert("wav",  "tta",  "wavtotta",    "0");   }
elsif (defined $wavtopac)    { check_apps($lpac);              pac_convert("wav",  "pac",  "wavtopac",    "0");   }
elsif (defined $wavtolpac)   { check_apps($lpac);              pac_convert("wav",  "lpac", "wavtopac",    "0");   }
elsif (defined $wavtokxs)    { check_apps($kexis);             pac_convert("wav",  "kxs",  "wavtokxs",    "0");   }
elsif (defined $wavtoaiff)   { check_apps($sox);               pac_convert("wav",  "aiff", "wavtoaiff",   "0");   }
elsif (defined $wavtoau)     { check_apps($sox);               pac_convert("wav",  "au",   "wavtoaiff",   "0");   }
elsif (defined $wavtosnd)    { check_apps($sox);               pac_convert("wav",  "snd",  "wavtoaiff",   "0");   } 
elsif (defined $wavtoraw)    { check_apps($sox);               pac_convert("wav",  "raw",  "wavtoaiff",   "0");   }
elsif (defined $wavtovoc)    { check_apps($sox);               pac_convert("wav",  "voc",  "wavtoaiff",   "0");   }
elsif (defined $wavtosmp)    { check_apps($sox);               pac_convert("wav",  "smp",  "wavtoaiff",   "0");   }
elsif (defined $wavtomp2)    { check_apps($ffmpeg);            pac_convert("wav",  "mp2",  "wavtomp2",    "0");   }
elsif (defined $wavtoac3)    { check_apps($ffmpeg);            pac_convert("wav",  "ac3",  "wavtomp2",    "0");   }
elsif (defined $wavtola)     { check_apps($la);                pac_convert("wav",  "la",   "wavtola",     "0");   }
elsif (defined $wavtobonk)   { check_apps($bonk);              pac_convert("wav",  "bonk", "wavtobonk",   "0");   }
elsif (defined $wavtora)     { check_apps($ffmpeg);            pac_convert("wav",  "ra",   "wavtomp2",    "0");   }
 

# WMA 
elsif (defined $wmatomp3)    { check_apps($mplayer, $lame);    pac_convert("wma",  "mp3",  "wmatomp3",    "1");   }
elsif (defined $wmatoogg)    { check_apps($mplayer, $oggenc);  pac_convert("wma",  "ogg",  "wmatoogg",    "1");   }
elsif (defined $wmatoflac)   { check_apps($mplayer, $flac);    pac_convert("wma",  "flac", "wmatoflac",   "1");   }
elsif (defined $wmatofla)    { check_apps($mplayer, $flac);    pac_convert("wma",  "fla",  "wmatoflac",   "1");   }
elsif (defined $wmatoape)    { check_apps($mplayer, $mac);     pac_convert("wma",  "ape",  "wmatoape",    "1");   }
elsif (defined $wmatoshn)    { check_apps($mplayer, $shorten); pac_convert("wma",  "shn",  "wmatoshn",    "1");   }
elsif (defined $wmatoaac)    { check_apps($mplayer, $faac);    pac_convert("wma",  "aac",  "wmatoaac",    "1");   }
elsif (defined $wmatom4a)    { check_apps($mplayer, $faac);    pac_convert("wma",  "m4a",  "wmatomp4",    "1");   }
elsif (defined $wmatomp4)    { check_apps($mplayer, $faac);    pac_convert("wma",  "mp4",  "wmatomp4",    "1");   }
elsif (defined $wmatompc)    { check_apps($mplayer, $mppenc);  pac_convert("wma",  "mpc",  "wmatompc",    "1");   }
elsif (defined $wmatompp)    { check_apps($mplayer, $mppenc);  pac_convert("wma",  "mpp",  "wmatompc",    "1");   }
elsif (defined $wmatowv)     { check_apps($mplayer, $wavpack); pac_convert("wma",  "wv",   "wmatowv",     "1");   }
elsif (defined $wmatoofr)    { check_apps($mplayer, $ofr);     pac_convert("wma",  "ofr",  "wmatoofr",    "1");   }
elsif (defined $wmatoofs)    { check_apps($mplayer, $ofs);     pac_convert("wma",  "ofs",  "wmatoofs",    "1");   }
elsif (defined $wmatotta)    { check_apps($mplayer, $ttaenc);  pac_convert("wma",  "tta",  "wmatotta",    "1");   }
elsif (defined $wmatopac)    { check_apps($mplayer, $lpac);    pac_convert("wma",  "pac",  "wmatopac",    "1");   }
elsif (defined $wmatolpac)   { check_apps($mplayer, $lpac);    pac_convert("wma",  "lpac", "wmatopac",    "1");   }
elsif (defined $wmatokxs)    { check_apps($mplayer, $kexis);   pac_convert("wma",  "kxs",  "wmatokxs",    "1");   }
elsif (defined $wmatoaiff)   { check_apps($mplayer, $sox);     pac_convert("wma",  "aiff", "wmatoaiff",   "1");   }
elsif (defined $wmatoau)     { check_apps($mplayer, $sox);     pac_convert("wma",  "au",   "wmatoaiff",   "1");   }
elsif (defined $wmatosnd)    { check_apps($mplayer, $sox);     pac_convert("wma",  "snd",  "wmatoaiff",   "1");   }
elsif (defined $wmatoraw)    { check_apps($mplayer, $sox);     pac_convert("wma",  "raw",  "wmatoaiff",   "1");   }
elsif (defined $wmatovoc)    { check_apps($mplayer, $sox);     pac_convert("wma",  "voc",  "wmatoaiff",   "1");   }
elsif (defined $wmatosmp)    { check_apps($mplayer, $sox);     pac_convert("wma",  "smp",  "wmatoaiff",   "1");   }
elsif (defined $wmatomp2)    { check_apps($mplayer, $ffmpeg);  pac_convert("wma",  "mp2",  "wmatomp2",    "1");   }
elsif (defined $wmatoac3)    { check_apps($mplayer, $ffmpeg);  pac_convert("wma",  "ac3",  "wmatomp2",    "1");   }
elsif (defined $wmatola)     { check_apps($mplayer, $la);      pac_convert("wma",  "la",   "wmatola",     "1");   }
elsif (defined $wmatobonk)   { check_apps($mplayer, $bonk);    pac_convert("wma",  "bonk", "wmatobonk",   "1");   }
elsif (defined $wmatowav)    { check_apps($mplayer);           pac_convert("wma",  "wav",  "wmatowav",    "0");   }
elsif (defined $wmatora)     { check_apps($mplayer, $ffmpeg);  pac_convert("wma",  "ra",   "wmatomp2",    "1");   }
 

# RealAudio (RA)
elsif (defined $ratomp3)     { check_apps($mplayer, $lame);    pac_convert("ra",   "mp3",  "ratomp3",     "1");   }
elsif (defined $ratoogg)     { check_apps($mplayer, $oggenc);  pac_convert("ra",   "ogg",  "ratoogg",     "1");   }
elsif (defined $ratoflac)    { check_apps($mplayer, $flac);    pac_convert("ra",   "flac", "ratoflac",    "1");   }
elsif (defined $ratofla)     { check_apps($mplayer, $flac);    pac_convert("ra",   "fla",  "ratoflac",    "1");   }
elsif (defined $ratoape)     { check_apps($mplayer, $mac);     pac_convert("ra",   "ape",  "ratoape",     "1");   }
elsif (defined $ratoshn)     { check_apps($mplayer, $shorten); pac_convert("ra",   "shn",  "ratoshn",     "1");   }
elsif (defined $ratoaac)     { check_apps($mplayer, $faac);    pac_convert("ra",   "aac",  "ratoaac",     "1");   }
elsif (defined $ratom4a)     { check_apps($mplayer, $faac);    pac_convert("ra",   "m4a",  "ratomp4",     "1");   }
elsif (defined $ratomp4)     { check_apps($mplayer, $faac);    pac_convert("ra",   "mp4",  "ratomp4",     "1");   }
elsif (defined $ratompc)     { check_apps($mplayer, $mppenc);  pac_convert("ra",   "mpc",  "ratompc",     "1");   }
elsif (defined $ratompp)     { check_apps($mplayer, $mppenc);  pac_convert("ra",   "mpp",  "ratompc",     "1");   }
elsif (defined $ratowv)      { check_apps($mplayer, $wavpack); pac_convert("ra",   "wv",   "ratowv",      "1");   }
elsif (defined $ratoofr)     { check_apps($mplayer, $ofr);     pac_convert("ra",   "ofr",  "ratoofr",     "1");   }
elsif (defined $ratoofs)     { check_apps($mplayer, $ofs);     pac_convert("ra",   "ofs",  "ratoofs",     "1");   }
elsif (defined $ratotta)     { check_apps($mplayer, $ttaenc);  pac_convert("ra",   "tta",  "ratotta",     "1");   }
elsif (defined $ratopac)     { check_apps($mplayer, $lpac);    pac_convert("ra",   "pac",  "ratopac",     "1");   }
elsif (defined $ratolpac)    { check_apps($mplayer, $lpac);    pac_convert("ra",   "lpac", "ratopac",     "1");   }
elsif (defined $ratokxs)     { check_apps($mplayer, $kexis);   pac_convert("ra",   "kxs",  "ratokxs",     "1");   }
elsif (defined $ratoaiff)    { check_apps($mplayer, $sox);     pac_convert("ra",   "aiff", "ratoaiff",    "1");   }
elsif (defined $ratoau)      { check_apps($mplayer, $sox);     pac_convert("ra",   "au",   "ratoaiff",    "1");   }
elsif (defined $ratosnd)     { check_apps($mplayer, $sox);     pac_convert("ra",   "snd",  "ratoaiff",    "1");   }
elsif (defined $ratoraw)     { check_apps($mplayer, $sox);     pac_convert("ra",   "raw",  "ratoaiff",    "1");   }
elsif (defined $ratovoc)     { check_apps($mplayer, $sox);     pac_convert("ra",   "voc",  "ratoaiff",    "1");   }
elsif (defined $ratosmp)     { check_apps($mplayer, $sox);     pac_convert("ra",   "smp",  "ratoaiff",    "1");   }
elsif (defined $ratomp2)     { check_apps($ffmpeg);            pac_convert("ra",   "mp2",  "ratomp2",     "1");   }
elsif (defined $ratoac3)     { check_apps($ffmpeg);            pac_convert("ra",   "ac3",  "ratomp2",     "1");   }
elsif (defined $ratola)      { check_apps($mplayer, $la);      pac_convert("ra",   "la",   "ratola",      "1");   }
elsif (defined $ratobonk)    { check_apps($mplayer, $bonk);    pac_convert("ra",   "bonk", "ratobonk",    "1");   }
elsif (defined $ratowav)     { check_apps($mplayer);           pac_convert("ra",   "wav",  "ratowav",     "0");   }
elsif (defined $ratora)      { check_apps($ffmpeg);            pac_convert("ra",   "ra",   "ratomp2",     "1");   }


# RealAudio (RAM)
elsif (defined $ramtomp3)    { check_apps($mplayer, $lame);    pac_convert("ram",  "mp3",  "ratomp3",     "1");   }
elsif (defined $ramtoogg)    { check_apps($mplayer, $oggenc);  pac_convert("ram",  "ogg",  "ratoogg",     "1");   }
elsif (defined $ramtoflac)   { check_apps($mplayer, $flac);    pac_convert("ram",  "flac", "ratoflac",    "1");   }
elsif (defined $ramtofla)    { check_apps($mplayer, $flac);    pac_convert("ram",  "fla",  "ratoflac",    "1");   }
elsif (defined $ramtoape)    { check_apps($mplayer, $mac);     pac_convert("ram",  "ape",  "ratoape",     "1");   }
elsif (defined $ramtoshn)    { check_apps($mplayer, $shorten); pac_convert("ram",  "shn",  "ratoshn",     "1");   }
elsif (defined $ramtoaac)    { check_apps($mplayer, $faac);    pac_convert("ram",  "aac",  "ratoaac",     "1");   }
elsif (defined $ramtom4a)    { check_apps($mplayer, $faac);    pac_convert("ram",  "m4a",  "ratomp4",     "1");   }
elsif (defined $ramtomp4)    { check_apps($mplayer, $faac);    pac_convert("ram",  "mp4",  "ratomp4",     "1");   }
elsif (defined $ramtompc)    { check_apps($mplayer, $mppenc);  pac_convert("ram",  "mpc",  "ratompc",     "1");   }
elsif (defined $ramtompp)    { check_apps($mplayer, $mppenc);  pac_convert("ram",  "mpp",  "ratompc",     "1");   }
elsif (defined $ramtowv)     { check_apps($mplayer, $wavpack); pac_convert("ram",  "wv",   "ratowv",      "1");   } 
elsif (defined $ramtoofr)    { check_apps($mplayer, $ofr);     pac_convert("ram",  "ofr",  "ratoofr",     "1");   }
elsif (defined $ramtoofs)    { check_apps($mplayer, $ofs);     pac_convert("ram",  "ofs",  "ratoofs",     "1");   }
elsif (defined $ramtotta)    { check_apps($mplayer, $ttaenc);  pac_convert("ram",  "tta",  "ratotta",     "1");   }
elsif (defined $ramtopac)    { check_apps($mplayer, $lpac);    pac_convert("ram",  "pac",  "ratopac",     "1");   }
elsif (defined $ramtolpac)   { check_apps($mplayer, $lpac);    pac_convert("ram",  "lpac", "ratopac",     "1");   }
elsif (defined $ramtokxs)    { check_apps($mplayer, $kexis);   pac_convert("ram",  "kxs",  "ratokxs",     "1");   }
elsif (defined $ramtoaiff)   { check_apps($mplayer, $sox);     pac_convert("ram",  "aiff", "ratoaiff",    "1");   }
elsif (defined $ramtoau)     { check_apps($mplayer, $sox);     pac_convert("ram",  "au",   "ratoaiff",    "1");   }
elsif (defined $ramtosnd)    { check_apps($mplayer, $sox);     pac_convert("ram",  "snd",  "ratoaiff",    "1");   }
elsif (defined $ramtoraw)    { check_apps($mplayer, $sox);     pac_convert("ram",  "raw",  "ratoaiff",    "1");   }
elsif (defined $ramtovoc)    { check_apps($mplayer, $sox);     pac_convert("ram",  "voc",  "ratoaiff",    "1");   }
elsif (defined $ramtosmp)    { check_apps($mplayer, $sox);     pac_convert("ram",  "smp",  "ratoaiff",    "1");   }
elsif (defined $ramtomp2)    { check_apps($mplayer, $ffmpeg);  pac_convert("ram",  "mp2",  "ratomp2",     "1");   }
elsif (defined $ramtoac3)    { check_apps($mplayer, $ffmpeg);  pac_convert("ram",  "ac3",  "ratomp2",     "1");   }
elsif (defined $ramtola)     { check_apps($mplayer, $la);      pac_convert("ram",  "la",   "ratola",      "1");   }
elsif (defined $ramtobonk)   { check_apps($mplayer, $bonk);    pac_convert("ram",  "bonk", "ratobonk",    "1");   }
elsif (defined $ramtowav)    { check_apps($mplayer);           pac_convert("ram",  "wav",  "ratowav",     "0");   }
elsif (defined $ramtora)     { check_apps($mplayer, $ffmpeg);  pac_convert("ram",  "ra",   "ratomp2",     "1");   }
 

# CD Encoding Instructions 
elsif (defined $cdtomp3)     { check_apps($cdparanoia, $lame);    pac_rip("cdtomp3",  "mp3",  "0");  }
elsif (defined $cdtoogg)     { check_apps($cdparanoia, $oggenc);  pac_rip("cdtoogg",  "ogg",  "0");  }
elsif (defined $cdtoflac)    { check_apps($cdparanoia, $flac);    pac_rip("cdtoflac", "flac", "0");  }
elsif (defined $cdtofla)     { check_apps($cdparanoia, $flac);    pac_rip("cdtoflac", "fla",  "0");  }
elsif (defined $cdtoape)     { check_apps($cdparanoia, $mac);     pac_rip("cdtoape",  "ape",  "1");  }
elsif (defined $cdtoshn)     { check_apps($cdparanoia, $shorten); pac_rip("cdtoshn",  "shn",  "0");  }
elsif (defined $cdtoaac)     { check_apps($cdparanoia, $faac);    pac_rip("cdtoaac",  "aac",  "0");  }
elsif (defined $cdtom4a)     { check_apps($cdparanoia, $ofs);     pac_rip("cdtom4a",  "m4a",  "0");  }
elsif (defined $cdtomp4)     { check_apps($cdparanoia, $faac);    pac_rip("cdtomp4",  "mp4",  "0");  }
elsif (defined $cdtompc)     { check_apps($cdparanoia, $mppenc);  pac_rip("cdtompc",  "mpc",  "1");  }
elsif (defined $cdtompp)     { check_apps($cdparanoia, $mppenc);  pac_rip("cdtompc",  "mpp",  "1");  }
elsif (defined $cdtowv)      { check_apps($cdparanoia, $wavpack); pac_rip("cdtowv",   "wv",   "1");  }
elsif (defined $cdtoofr)     { check_apps($cdparanoia, $ofr);     pac_rip("cdtoofr",  "ofr",  "1");  }
elsif (defined $cdtoofs)     { check_apps($cdparanoia, $ofs);     pac_rip("cdtoofs",  "ofs",  "1");  }
elsif (defined $cdtotta)     { check_apps($cdparanoia, $ttaenc);  pac_rip("cdtotta",  "tta",  "1");  }
elsif (defined $cdtopac)     { check_apps($cdparanoia, $lpac);    pac_rip("cdtopac",  "pac",  "1");  }
elsif (defined $cdtolpac)    { check_apps($cdparanoia, $lpac);    pac_rip("cdtopac",  "lpac", "1");  }
elsif (defined $cdtokxs)     { check_apps($cdparanoia, $kexis);   pac_rip("cdtokxs",  "kxs",  "1");  }
elsif (defined $cdtoaiff)    { check_apps($cdparanoia, $sox);     pac_rip("cdtoaiff", "aiff", "1");  }
elsif (defined $cdtoau)      { check_apps($cdparanoia, $sox);     pac_rip("cdtoaiff", "au",   "1");  }
elsif (defined $cdtosnd)     { check_apps($cdparanoia, $sox);     pac_rip("cdtoaiff", "snd",  "1");  }
elsif (defined $cdtoraw)     { check_apps($cdparanoia, $sox);     pac_rip("cdtoaiff", "raw",  "1");  }
elsif (defined $cdtovoc)     { check_apps($cdparanoia, $sox);     pac_rip("cdtoaiff", "voc",  "1");  }
elsif (defined $cdtosmp)     { check_apps($cdparanoia, $sox);     pac_rip("cdtoaiff", "smp",  "1");  }
elsif (defined $cdtomp2)     { check_apps($cdparanoia, $ffmpeg);  pac_rip("cdtomp2",  "mp2",  "1");  }
elsif (defined $cdtoac3)     { check_apps($cdparanoia, $ffmpeg);  pac_rip("cdtomp2",  "ac3",  "1");  }
elsif (defined $cdtola)      { check_apps($cdparanoia, $la);      pac_rip("cdtola",   "la",   "1");  }
elsif (defined $cdtobonk)    { check_apps($cdparanoia, $bonk);    pac_rip("cdtobonk", "bonk", "1");  }
elsif (defined $cdtowav)     { check_apps($cdparanoia);           pac_rip("cdtowav",  "wav",  "0");  }
elsif (defined $cdtora)      { check_apps($cdparanoia, $ffmpeg);  pac_rip("cdtomp2",  "ra",   "1");  }

# Get CD Information from CDDB
elsif (defined $cdinfo)  { cd_info();  }

# Help & Misc
elsif (defined $riphelp)   { if ($mylang eq "FR") { rip_help_FR();    } elsif ($mylang eq "PT") { rip_help_PT();   } else { rip_help();   }}
elsif (defined $taghelp)   { if ($mylang eq "FR") { tag_help_FR();    } elsif ($mylang eq "PT") { tag_help_PT();   } else { tag_help();   }}
elsif (defined $help)      { if ($mylang eq "FR") { help_FR();        } elsif ($mylang eq "PT") { help_PT();       } else { help();       }}
elsif (defined $longhelp)  { if ($mylang eq "FR") { long_help_FR();   } elsif ($mylang eq "PT") { long_help_PT();  } else { long_help();  }}
elsif (defined $videohelp) { if ($mylang eq "FR") { video_help_FR();  } elsif ($mylang eq "PT") { video_help_PT(); } else { video_help(); }}

elsif (defined $ver)       { version();       }
elsif (defined $daemon)    { start_daemon();  }

elsif (%usertag)           { edit_tag();      }
elsif ($conv_to)           { batch_convert(); }

elsif ($showtag)           {

  if (@ARGV) {
        foreach my $i (@ARGV) {
         display_tag("$i");
        }
  }     else { print "Usage: pacpl --showtag <tag/all> <file>\n"; 
               print "valid tags: artist, title, genre, album, year, track, comment\n"; 
        }

} 

elsif ($url)  {

     if ($app_location{$url}) { 
           
          print "\n$name - $version\n\n$url = $app_location{$url}\n\n";
          exit(0);

     } else { 
     
              print "\n$name - $version\n\nNo recored of URL for: '$url'\n\n";
              exit(1);
       }

} else { if ($mylang eq "FR") { help_FR(); } elsif ($mylang eq "PT") { help_PT(); } else { help(); } }


# CD Ripping Help

sub rip_help {

print "
  
  $name - $version - (CD Ripping)
  
  Supported Formats: mp2, mp3, ogg, flac, fla, ape, shn,  aac, m4a,  mp4, mpc, 
                     mpp, wv,  ofr, ofs,  tta, pac, lpac, kxs, aiff, au,  snd, 
                     ac3, raw, voc, smp,  ac3, la,  bonk, wav, ra
  


  -t,     --track      Track(s) to be ripped (--track=1,2,3,4)
  -a,     --all        Encode all tracks
  -o,     --outdir     Output directory
          --nocddb     Disable CDDB
          --noinput    Disable CDDB user input
          --cdinfo     CD CDDB information



  Usage: pacpl --cdto<format> <--track(s)/--all>
  
  Examples: pacpl --cdtomp3 --track=1,5,10
            pacpl --cdtoofr --all --noinput

  ";
  
  

}

sub tag_help {

print "

$name - $version (Tagging Options)

Supported Formats: mp3, flac, fla, ogg, *m4a, *mp4, *mpc, *mpp, *wv, *wma


  --tag key=value        Add tag key=value (e.g. artist=John)
  --showtag=key/all      Show specific tag or all tags 
               

  valid keys: artist, title, genre, album, year, track, comment
  

  Usage: pacpl --tag/--showtag <option(s)>


  Examples:  pacpl --tag artist=\"SomeArtist\" \"SomeArtist - Song.mp3\"
             pacpl --tag track=1 --tag artist=Joe --tag genre=blues file.mp3
             pacpl --showtag artist \"SomeArtist - Song.ogg\"
             
                 

  *read only format
  ";
                    
}
                    
# Long Help

sub long_help {

print "
$name - $version

Supported formats: mp2, mp3, ogg,  flac, fla, ape, shn,  aac,  m4a,  mp4, mpc,
                   mpp, wv,  ofr,  ofs,  tta, pac, lpac, kxs,  aiff, au,  snd, 
                   ac3, la,  bonk, raw,  voc, smp, wav,  wma,  ra,   ram,
                                      
Options:
  -f     --file=f        Input file (can be used multiple times)
  -d     --dir=d         Input directory (can be used multiple times)
  -re    --recursive     Recursively scan directory (use with --dir)
  -pd    --presdir       Preserve directory structure (use with --recursive)
  -ct    --convertto=s   Convert dir(s)/file(s)/playlist(s) to <format>
  -o     --outdir=d      Output directory (--dir)
  -p     --outfile=f     Output file (--file) (single file only)
  -b     --bitrate=n     Audio bitrate (default 128)
  -ar    --arate=n       Audio sample rate (in Hz - default 44100)
  -ac    --channels=n    Number of audio channels (default 2)
  -q     --quality=n     Ogg/FAAC encoding quality (default=3)
  -z     --alevel=n      APE compression (1000 = fast 5000 = insane)
  -c     --flevel=n      FLAC compression (1 = fast 8 = best)
  -i     --slevel=n      Shorten (SHN) compression (1 = fast 3 = best)
  -x     --xlevel=n      Musepack (MPC) comp. (thumb/radio/standard/xtreme)
  -e     --plevel=n      LPAC compression (1 to 5)
  -ql    --qlevel=n      BONK quantization level (default 1.00)
  -dr    --dratio=n      BONK downsample ratio (default 2)
  -ps    --psize=n       BONK predictor size (default 128, use 10 for speech)
  -ll    --lossless      Use BONK lossless encoding
  -m     --mode=s        OptimFrog compression (fast|normal*|high|extra|best)
  -op    --optimize=s    OptimFrog compression (none|fast*|normal|high|best)
  -ro    --rawopts=s     SoX options for RAW input
  -so    --soxopts=s     SoX options (AIFF/AU/SND/VOC/SMP) output
  -ef    --effect=s      SoX effect
  -u     --uopts=s       User supplied encoder options
         --delete        Remove source file after encoding 
  -v     --version       Display current version & author information
  -py    --play=f        Play audio file
  -pl    --playlist=s    Convert files in playlist 
  -ov    --overwrite     Overwrite existing destination file
         --daemon        Monitor directories specified in pacpl.conf
         --man           Show man page
         --url=s         Display URL for encoder/decoder
  -th    --taghelp       Tag reading / writing options
  -rh    --riphelp       CD ripping options
  -vh    --videohelp     List of supported video input
  -h     --help          Brief help menu
  -lh    --longhelp      Complete list of options
    
Usage: pacpl --<formattoformat>   <option(s)> <--file/--dir> <file(s)/dir(s)>
       pacpl --convertto <format> <option(s)> <--file/--dir> <file(s)/dir(s)>
       
       format to format  = --mp3toogg, --oggtoflac, --bonktola, etc.

";

exit(0); }

sub help {
print "$name - $version

Supported formats: mp2, mp3, ogg,  flac, fla, ape, shn,  aac,  m4a,  mp4, mpc, 
                   mpp, wv,  ofr,  ofs,  tta, pac, lpac, kxs,  aiff, au,  snd,
                   ac3, la,  bonk, raw,  voc, smp, wav,  wma,  ra,   ram,
Options:
  -f     --file=f        Input file (can be used multiple times)
  -d     --dir=d         Input directory (can be used multiple times)
  -o     --outdir=d      Output directory (--dir)
  -p     --outfile=f     Output file (--file) (single file only)
  -re    --recursive     Recursively scan directory (use with --dir)
  -pd    --presdir       Preserve directory structure (use with --recursive)
  -ct    --convertto=s   Convert dir(s)/file(s)/playlist(s) to <format>
  -u     --uopts=s       User supplied encoder options
  -py    --play=f        Play audio file
  -pl    --playlist=s    Convert files in playlist
  -ov    --overwrite     Overwrite existing destination file
  -th    --taghelp       Tag reading / writing options
  -rh    --riphelp       CD ripping options
  -vh    --videohelp     List of supported video codecs
  -lh    --longhelp      Complete list of options
                              
Usage: pacpl --<formattoformat>   <option(s)> <--file/--dir> <file(s)/dir(s)>
       pacpl --convertto <format> <option(s)> <--file/--dir> <file(s)/dir(s)>
  "; 
  
  exit(0);
  
}

sub video_help {

print "$name - $version

Supported formats: rm,   rv,  asf, avi, divx, mpg,  mkv
                   mpeg, mov, ogm, qt,  vcd,  vob,  wmv,
                   flv


All video audio must be converted with the --convertto option.



Examples:

pacpl --convertto ogg  --file=\"Some Movie.avi\"
pacpl --convertto flac --playlist movielist (must be in /path/to/file format)
pacpl --convertto aiff --dir=Movies/ --recursive



Note: 
Converting 'to' any of the video formats shown above is not supported.

";

  exit(0); 

}

sub version {  print "$name - $version - Philip Lyons (viiron\@gmail.com)\n"; }

__END__

=head1 NAME

Perl Audio Converter

=head1 SYNOPSIS

pacpl --<formattoformat>   <--file/--dir> <file(s)/dir(s)>

pacpl --convertto <format> <--file/--dir> <file(s)/dir(s)>

=head1 DESCRIPTION

 Perl  Audio  Converter is  a  tool  for  converting  multiple  audio
 types  from  one  format to another. It supports MP2, MP3, Ogg Vorbis,
 FLAC,  Shorten,  Monkey  Audio,  FAAC  (AAC/M4A/MP4),  Musepack (MPC),
 Wavpack  (WV), OptimFrog (OFR/OFS), TTA, LPAC, Kexis (KXS), AIFF, AC3,
 Lossless Audio (LA), BONK, AU, SND, RAW, VOC, SMP, RealAudio (RA/RAM),
 WAV,  and  WMA.  It  can  also  convert audio from the following video
 formats/extensions:  RM, RV, ASF, DivX, MPG, MKV, MPEG, AVI, MOV, OGM,
 QT, FLV,  VCD, VOB, and  WMV. A CD ripping function with CDDB support, 
 batch and playlist  conversion, tag  preservation for most  supported 
 formats,  independent  tag  reading/writing,  and   extensions  for 
 Konqueror and amaroK are also provided.
                                
         
=head1 ENCODING OPTIONS

When transcoding a file, you can use one of two options:

B<--formattoformat (Audio Only)>

Example: --mp3toaiff --file=File.mp3
         --oggtoflac --playlist=oggplaylist
         --mpctoape  --dir=/home/shared/mpcs

The --formattoformat options will convert from the selected input format
to the selected output format.  WMA/RAM (output), and Video (input/output)
are the only exceptions.

B<-ct format, --convertto format (Audio/Video)>

The --convertto option can batch convert from any supported source    
format (Audio & Video) to any supported output format (Audio).

Example: pacpl --convertto mp3 --file=Song.ape --file=Movie.avi
         pacpl --convertto ogg --playlist myplaylist
         pacpl --convertto kxs --dir=/home/shared/oggs
         
However, You can NOT convert TO WMA or any of the supported Video codecs.
Although converting from these formats is prefectly acceptable.  Below is a
complete list of supported encode/decode formats:

Supported Encode Formats:
 
                 mp2,  mp3, ogg, flac, fla, ape, shn, aac,  m4a, mp4, 
                 mpc,  mpp, wv,  ofr,  ofs, tta, pac, lpac, kxs, 
                 aiff, au,  snd, raw,  voc, smp, ac3, la,   bonk,
                 wav,  ra

Supported Decode Formats: 
                 
                 mp2,  mp3, ogg, flac, fla, ape, shn, aac,  m4a, mp4,
                 mpc,  mpp, wv,  ofr,  ofs, tta, pac, lpac, kxs,
                 aiff, au,  snd, raw,  voc, smp, ac3, la,   bonk,
                 wma,  wav, ra,  ram


=head1 OTHER OPTIONS

B<-h, --help>
 General usage

B<-l, --longhelp>
 Complete option list
 
B<-g, --taghelp>
 Tag reading/writing help menu
 
B<-r, --riphelp>
 CD ripping help menu

B<-vh, --videohelp>
 Video option help menu

B<-v, --version>
 Version information

B<-c n, --flevel=n>
 Set compression level when encoding FLAC files 
 Default: 8
 1-8 (0 = fastest & 8 = highest ) 
 
B<-b n, --bitrate=n>
 Average Bitrate  
 
 voice         = 56kbps/mono
 fm/radio/tape = 112kbps    
 mp3           = 128kbps (default)
 hifi          = 160kbps
 cd            = 192kbps  
 studio        = 256kbps

B<-ar n, --arate=n>
 Audio sampling rate     

B<-ac n, --channels=n>
 Number of audio channels
 
B<-z n, --alevel=n>
 Ape compression level 
 Compress (fast): '--alevel=1000'
 Compress (normal): '--alevel=2000'
 Compress (high): '--alevel=3000'
 Compress (extra high): '--alevel=4000'
 Compress (insane): '--alevel=5000'
 
B<-i n, --slevel=n>
 Shorten (SHN) format version number 
 (2: no seek info; 3: default)

B<-x s, --xlevel=s>
 Musepack (MPC) compression level
 thumb      low quality/internet, (typ.  58... 86 kbps)
 radio      medium (MP3) quality, (typ. 112...152 kbps)
 standard   high quality (dflt),  (typ. 142...184 kbps)
 xtreme     extreme high quality, (typ. 168...212 kbps)
 insane     extreme high quality, (typ. 232...268 kbps)
 braindead  extreme high quality, (typ. 232...278 kbps)

B<-e n, --plevel=n>
 LPAC (PAC) predefined compression level
 1 = Fast, 2 = Simple, 3 = Medium (default), 4 = High, 5 = Extra High
                    
B<-q n, --quality=n>
 Sets encoding quality to n, between -1 (low) and 10
 (high). This is the default mode of operation, with
 a default quality level of  3.  Fractional  quality
 levels  such  as  2.5 are permitted. Normal quality
 range is 0 - 10.
 
B<-m s, --mode=s>
 OptimFrog (OFR/OFS) Compression mode
 (fast,normal,high,extra,best,highnew,extranew,bestnew)

 specify the compression mode to be used. The default value is normal.
 For general use, I recommend the normal, extra, and extranew modes
     
B<-op s, --optimize=s>
 OptimFrog (OFR/OFS) Compression level
 (none,fast,normal,high,best)

 specify the optimization level in the engine. In order to achieve
 optimal compression at all sample types, sample rates, and audio
 content, the core compression engine has the possibility to find the
 optimal values for its parameters, at the cost of slightly increased
 compression time only. The default recommended value is fast.
 Do not use normal (or even high or best) for this parameter unless
 encoding time does not matter and you want to obtain the smallest
 possible file for a given compression mode. The difference between
 the optimize levels fast and best (which is up to three times slower
 than fast) is very small, generally under 0.05%, but may be also
 larger in some rare cases. Note that the none optimize level is
 forced by the encoder to fast optimize level for the extra, best,
 highnew, extranew, and bestnew modes
 
B<-ql n, --qlevel=n>
 BONK quantization level (default 1.00)

B<-dr n, --dratio=n>
 BONK downsample ratio (default 2)

B<-ps n, --psize=n>
 BONK predictor size (default 128, use 10 for speech)

B<-ll, --lossless>
 Use BONK lossless encoding

B<-u s, --uopts=s>
 User supplied encoder options   
 
 Since implementing every single option from every *encoder/decoder
 isn't quite feasible, --uopts was added to allow for greater
 flexibility for the more advanced users.
 
 Example: pacpl --mp3tomp4 --file=My_File.mp3 --uopts="-c 44100 -I 1,2"
          pacpl --convertto flac --file=File.wav --uopts="--replay-gain"
          
 *uopts applys the added options to the encoder only.   

B<-ro s, --rawopts=s>
 User supplied SoX encoder options for raw input
 
 When converting from RAW input a few options must be specified such as
 rate, channels, size, data size, etc.  See 'man sox' for a list of 
 options.  PAC's current configuration is as follows:
 
 sox -r $rate -c $channels $rawopts <input.raw> $uopts <outfile>
 or
 sox -r 44100 -c 2 -w -s <input.raw> (other options) <outfile>
 
 $rawopts defaults to '-w -s' (-w = 16 bit words / -s = signed linear)

B<-so s, --soxopts=s>

 SoX encoder options (AIFF/AU/SND/VOC/SMP)
 
 This option will allow you to specify special SoX options when
 transcoding to the above formats.
 
 sox -so "-c 2 -s" <input.aiff> -uo "-c 1 -r 22500" <output.voc>
 
B<-ef s, --effect=s>

 SoX effects (see 'man sox')
 
B<-py s, --play=s>
 Play file.  Supported formats are:
 MP3, Ogg Vorbis, FLAC, FAAC (MP4), Musepack (MPC) WMA, WAV, RealAudio (RA)

B<-pl s, --playlist=s>
 Convert files in playlist.  Supported formats are (XMMS & PATH/FILE)
 
 Playlists should be in the following format
 
 /path/to/Song.ogg
 /path/to/Song2.ogg
 
 Or a real example (playlist contains the following):
 
 /home/shared/oggs/Dance/Technotronic - Move This.ogg
 
 XMMS playlist.m3u format is also supported
 
 pacpl --oggtomp3  --playlist myplaylist
 pacpl --flactotta --playlist xmms.m3u
 
 Creating a playlist is simple using the find command.
 
 find /path/to/audio_files/ -name *.audiotype > playlist
 find /home/shared/oggs/ -name *.ogg > ogglist
 
B<--delete>
 Remove source file after encoding.
 
 Example:
 pacpl --mp3toogg --dir=/home/mp3s/Rock --delete

 After encoding the mp3s to ogg, all the mp3s in that
 directory would be deleted.  This works with all type
 to type options.  Note: if you accidently start
 encoding a directory and abort the process with ^C
 (control-c) it will stop the current process and move
 on to the next file, leaving you with a partially encoded
 audio file and no original file.  To end this madness you
 would need to 'killall -9 pacpl' or 'kill -9 <pacpl pid>' 
 So I warn...
 
B<USE WITH CARE>

B<-f file, --file=file>
 Can be used multiple times to encode one or
 more files with any of the above encoding 
 options as shown below.
 
 pacpl --mp3tompc -f file.mp3
 pacpl --mp3toogg -f file1.mp3 -f file2.mp3 -f file3.mp3
 pacpl --convertto flac *.mp3

B<-d dir, --dir=dir>
 Can be used multiple times to encode one or
 more directories with any of the above encoding
 options as shown below.
   
 pacpl --mp3tompc -d dir/
 pacpl --mp3toogg -d dir_one/ -d dir_two/ -d dir_three/

B<-o dir, --outdir=dir>
 Output directory to place the encoded files.

B<-p file, --outfile=file>
 Write file to <file> (does not apply when encoding multiple files)

B<-re, --recursive>
 Recursively scan and convert directory specified by --dir
 
B<-pd, --presdir>
 Preserve directory structure when recursively converting a directory
 using --dir <dir> --recursive
 
 Example:
 
 pacpl --mp3toogg --dir MP3s/ --outdir Oggs/ --recursive --presdir
 
 pacpl -ct flac --recursive --presdir --dir Wavs/ --outdir Flacs/

B<-ov, --overwrite>
 Overwrite existing destination file 

B<--daemon>

 Daemon Mode:
 
 This function allows you to monitor directories specified in pacpl.conf.
 Once a file is placed in one of the monitored directories, it will be
 converted to your specified collection type.
 
=head1 Ripping Options
 
B<--cdtomp3,>
  CD to MP3
         
B<--cdtoogg,>
  CD to Ogg Vorbis
                 
B<--cdtoflac,>
  CD to FLAC

B<--cdtofla,>
  CD to FLAC (FLA)
         
B<--cdtoape,>
  CD to Monkey Audio (APE)
         
B<--cdtoshn,>
  CD to Shorten (SHN)
      
B<--cdtoaac,>
  CD to FAAC (AAC) 
         
B<--cdtom4a,>
  CD to FAAC (M4A)

B<--cdtomp4,>
  CD to FAAC (MP4)

B<--cdtompc,>
  CD to Musepack (MPC)

B<--cdtompp,>
  CD to Musepack (MPP)
         
B<--cdtowv,>
  CD to Wavpack (WV)

B<--cdtoofr,>
  CD to OptimFrog (OFR)
         
B<--cdtoofs,>
  CD to OptimFrog (OFS)

B<--cdtotta,>
  CD to TTA

B<--cdtopac,>
  CD to LPAC
         
B<--cdtokxs,>
  CD to Kexis (KXS)
  
B<--cdtoaiff,>
  CD to AIFF

B<--cdtoau,>
  CD to AU

B<--cdtosnd,>
  CD to SND

B<--cdtoraw,>
  CD to RAW

B<--cdtovoc,>
  CD to VOC

B<--cdtosmp,>
  CD to SMP

B<--cdtomp2,>
  CD to MP2
  
B<--cdtoac3,>
  CD to AC3

B<--cdtola,>
  CD to Lossless Audio (LA)

B<--cdtobonk,>
  CD to BONK
    
B<--cdtowav,>
  CD to WAV

B<--cdtora,>
  CD to RealAudio (RA)
                                
B<-t n, --track>
  Track(s) to be ripped ('-t 1,4,7,10')
                                         
B<-a, --all>
  Encode all tracks
                                                 
B<--nocddb>
  Disable CDDB

B<--noinput>
  Disable CDDB user input

B<--cdinfo>
  CD CDDB information

All encoder options such as bitrate, quality, etc., can be utilized when
converting CD audio.

=head1 Example (Ripping Options)

  pacpl --cdtomp3 --track=1,13 (Encode tracks 1 and 13 to MP3)
  
  pacpl --cdtoflac --all (Encode entire CD to FLAC)
  
=head1 Tag Reading/Writing

Supported formats: (mp3, flac, fla, ogg, *mp4, *mpc, *mpp, *wv, *wma)

Tag Options:

B<--tag key=value>
    Add tag key=value for file
       
B<--showtag=key/all>
    Show specific tag or all for file
                    
  valid keys: artist, title, genre, album, year, track, comment
                     
  Usage: pacpl <tag option> <file>
         pacpl --tag Artist=\"SomeArtist\" \"SomeArtist - Song.mp3\"
         pacpl --showtag artist \"SomeArtist - Song.ogg\"
                              
 *read only format

=head1 LICENSING

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

=head1 AUTHOR

=over 4

   Philip Lyons (viiron@gmail.com) (C) 2005-2006

=back

=cut