Skip to content

codedbyminjae/melody-collage-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

43 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽง Melody Collage Engine


์Œ์•…์˜ ํ๋ฆ„(๋ฐ๊ธฐ ยท ๊ฐ•์•ฝ ยท ์—๋„ˆ์ง€)์— ๋”ฐ๋ผ
์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ ยท ์ฑ„๋„ ยท ํšŒ์ „ ยท ํˆฌ๋ช…๋„๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋ฉฐ
OpenCV ๊ธฐ๋ฐ˜ ๋ ˆ์ด์–ด ๋ฐฉ์‹์œผ๋กœ ์Œ์•… ๊ธฐ๋ฐ˜ ์ฝœ๋ผ์ฃผ ์•„ํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—”์ง„์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ Overview


์ด ํ”„๋กœ์ ํŠธ๋Š” ์Œ์•…์„ 0.5์ดˆ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค
๊ฐ ๊ตฌ๊ฐ„์˜ spectral brightness / energy / tempo๋ฅผ ๋ถ„์„ํ•˜์—ฌ
์ด๋ฏธ์ง€์˜ ์‹œ๊ฐ์  ์†์„ฑ์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ
์Œ์•…์˜ ๊ฐ์ •์„ ๊ณผ ํ๋ฆ„์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ์ฝœ๋ผ์ฃผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ Tech Stack


  • Python 3
  • OpenCV โ€” ์ด๋ฏธ์ง€ ๋ณ€ํ™˜ ยท ํšŒ์ „ ยท ๋ธ”๋ Œ๋”ฉ
  • NumPy โ€” ์ˆ˜์น˜ ์—ฐ์‚ฐ
  • Librosa โ€” ์˜ค๋””์˜ค ๋ฐ๊ธฐ & ์—๋„ˆ์ง€ ๋ถ„์„
  • Random โ€” ์œ„์น˜, ํฌ๊ธฐ, ํšŒ์ „ ๊ฐ’ ์ƒ์„ฑ

๐Ÿ“ Project Structure


src/
main.py # ์—”์ง„ ์‹คํ–‰ ํŒŒ์ผ
audio.py # ์˜ค๋””์˜ค ๋ถ„์„(๋ฐ๊ธฐ/์—๋„ˆ์ง€)
image.py # ์ด๋ฏธ์ง€ ๋กœ๋” + ๋ฐ˜๋ณต ๋กœ๋”ฉ
scaling.py # brightness โ†’ scale ๋ณ€ํ™˜
collage.py # ๋ ˆ์ด์–ด ๊ธฐ๋ฐ˜ ์ฝœ๋ผ์ฃผ ์ƒ์„ฑ
rotate.py # ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€ ํšŒ์ „ UI

data/
images/ # ์ž…๋ ฅ ์ด๋ฏธ์ง€
music/ # ์ž…๋ ฅ ์Œ์•…

results/
collage_preview.jpg # ํ”„๋ฆฌ๋ทฐ
collage_final.jpg # ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ


๐Ÿš€ How It Works


1) Audio โ†’ Brightness Extraction

  • ์Œ์•…์„ 0.5์ดˆ ๋‹จ์œ„๋กœ ๋ถ„ํ• 
  • spectral centroid ๊ธฐ๋ฐ˜ brightness ๊ณ„์‚ฐ
  • energy & tempo ๋ถ„์„
  • 240๊ฐœ segment๋กœ ์ •๊ทœํ™”

2) Image Loading

  • ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์ง€์ • ํฌ๊ธฐ๋กœ ๋ฆฌ์‚ฌ์ด์ฆˆ
  • ๋ถ€์กฑํ•˜๋ฉด ์ˆœ์ฐจ ๋ฐ˜๋ณตํ•˜์—ฌ ์ด 240์žฅ ํ™•๋ณด

3) Brightness โ†’ Scale Mapping

  • brightness๋ฅผ 0~1๋กœ ์ •๊ทœํ™”
  • ์Šค์ผ€์ผ 0.7 ~ 1.8 ๋งคํ•‘
  • ์ด๋ฏธ์ง€ ํฌ๊ธฐ ยท ์ฑ„๋„ ยท ํˆฌ๋ช…๋„ ๋ฐ˜์˜

4) Layer-Based Artistic Collage

๊ฐ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋‹ค์Œ ํšจ๊ณผ ์ ์šฉ:

  • ํฌ๊ธฐ ์กฐ์ •
  • ์ฑ„๋„ ์กฐ์ ˆ
  • ๋žœ๋ค ํšŒ์ „
  • ๋žœ๋ค ์œ„์น˜ ๋ฐฐ์น˜
  • ฮฑ-๋ธ”๋ Œ๋”ฉ

์Œ์•…์˜ ๊ฐ์ • ํ๋ฆ„์„ ๋ ˆ์ด์–ด ๊ตฌ์กฐ๋กœ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ–ผ๏ธ Output


results/
collage_final.jpg


โ–ถ๏ธ Run the Engine


python src/main.py

๐ŸŽจ Project Goal


์Œ์•…์˜ ๋ฐ๊ธฐ, ์—๋„ˆ์ง€, ๋ฆฌ๋“ฌ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ
๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ์‹œ๊ฐ์  ์ฝœ๋ผ์ฃผ ์•„ํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ Future Improvements


  • ๋‹ค์–‘ํ•œ ์˜ค๋””์˜ค ํŠน์ง• ์ถ”๊ฐ€ (MFCC, beat tracking ๋“ฑ)
  • ์ด๋ฏธ์ง€ ์ค‘์ฒฉ ๊ทœ์น™ ๊ฐœ์„ 
  • ๋ Œ๋”๋ง ์†๋„ ์ตœ์ ํ™”
  • GUI ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์•„ํŠธ์›Œํฌ ์ƒ์„ฑ

๐Ÿ“„ License


This project was developed for the ์˜์ƒ์ฒ˜๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ course.

About

Music-driven collage generator using OpenCV and audio emotion analysis.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages