Formatação Avançada de Título

# 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 ] *****