Karaokê em Lua, passo a passo

Para discussões gerais em Português

Karaokê em Lua, passo a passo

Unread postby passarodoartico » Wed Jan 26, 2011 2:36 am

Extraido do blog do zheo……www.my.opera.com/zheo
Autor: Zheo (membro do J-R)
tradução do espanhol para o português: Marcelo NC

Motivo da tradução: os brasileiros não compartilham nada


[TUTORIAL] Efeitos em Lua4 Parte. 1


A partir do dia de hoje, começarei com este tutorial, no qual procederei a explicar-lhes, da forma mais clara possível, a maneira correta de como fazer os EFEITOS (fx) de um karaokê para animes.


1- O TIPO DE FONTE E DE COR de um karaokê:

Já faz mais de 4 anos que eu faço FXs, e, a cada ano que passa, vou aprendendo coisas novas e novas técnicas... No entanto, o principal é ter em mente os seguintes aspectos na hora de fazer um FX?
1. A fonte (Font) do karaokê deve ser clara e simples, para que se possa ler facilmente.
2. A cor deverá ser parecida com as cores do video (note que sempre uma das cores do video ressaltará mais que as outras, sendo a melhor)
3. O FX(efeito) do karaoke e a tradução devem estar em sintonia (em acordo) com o tipo de video que vocês está fazendo (afinal, não faz sentindo letras sambando coloridas em um video de música triste)
Tendo estes três pontos acima em mente, teremos um bom FX (efeito), fazendo com que nosso karaokês fiquem lindos.


[TUTORIAL] Efeitos em Lua4 Parte. 2
Bom dia a todos. Queria dizer, primeiramente, que me alegra muito o fato de haver pessoas interessadas neste tutorial.. Assim, espero que seja de muita utilidade para vocês. Na verdade, nem sabia se continuaria este tutorial, já que tive uma discussão esta semana que me deixou muito mal. Adoro ensinar quando me pedem, mas têm muitos idiotas que ficam por aí dizendo que eu nunca ensinei eles, e isso me deixa muito bravo, pois odeio essa putice desse pessoal.. Mas como me comprometi, vou finalizar esses tutoriais.

No tutorial passado, já vimos como deve estar composto um bom karaokê, com FONTE, COR e EFEITOS(fx) adequados ao tipo de vídeo. Hoje, então, veremos alguma coisa referente à programação básica, e a forma correta de compor um SCRIPT... Assim sendo, precisaremos dos seguintes materiais:

1-Notepad++ (Baixar)http://downloads.sourceforge.net/notepad-plus/npp.5.1.3.Installer.exe?modtime=1230567121&big_mirror=0
2-Aegisub (Baixar) http://www.malakith.net/aegiwiki/Windows_downloads
3-SCRIPT básico do Zheo (Baixar) http://www.mediafire.com/?tggfytklonz

Assim que você tiver a mão essas três coisas, poderemos continuar com nosso tutorial na próxima aula....xD...Não, continuaremos agora mesmo....

2- OS SEUS PRIMEIROS PASSINHOS:


Uma das coisas que devemos recordar, é que este tutorial é feito para pessoas que já tem alguma noção de como fazer um karaokê (dividir as silabas com [\k20] etc) e que tenham noção das TAGS (códigos para efeitos de karaokê, tipo {\b} fica negrito, etc).
Se ainda não sabem nada disso, vão lendo um pouco do tutorial aí de ass, antes de começarmos com LUA: Tutorial .ass
http://animesubs.org/Foro/viewtopic.php?f=12&t=608 (espanhol, porém o mais completo que existe)

Agora sim. Agora que você já sabe os códigos ASS, poderemos continuar com nosso tutorial. Primeiramente, abram o SCRIPT básico através do programa Notepad++... Você verá que o código ficou colorido, e isso facilitará muito a nossa leitura.

A primeira coisa que vemos é nada mais nada menos que a CONFIGURAÇÃO DO MACRO, que na verdade é uma pequenina programação que fará com que aparesça um pequeno quadrado progressivo na caixa branca do Aegisub no momento de aplicar nosso FX.... Também está contida nessa parte a configuração do UNDO (control Z) e o estilo no qual se aplicará o FX... Nesse meu exemplo, eu escolhi o estilo DEFAULT, porque presumi que você fará só um estilo.

Mas se você quiser mudar o nome do estilo ao qual será aplicado o Efeito (fx), para aplicar esse efeito a um ou mais estilos que você criou lá no Aegisub, é só ir na linha 22
(l.style == "Default") then

e, então, mudamos o Default pelo nome do estilo que tu criou lá... Mas se você quer aplicar a mais de um estilo, lembre-se que temos que incluir um OR entre eles.
(l.style == "Estilo1" or l.style == "Estilo2" or l.style == "Estilo3") then

O resto do código do lindíssimo Macro que eu fiz não é reconfigurável, pessoal.... Então nem pensem em mudar os valores....


Logo abaixo, depois de passar este macro lindo que eu fiz, é que vem a diversão... a parte dos EFEITOS. No comecinho, nos deparamos com a CONFIGURAÇÃO X-Y, ou seja o ALINHAMENTO do nosso belo karaokê.... Para aprendermos, vamos nos ater a mudar apenas o valor LOCAL Y(linha 47), no qual o número 25 indica o espaço que há entre a extremidade de cima do vídeo até o karaokê... Se auemntarmos este valor, o karaokê vai baixar deposição.
local y=line.margin_v + 25

Se queremos que o nosso karaokê ganhe um alinhamento À direita ou à esquerda, devemos mudar lá no gerenciador de estilos do Aegisub, não aqui....

Agora vem a parte dos FX INICIAL, SILABAS ESTÁTICAS e FX DE SILABAS...
Hoje, veremos e aprenderemos apenas e tão somente a composição do bloco (como ele se compõe) e a ordem hierarquica, que deveremos seguir rigorosamente..... O modo como programar isso eu vou deixar pra próxima aula....

A composição do bloco é a seguinte:
l = table.copy(line)#Isso vai fazer com que a linha seja copiada pra não dar merda, então sempre deve ir na programação.
l.text = string.format("{\\an5\\pos(%d,%d)\\1c%s}%s",x,y,line.styleref.color1,syl.text_stripped)#Ahammm..Aqui é que está a magia do FX(efeito) Mais abaixo eu vou detalhar tim-tim por tim-tim isso daqui.
l.start_time = line.start_time#Configuração do tempo inicial do efeito(FX)
l.end_time = line.start_time+syl.start_time#Configuração do tempo final do FX(efeito)
l.layer=0#Número da Camada/Layer que o karaokê vai ficar(dá pra deixar um texto por sima do outro, não sabia? Quanto menor o número, mais pra baixo vai ficar em relação aos outros textos).
subs.append(l)#Isso faz com que o bloco se finalize..

Espero que tenham ficado bem claras essas partes fáceis... Agora vou explicar a parte um pouco mais complicada, que é a parte do l.text.
Dando uma boa olhada na linha, nos deparamos com o STRING.FORMAT, que é aquele que contém o FX e a configuração desse FX.
Então, vêm as chaves "{ }", e, no interior delas, irá ser colocado o FX.
A cada vez que nos colocamos uma Tag de .ass, nós devemos colocar um duplo \\, por exemplo: \\an5.
Mas, ATENÇÃO, se vocês se deram conta, tem um %S, que é o nosso texto aí na formula... Se apagarmos isso daí, não vai aparecer nada,,,, Agora, se querem colocar um desenho em .ass, podem tirar isso daí....
Após os %s, vem a declaração no FX, que é como se fosse a configuração de como ele funcionará.
Um dos pontos mais difíceis disso são as declarações de algumas Tags de ass, como, por exemplo, os \pos, os \move ou outro tag de característica numérica, para os quais temos que colocar um %d Por Exemplo: \\pos(%d,%d).
Já para os Tags Alfanúmericos(com letras e números juntos) como por exemplo \1c, \2c, \3c, \4c, \1a, \2a, \3a, \4a, \{p1}, etc, nós colocamos então somente um %s. Por Exemplo: \\1c%s

Já de posse da composiçaõ do FX, a ordem correta seria assim: FX, TEXTO, CONFIGURACION FX.
l.text = string.format("{\\an5\\pos(%d,%d)\\1c%s}%s",x,y,line.styleref.color1,syl.text_stripped)

Se vocês conseguiram se dar conta, toda vez que eu ponho um %d ou que eu ponho um %s, eu tenho que declarar na mesmíssima ordem em que vai na parte do FX... Tenham muito cuidado com essa parte, porque a maioria dos erros serão por uma má declaração nessa parte.

Logo após a parte dos EFEITOSm vem a parte de registro do macro, que é o que fará com que apareça no menu AUTOMAÇÃO (sairá JR-F FX!, nome do fansub do Zheo)
Espero que tenha ficado claro esta parte, especialmente a do FX e de sua declaração, e, qualquer duvida, escrevam nos comentários e eu os responderei com muito gosto.


[TUTORIAL] Efeitos Lua4 Parte. 3
Bom, falta pouco pra que terminemos este tutorial, e espero que estejam gostando.
Nesta terceira parte, nós vamos ver a parte mais avançada da programação, e para isso necessitamos do Notepad++ e do Aegisub, pra ir carregando em Lua e ir vendo como vai ficando... Uma dica para que o Aegi carregue mais rapidamente e em tempo real os Scripts seria primeiro carregar o script normalmente, e, a cada vez que modificarem ele, somente pressionem Ctrl+Alt e cliquem no ícone de Automatização (e abaixo lhes dirá que todos os scripts foram recarregados)

3- MEU PRIMEIRO E GRANDIOSO FX
Na aula passada, eu expliquei o conteúdo de cada bloco, e como fazer um FX simples.
Hoje, vamos ver como fazer múltiplas camadas (layers) e conseguir, assim, im FX mais avançado, e, para que isso ocorra, veremos algumas funções que nos ajudarão a conseguir nossa bela meta!!!!

*For:
A sentença FOR nos proporcionará a repetição de linhas, e, para poder declarar ela, vamos ter que dar a ela um valor de inicio e um de final, e , obviamente, uma variável que contenha esses valores.
for i= 0,10 do
BLOQUE
end


Nesse exemplo aí, a nossa variável é “i” e o valor de início é “0”, assim como o de final é “10”..... Isto fará com que a linha se repita 11 vezes (já que o zero é contado como um número também)

Um exemplo em Lua4 ficaria assim:
l = table.copy(line)
for i=0,14 do
l.layer=0
l.text = string.format("{\\pos(%d,%d)\\an5\\shad0\\3c&HFFFFFF&\\1a&HFF&\\3a&HF5&\\bord%d\\t(\\bord0\\3c%s)}%s",x,y,1+ i*1,line.styleref.color2,syl.text_stripped)
l.start_time=line.start_time+syl.start_time
l.end_time=l.start_time+syl.duration
subs.append(l)
end

Esse é o meu favorito, é o famoso GLOW *O*. Se aplicarem ele no Script de vocês, vocês vão ver o efeito de luz que ficará atrás de cada sílaba e se verem o seus .ass, perceberão que a linha se repeter. Agora, reparem em um detalhe: "1+ i*1", aqui eu somei 1 ao valor de i e multipliquei ele por 1, gerando, assim, uma lista de números, que, neste caso são: "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14", MAS, se queremos que vá de 2 em 2, é só mudarmos o número multiplicador por 2, ao invés de 1. ATENÇÃO. Sempre se termina o Bloque com um END, pois dessa forma diremos que só repita este procedimento até aí, senão dará erro.
Com o FOR usado para fazer múltiplas camadas (layers), podemos brincar com as posições, deixando tudo mais divertido, e, para que isso ocorra, contamos com...

*Math.random():
Esta função matemática nos proporcionará resultados aleatórios (randoms) e se a juntarmos com FOR podemos fazer posições ou qualquer coisa aleatória.
x+math.random(-5,15)

Neste exemplo aí, vemos que eu somei ao X valores aleatórios que vão desde o -5 até o 15. A quantidade de números que nos dará será a mesma que indicamos no FOR.
Agora, a estrutura do math.random é simples, o primeiro valor deve ser menor que o segundo, SEMPRE!
l = table.copy(line)
for j = 0,5 do
l.text = string.format("{\\fad(100,200)\\bord0\\an5\\move(%d,%d,%d,%d)\\1c%s\\t(\\bord0.2)}%s", x,y,x-math.random(-5,50),y+math.random(10,50),line.styleref.color1, syl.text_stripped)
l.start_time=line.start_time+syl.start_time
l.end_time=l.end_time+syl.duration+ math.random(-100,100)
l.layer = 2
subs.append(l)
end


Neste FX que eu digitei rapidinho, as posições partirão em X-Y mas logo irão em posições diferentes, por causa da utilização do math.random, e, se vocês notarem, eu também apliquei isso à linha de tempo final, fazendo com que cada silaba tenha um tempo diferente.
*Arrays:
Os arrays nada mais são do que listas, de onde podemos aramazenar, informações, números ,ou palavras, ou misturar isso tudo
valor_x = {"2", "5", "7", "10"}
color = {"FFFFFF", "000000"}


Aqui nós temos 2 tipos de array, o primeiro é do tipo numérico e o segundo é do tipo misto. Para podermos declarar estes array podemos escolher uma das seguintes formas: 1-Independente
2-Mediante uso de um FOR

A forma independente é escrevendo manualmente qual valor da lista nós queremos?
valor_x[2]

Neste caso, o programa nos devolverá “5”, já que este é o segundo elemento de nossa lista de exemplo de cima, Agora podemos brincar e aplicar o math.random
valor_x[math.random(1,4)]

O math.random vai desde o número 1 até o 4, já que são só 4 os elementos desse array que eu criei, então fiquem atentos nisso né .

Agora msotrarei a forma com FOR, que é pondo os “valores limite” de acordo com a quantidade de valores dentro dos teus array.
l = table.copy(line)
for j=0,3 do
cora_pos_x = {'15', '-15', '15', '-15'}
cora_pos_y = {'25', '-25', '-25', '25'}
l.layer = 4
l.text = string.format("{\\fad(10,100)\\bord0\\an5\\move(%d,%d,%d,%d)\\1c&H5A5DD2&}{\\p2}m 16 30 b 28 22 30 18 30 14 b 32 8 22 -2 16 10 b 10 -2 0 8 2 14 b 2 18 4 22 16 30 {\\p0}", x,y,x+cora_pos_x[j*1+1],y+cora_pos_y[j*1+1], syl.text_stripped)
l.start_time=line.start_time+syl.start_time
l.end_time=l.start_time+(syl.duration*2)
subs.append(l)
end
end


Se vocês se deram conta, são 2 array, com 4 valores cada, e o FOR vai desde o 0 até o 3 (lembram que o 0 é como se fosse um número)
E, para aplicar os valores desses array, coloquei "x+cora_pos_x[j*1+1]", que, como já tinha explicado antes, fará com que se crie uma lista de números, sendo neste caso específico, cada número sendo um valor o array.
Array >cora_pos_x = {'15', '-15', '15', '-15'}
Declaración >x+cora_pos_x[j*1+1]
Resultado1 >x+15
Resultado2 >x+-15
Resultado3 >x+15
Resultado4 >x+-15


Espero que tudo tenha ficado claro, senão, podem perguntar :P

*If Then Else:
Agora vamos à condicional IF, que é a que fará nossa magía verdadeira ou falsa.
if syl.duration == 20 then
rot_z = 90
else
rot_z = 180
end


Esse exemplo pode ser lindo (interpretado) da seguinte forma: "SE syl.duration é igual porém igual a 20, então ROT_Z será igual a 90, senão, ROT_Z será igual a 180. FIMN."

Aqui aplicamos o verdadeiro e o falso, dependendo dos casos que descrevemos aí em cima, e também criamos uma variável (rot_z) que podemos aplicar na declaração do nosso FX
l = table.copy(line)
for j=0,10 do
star_pos_x = {'5', '10', '15', '20', '25', '-5', '-10', '-15', '-20', '-25', '0'}
star_pos_y = {'0', '-25', '-20', '-15', '-10', '-5', '25', '20', '15', '10', '5'}
if syl.duration == 20 then
rot_z = 90
else
rot_z = 180
end
l.layer = 4
l.text = string.format("{\\fad(10,100)\\org(%d,%d)\\bord0\\shad0\\an5\\move(%d,%d,%d,%d)\\1c&HFFFFFF&\\fscx%d\\fscy%d\\t(\\frz%d)}{\\p1}m 0 0 l 0 -13 l 1 0 l 14 -7 l 2 1 l 14 7 l 1 2 l 1 15 l 0 2 l -13 7 l -1 1 l -13 -7 {\\p0}", x,y,x,y,x+math.random(star_pos_x[j*1+1],30),y+star_pos_y[j*1+1], math.random(35,50), math.random(35,50), rot_z, syl.text_stripped)
l.start_time=line.start_time+syl.start_time
l.end_time=l.start_time+(syl.duration*2)+math.random(syl.duration, syl.duration*2)
subs.append(l)
end
end



[TUTORIAL] Efeitos em Lua4 Parte 4 e Final
Tudo que é bom chega ao fim... E, com uma semana de atraso, este tutorial se acaba,
Peço desculpas pela demora, mas não havia tido tempo para escrever aqui. Já que a aula de hoje será curtam darei alguns links pra que vocês possam seguir aprendendo.


4- LER E APLICAR

Uma das coisas que as pessoas tem me perguntado é a respeito de tags que vêm com o Aegisub para a Automatização, como por exemplo o syl.duration, syl.text, line.width, etc.
Para esssas Tags, vocês podem ir ao Tutorial do Karaskel.lua http://aegisub.cellosoft.com/docs/Autom ... raskel.lua
e ir vendo os diferentes tipos de Tags. Também temoso Tutorial do Utils.lua http://aegisub.cellosoft.com/docs/Autom ... _utils.lua de onde podemos tomar algumas funções (minha favorita é a interpolate) e, por último, uma boa olhada nas tags em geral no Tutorial de Lua 4 http://aegisub.cellosoft.com/docs/Lua_Referencedo Aegisub.

Agora, se quiserem ir mais além, visitem na internet o site Lua.org Manual de Lua 5.1, em português http://www.lua.org/manual/5.1/pt/. Aí encontrarão mais funções e diversas coisas para que possam aplicar.

Como última dica, recordem que, para fazer um FX, devem-se seguir os seguintes passos:

1-Imaginar o FX
2-Pensar matematicamente como se faria esse fx (Tag .ass+Tag Lua)
3-Transcrever esse pensamento (do que tem que ser feito) em um arquivo
4-Ir testando e modificando aos poucos (se for necessário)
5-No aborrecer-se se não conseguir de priemira, ninguém consegue de primeira
6-Criar os teus próprios Scripts e, desta forma, ser feliz por esta conquista ^^


Espero que tenham gostado deste mini tutorial de Lua4 para Aegisub, e, se tiver qualquer dúvida, deixem seu msn nos comentários, Saúdo a todos que já passaram e os ainda passam por aqui, e nas próximas vezes, verei o que faço.



[Tutorial] Carregar e usar arquivos LUA no Aegisub

Este tutorial é o mesmo que coloquei no Blog do Zheo, e o coloco aqui também para evitar a fadiga de escrever denovo. Tenho que informar que eu uso a última versão do Aegisub, então pode ser que algum script apresente algum problema com versões anteriores.

Como carrego scripts LUA no Aegisub?

É muito fácil..uma vez carregados nossos ass, vamos ao módulo de automatização do aegisub
Image


Ou, em caso de defeito..menú automatização-->automatização….e faremos o seguinte…

Image


Se tudo correu bem…deve aparecer o seguinte…

Image


Se fizemos algo errado…aparecerá algo como isto..


Image

Levem em conta que, se ocorrerem erros aqui, não poderão usar seu script até que corrijan os erros. Uma vez corrigidos os erros, simplesmente damos um click na linha do nosso script (tudo isso sempre no modulo de automatização) e damos click en recarregar

E pronto!

Como aplico meus scripts ao meus ass?

2 maneiras…

1- Macro (sempre e quando tiver em teu script a linha ”aegisub.register_macro(Parametros)”)

A forma rápida e que menos recomendo, faz o mesmo que o “karaoke templater” , ou seja, modifica o script atual..simplesmente vamos em Automatização e selecionamos o nosso filtro..

Image


2- Exportar (sempre e quando tenha no teu script a linha ”aegisub.register_filter(Parametros)”)

Essa é a que eu uso. Ela me agrada mais porque posso gerar 1 ass para cada mudança que faço, e, depois, posso comparar os resultados, além de podermos carregar mais de um filtro por vez, o que a torna ideal se nós tivermos um efeito de varios scripts (isso ocorre raramente, ..mas tenho que mencionar isso)

Vamos em Arquivo-->Exportar legenda e selecionamos os scripts que queremos aplicar

Image

Aqui tambén podem ocorrer erros..

Então menciono que existem os erros de compilação e os erros de execução.. Os primeiros são erros de sintaxe na programação (que aparecem ao carregar nosso script)... Os segundos são burradas em nossa lógica, ou simplesmente coisas que esquecemos (variáveis null, erros nas tags.. elas aparecem quando aplicamos nosso scrimpt.. Por exemplo:

Image


No mais, recordem-se de sempre dar um valor inicial a qualquer variável que declararem.
passarodoartico
{\b1}
{\b1}
 
Posts: 5
Joined: Wed Jan 26, 2011 2:33 am

Re: Karaokê em Lua, passo a passo

Unread postby hikaru-san » Fri Feb 04, 2011 4:10 pm

era o que eu queria saber como funcionava.Ainda tenho receio de criar um.
Poderia mostrar, assim que disponivel, como fazer um do zero. Você mostrou como funciona, como se faz...
Faz pouco tempo estou baixando script em ssa copio os comentários e colo no karaoke. O autoload é mais vantajoso que fazer o que faço.
hikaru-san
Comic Sans MS
Comic Sans MS
 
Posts: 2
Joined: Tue Jan 11, 2011 4:23 pm

Re: Karaokê em Lua, passo a passo

Unread postby rodrigo029 » Sat Mar 12, 2011 4:24 am

ola td bem


eu estava lendo bem mas quando eu tento executar o arquivo .lua no aegisub naum consigo como eu faço para executar no aegisub? tem q fazer funcionara no noteped++ primeiro ? socorro me ajudem por favor?!!!!!!!


agradeço a atenção


meu msn macedo_1234@hotmail.com
rodrigo029
{\b1}
{\b1}
 
Posts: 7
Joined: Mon Nov 15, 2010 5:37 pm

Re: Karaokê em Lua, passo a passo

Unread postby manju » Mon Nov 07, 2011 5:48 pm

Bom, nem é tanto que os brasileiros não compartilham, mas a verdade é que dá muito trabalho fazer um tutorial, tanto que algumas pessoas preferem dar exemplos de scripts prontos p/ "mexer" (o próprio desenvolvedor do aegisub fez isso), o Tenka_Muteki também fez (embora o esquema dele seja uma loucura, apesar dos resultados maravilhosos p/ quem soube usar, isso há vários anos atrás e já nem deve mais existir os links), eu mesmo coloquei uns tutoriais no fórum do haitou e do seizu sobre como mexer no karaoke template (só que ambos os fóruns passaram desta p/ melhor) e tem um tópico neste fórum c/ alguns exemplos de script lua bem básicos mas que são um bom começo p/ quem quer aprender.

rodrigo029 wrote:ola td bem


eu estava lendo bem mas quando eu tento executar o arquivo .lua no aegisub naum consigo como eu faço para executar no aegisub? tem q fazer funcionara no noteped++ primeiro ? socorro me ajudem por favor?!!!!!!!


agradeço a atenção


meu msn macedo_1234@hotmail.com

Você precisa carregar o arquivo lua (e ter também um karaoke temporizado p/ fazer funcionar) do jeito que foi descrito no post inicial.....
User avatar
manju
{\move}
{\move}
 
Posts: 29
Joined: Thu Apr 05, 2007 8:14 pm

Re: Karaokê em Lua, passo a passo

Unread postby arthurfogo7 » Wed Aug 26, 2015 7:07 pm

Sei q faz tempo mas to querendo aprender a fazer karaoke .lua e o script basico o link não tá mais disponivel pra download alguem ae que baixou pode upar pra mim baixar
arthurfogo7
{\b1}
{\b1}
 
Posts: 20
Joined: Sat Nov 15, 2014 8:10 pm


Return to Português

Who is online

Users browsing this forum: No registered users and 1 guest