Referência ATF do Winamp

Abaixo está um resumo da funcionalidade ATF (Formatação Avançada de Título) suportada pelo Winamp.
ATF determina como Winamp deve exibir metadados na janela de Playlist e na rolagem do som da janela Principal. A sequência global ATF pode ser editada manualmente da página 'Títulos' nas preferências do Winamp.


A sequência padrão ATF no Winamp é:
[%artist% - ]$if2(%title%,$filepart(%filename%)


Que será exibido como: 'Artista - Título' se os campos de metadados Artista e Título forem preenchidos nas tags dos arquivos, caso contrário será exibido o nome do arquivo como alternativa.

Uso do ATF

%blah% indica um campo do metadados.

$blah() indica chamar a função.

[] indica "não exibir metadados a menos que foi encontrado".

‘ ’ (aspas simples) saídas de texto simples, sem análise. ex.: ‘blah$blah%blah[]’ que resultará na saída de toda sequência e ignorará caracteres especiais ($,%,[,]).

Campos

Nota: Os campos são definidos por vários componentes no Winamp. Alguns são específicos para Biblioteca de Mídia (%rating%, %playcount%), alguns fornecidos pelo Winamp (%filename%, %folder%). Na maioria dos casos, o plugin de entrada fornece os campos. Alguns plugins de entrada fornece uma grande variedade de campos do que outros. Exemplo, o plugin Windows Media (in_wm, Winamp 5.12+), fornecerá valores para QUALQUER campo no formulário %WM/*% (veja a seção de atributos extendidos de Informações do Arquivo de qualquer arquivo wma/wmv/asf para exemplos).

Fornecido pelo Winamp

%filename%

Retorna o caminho completo do arquivo. Para exibir somente o nome do arquivo, use a função $filepart.

%folder%

Retorna a pasta onde está o arquivo.
Winamp 5.2+ ou Superior.

Fornecido pela Biblioteca de Mídia

%rating%

Retorna a classificação da faixa como um número inteiro de 1 a 5, se definido. Para exibir como estrelas ou outro caractere, use a função $repeat.

Winamp 5.2+ ou Superior.

%playcount%

Retorna o playcount (número de vezes que a faixa foi reproduzida), se o arquivo estiver armazenado no banco de dados da Biblioteca de Mídia.

Winamp 5.2+ ou Superior.

Fornecido pela Biblioteca de Mídia ou plugin de entrada

Para os campos listado abaixo, a informação só é retirada da BM se o arquivo estiver presente no banco de dados da BM e se a seguinte opção estiver marcada:
Prefs (Ctrl+P) > Biblioteca de Mídia > Biblioteca Local > ‘Use info do título na Biblioteca para Formatação de Item na Playlist’

Em todos os outros casos, a informação é fornecida pelo plugin de entrada (se o respectivo plugin de entrada suporta o campo).

A maioria destes são diretos e retirados a partir das tags padrão do arquivo, e assim não requerem qualquer explicação adicional.

%artist%

Retorna o campo Artista.

%title%

Retorna o campo Título.

%album%

Retorna o campo Álbum.

%year%

Retorna o campo Ano.

%genre%

Retorna o campo Gênero.

%comment%

Retorna o campo Comentário.

%tracknumber%

Retorna o número da faixa sem preenchimento, ex.: Faixa 1 irá ser exibido como 1.
Para preenchimentos com 2 algarismos, ex.: 01, 02...10, 11, use a função $num ou lpad.

%track%

Verifique %tracknumber%

%albumartist%

Retorna o campo Intérprete.
Winamp 5.3+ ou Superior.

%disc%

Retorna a tag Disco #, se disponível, ex.: 1/2 (Disco #1 de 2 CD's).

%composer%

Retornar o campo Compositor.

%publisher%

Retorna o campo Gravadora.
Winamp 5.3+ ou Superior.

%streamtitle%

Retorna o Título da Transmissão, se caso existir.

%bitrate%

Retorna a Taxa de Bits (irá usar a média da taxa de bits para vbr).

%length%

Retorna a duração da faixa em milisegundos. Para formatar a duração da faixa, use
$div(%length%,60000):$num($div($mod(%length%,60000),1000),2)

%type%

Retorna 1 para vídeo, 0 para áudio.
Winamp 5.2+ ou Superior.

%vbr%

Retorna 1 para áudio VBR(Taxa de Bits Variável), 0 para áudio CBR(Taxa de Bits Constante).

%category%

Retorna o campo Categoria.
Winamp 5.55+ ou Superior.

%producer%

Retorna o campo Produtor.
Winamp 5.57+ ou Superior.

%director%

Retorna o campo Diretor (filme), usado principalmente com vídeos.
Winamp 5.57+ ou Superior.

Fornecido pelo plugin de entrada

Os campos abaixo podem não funcionar com todos os formatos de arquivo.

%trackartist%

Retorna o campo Artista da Faixa (equivalente à Artista), se diferente do Intérprete.
Winamp 5.3+ ou Superior.

%mood%

Retorna o campo Disposição.
Winamp 5.3+ ou Superior.

%bpm%

Retorna o BPM (Batidas Por Minuto), se existir dados/campo.
Winamp 5.3+ ou Superior.

%key%

Retorna o campo Key (ex.: E Minor), se existir.
Winamp 5.3+ ou Superior.

%lyricist%

Retorna o campo Letras.
Winamp 5.3+ ou Superior.

%conductor%

Retorna o campo Maestro.
Winamp 5.3+ ou Superior.

%tool%

Retorna o campo Convertido por (programa usado para ripar a faixa), ex.: Winamp 5.34.
Winamp 5.3+ ou Superior.

%family%

Retorna a Familia do tipo de arquivo, ex.: M4A retorna: MPEG-4 Formato Arquivo de Áudio
Winamp 5.5+ ou Superior.

%encoder%

Retorna o Codificador, ex.: LAME 3.97
Winamp 5.3+ ou Superior.

%ISRC%

International Standard Recording Code, ou ISO 3901 (Info)
Winamp 5.3+ ou Superior.

%replaygain_track_gain%

Retorna o campo Ganho da Faixa (ex. -3.16 dB), se existir.
Winamp 5.3+ ou Superior.

%replaygain_album_gain%

Retorna o campo Ganho do Álbum, se existir.
Winamp 5.3+ ou Superior.

%replaygain_track_peak%

Retorna o pico do Ganho da Faixa, se existir.
Winamp 5.3+ ou superior.

%replaygain_album_peak%

Retorna o pico do Ganho do Álbum, se existir.
Winamp 5.3+ ou Superior.

%gain%

Retorna o valor do Ganho de Volume, se existir.
Winamp 5.3+ ou Superior.

Funções

Notas: Atenção aos espaços após virgulas. $if(%title%, Tem Um Título, Não Tem Um Título) irá exibir
“ Tem Um Título” (com espaço no início)
e não “Tem Um Título”.
A forma correta é $if(%title%,Tem Um Título,Não Tem Um Título).

Controle de Fluxo

[...] Seção Condicional

$if

Parâmetros: (a, then, else)
Retorna: Se a contém pelo menos um campo não-vazio válido, then é avaliado e retornado, caso contrário passa ao parâmetro else. Observe que $if(A,A,B) é equivalente a $if2(A,B)
Exemplo: $if(%artist%,Tem uma tag de artista,Não tem uma tag de artista)

$if2

Parâmetros: (a, else)
Retorna: Se a contém um campo não-vazio válido, a é avaliado e retornado, caso contrário passa ao parâmetro else.
Exemplo:$if2(%album%,sem álbum)

$if3

Parâmetros: (a1, ..., aN, else)
Retorna: Se algum valor de a1... aN contém um campo não-vazio válido, o valor é avaliado e retornado, caso contrário é usado o parâmetro else.
Exemplo:$if3(%artist%,%filename%,%album%,sem campo)

$decode

Parâmetros: (a, b1, c1, ..., bN, cN, else)
Retorna: cN ou else. Função da seleção do usuário (switch/case), que determina que o parâmetro bN e a são iguais e retornam o parâmetro cN correspondente. Se nenhum corresponde ele retorna o parâmetro final else.
Exemplo:$decode($fileext(%filename%),MP3,MPEG-1 Layer 3,MP4,MPEG-4 Container,Outro)

Winamp 5.2 ou Superior.

$ifgreater

Parâmetros: (x1, x2, then, else)
Retorna: Compara os números inteiros x1 e x2, se x1 é maior que x2, then é avaliado e seu valor retornado. Caso contrário a parte com else é avaliada e seu valor retornado.
Exemplo: $ifgreater(%rating%,2,Música melhor avaliada,Não é a música melhor avaliada)

Winamp 5.2 ou Superior.

$iflonger

Parâmetro: (a1, x1, then, else)
Retorna: Compara se o tamanho da sequência a1 é tão grande quanto os caracteres de x1, se a1 é compatível, a parte de then é avaliada e seu valor retornado, caso contrário a parte com else é avaliado e retornado.
Exemplo: $iflonger(%title%,15,Um título longo,Um título curto)

Winamp 5.2 ou Superior.

$IfStrEqual2

Parâmetros: (A, B, then, else)
Retorna: Se A = B processa then senão processa else
Exemplo: $IfStrEqual2(%year%,2007,Novo!:,Velho:)
Exemplo: $IfStrEqual2(%type%,1,'(Vídeo)','(Áudio)')

Winamp 5.2 ou Superior.

$IfStrEqual

Parâmetros: (A, B, then)
Retorna: Se A = B processa then senão não faz nada
Examplo: $IfStrEqual(%year%,2007,Novo!:) Exibirá “Novo!” se a mídia foi lançada em 2007.

Winamp 5.2 ou Superior.

Operadores Lógicos

$and

– Removido –
Parâmetros: (%a%, %b%) – Irá checar se os campos estão preenchidos.
Retorna: 1 se os campos %a% e %b% estão preenchidos. Se não estiver preenchido será uma sequência vazia. (?????)
Exemplo:$if($and(%artist%,%title%),Tem os campos artista e título,Um campo está faltando)

Winamp 5.2 ou Superior.

Operadores Aritméticos

$mod

Parâmetros: (x1, x2)
Retorna: O resto da divisão de x1 por x2
Exemplo: $mod(21,8) retorna “5”.

Winamp 5.2 ou Superior.

$div

Parâmetros: (x1, x2)
Retorna: x1 / x2. Resultado da divisão de x1 por x2
Exemplo: $div(60,10)

Winamp 5.2 ou Superior.

$mul

Parâmetros: (x1,x2,...,xn) - Lista de números para multiplicar
Retorna: x1 * x2 * ... * xn. A multiplicação dos números informados
Exemplo: $mul(7,8,3,4)

Winamp 5.2 ou Superior.

$muldiv

Parâmetros: (x1, x2, x3)
Retorna: x1 * x2 / 3. x1 multiplicado por x2, dividido por x3. O valor é arredondado para o inteiro mais próximo.
Exemplo: $muldiv(10,6,3) retorna “20”.

Winamp 5.2 ou Superior.

$sub

Parâmetros: (x1,x2,...,xn) - Lista de números para subtrair
Retorna: x1 - x2 - ... - xn. O resultado de x2...xn subtraído de  x1.
Exemplo: $sub(25,1,3,2,3)

Winamp 5.2 ou Superior.

$add

Parâmetros: (x1,x2,...,xn) - Lista de números para somar
Retorna: x1 + x2 +...+ xn. A soma de todos os números informados
Exemplo:$add(2,3,%playcount%,%rating%)

Winamp 5.2 ou Superior.

$greater

Parâmetros: (x1, x2) - Comparar dois números
Retorna: 1 se x1 é maior que x2, caso contrário retorna nada. Idêntico quando usar $ifgreater()
Exemplo: $greater(3,2) – observe que não aparenta funcionar dentro de uma função $if().

Winamp 5.2 ou Superior.

$max

Parâmetros: (x1,...,xn) - Compara uma lista de números
Retorna: O maior número dentro os argumentos informados
Exemplo: $max(7,8,3,4)

Winamp 5.2 ou Superior.

$min

Parâmetros: (x1,...,xn) - Compara uma lista de números
Retorna: O menor número dentro dos argumentos informados
Exemplo: $min(7,8,3,4)

Winamp 5.2 ou Superior.

String Operations

$lower

Parâmetros: (a1)
Retorna: Converte a1 para minúsculas

Exemplo: $lower(%title%)

$upper

Parâmetros: (a1)
Retorna: Converte a1 para maiúsculas
Exemplo: $upper(%title%)

$replace

Parâmetros: (a1, a2, a3)
Retorna: a1 com ocorrências de a2 será substituído por a3
Exemplo:$replace(dum,u,o) escreverá “dom”.

Winamp 5.2 ou Superior.

$left

Parâmetros: (a1, x1)
Retorna: O primeiro caractere (x1) de a1
Exemplo:$left(%title%)

Winamp 5.2 ou Superior.

$right

Parâmetros: (a1, x1)
Retorna: O último caractere (x1) de a1
Exemplo:$right(%title%)

Winamp 5.2 ou Superior.

$len

Parâmetros: (a1)
Retorna: A quantidade de caracteres em a1
Exemplo:$len(%artist%)

Winamp 5.2 ou Superior.

$substr

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $substr()

Winamp 5.2 ou Superior.

$strstr

Parâmetros: (a1, a2)
Retorna: Índice da primeira ocorrência da sequência a2 dentro a1
Exemplo: $strstr(aacbbabb,ab) retorna “6”.

Winamp 5.2 ou Superior.

$strrchr

Parâmetros: (a1, a2)
Retorna: Índice da última ocorrência do caráter de a2 dentro de a1
Exemplo: $strrchr(aacbbabb,a) retorna “6”.

Winamp 5.2 ou Superior.

$strlchr

Parâmetros: (a1, a2)
Retorna: Índice da primeira ocorrência do caráter de a2 dentro de a1
Exemplo: $strlchr(aacbbabb,a) retorna “1”.

Winamp 5.2 ou Superior.

$strchr

Parâmetros: (a1, a2)
Retorna: Índice da primeira ocorrência do caráter de a2 dentro de a1
Exemplo: $strchr(aacbbabb,a) retorna “1” (é o mesmo que $strlchr() ??).

Winamp 5.2 ou Superior.

$shortest

Parâmetros: (a1, a2)
Retorna: a1 ou a2 baseado em qual das duas tem o menor tamanho.
Exemplo: $shortest(%album%,%folder%)

$longest

Parâmetros: (a1, a2)
Retorna:a1 ou a2 baseado em qual das duas tem o maior tamanho.
Exemplo: $longest(%album%,%folder%)

$abbr

Parâmetros: (a1, x1)
Retorna: a1 abreviado.
Exemplos: $abbr(%album%) converte o nome do álbum como em  “Final Fantasy VI” passa a ser “FFVI”.
$abbr(Formatação Avançada de Título,10) passa a ser “FAT”.
$abbr(%album%,10) escreve um nome de álbum abreviado somente se este for maior que 10 caracteres.
x1 é opcional. Se definido a1 só será abreviado quando seu tamanho exceder ao valor de x1.

$padcut

Parâmetros: (a1, x2)
Retorna: a1 será preenchido com espaços ou cortado, resultando numa sequência com a quantidade de caracteres de x2
Exemplo: $padcut(%artist%,15)

$cut

Parâmetros: (a1, x2)
Retorna: a1, cortará após o número de caracteres do parâmetro x2.
Exemplo: $cut(%comment%,15) escreve os 15 primeiros caracteres do campo de comentários e ignora o resto.

$pad

Parâmetros: (string, num, padstr)
Retorna: sequência preenchida pelo menos com caracteres numéricos, com espaços por padrão, ou especificar um caractere (ou repetindo sequência) como padstr.
Exemplo:$pad(%artist%,40), ou $pad(%artist%,40,.) para preencher com períodos.

$lpad

Parâmetros: (string, num, padstr)
Retorna: sequência preenchida pelo menos com caracteres numéricos à esquerda, com espaços por padrão, ou especificar um caractere (ou repetindo sequência) como padstr.
Exemplo:$lpad(%tracknumber%,3), ou $lpad(%tracknumber%,3,0) para preencher com zeros na frente.

Apenas Winamp 5.2+ ou superior.

$trim

Parâmetros: (a1)
Retorna:a1 sem espaços à esquerda ou à direita
Exemplo:$trim(%artist%)

Apenas Winamp 5.2+ ou superior.

$repeat

Parâmetros: (a1, x1)
Retorna:a1 repetido x1 vezes.
Exemplo:$repeat(*,%rating%)

($fill() função executada no Winamp 5.2 e foi removida após 5.21.)

$caps

Parâmetros: (a1)
Retorna: letra minúscula de a1, com a primeira letra de cada palavra em maiúscula
Exemplo: $caps(%artist%)

$caps2

Parâmetros: (a1)
Retorna:a1, com a primeira letra de cada palavra em maiúscula
Exemplo: $caps2(%artist%)

$fileext

Parâmetros: (a1)
Retorna: extensão do arquivo de a1
Exemplo:$fileext(%filename%)

$filepart

Parâmetros: (a1)
Retorna: nome do arquivo de a1 (ou seja, com o caminho da pasta)
Exemplo: $filepart(%filename%)

$filename

Parâmetros: (a1)
Retorna: nome do arquivo de a1 (ou seja, sem o caminho da pasta)
Exemplo: $filename(%filename%)

$directory

Parâmetros: (a1, x1)
Retorna: nome do diretório de a1, depois de passar por x1 níveis
Exemplo: $directory(%filename%,2)
O exemplo acima terá saída “Música” se o caminho completo do arquivo é “C:\Músicas\Ludov - O Paraiso [EP]\Andar de Bicicleta.mp3”. x1 é opcional, padrão é 1.

Winamp 5.2+ ou Superior.

$split

Parâmetros: (a, token, which)
Retorna: Dividindo o disco e/ou a sequência de faixa, ex. para mostrar "1" ao invés de "1/11"
Exemplo: [$num(%track%,2)$IfStrNotEqual($split(%track%,/,1),,/$num($split(%track%,/,1),2))]

Winamp 5.5+ ou Superior.

$ext

Parâmetros: (a1)
Retorna: extensão do arquivo de a1
Exemplo: $ext(%filename%)

Winamp 5.2+ ou Superior.

$hex

Parâmetros: (x1, x2)
Retorna:x1 formatado como hexidecimal para número de dígitos x2, preenchidos à com zeros.
Exemplo: $hex(%tracknumber%,4)

Winamp 5.2+ ou Superior.

$dec

Parâmetros: (x1, x2)
Retorna:x1 zero preenchido à esquerda para formar x2 dígitos.
Exemplo: $dec(%tracknumber%,5)

Winamp 5.2+ ou Superior.

$num

Parâmetros: (x1, x2)
Retorna:x1 zero preenchido à esquerda para forma x2 dígitos.
Exemplo: $num(%tracknumber%,5)

Winamp 5.2+ ou Superior.

$null

Parâmetros: Qualquer número de parâmetros
Retorna: Nada.
Exemplo:$null()
Não faz absolutamente nada. É útil principalmente em locais onde um parâmetro é necessário, mas você quer uma sequência vazia.

Winamp 5.2+ ou Superior.

$PathLPart

Parâmetros: (a1, x1)
Retorna: O primeiro x1 níveis de a1
Exemplo:$PathLPart(%filename%,2)
O exemplo acima terá saída “C:\Músicas” se o caminho completo do arquivo é “C:\Músicas\Ludov - Eras Glaciais [EP]\02 - Contêiner.mp3”.

Winamp 5.3+ ou Superior.

$PathRPart

Parâmetros: (a1, x1)
Retorna: O último x1 níveis de a1
Exemplo:$PathRPart(%filename%,2)
O exemplo acima terá saída “Ludov - Eras Glaciais [EP]\02 - Contêiner.mp3” se o caminho completo do arquivo é “C:\Músicas\Ludov - Eras Glaciais [EP]\02 - Contêiner.mp3”.

Winamp 5.3+ ou Superior.

$PathLTrim

Parâmetros: (a1, x1)
Retorna:a1 menos o primeiro x1 níveis de a1
Exemplo:$PathLTrim(%filename%,1)
O exemplo acima terá saída “Músicas\Ludov - Eras Glaciais [EP]\02 - Contêiner.mp3” se o caminho completo do arquivo é “C:\Músicas\Ludov - Eras Glaciais [EP]\02 - Contêiner.mp3”.

Winamp 5.3+ ou Superior.

$PathRTrim

Parâmetros: (a1, x1)
Retorna:a1 menos o último x1 níveis de a1
Exemplo:$PathRTrim(%filename%,1)
O exemplo acima terá saída “C:\Músicas\Ludov - Eras Glaciais [EP]” se o caminho completo do arquivo é “C:\Músicas\Ludov - Eras Glaciais [EP]\02 - Contêiner.mp3”.

Winamp 5.3+ ou Superior.

Variáveis

$puts

Parâmetros: (nome, valor)
Retorna: Armazena valor para a variável nomeada em nome. Pode ser recuperado mais tarde usando $get(nome). Use $put() para armazenar o valor e também devolver com uma função.
Exemplo: $puts(artist_title,%artist% - %title%)

Winamp 5.2+ ou Superior.

$put

Parâmetros: (nome, valor)
Retorna: valor. Armazena valor na variável nomeada nome. Pode ser recuperado mais tarde usando $get(nome). Use $puts() para armazenar um valor sem retornar ele.
Exemplo: $put(artist_title,%artist% - %title%)

Winamp 5.2+ ou Superior.

$get

Parâmetros: (nome)
Retorna:valor da variável de nome previamente definida pela função $put() ou $puts()
Exemplo: $get(artist_title)

Winamp 5.2+ ou Superior.

Informação do Sistema

$systime_second

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $systime_second()

Winamp 5.2+ ou Superior.

$systime_minute

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $systime_minute()

Winamp 5.2+ ou Superior.

$systime_hour

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $systime_hour()

Winamp 5.2+ ou Superior.

$systime_day

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $systime_day()

Winamp 5.2+ ou Superior.

$systime_month

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $systime_month()

Winamp 5.2+ ou Superior.

$systime_year

Parâmetros: TODO: (a1, a2)
Retorna: TODO:a1
Exemplo: TODO: $systime_year()

Winamp 5.2+ ou Superior.

Outros. (TODO)

$select

$tab

$crlf

$char

Exemplos

[ .... ] - exibe o contéudo do cochete somente se ao menos uma das referências dentro dos campos for encontrada, ex.[%artist% - ] irá mostrar:  "Artista - "  somente se a tag %artist% é preenchida, caso contrário não irá mostrar nada (incluindo os hífens e espaços).

Sintaxe Padrão ATF

Sintaxe: [%artist% - ][%album% - ][$num(%track%,2) - ]$if2(%title%,$filepart(%filename%))
Exemplo: Ludov - Minha Economia [EP] - 04 - Toda Essa Confusão

Sintaxe Avançada ATF

Sintaxe: [$if2(%albumartist%,%artist%) - ][%album% - ][$num(%track%,2) - ]
$IfStrNotEqual(%artist%,$if2(%albumartist%,%artist%),[%artist% - ])
[$if2(%title%,$filepart(%filename%))][$if($fileext(%filename%),'   [  ',)]
[%year%  |  ][$fileext(%filename%) ][$if(%bitrate%, '|'  ,)][%bitrate% 'kbps' ]
[$if($fileext(%filename%),']',)][   $repeat(*,%rating%) ]
Retorna: AlbumArtist - Album - ## - Artist - Title  [ Year | Ext | Bitrate ]  StarRating
se AlbumArtist é diferente de TrackArtist, caso contrário exibe formato padrão.
Exemplo: Various - Arcana - 01 - Tripswitch - Calabi Yau   [ 2006  |  mp3  |  205 kbps ]  *****