Хөгжмийг дүрслэх арга замууд

vonqo
Socraftes
Published in
7 min readAug 7, 2024
image by kametakahiro

Хөгжмийг дүрслэх гэж юуг хэлэх вэ? Хөгжмийн видео клип эсвэл SoundCloud дээр байдаг хөгжмийн давлагаа мэт харагдах тоглуулагчийн зам, windows media player дээр байдаг дүрслэгч(visualizer) зэрэг хөгжмийн илэрхийлж буй аливаа дүрслэлийг хэлж болох биз ээ. Харин чихэнд таатай сонсогдох хөгжмийн аялгууг зургаар илэрхийлбэл яг адил нүдэнд таатай мэдрэмж өгч чадах болов уу? Мэдээж хэрэг харах нь сонсохоос ялгаатай хүртэхүй учир адилхан мэдрэмж өгч чадахгүй. Харин синестет (синестезитэй хүн) хүнд хөгжим сонсохдоо өнгө мэдрэх, юм үнэрлэхдээ хэлбэр дүрс харах, үг уншихдаа амт мэдрэх зэрэг өвөрмөц шинж тэмдэгүүд байдаг байна. Синестетийн хувьд хөгжим сонсохдоо өнгө мэдрэх нь нэгэн төрлийн хөгжмийн дүрслэл мэт.

Үүнтэй адил хөг аялгууг өнгө будгаар буулгах эсвэл аялгууг дүрсийн хөдөлгөөнөөр илэрхийлэх боломжийг хэрхэн судалж, хэрэгжүүлсэн талаар энэхүү нийтлэлд өгүүлэх болно. Ингэхдээ компьютер алгоритм дээр суурилсан арга техникүүдэд илүү төвлөрнө.

Бүтээлч кодчилол (Creative coding) гэдэг нь програмчлалын техникийг ашиглан уран сайхны илэрхийлэмж шингэсэн чөлөөт программ бүтээх явцыг ерөнхийд нь хэлнэ. Компьютерын бидэнд олгож буй хийсвэр орон зайг ашиглан бүтээлч кодчиллын чиглэлээр хүмүүс өөрийгөө илэрхийлэх, уран бүтээл туурвих шинэ арга замуудыг нээх болсон. Миний бие бүтээлч кодчиллын талаар сонирхон, турших явцдаа нэгэн судалгааны ажилтай таарсан нь дууг нь өнгөөр дүрслэх арга, техник боловсруулах талаар байсан юм.

2005 онд Гэвин Вүүд болон Саймон О’Киф нар “Хөгжмийн заман хөтчид туслах агуулгад суурилсан визуал тэмдэглэгээний арга техникүүд” нэртэй судалгааны ажил бичиж, хөгжмийн замыг өнгөөр дүрслэх санаа дэвшүүлжээ. Хөгжим тоглуулагчийн заман хөтчийг илүү оновчтой болгож, хөгжмийн шилжилт, оргил хэсгийг хаана байгааг ялган харуулах зорилго бүхий хөгжмийн замыг өнгөөр будах алгоритм боловсруулсан юм.

Гэвин Вүүд болон Саймон О’Киф нарын судалгааны ажлаас

Хөгжим нь нэг эсвэл олон тооны дуу авиаг нэгтгэн хослуулж, дараалалд оруулан бүтсэн/бүтээсэн тодорхой хугацааны турш үргэлжлэх хөг юм. Тэгвэл хөгжмийг бүрдүүлж буй нэгж дуу авианууд нь өөрийн гэсэн давтамжтай, далайцтай дууны долгионууд байна. Хөгжмийг бүрдүүлж буй долгионуудыг ялган авч, хугацааны туршид ямар хэмнэлтэй, хэр олон давтагдаж байгааг тооцсоны үндсэн дээр далайц давтамжаас нь хамааран өнгө онооно. Эцэст нь оноосон өнгөнүүдийг нийлүүлж өнгөөр дүрсэлсэн замтай болох юм.

Дууны замыг өнгөөр будсан байдал

Дээрх өнгөөр дүрслэх аргыг нээлттэй эх бүхий хэд хэдэн хөгжим тоглуулагч дээр хөгжүүлсэн байдаг. Үүнд Rhythmbox, Clementine дурдаж болно. Би хөгжим тоглуулагчийн эх кодоос үндсэн алгоритмыг ялган авч, тус алгоритмыг өөрийн хэрэгцээнд тааруулан өөрчилсөн. Үүний дараагаар дүрслэх хөдөлгүүрийн дамжлагыг хөгжүүлсэн.

Өнгөнүүдээ хэрхэн харуулах вэ? Цуваа өгнө харуулаад энэ бол дуу гэж хэлэх нэлээд утгагүй юм шиг санагдаж байсан ч үр дүнг хүмүүстэй хуваалцах үед тэрхүү бодол минь өөрчлөгдсөн. Хүмүүст нэмэлт тайлбаргүйгээр хүрч чадаж байсан нь заримдаа зүйлс илэрхий эсвэл тайлбар илүүц байх нь хамаагүй дээр байдагтай холбоотой юм болов уу … Мөн илүү баялаг харуулах үүднээс хөгжмийн спектрограммийг өнгөтэй нь хослуулж дүрсэлж үзсэн.

Спектрограмм нь босоо тэнхлэгийн дагуу дохионы давтамж, хэвтээ тэнхлэгийн дагуу хугацаа үргэлжлэх зураглал юм. Аудио дохионд хэрэглэх үед заримдаа sonographs, voiceprints, voicegrams гэж нэрлэдэг.

Өнгийг спектрограммийн өгөгдөлтэй нэгтгэж дүрсэлсэн байдал

Цомгуудыг дүрсэлж үзсэн жишээ:

Дүрслэлдээ илүү орон зайг дүүргэсэн, физик мэдрэмж оруулахын тулд гэрэл, сүүдэр ашиглах нь зүйтэй гэж үзсэн. 2D буюу хавтгай орчинд гэрэлийн туяа ашиглах тухай юм.

2D гэрэлтүүлэлтийн (2D ray tracing) жишээ доор харагдаж байна. Миний ашигласан гэрлийн хөдөлгүүр өнгийг гэрлийн долгионы уртаар илэрхийлдэг байв. Иймд RGB буюу дижитал өнгийг долгионы урт руу хөрвүүлэх хэрэгтэй болов. Хэсэг судалгааны дараа RGB өнгийг цэвэр өнгө буюу долгионы уртаар илэрхийлэх боломжгүйг ойлгосон. Жишээлбэл RGB форматад хар өнгийг илэрхийлж болдог бол цэвэр өнгө буюу долгионы уртаар илэрхийлэхэд хар өнгө гэж байхгүй. Хар гэдэг нь өнгөгүй/гэрэлгүй байдал гэж үзэх юм. Эцэст нь улаан, ногоон, цэнхэр өнгөнүүдийн долгионыг ялгаатай чадалтайгаар (light power) холих замаар хүсэж буй өнгөтэйгөө нэлээд ойртсон үр дүнд хүрсэн.

LED дэлгэцийг хэрхэн ажилладгийг мэдэж авснаар гацаанаасаа гарсан.

Тойрог хэлбэрээр цацарч буй туяан дүрслэлүүд нь 90° эгц дээш чиглэсэн тэнхлэгээс эхлэн баруун чиглэлд дуу үргэлжлэх хугацаанд бүтэн тойрч дуусна.

33 миллисекунд (30 FPS) бүрд зураг бэлдэж, нийлүүлээд видео болгож бэлдсэн жишээ:

Work that participated in the Ulaanbaatar International Media Art Festival 2022
Even Tide — Бурам (Visualization)

3D орчинд ажиллах хөдөлгүүртэй холбож туршиж үзсэн нь:

Unity 3D render

Эдгээр дүрслэлүүд нь Color Note Code бүтээлч кодчиллын төслийн хүрээнд хийгдэж буй ажлууд юм. Мөн төслийн хүрээнд зураг боловсруулалтын аргуудыг фото зургууд дээр туршсан үр дүнгүүд бий.

Хөгжмийг зөвхөн өнгөөр бус зураг болон объектууд руу хөрвүүлж коллаж маягаар дүрслэх, фрактал тэгшитгэлтэй хослуулах боломжуудыг цааш судалж байна.

Санамсаргүй байдлаар үүсгэсэн фракталууд

Шууд буюу хөгжмийн амьд дүрсжүүлэлт (Real-time live music visualization)

Амьд дүрсжүүлэлтийн хувьд дээр дурдсан өнгөөр дүрслэх аргийг орхиж, илүү хөдөлгөөнд төвлөрсөн, амьд дуугаралтыг илэрхийлэх эрч хүчтэй, уян хатан дүрс боловсруулах арга эрэлхийлсэн.

B.L.M.D хамтлагын тоглолтын үеэр

Зорилго нь амьд хөгжмийн тоглолтын үер тоглолтын хүчийг нэмж, LED/projector нь өөрөө тус тоглолтын нэг хэсэг болон цогц үзүүлбэр үзүүлэхэд оршино.

Тайзны хөгжим, дуугаралтыг ашиглаж, дуугаралтаас хамаарсан хөдөлгөөнтэй дүрс үүсгэх санаанд суурьлан хамтлагийн мэдрэмж, хөгжмийн үзэл санааг илэрхийлсэн дүрслэлийг хайсан. Энэ ажил нь техникийн бус ба гоо зүйн донжийг олох тухай юм. Үүний дараагаар тус өнгө төрхийг баяжуулж хөдөлгөөн оруулж эхэлсэнээр хөгжүүлэлтийн явц нь аажмаар хөдөлгөөн (motion design) бүтээх график программ болж хувирсан.

Тайзны дуугаралт нь дүрсийн хөдөлгөөнийг удирдаж, дүрс хөгжмийн нэг хэсэг болох мэт илэрхийлэмж гаргана. Дээрээс нь дүрсийн шилжилт, хөдөлгөөний далайцыг гараар удирдах боломжтой байхаар хийсэн. Ингэснээр амьд тоглолттой илүү ойртон тухайн мөчид дүрсийн оператор тоглолт үзүүлэх, improvise хийх замаар тайзны эрч хүчийг, дэлгэцэнд буулгах боломжийг нэмэгдүүлнэ.

B.L.M.D хамтлагын тоглолтын үеэр

Бүтээлч кодчиллыг дэмжих програмчлалын хэл болон дагалдах бүтцийг ашиглан график програмчлалын аргуудтай нэгтгэж хүссэн үр дүндээ хүрсэн.

Хөгжүүлэлтийн явцад тулгарсан сорилтууд болон анхаарах ёстой чухал техникийн шаардлагуудыг хуваалцъя.

  • Хөгжмийн орж ирэх урсгал дээр түргэвчилсэн (fast, optimized) тооцоолох аргууд ашиглах. Түргэвчилсэн аргууд ашиглах учир нь тайзнаас ирэх дуугаралт, боловсруулах хугацаа, дүрс бүтээх хугацаа, дүрсийг дамжуулах хугацаа гээд хэд хэдэн хугацааны хязгааруудтай уралдах шаардлага гарна.
  • 0.4 миллисекундээс илүү хоцорч эхлэх юм бол хөгжимтэй зэрэг хөдөлж байгаа мэдрэмжээ алдана. Үзэгчид илэрхий хоцорч байгааг анзаарна.
  • Дүрс боловсруулахдаа shader түлхүү ашиглах. Ингэснээр CPU -ий ачааллыг багасгаж GPU хурдыг ашиглана. Программын цуваа үйлдлүүд болон аудио боловсруулалт бүгд CPU дээр хийгдэнэ. Энэ үед нарийн ажиллагаатай дүрсийн тооцооллыг CPU дээр хйилгэх нь хоцролт үүсгэнэ.
  • Тоглолтын тайз ямар ч хэмжээ, харьцаатай байж болхийг мартаж болохгүй.

Туршиж үзсэн технолигиуд:

  • Unity 3D хувьд өөр дээр нь байх аудио оролтын удирдлага нэлээд тохиромжгүй ба боловсруулалт нь тооцооллын өртөг өндөртэй. Иймд тусдаа аудио сервер хөгжүүлэх шаардлага гарч байсан.
  • JUCE, Flutter, Electron, Processing зэрэг технологиуд аудио болон дүрстэйгээ хурдтай ажилладаг. Хөгжүүлэлт хийхэд энгийн бас хурдан. Гэхдээ 3D дүрслэлд хүч дутах, shader хэсэгчлэн дэмжих, шугаман бус програмчлал зэрэг тус тусын хязгаарууд бий.

Цаашдаа амьд дүрсжүүлэлтэд зориулсан технологиудыг судалж, хэрэгтэй шийдлүүдийг хэрэгжүүлж, одоо байгаа программаа илүү баялаг, илүү уян хатан болгох дээр анхааран ажиллаж байна.

Талархал

Төсөл эхэлснээс хойш аливаа санааг дэвшүүлэх, хэрэгжүүлэх цаашлаад хөгжүүлэхийг дэмжиж, урам зориг өгч ирсэн Even Tide болон B.L.M.D хамтлагийн гишүүддээ баярлалаа.

--

--