mdsrc=$(shell ls *.md)
html_from_md=$(mdsrc:%.md=%.html)
%.html: %.md
markdown_reference_link_fragments.py < $< | \
pandoc --from markdown \
--to html \
--standalone \
--css styles.css \
-o $@
%.thumb.jpg: %.l.mp4
ffmpeg -i $< -ss 10 -vframes 1 $@
mogrify -resize 320x $@
%.html: %.l.mp4 %.json
ffmpeg -i $< -ss 10 -vframes 1 $@
mogrify -resize 320x $@
%.webm: %.l.mp4
ffmpeg -i $< -s 640x360 -c:v libvpx -crf 23 -b:v 800k -c:a libvorbis $@
%.mp4: %.l.mp4
ffmpeg -i $< -s 640x360 -profile:v baseline -level 3.0 -profile:v baseline -level 3.0 -c:v libx264 -preset slow -crf 23 -c:a copy $@
# %.s.mp4: %.l.mp4
# HandBrakeCLI --preset iPod -q 23 --optimize -i $< -o $@
# %.m.mp4: %.l.mp4
# HandBrakeCLI --preset Universal -q 23 --optimize -i $< -o $@
%.mp3: %.l.mp4
ffmpeg -y -i $< -ac 1 -vn $@
replaygain $@
%.ogg: %.l.mp4
ffmpeg -y -i $< -ac 1 -acodec libvorbis -vn $@
replaygain $@
%.crf23.mp4: %.mov
ffmpeg -i $< -af 'pan=stereo:c0=FL:c1=FR' -ac 1 -af loudnorm=I=-16:TP=-1.5:LRA=11 -crf 23 $@
friday_l = 101_State_of_Libre_Graphics.l.mp4 102_Draw_Play.l.mp4 103_Git_for_designers.l.mp4 104_Computational_Vandalism.l.mp4 105_Visionaray.l.mp4 106_Valentina.l.mp4 107_Grafica_Liebre.l.mp4 108_Love_the_bash.l.mp4 109_Designing_for_Libre_Graphics_Meeting.l.mp4
friday_mp4 = $(friday_l:%.l.mp4=%.mp4)
friday_webm = $(friday_l:%.l.mp4=%.webm)
friday_ogg = $(friday_l:%.l.mp4=%.ogg)
friday_mp3 = $(friday_l:%.l.mp4=%.mp3)
friday_thumbs = $(friday_l:%.l.mp4=%.thumb.jpg)
friday_html = $(friday_l:%.l.mp4=%.html)
saturday_l = 201_Architectural_design.l.mp4 202_topoBIM.l.mp4 203_3D_Steganography.l.mp4 204_Artivity.l.mp4 205_Image_processing_with_VIPS.l.mp4 206_PhotoFlow.l.mp4 210_PIXLS.US.l.mp4 211_Praxis_LIVE.l.mp4 212_Waend.l.mp4 213_edcd.l.mp4 214_Joana_Chicau.l.mp4 215_Camera_libre.l.mp4 216_Software_Sustainability_Institute.l.mp4 217_FontForge_Lives.l.mp4
saturday_mp4 = $(saturday_l:%.l.mp4=%.mp4)
saturday_webm = $(saturday_l:%.l.mp4=%.webm)
saturday_ogg = $(saturday_l:%.l.mp4=%.ogg)
saturday_mp3 = $(saturday_l:%.l.mp4=%.mp3)
saturday_thumbs = $(saturday_l:%.l.mp4=%.thumb.jpg)
saturday_html = $(saturday_l:%.l.mp4=%.html)
monday_l = 401_Co-Design_Fossbox.l.mp4 402_Teaching_Design_Livre_in_the_Global_South.l.mp4 403_EDLab_MMU.l.mp4 404_Objects_in_Common.l.mp4 405_Color_Hug_Plus.l.mp4 406_Document_Liberation_Project.l.mp4
monday_mp4 = $(monday_l:%.l.mp4=%.mp4)
monday_webm = $(monday_l:%.l.mp4=%.webm)
monday_ogg = $(monday_l:%.l.mp4=%.ogg)
monday_mp3 = $(monday_l:%.l.mp4=%.mp3)
monday_thumbs = $(monday_l:%.l.mp4=%.thumb.jpg)
monday_html = $(monday_l:%.l.mp4=%.html)
all: $(html_from_md)
friday : $(friday_l) $(friday_mp4) $(friday_webm) $(friday_ogg) $(friday_mp3) $(friday_thumbs) $(friday_html)
saturday : $(saturday_l) $(saturday_mp4) $(saturday_webm) $(saturday_ogg) $(saturday_mp3) $(saturday_thumbs) $(saturday_html)
monday : $(monday_l) $(monday_mp4) $(monday_webm) $(monday_ogg) $(monday_mp3) $(monday_thumbs) $(monday_html)
101_State_of_Libre_Graphics.l.mp4: FRI/Capture0002.crf23.mp4
melt color:black out=125 $< in=200 -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
# ffmpeg -i $< -af 'afade=t=in:st=0:d=5' -crf 23 $@
102_Draw_Play.l.mp4: FRI/Capture0005.crf23.mp4
# ffmpeg -i $< -af 'afade=t=in:st=0:d=5' -crf 23 $@
melt color:black out=125 $< -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
103_Git_for_designers.l.mp4: FRI/Capture0008.crf23.mp4 FRI/Capture0009.crf23.mp4
# ffmpeg -f concat -i $< -af 'afade=t=in:st=0:d=5' -crf 23 $@
melt color:black out=125 FRI/Capture0008.crf23.mp4 in=125 -filter sox.fade:1 -mix 25 -mixer luma FRI/Capture0009.crf23.mp4 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23
104_Computational_Vandalism.l.mp4: FRI/Capture0011.crf23.mp4
# ffmpeg -i $< -ss 55 -af 'afade=t=in:st=55:d=5' -crf 23 $@
melt color:black out=125 $< in=1375 -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
105_Visionaray.l.mp4: FRI/Capture0013.crf23.mp4
melt color:black out=125 $< -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
106_Valentina.l.mp4: FRI/Capture0015.crf23.mp4
melt color:black out=125 $< in=50 -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
107_Grafica_Liebre.l.mp4: FRI/Capture0017.crf23.mp4
melt color:black out=125 $< in=75 -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
108_Love_the_bash.l.mp4: FRI/Capture0018.crf23.mp4
melt color:black out=125 $< in=300 -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
109_Designing_for_Libre_Graphics_Meeting.l.mp4: FRI/Capture0020.crf23.mp4
melt color:black out=125 $< in=100 -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
# saturday
201_Architectural_design.l.mp4: FRI/Capture0000.crf23.mp4
melt color:black out=125 $< -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
202_topoBIM.l.mp4: SAT/Capture0021.crf23.mp4
melt color:black out=125 $< out=`timecode.py --timecode 15:35 --fps 25` -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
203_3D_Steganography.l.mp4: SAT/Capture0021.crf23.mp4
melt color:black out=125 $< in=`timecode.py --timecode 18:39 --fps 25` out=`timecode.py --timecode 31:42 --fps 25` -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
204_Artivity.l.mp4: SAT/Capture0023.crf23.mp4
melt color:black out=125 $< in=`timecode.py --timecode 00:14 --fps 25` out=`timecode.py --timecode 18:06 --fps 25` -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
205_Image_processing_with_VIPS.l.mp4: SAT/Capture0024.crf23.mp4
melt color:black out=125 $< in=`timecode.py --timecode 00:00 --fps 25` out=`timecode.py --timecode 16:59 --fps 25` -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
206_PhotoFlow.l.mp4: SAT/Capture0026.crf23.mp4 SAT/pm/Capture0027.crf23.mp4
melt color:black out=125 SAT/Capture0026.crt23.mp4 -filter sox.fade:1 -mix 25 -mixer luma SAT/pm/Capture0027.crf23.mp4 out=`timecode.py --timecode 06:27 --fps 25` -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23
210_PIXLS.US.l.mp4: SAT/pm/Capture0001.crf23.mp4
melt color:black out=125 $< in=`timecode.py --timecode 03:34 --fps 25` -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
211_Praxis_LIVE.l.mp4: SAT/pm/Capture0002.crf23.mp4
melt color:black out=125 $< in=`timecode.py --timecode 02:13 --fps 25` -filter sox.fade:1 -mix 25 -mixer luma -consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
212_Waend.l.mp4: SAT/pm/Capture0003.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 01:18 --fps 25` \
out=`timecode.py --timecode 23:43 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
213_edcd.l.mp4: SAT/pm/Capture0004.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 02:21 --fps 25` \
out=`timecode.py --timecode 08:19 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
214_Joana_Chicau.l.mp4: SAT/pm/Capture0004.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 10:24 --fps 25` \
out=`timecode.py --timecode 18:25 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
215_Camera_libre.l.mp4: SAT/pm/Capture0004.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 19:15 --fps 25` \
out=`timecode.py --timecode 25:44 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
216_Software_Sustainability_Institute.l.mp4: SAT/pm/Capture0004.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 26:34 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
217_FontForge_Lives.l.mp4: SAT/pm/Capture0005.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 02:00 --fps 25` \
out=`timecode.py --timecode 07:42 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
# Monday
401_Co-Design_Fossbox.l.mp4: MON/Capture0001.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 03:40 --fps 25` \
out=`timecode.py --timecode 26:26 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
402_Teaching_Design_Livre_in_the_Global_South.l.mp4: MON/Capture0001.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 27:43 --fps 25` \
out=`timecode.py --timecode 47:28 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
403_EDLab_MMU.l.mp4: MON/Capture0001.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 48:40 --fps 25` \
out=`timecode.py --timecode 01:04:50 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
404_Objects_in_Common.l.mp4: MON/Capture0001.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 01:07:08 --fps 25` \
out=`timecode.py --timecode 01:24:44 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
405_Color_Hug_Plus.l.mp4: MON/Capture0001.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 01:26:55 --fps 25` \
out=`timecode.py --timecode 01:46:06 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
406_Document_Liberation_Project.l.mp4: MON/Capture0000.crf23.mp4
melt color:black out=125 \
$< \
in=`timecode.py --timecode 00:48 --fps 25` \
-filter sox.fade:1 -mix 25 -mixer luma \
-consumer avformat:$@ mlt_profile=atsc_1080p_25 vcodec=libx264 crf=23 ac=1
# special rule for debugging variables
print-%:
@echo '$*=$($*)'