บทเรียนเอฟเฟกต์ในบรรทัด
คาราโอเกะเอฟเฟกต์ในบรรทัด (inline effects) เป็นวิธีการทำเครื่องหมาย คาราโอเกะตามเวลา เพื่อกำหนด เอฟเฟกต์ต่างๆ ให้กับส่วนต่างๆ ของบรรทัดหนึ่ง
โดยตัวมันเอง การทำเครื่องหมายเอฟเฟกต์ในบรรทัดจะไม่ทำอะไรเลย มันจะมีผลเมื่อ สคริปต์เอฟเฟกต์คาราโอเกะ ที่เข้าใจว่า ถูกนำไปใช้กับ คาราโอเกะตามเวลา。
การทำเครื่องหมาย
แท็กเอฟเฟกต์ในบรรทัดเป็นแท็กการเขียนทับ ASS ที่ไม่ถูกต้องในรูปแบบ
\-effectname
, ที่
คือชื่อของเอฟเฟกต์ในบรรทัดที่กำหนดไว้
effectname
แท็กเอฟเฟกต์ในบรรทัดเป็นแท็กการเขียนทับ ASS ที่ไม่ถูกต้องในรูปแบบ
เหมือนแท็กการเขียนทับปกติ แท็กเอฟเฟกต์ในบรรทัดจะมีผลต่อ พยางค์ที่ถูกวางอยู่และพยางค์ถัดไปทั้งหมด จนกว่าจะถึงพยางค์ถัดไปที่มี แท็กเอฟเฟกต์ในบรรทัดอยู่
ที่จุดเริ่มต้นของแต่ละบรรทัด เอฟเฟกต์ในบรรทัดจะถูกรีเซ็ตเป็น ไม่มีอะไร
นี่คือบรรทัดคาราโอเกะตามเวลาที่มีการทำเครื่องหมายเอฟเฟกต์ในบรรทัด:
{\k40}zu{\k20}t{\k42}to {\k32\-paint}e{\k17}ga{\k45}i{\k32}te{\k26}ta {\k24\-cloud}yu{\k55}me
พยางค์เหล่านี้จะได้รับการกำหนดเอฟเฟกต์ในบรรทัดอย่างนี้:
พยางค์ | เอฟเฟกต์ในบรรทัด |
---|---|
zu | (blank) |
t | (blank) |
to | (blank) |
e | paint
|
ga | paint
|
i | paint
|
te | paint
|
ta | paint
|
yu | cloud
|
me | cloud
|
การใช้งานใน Karaoke Templater
หากคุณใช้ Karaoke Templater เพื่อสร้างเอฟเฟกต์ คุณสามารถใช้ fx ตัวแก้ไขในการสร้างแบบฟอร์มเพื่อทำให้เทมเพลตนั้น มีผลต่อพยางค์ที่มีเอฟเฟกต์ในบรรทัดเฉพาะเท่านั้น มันไม่สามารถ (โดยตรง) จับคู่เฉพาะพยางค์ที่มีเอฟเฟกต์ในบรรทัดว่างเปล่าได้
ด้วยคาราโอเกะตามเวลาตัวอย่างจากข้างต้น คุณอาจมีเทมเพลตต่อไปนี้:
template syl: {base effect applied for all syllables}
template syl fx paint: {overlay effect applied only to the 'paint' syllables}
template syl fx cloud: {overlay effect applied only to the 'cloud' syllables}
แนวคิดที่นี่คือการมีเอฟเฟกต์พื้นฐานและ แล้วบางพยางค์ จะได้รับ เอฟเฟกต์เพิ่มเติมขึ้นมาอีก
สามารถจับคู่เฉพาะพยางค์ที่มีเอฟเฟกต์ในบรรทัดว่างเปล่าใน kara-templater โดยใช้ กลุ่มเอฟเฟกต์
code syl: fxgroup.blankfx = (syl.inline_fx == "")
template syl fxgroup blankfx: {effect only applied on blank inline-fx syllables}
สิ่งที่สำคัญคือว่าโค้ดบรรทัดจะทำงานต่อพยางค์และทำงาน ก่อน เทมเพลตที่ต้องการทำงานตามพยางค์ที่จำเป็น
การใช้งานในสคริปต์ Lua
แท็กเอฟเฟกต์ในบรรทัดจะถูกวิเคราะห์โดย
karaskel.preproc_line_text
ดังนั้นพวกมันจะทำงานได้เฉพาะเมื่อคุณได้ใช้การประมวลผล
karaskel เบื้องต้นอย่างน้อยเท่านั้นกับบรรทัดคำบรรยายของคุณ
เอฟเฟกต์ในบรรทัดสำหรับพยางค์นั้นจะพร้อมใช้งานเป็น
syl.inline_fx
, ซึ่ง
คุณสามารถเปรียบเทียบกับสตริงเพื่อใช้เอฟเฟกต์ตามเงื่อนไข
ในโค้ดบางส่วนที่ทำงานตามพยางค์ในสคริปต์ของคุณ:
if syl.inline_fx == "" then
apply_base_effect(subs, meta, line, syl)
elseif syl.inline_fx == "paint" then
apply_paint_effect(subs, meta, line, syl)
elseif syl.inline_fx == "cloud" then
apply_cloud_effect(subs, meta, line, syl)
end
เพียงแค่เปรียบเทียบชื่อเอฟเฟกต์ในบรรทัดกับ ความเป็นไปได้ต่างๆ และเรียกใช้ โค้ดเอฟเฟกต์ที่เหมาะสม
ในโค้ดบางส่วนที่ทำงานตามพยางค์ในสคริปต์ของคุณ: ที่ระดับสูงสุดของสคริปต์ของคุณ:
effects = {}
effects[""] = function(subs, meta, line, syl) -- base effect code here end
effects.paint = function(subs, meta, line, syl) -- paint effect code here end
effects.cloud = function(subs, meta, line, syl) -- cloud effect code here end
แล้วในภายหลัง ในโค้ดการประมวลผลตามพยางค์:
effects[syl.inline_fx](subs, meta, line, syl)
ก่อนอื่น สร้างตารางและเติมฟังก์ชันสำหรับการใช้ เอฟเฟกต์ที่แตกต่างกัน ตารางจะใช้คีย์ที่เป็นชื่อ ของเอฟเฟกต์ในบรรทัดที่เป็นไปได้ เมื่อถึงเวลาต้องใช้เอฟเฟกต์ ฟังก์ชันที่ถูกต้องจะถูกค้นหาในตารางเอฟเฟกต์และจะถูกเรียกใช้