“สิ่งที่ผิดไม่เคยฟังดูถูกต้องเลย”
The Kiss of Shame เปิดตัวครั้งแรกที่ Audio Engineering Society Convention 2014 ในลอสแอนเจลิส เป็นปลั๊กอิน DAW รุ่นบุกเบิกที่ใช้ประโยชน์จากหลักการออกแบบ UX/UI เชิงพาณิชย์เพื่อสร้างรูปร่างอัลกอริธึมการจำลองเทปแม่เหล็ก + วงจร
เพื่อสร้างความแตกต่างในตลาดปลั๊กอินเสียงโปรที่มีการแข่งขันสูง The Kiss of Shame นำเสนอคุณสมบัติที่ก้าวล้ำรวมถึง GUI แบบอินเทอร์แอคทีฟที่พร้อมใช้งานแบบมัลติทัชและการจำลองการย่อยสลายเทปอะนาล็อกสำหรับเอฟเฟกต์เสียงที่โดดเด่น
Kiss of Shame เป็นปลั๊กอินจำลองเทป / วงจรแอนะล็อกตัวแรกของโลก (และบางทีเท่านั้น) ที่สร้างแบบจำลองผลกระทบของความไม่เสถียรของอนุภาคแม่เหล็ก การสูญเสียสารหล่อลื่น การเสียรูปของสารตั้งต้น การดริฟท์ การขูด-กระพือ การพิมพ์ผ่าน และการขยาย/การหดตัวของรีล ชุดเครื่องมือประมวลผล FX สำหรับการออกแบบเสียงและการผลิตเพลง
นอกจากนี้ยังเป็นครั้งแรกที่ใช้ประโยชน์จากการเรียนรู้ของเครื่องเพื่ออธิบายถึงความไม่เชิงเส้นที่มีอยู่ในเทปแม่เหล็กและวงจรแอนะล็อก สุดท้ายแต่ไม่ท้ายสุด มันเป็นการจำลองเทปอะนาล็อกเพียงตัวเดียวที่มีม้วนแบบโต้ตอบเต็มรูปแบบที่รองรับการสัมผัส และสามารถเขียนหน้าแปลนอัตโนมัติได้ทันที คล้ายกับชุดเทปอะนาล็อกจริง
ชมวิดีโอสาธิตสั้นๆ
The Kiss of Shame ยังไม่เสร็จสมบูรณ์และไม่เคยเห็นการเปิดตัว ซอร์สโค้ดได้รับการบริจาคอย่างสง่างามให้กับชุมชนโอเพ่นซอร์สโดยเจ้าของในปี 2024
เป้าหมายของโครงการโอเพ่นซอร์สนี้คือ:
หมายเหตุ: ซอร์สโค้ดที่ได้รับการบริจาคไม่มีคุณสมบัติทั้งหมดจากคำอธิบาย โดยเฉพาะอย่างยิ่ง มีเทปเพียงประเภทเดียวและสภาพแวดล้อมเดียว (Hurricane Sandy) และฟังก์ชันการพิมพ์ผ่านหายไป ในรูปแบบปัจจุบัน ปลั๊กอินทำงานได้ดีที่อัตราตัวอย่าง 44100 Hz เท่านั้น อย่างไรก็ตาม มันยังคงเป็นปลั๊กอินที่สนุกพร้อม UI ที่ยอดเยี่ยม และยังมีอะไรอีกมากมายให้เรียนรู้จากซอร์สโค้ด!
บันทึก:
! ขณะนี้อยู่ระหว่างดำเนินการ อาจมีปัญหากับปลั๊กอิน ใช้ความเสี่ยงของคุณเอง!!
ปลั๊กอินเวอร์ชัน Mac ได้รับการลงนามและรับรองแล้ว
หากปลั๊กอินเวอร์ชัน AU ไม่ปรากฏใน DAW ของคุณ ให้เปิด Applications/Utilities/Terminal พิมพ์ข้อความต่อไปนี้แล้วกดปุ่ม Enter:
killall -9 AudioComponentRegistrar
จากนั้นรีสตาร์ท DAW ของคุณ ตอนนี้ควรมองเห็นปลั๊กอินได้แล้ว ถ้าไม่ ให้รีบูทคอมพิวเตอร์ของคุณ
เลือกระหว่างเทปสองประเภทที่แตกต่างกัน:
S-111 – รูปแบบม้วนม้วนที่เหนือกว่าซึ่งได้รับความนิยมในช่วงปี 50 ถึง 70 เป็นเทปอ้างอิงที่วิศวกรหลายคนเลือกใช้ The Kiss of Shame นำเสนอการจำลองดิจิทัลครั้งแรก โดยนำรูปแบบในตำนานนี้มาสู่โลกดิจิทัล
A-456 – รูปแบบคลาสสิกที่ให้เอาท์พุตสูง/สัญญาณรบกวนต่ำเป็นอุปกรณ์หลักในการบันทึกที่ใช้ในการผลิตนับไม่ถ้วน แม้ว่าจะมีการจำลองซอฟต์แวร์อยู่มากมาย แต่ก็ไม่มีใครสร้างมันขึ้นมาใหม่ในลักษณะนี้ มีการใช้กลยุทธ์นันทนาการดิจิทัลที่ไม่เหมือนใครเพื่อจับแก่นแท้ของกิจกรรม
หมายเหตุ: ปุ่มเลือกประเภทเทปในปัจจุบันไม่มีผลใดๆ
จากผุกร่อนสู่ สภาพอากาศ :
อายุ – ปุ่มนี้อนุญาตให้ผู้ใช้กำหนดระยะเวลาสมมุติที่ประเภทเทปที่เลือกอยู่ภายใต้ "สภาพแวดล้อม" ที่เลือก เพื่อจัดการความรุนแรงของเอฟเฟกต์ที่เกี่ยวข้อง
สภาพแวดล้อม – เลือกระหว่างสภาวะการจัดเก็บจำลองต่างๆ เพื่อสร้างการกระจายเสียงของปัจจัยต่างๆ เช่น ความไม่เสถียรของอนุภาคแม่เหล็ก ออกซิเดชัน การสูญเสียสารหล่อลื่น การขยาย/การหดตัวของเทปแพ็ค "กลุ่มอาการน้ำส้มสายชู" และอื่นๆ อีกมากมายตามวัสดุต้นทาง ผู้ใช้ยังสามารถเลือกการตั้งค่า "Hurricane Sandy" เพื่อเข้าถึงการประมวลผลที่สร้างแบบจำลองจากเทปที่แช่อยู่และฟื้นตัวจากน้ำท่วมของพายุ
หมายเหตุ: มีการใช้เฉพาะสภาพแวดล้อม Hurricane Sandy เท่านั้น
อุปสรรคในโลกแห่งความเป็นจริง:
ความอัปยศ – The Kiss of Shame สร้างสเปกตรัมเต็มรูปแบบของปัจจัยเหล่านี้ เช่น Drift, Wow, Flutter และ Scrape-Flutter ซึ่งผู้ใช้สามารถบอกเล่าได้ด้วยปุ่มตรงกลาง สามารถรับสัญญาณแหล่งสัญญาณของคุณจากที่มีสีอ่อนๆ ไปเป็นสัญญาณที่ไม่เป็นระเบียบทั้งหมด
การพิมพ์ผ่าน - หรือที่รู้จักกันในชื่อ "bleed-through" การจำลองนี้จะบันทึกความผันผวนของความเร็วเชิงกลที่มีอยู่ในการบันทึกแบบอะนาล็อก แม้ว่าสิ่งเหล่านี้จะสร้างความท้าทายให้กับวิศวกรในอดีต แต่ก็กลายเป็นจุดเด่นของแผ่นเสียงคลาสสิก
หมายเหตุ: คุณสมบัติการพิมพ์ผ่านไม่ได้ถูกนำมาใช้
เอื้อมมือออกไปแตะเทป:
Kiss of Shame เป็นปลั๊กอินเทปแรกที่มีวงล้อแบบโต้ตอบแบบเคลื่อนไหวได้ ซึ่งสามารถจัดการได้ด้วยการคลิกหรือสัมผัสง่ายๆ ซึ่งช่วยให้ผู้ใช้สามารถเข้าถึงหน้าแปลนเทปอะนาล็อกของแท้แบบเรียลไทม์ โดยไม่ต้องใช้เทปสองแผ่น และในเวลาเพียงเสี้ยววินาที พารามิเตอร์ทั้งหมด รวมถึงการเคลื่อนที่ของวงล้อ เป็นแบบอัตโนมัติเต็มรูปแบบ และสำหรับการเพิ่มประสิทธิภาพพื้นที่หน้าจอ วงล้อสามารถยุบและปรับแต่งได้อย่างเต็มที่
เคล็ดลับ: หากต้องการหน้าแปลน ให้ลากวงล้อ หากต้องการยุบวงล้อ ให้ดับเบิลคลิกที่ใดก็ได้ใน UI
คำแนะนำโดยย่อ:
ปัจจุบันทดสอบเฉพาะกับ:
หากต้องการตั้งค่า CMake builds ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง CMake และ Ninja แล้ว Ninja ได้รับการกำหนดค่าให้คอมไพล์เร็วตามค่าเริ่มต้น แต่ถ้าคุณไม่ต้องการใช้ ให้ข้าม '-G Ninja' จากสคริปต์กำหนดค่าด้านล่างและระบุจำนวนงานด้วยตนเอง ตรวจสอบเอกสาร CMake เกี่ยวกับวิธีการทำเช่นนี้
กำหนดค่าโปรเจ็กต์ของคุณ (ดึงข้อมูล JUCE, ตั้งค่าโปรเจ็กต์ JUCE):
cmake -B "build" -G Ninja
สร้างโครงการของคุณ:
cmake --build "build" --config Release --target all --
แทนที่ '--config Release' ด้วย '--config Debug' สำหรับการสร้างการแก้ไขข้อบกพร่อง
บิลด์จะถูกคัดลอกไปยังโฟลเดอร์ที่เหมาะสมสำหรับแพลตฟอร์มเป้าหมายของคุณโดยอัตโนมัติ (เช่น C:Program Files (x86)Common Files/VST3/
สำหรับ Windows) ทำให้ง่ายต่อการเปิดปลั๊กอินนี้ใน DAW ของคุณระหว่างการพัฒนา Builds จะอยู่ภายใต้ build/TheKissOfShame_artefacts/(Release or Debug)
ด้วย
ไม่ได้เปิดใช้งานการคอมไพล์ AAX แต่สามารถเปิดใช้งานได้โดยการเพิ่ม AAX
ให้กับคำจำกัดความ FORMATS
ภายใต้ juce_add_plugin
ใน /CMakeLists.txt
ในการคอมไพล์สำหรับ AAX คุณต้องระบุตำแหน่งของ AAX SDK ด้วย juce_set_aax_sdk_path(" ... ")
สิ่งนี้ยังไม่ได้ทดสอบ
ฉันได้เพิ่มความคิดเห็นในโค้ดเพื่ออธิบายว่ามันทำอะไร แต่หากต้องการทราบรายละเอียดโดยละเอียด โปรดดูที่โพสต์ในบล็อกของฉัน
รหัสต้นฉบับเขียนโดยใช้ JUCE 3.1 กำหนดให้ผู้ใช้คัดลอกโฟลเดอร์ที่มีไฟล์รูปภาพและเสียงไปที่ /Users/Shared/KissOfShame
พารามิเตอร์ไม่ได้เปิดเผยต่อ DAW และจะรีเซ็ตเมื่อเปิดโปรแกรมแก้ไขอีกครั้ง
มีการเปลี่ยนแปลงต่อไปนี้ใน repo นี้:
ข้อบกพร่องที่ฉันพบ (หรือแนะนำ อิอิ):
beginGesture
ที่ถูกเรียกสองครั้ง ไม่ใช่ปัญหาใหญ่ แต่ก็ไม่ได้ยอดเยี่ยมเช่นกันสิ่งอื่นๆ ที่สามารถ/ควรปรับปรุงในโค้ด (ยินดีต้อนรับอาสาสมัคร!):
prepareToPlay()
และ reset()
ให้กับคลาส DSP วิธีการรีเซ็ตควรล้างสถานะเก่าออกไปaudioGraphProcessingBuffer = audioBuffer
ซึ่งอาจจัดสรร (อย่างน้อยในครั้งแรก)Envelope
และ EnvelopeDips
) สามารถติดตามจุดก่อนหน้าและจุดถัดไปได้ ดังนั้นเราจึงไม่จำเป็นต้องวนซ้ำจุดทั้งหมดในทุก ๆ ช่วงเวลาaudioProcessor.curPositionInfo
ใช้ API ที่เลิกใช้แล้วrand()
และ srand()
แทนที่ด้วย juce::Random
อาจจะ:
targetDepth = depth * depth * 1000.0f
)ลิขสิทธิ์ (C) 2014-2015 อีรอส มาร์เซลโล
นักพัฒนาดั้งเดิม:
Eros Marcello – ผู้ก่อตั้ง หัวหน้าสถาปนิกผลิตภัณฑ์
Brian Hansen – วิศวกรรม DSP / การพัฒนาอัลกอริทึม
ยานนิค บอนเนฟอย – GUI
อัปเดตและปรับปรุงโดย Matthijs Hollemans และผู้มีส่วนร่วม
โปรแกรมนี้เป็นซอฟต์แวร์เสรี: คุณสามารถแจกจ่ายซ้ำและ/หรือแก้ไขได้ภายใต้เงื่อนไขของ GNU General Public License ตามที่เผยแพร่โดย Free Software Foundation ไม่ว่าจะเป็นเวอร์ชัน 3 ของใบอนุญาต หรือ (ตามตัวเลือกของคุณ) เวอร์ชันที่ใหม่กว่า
โค้ดบางส่วนใน repo นี้ (คลาส Granulate
) นำมาจาก The Sclusion ToolKit ใน C++ (STK) โดย Perry R. Cook และ Gary P. Scavone
JUCE เป็นลิขสิทธิ์ © Raw Material Software
VST® เป็นเครื่องหมายการค้าของ Steinberg Media Technologies GmbH ซึ่งจดทะเบียนในยุโรปและประเทศอื่นๆ