find_program(FFMPEG_EXECUTABLE ffmpeg) if ("${FFMPEG_EXECUTABLE}" STREQUAL "FFMPEG_EXECUTABLE-NOTFOUND") message(FATAL_ERROR "ffmpeg not found!") else() message(STATUS "Found ffmpeg: ${FFMPEG_EXECUTABLE}") endif() add_custom_target(generate) add_dependencies(tests generate) set(loglevel quiet) if (CONFIG_TESTING_VERBOSE) set(loglevel warning) endif() set(FFMPEG_ARGS -hide_banner -nostdin -f s16le -i /dev/zero -codec libvorbis -loglevel ${loglevel}) function(gen_track num len title) set(track "${ALBUM}/${num} - ${title}.ogg") add_custom_command(TARGET generate PRE_BUILD COMMAND ${FFMPEG_EXECUTABLE} ${FFMPEG_ARGS} -t ${len} -metadata TITLE=${title} -metadata ARTIST=${ARTIST} -metadata ALBUM=${ALBUM} -metadata GENRE=${GENRE} -metadata DATE=${YEAR} -metadata TRACKNUMBER=${num} "${track}" || true VERBATIM) endfunction() # # Generate Hyrule Symphony album # add_custom_command(TARGET generate PRE_BUILD COMMAND mkdir -p Hyrule\ Symphony/) set(ARTIST "Koji Kondo") set(ALBUM "Hyrule Symphony") set(YEAR 1998) set(GENRE "Game") gen_track(01 243 "Title Theme") gen_track(02 130 "Kokiri Forest") gen_track(03 227 "Hyrule Field") gen_track(04 130 "Hyrule Castle") gen_track(05 206 "Lon Lon Ranch") gen_track(06 186 "Kakariko Village") gen_track(07 178 "Death Mountain") gen_track(08 221 "Zora's Domain") gen_track(09 273 "Gerudo Valley") gen_track(10 66 "Ganondorf") gen_track(11 185 "Princess Zelda") gen_track(12 232 "Ocarina Medley") gen_track(13 288 "The Legend of Zelda Medley") # # Generate Ocarina of Time album # add_custom_command(TARGET generate PRE_BUILD COMMAND mkdir -p Ocarina\ of\ Time/) set(ALBUM "Ocarina of Time") set(YEAR 1998) set(GENRE "Video Game") gen_track(01 170 "Title Theme") gen_track(02 80 "Deku Tree") gen_track(03 46 "Fairy Flying") gen_track(04 71 "House") gen_track(05 112 "Kokiri Forest") gen_track(06 133 "Shop") gen_track(07 134 "Battle") gen_track(08 164 "Inside the Deku Tree") gen_track(09 153 "Boss Battle") gen_track(10 327 "Hyrule Field Main Theme") gen_track(11 103 "Market") gen_track(12 90 "Hyrule Castle Courtyard") gen_track(13 62 "Ocarina Songs") gen_track(14 101 "Ocarina of Time") gen_track(15 271 "LonLon Ranch") gen_track(16 204 "Kakariko Village") gen_track(17 75 "Lost Woods") gen_track(18 171 "Zora's Domain") gen_track(19 72 "Great Fairy's Fountain") gen_track(20 159 "Temple of Time") gen_track(21 124 "Chamber of the Sages") gen_track(22 98 "Horse Race") gen_track(23 193 "Kakariko Village Orchestra") gen_track(24 99 "Windmill Hut") gen_track(25 172 "Gerudo Valley") gen_track(26 147 "Ganondorf Battle") gen_track(27 191 "Last Battle") gen_track(28 34 "Zelda's Ocarina") gen_track(29 433 "Staff Credits Theme") gen_track(30 18 "Minuet of Forest") gen_track(31 24 "Bolero of Fire") gen_track(32 24 "Serenade of Water") gen_track(33 25 "Nocturne of Shadow") gen_track(34 23 "Prelude of Light") gen_track(35 27 "Requiem of Spirit") # # Generate an invalid track # file(WRITE invalid_track "abcdefghijklmnopqrstuvwxyz")