บทเรียนเอฟเฟกต์ในบรรทัด

คาราโอเกะเอฟเฟกต์ในบรรทัด (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)

ก่อนอื่น สร้างตารางและเติมฟังก์ชันสำหรับการใช้ เอฟเฟกต์ที่แตกต่างกัน ตารางจะใช้คีย์ที่เป็นชื่อ ของเอฟเฟกต์ในบรรทัดที่เป็นไปได้ เมื่อถึงเวลาต้องใช้เอฟเฟกต์ ฟังก์ชันที่ถูกต้องจะถูกค้นหาในตารางเอฟเฟกต์และจะถูกเรียกใช้