summaryrefslogtreecommitdiffstats
path: root/2023/info/emms-after.md
blob: a9b973686b7c975699f195af33ca969647313a58 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
<!-- Automatically generated by emacsconf-publish-after-page -->


<a name="emms-mainVideo-transcript"></a>
# Transcript


[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The Sound of Emacs, Emms, The Emacs Multimedia System.""" start="00:00:00.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Hi, I'm Yoni Rabkin and I'll be talking about Emms;""" start="00:00:05.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the Emacs Multimedia System.""" start="00:00:09.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""What is Emms?""" start="00:00:11.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms displays and plays media from within Emacs""" start="00:00:14.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""using a variety of external players""" start="00:00:18.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and from different media sources.""" start="00:00:20.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can run as a minimalistic player""" start="00:00:23.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is controlled with no more than""" start="00:00:26.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a handful of simple M-x commands,""" start="00:00:28.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or as a fully-fledged interactive media browser and player.""" start="00:00:31.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can display album art, play streaming audio,""" start="00:00:36.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""tag music files, search for lyrics,""" start="00:00:40.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""provide MPD connectivity, control the volume,""" start="00:00:43.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and more. Much more.""" start="00:00:46.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms project acts like Emacs in microcosm.""" start="00:00:49.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It slowly but surely grows bigger""" start="00:00:53.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and gets ever more features.""" start="00:00:56.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Perhaps Emms will one day even have a text editor.""" start="00:00:58.480" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The structure of this talk""" start="00:01:03.320" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The structure of this talk:""" start="00:01:03.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We'll start with an introduction to Emms.""" start="00:01:05.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is the practical part.""" start="00:01:08.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Then, a bit about how Emms works. That's the technical part.""" start="00:01:10.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Finally, how we work. All about Emms development.""" start="00:01:15.880" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Introduction to Emms: The practical part""" start="00:01:21.320" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Introduction to Emms: The practical part:""" start="00:01:21.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I want this talk to be of immediate use to people,""" start="00:01:25.021" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so I'm going to present a quick TL;DR of the Emms manual""" start="00:01:28.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""concerning installation and use.""" start="00:01:33.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""By the end of this part you should be able to""" start="00:01:36.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""install, configure, and use Emms in a variety of ways.""" start="00:01:38.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Where can I get Emms?""" start="00:01:45.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is distributed primarily via GNU ELPA.""" start="00:01:48.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So it's really only a M-x list-packages away at any moment.""" start="00:01:54.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There's also a website hosted at gnu.org.""" start="00:02:02.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Among other things on the website, you'll find""" start="00:02:07.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a copy of the friendly, robust, and up-to-date user manual.""" start="00:02:11.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Installing Emms has become progressively easier over time""" start="00:02:21.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and will continue to get easier.""" start="00:02:25.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In the bad old days, it required downloading a tarball""" start="00:02:28.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and compiling a C language shim""" start="00:02:32.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to enable reading metadata from media files.""" start="00:02:35.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But those days are long gone, and installing Emms is now""" start="00:02:38.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as easy as invoking M-x list-packages,""" start="00:02:43.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""installing the Emms package, and placing as few as""" start="00:02:47.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""2 or 3 lines of configuration in your Emacs initialization.""" start="00:02:51.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So after the package is installed via ELPA,""" start="00:02:57.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can add these few lines.""" start="00:03:02.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-all` will make available all of the stable features""" start="00:03:08.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which are shipped with Emms.""" start="00:03:12.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The `emms-player-list` variable is a list of players""" start="00:03:15.740" video="mainVideo-emms" id="subtitle"]]
[[!template text="""like MPV, MPlayer, VLC, etc.""" start="00:03:20.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms will call and control these external players""" start="00:03:25.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to play your media.""" start="00:03:29.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The variable `emms-info-functions` is a list of ways""" start="00:03:32.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for Emms to read the metadata in your media files""" start="00:03:36.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so that Emms can display song title, artist name,""" start="00:03:40.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""year of production, etc.""" start="00:03:45.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The `emms-info-native` feature in the setup example""" start="00:03:49.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is the built-in metadata reader""" start="00:03:55.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""written entirely in Emacs Lisp.""" start="00:03:58.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But there are also other backends""" start="00:04:01.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which can call external programs for info""" start="00:04:04.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as TinyTag, the TagLib library, exiftool, and so on.""" start="00:04:07.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You can then old-school restart your Emacs""" start="00:04:14.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or simply evaluate the above couple of lines to get going.""" start="00:04:17.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now that we have Emms installed and configured,""" start="00:04:22.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we should load some media for player.""" start="00:04:26.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There are multiple ways to load media into Emms for playing.""" start="00:04:29.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""They can be directories with local files,""" start="00:04:32.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""synchronized from a remote instance of""" start="00:04:36.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a music player daemon, PLS or M3U playlists,""" start="00:04:38.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a list of URLs for streaming,""" start="00:04:44.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or even Emms' own native playlist format""" start="00:04:47.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is unsurprisingly a just serialized Emacs Lisp.""" start="00:04:51.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""No matter how you add tracks to Emms,""" start="00:04:57.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you'll end up with a playlist.""" start="00:05:00.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A fundamental strength of Emms is that each playlist""" start="00:05:03.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is a regular Emacs buffer and the track listing therein""" start="00:05:08.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is nothing more than text lines with property overlays.""" start="00:05:13.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means that you can navigate, search, copy,""" start="00:05:17.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and edit an Emms playlist buffer""" start="00:05:21.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""just as you would any Emacs buffer.""" start="00:05:24.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you want to reorganize the tracks in the playlist,""" start="00:05:28.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then you can simply kill yank the tracks""" start="00:05:31.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""just as you would any buffer with lines of text,""" start="00:05:33.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and the same can be done between multiple playlist buffers.""" start="00:05:36.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of the most straightforward ways to add media""" start="00:05:42.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is to invoke a command like `M-x emms-add-directory-tree`.""" start="00:05:46.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You can point it to the top of a set of directories""" start="00:05:51.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with playable files for Emms to traverse.""" start="00:05:55.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Another rather convenient method is to mark files in Dired""" start="00:06:00.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and to invoke `emms-add-dired`.""" start="00:06:05.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I definitely use this one a lot.""" start="00:06:09.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms playlist mode binds""" start="00:06:11.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a number of useful keys and commands.""" start="00:06:16.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It's highly recommended that you either""" start="00:06:19.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""read the friendly manual""" start="00:06:23.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or hit &quot;C-h m&quot; in a playlist buffer to discover them.""" start="00:06:25.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now we have a playlist buffer with a number of tracks,""" start="00:06:32.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so the next step is going to be playback.""" start="00:06:35.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can be used as a minimalistic player""" start="00:06:40.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with nothing more than a handful of commands.""" start="00:06:44.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Once there is a current Emms playlist,""" start="00:06:48.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""invoking emms-start will begin playing the current track.""" start="00:06:51.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now of course in a new playlist""" start="00:06:57.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that would be the first track.""" start="00:07:00.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now emms-next, emms-pause, and emms-stop""" start="00:07:02.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""do exactly what you think they do.""" start="00:07:07.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""To visit the current playlist,""" start="00:07:11.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can invoke M-x emms-playlist-mode-go,""" start="00:07:13.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is a long command I personally bind to &quot;M-f12&quot;.""" start="00:07:17.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You'll be taken to the current playlist buffer.""" start="00:07:22.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""While you can have multiple playlist buffers,""" start="00:07:25.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""only one is current for the purposes of playback commands.""" start="00:07:29.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The playlist buffer has keys bound""" start="00:07:35.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to control the media being played.""" start="00:07:38.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-seek-forward` and `emms-seek-backwards` allow you""" start="00:07:39.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to scrub along the media being played.""" start="00:07:44.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Which commands are available is a function of""" start="00:07:49.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the player backend being employed.""" start="00:07:51.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The simplest of players may have nothing more""" start="00:07:54.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""than the ability to play, stop, and seek,""" start="00:07:56.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but others may implement a plethora of commands.""" start="00:07:59.560" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The modeline""" start="00:08:04.240" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The Modeline: Emms will by default display""" start="00:08:04.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the name of the currently playing track in the mode line""" start="00:08:08.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with information such as playing time.""" start="00:08:11.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The mode line format is controlled""" start="00:08:15.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""via the `emms-mode-line-format` variable""" start="00:08:15.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and the `emms-mode-line-playlist-current` function.""" start="00:08:20.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Metadata and the cache.""" start="00:08:27.140" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It would be sufficient for emms to simply list""" start="00:08:31.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the file names or urls of each piece of media,""" start="00:08:34.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but unless you name your music and media""" start="00:08:38.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with obsessive consistency and precision,""" start="00:08:41.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""not that there is anything wrong with that""" start="00:08:43.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then the resulting list will be a bit of an eyesore.""" start="00:08:46.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Moreover, there are a lot of other useful metadata""" start="00:08:50.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in the media files, including cool stuff like album art.""" start="00:08:54.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So instead of just files, Emms will try""" start="00:08:58.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to extract metadata from each track""" start="00:09:01.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and display a nicely-formatted track listing.""" start="00:09:04.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The format can be controlled by customizing""" start="00:09:08.220" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the variable `emms-track-description-function`.""" start="00:09:10.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms uses so-called info methods to extract""" start="00:09:15.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the metadata from each file.""" start="00:09:19.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-info-native`, which I mentioned before,""" start="00:09:22.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is the built-in metadata reader written in Emacs Lisp.""" start="00:09:25.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It provides support for Ogg Vorbis, Ogg Opus, FLAC, and MP3.""" start="00:09:30.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, if you have media in other formats,""" start="00:09:37.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can also add info methods""" start="00:09:40.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the `emms-info-functions` list,""" start="00:09:42.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which call external programs such as exiftool,""" start="00:09:45.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the LibTag library, tiny-tag, etc. to read file metadata.""" start="00:09:48.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Since reading metadata takes time""" start="00:09:55.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that metadata doesn't change very often,""" start="00:09:58.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms builds a cache as it extracts""" start="00:10:01.340" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the information from each file.""" start="00:10:04.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The first time loading of thousands of tracks""" start="00:10:06.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""into the emms cache may take a while,""" start="00:10:09.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but as is the nature of caching, subsequent loads""" start="00:10:13.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will be nearly instantaneous.""" start="00:10:17.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""To ease loading huge media collections,""" start="00:10:20.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""emms also can populate the cache asynchronously,""" start="00:10:22.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so that your emacs isn't locked up in the interim.""" start="00:10:26.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Let's talk about streams and URLs.""" start="00:10:30.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Not all playlist entries need to be associated with files.""" start="00:10:33.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It's possible to add streaming playlists""" start="00:10:37.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and URLs to any playlist.""" start="00:10:39.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms also comes with a built-in eclectic list""" start="00:10:42.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of streaming audio stations to get you started.""" start="00:10:46.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Any playlist entry can be a URL,""" start="00:10:50.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that URL will be passed on to the media player backend,""" start="00:10:52.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which can play it, if any.""" start="00:10:56.720" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Meta-playlist mode""" start="00:11:01.200" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Meta-playlist mode:""" start="00:11:01.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms also has meta-playlist mode""" start="00:11:03.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to help manage multiple playlists.""" start="00:11:08.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""When you invoke meta-playlist mode,""" start="00:11:11.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you will see a listing of all of the current Emms playlists,""" start="00:11:13.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and this mode binds a handful of useful keybindings""" start="00:11:16.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to help manage those playlists.""" start="00:11:22.000" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The browser""" start="00:11:29.860" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The Browser:""" start="00:11:29.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Music doesn't always lend itself to being viewed""" start="00:11:31.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as a series of discrete files.""" start="00:11:35.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""While there may be a good taxonomy of music""" start="00:11:38.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that can be reflected using directories and filenames,""" start="00:11:41.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""there are other aspects which cannot.""" start="00:11:45.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is especially true when you consider that""" start="00:11:49.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""unlike many computer file taxonomies,""" start="00:11:51.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""music files may contain""" start="00:11:55.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a lot of self-descriptive information""" start="00:11:56.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in the form of metadata,""" start="00:11:58.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as the year a work was published, the composer,""" start="00:12:00.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the performing artist, etc.""" start="00:12:04.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Therefore, it makes sense for Emms to enable""" start="00:12:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a different view into a media collection""" start="00:12:11.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is based on the cached metadata.""" start="00:12:13.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The browser interface binds a host of keys""" start="00:12:17.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to help navigate the tree structure""" start="00:12:19.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of the metadata information.""" start="00:12:22.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Since browser display""" start="00:12:24.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is not predicated upon directory structure,""" start="00:12:25.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can invoke functions such as `emms-browse-by-album`,""" start="00:12:28.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or `emms-browse-by-artist`, etc.""" start="00:12:32.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to view the collection in different ways.""" start="00:12:35.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can do a lot more,""" start="00:12:42.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but covering it all would take too much time.""" start="00:12:43.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I do recommend opening the fine Emms manual""" start="00:12:47.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and getting to know some additional features""" start="00:12:50.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as sorting tracks in playlists,""" start="00:12:52.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""sorting and filtering in the browser,""" start="00:12:55.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""editing track information,""" start="00:12:57.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""deriving a new playlist from an existing playlist,""" start="00:12:59.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the music player daemon, lyrics display, volume control,""" start="00:13:01.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""bookmarks, GNU FM, and Dbus/Mpris support.""" start="00:13:07.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I hope this was a useful introduction to Emms.""" start="00:13:13.360" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""How Emms works: The technical part""" start="00:13:19.920" video="mainVideo-emms" id="subtitle"]]

[[!template text="""How Emms Works: The technical part:""" start="00:13:19.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This part is an overview of how Emms works.""" start="00:13:23.220" video="mainVideo-emms" id="subtitle"]]
[[!template text="""By the end of this, you should be familiar enough""" start="00:13:26.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with Emms internals to hack on it. Hint hint.""" start="00:13:29.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A short history of Emms""" start="00:13:34.740" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is 20 years old as of the time of writing.""" start="00:13:37.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Old enough to drink in many countries.""" start="00:13:42.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means it was developed back in 2003""" start="00:13:45.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for emacs 21.2 or thereabouts.""" start="00:13:48.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""As developers, we don't go around looking to""" start="00:13:53.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""replace code just because it's old.""" start="00:13:56.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""On the other hand, some parts were inadequate""" start="00:13:58.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or just didn't age gracefully.""" start="00:14:01.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And we have been partially or completely rewriting those.""" start="00:14:04.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I became the maintainer of Emms about a decade ago,""" start="00:14:10.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but I didn't start the project.""" start="00:14:13.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Jorgen Schäfer started the project.""" start="00:14:16.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I reached out to Jorgen""" start="00:14:21.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and he kindly shared some of his recollections.""" start="00:14:22.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Jorgen states that Emms was born back""" start="00:14:25.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when the music format wars raged.""" start="00:14:28.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""MP3 was the standard, but overshadowed with patent issues.""" start="00:14:31.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In fact, Technicolor and Fraunhofer IIS""" start="00:14:38.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""only stopped licensing their patents for MP3""" start="00:14:42.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as recently as April of 2017.""" start="00:14:45.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Jorgen said that, and I quote,""" start="00:14:49.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""&quot;I needed a tool that was player agnostic""" start="00:14:53.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that could deal with a large collection of music files.""" start="00:14:56.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And I did not want any of the GUI music players""" start="00:14:59.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that existed back then.""" start="00:15:02.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Primarily, actually, because I did not want""" start="00:15:04.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to be switching windows to skip to the next song.""" start="00:15:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If I remember correctly,""" start="00:15:11.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I had just a shell script before that.""" start="00:15:12.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But I figured I lived in Emacs, so why not write a tool""" start="00:15:16.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that I can control my music from Emacs""" start="00:15:20.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""without ever having to leave Emacs?&quot; Unquote.""" start="00:15:23.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We can see that Jorgen's motivations were of the best kind,""" start="00:15:27.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to stay in Emacs.""" start="00:15:32.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms, an architecture of sensible abstractions.""" start="00:15:35.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can be divided into a number of parts.""" start="00:15:40.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The core, tracks, playlists, sources, players,""" start="00:15:44.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""info, cache, and ancillary.""" start="00:15:48.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now David J. Wheeler once said""" start="00:15:51.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that all problems in computer science""" start="00:15:53.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""can be solved by another level of indirection,""" start="00:15:56.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""except of course for the problem""" start="00:15:59.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of too many layers of indirection.""" start="00:16:01.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms core has survived this long""" start="00:16:04.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""because it makes sensible and flexible coding abstractions.""" start="00:16:07.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Keep this in mind as we explore the implementation.""" start="00:16:11.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This following part of the talk will also be invaluable""" start="00:16:15.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""if you want to hack on Emacs.""" start="00:16:18.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Another hint.""" start="00:16:21.560" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The Emms core""" start="00:16:23.820" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The Emms core.""" start="00:16:23.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The core defines tracks, playlists,""" start="00:16:25.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a way to start and stop playback,""" start="00:16:29.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as well as ways to proceed to the next track.""" start="00:16:31.760" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Tracks""" start="00:16:36.440" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Tracks:""" start="00:16:36.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms tracks consist of a list whose CAR is the symbol track,""" start="00:16:38.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and CADR is an alist starting with""" start="00:16:44.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the association of `type'.""" start="00:16:47.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Type can be something like file, streamlist, URL, etc.""" start="00:16:50.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A track of classical music from Bach's Art of Fugue""" start="00:16:56.740" video="mainVideo-emms" id="subtitle"]]
[[!template text="""may look something like this.""" start="00:17:00.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""While a track may contain many associations,""" start="00:17:04.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the number of associations remains a small constant""" start="00:17:07.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""from the perspective of computational steps required""" start="00:17:11.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to find any particular association.""" start="00:17:14.200" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Playlist""" start="00:17:18.460" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Playlist:""" start="00:17:18.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""An Emms playlist consists of an Emacs buffer""" start="00:17:20.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with a buffer-local non-nil variable,""" start="00:17:23.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-playlist-buffer-p`.""" start="00:17:26.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The buffer can contain anything, any amount or type of text,""" start="00:17:29.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or anything else.""" start="00:17:33.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms tracks are stored in text properties within the buffer,""" start="00:17:35.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with the unimaginatively named text property `emms-track`.""" start="00:17:40.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""For Emms, to go to the next track consists of""" start="00:17:46.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""nothing more than looking for the next text property change""" start="00:17:49.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""containing `emms-track`, wherever that is.""" start="00:17:52.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""That means that there is a healthy decoupling between""" start="00:17:57.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the visual representation of a playlist""" start="00:18:00.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and its contents as far as Emms is concerned.""" start="00:18:03.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This decoupling allows Emms playlist buffers""" start="00:18:08.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to look like anything as long as that anything consists of""" start="00:18:11.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""one or more `emms-track` text properties.""" start="00:18:15.320" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Sources""" start="00:18:22.080" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Sources:""" start="00:18:22.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A source is how you tell Emms:""" start="00:18:23.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""&quot;Go and get those things and turn them into tracks.&quot;""" start="00:18:25.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""More specifically, an Emms source is a function called in""" start="00:18:29.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a playlist buffer in order to add tracks.""" start="00:18:34.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And even more specifically, a source is really""" start="00:18:37.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a family of related functions""" start="00:18:40.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""defined by the macro `define-emms-source`.""" start="00:18:42.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A straightforward example""" start="00:18:47.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is the function `emms-add-directory`,""" start="00:18:49.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which adds an entire directory of files""" start="00:18:52.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the current playlist.""" start="00:18:55.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It accepts, or interactively queries for, a directory""" start="00:18:57.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and iterates over each file in that directory,""" start="00:19:02.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""adding them as tracks to the playlist buffer as it goes.""" start="00:19:06.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms comes with sources for files, directories, URLs,""" start="00:19:10.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""playlists of various formats,""" start="00:19:15.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""files from dired mode, and etc.""" start="00:19:17.320" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Players""" start="00:19:22.160" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Players:""" start="00:19:22.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""An Emms player is, at its simplest, a data structure""" start="00:19:24.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with three functions.""" start="00:19:28.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One to start playing, one to stop,""" start="00:19:30.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and one which returns true if the player knows""" start="00:19:34.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""how to play a given track.""" start="00:19:38.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, if your player also knows how to pause, resume,""" start="00:19:41.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""seek, etc, then additional functions can be added""" start="00:19:44.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the player data structure.""" start="00:19:48.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is abstract enough to be able to, for example,""" start="00:19:51.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""define a simple player for images with the help of""" start="00:19:55.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the `define-emms-simple-player` macro.""" start="00:19:58.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The above will define a player called `emms-player-display`,""" start="00:20:04.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which would call ImageMagick's `display` command""" start="00:20:09.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on each file in our playlist""" start="00:20:12.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with the image file extension we listed.""" start="00:20:15.640" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Info""" start="00:20:20.520" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Info:""" start="00:20:20.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""As previously described, Emms comes with info methods,""" start="00:20:23.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which are functions to add""" start="00:20:28.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""descriptive information to tracks.""" start="00:20:29.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is set up so that""" start="00:20:32.340" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the hook `emms-track-initialize-functions` is called""" start="00:20:34.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when a track is created, and that ends up calling""" start="00:20:37.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the info methods listed in the `emms-info-functions` list.""" start="00:20:41.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""These will modify the track data structure to add metadata.""" start="00:20:46.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of the coolest recent features of Emms""" start="00:20:51.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is `emms-info-native`, written by Petteri Hintsanen;""" start="00:20:54.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""again, sorry for the pronunciation.""" start="00:20:58.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-info-native` is a purely Emacs Lisp implementation""" start="00:21:01.326" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which reads Ogg Vorbis, Ogg Opus, FLAC, and MP3 files""" start="00:21:06.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and parses out the metadata.""" start="00:21:11.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is in comparison with other info readers""" start="00:21:14.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which Emms supports, which all involve calling out""" start="00:21:17.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to external processes and parsing the values returned.""" start="00:21:20.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-info-native` works by unpacking and examining""" start="00:21:25.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the binary data in the media file headers""" start="00:21:29.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and parsing the data layout specifications.""" start="00:21:32.040" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The cache""" start="00:21:36.660" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The Cache:""" start="00:21:36.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms cache is a mapping between a full path name""" start="00:21:38.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and its associated information.""" start="00:21:43.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Once information is extracted from a file""" start="00:21:45.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""using an info method, that information is then""" start="00:21:48.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""associated with that file in the cache.""" start="00:21:50.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One thing to bear in mind is that the caching system""" start="00:21:53.980" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was originally written back""" start="00:21:57.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when slow spinning disks were common.""" start="00:21:58.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A 32GB SSD drive cost close to $700 in 2006,""" start="00:22:00.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is the equivalent of about $1,000""" start="00:22:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""at the time of writing.""" start="00:22:10.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But despite the speed of modern drives,""" start="00:22:12.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the caching system is still worth using""" start="00:22:15.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for larger music collections.""" start="00:22:17.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The caching system is also a prerequisite""" start="00:22:19.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for being able to use the Emms browser.""" start="00:22:22.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The cache implementation is relatively naive.""" start="00:22:26.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""For instance, moving a file will invalidate""" start="00:22:30.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that cache entry for that file""" start="00:22:33.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and will require a refresh.""" start="00:22:35.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, relatively little work has been done""" start="00:22:37.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the cache implementation over the years""" start="00:22:40.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""since it has proven to be good enough""" start="00:22:42.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for the majority of situations.""" start="00:22:45.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Which is to say, nobody complained.""" start="00:22:47.060" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Healthy back and forth: mpv, mpd, and GNU.FM""" start="00:22:51.620" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Healthy back and forth. MPV, MPD, GNU.FM""" start="00:22:51.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Process communication with a simple media player""" start="00:22:56.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""can be as straightforward""" start="00:23:00.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as starting an asynchronous process""" start="00:23:01.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and waiting for that process to complete""" start="00:23:03.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in order to move to the next track.""" start="00:23:05.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is how the example above""" start="00:23:08.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with ImageMagick's display binary worked.""" start="00:23:10.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, Emms also handles asynchronous""" start="00:23:13.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""two-way communication with processes.""" start="00:23:17.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A simple example of this would be sending strings""" start="00:23:20.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to a running process such as the pause command to VLC.""" start="00:23:23.960" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""MPV""" start="00:23:31.560" video="mainVideo-emms" id="subtitle"]]

[[!template text="""MPV:""" start="00:23:31.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""MPV is a popular media player forked""" start="00:23:33.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in a roundabout way from mplayer.""" start="00:23:37.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of its most notable features is""" start="00:23:39.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""support for a robust client API.""" start="00:23:42.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Mike Kazantsev has been working since 2018""" start="00:23:46.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to develop the excellent `emms-player-mpv.el'.""" start="00:23:52.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It can communicate with a long running MPV process""" start="00:23:58.350" video="mainVideo-emms" id="subtitle"]]
[[!template text="""via Unix sockets or IP sockets.""" start="00:24:02.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This allows for MPV to do things""" start="00:24:07.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""like update ICY metadata for streaming audio.""" start="00:24:11.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So that, for example, when a song changes""" start="00:24:14.890" video="mainVideo-emms" id="subtitle"]]
[[!template text="""while you're listening to a streaming audio via Emms,""" start="00:24:17.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the song title displayed in the mode line""" start="00:24:22.050" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and track listing can update as well.""" start="00:24:24.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means that deep inside the code""" start="00:24:28.330" video="mainVideo-emms" id="subtitle"]]
[[!template text="""there is an Emacs `make-network-process` call.""" start="00:24:30.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The fact that Mike has put this together""" start="00:24:35.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in fewer than 1,000 lines of legible Emacs Lisp""" start="00:24:37.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is a testament to some serious coding ability.""" start="00:24:42.640" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""MPD""" start="00:24:47.470" video="mainVideo-emms" id="subtitle"]]

[[!template text="""MPD:""" start="00:24:47.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Similar to MPV but potentially""" start="00:24:49.610" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on a completely different machine""" start="00:24:52.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is Emms support for the Music Player Daemon.""" start="00:24:54.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Music Player Daemon or MPD is a media player""" start="00:24:58.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with an explicit client-server design""" start="00:25:01.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and communicates with Emms via a network process.""" start="00:25:03.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Unfortunately, MPD support has never been all that great.""" start="00:25:09.950" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But this isn't the emms developers fault!""" start="00:25:16.090" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Because unlike every other media player""" start="00:25:20.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that Emms interfaces with MPD is designed around""" start="00:25:25.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""its own internal playlist database.""" start="00:25:29.730" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is a surprising design decision""" start="00:25:31.930" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on the MPD developers' part""" start="00:25:35.270" video="mainVideo-emms" id="subtitle"]]
[[!template text="""since it goes against the client-server mindset.""" start="00:25:37.650" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A consequence is that we end up having to try and coordinate""" start="00:25:41.750" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and harmonize the MPD playlist with the Emms playlist.""" start="00:25:45.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I can foresee writing a completely new MPD mode for Emms""" start="00:25:51.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is designed to be a true pure MPD client.""" start="00:25:56.690" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Unless of course someone volunteers to beat me to it.""" start="00:26:01.510" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Hint hint.""" start="00:26:05.340" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""GNU FM and Libre FM""" start="00:26:07.440" video="mainVideo-emms" id="subtitle"]]

[[!template text="""GNU FM and Libre FM:""" start="00:26:07.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Libre FM is a music community which allows you""" start="00:26:10.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to share your listening habits with other users of the site.""" start="00:26:13.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A kind of online listening party.""" start="00:26:17.450" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In the case of `emms-librefm-scrobber.el`""" start="00:26:21.270" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we use Emacs' `url-retrieve` function""" start="00:26:25.650" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to asynchronously send to a URL""" start="00:26:28.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and then fire a callback function to process the response.""" start="00:26:32.450" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This represents numerous challenges""" start="00:26:40.050" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to implement within Emacs.""" start="00:26:42.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The primary issue being that Emacs itself""" start="00:26:45.090" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is pretty weak at doing anything""" start="00:26:47.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""truly and really asynchronously.""" start="00:26:50.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I can say with confident sarcasm""" start="00:26:54.220" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and with tongue firmly planted in cheek""" start="00:26:56.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that it is almost as if the original designers""" start="00:26:59.530" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of Emacs didn't foresee their text editor""" start="00:27:02.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""needing to play music""" start="00:27:05.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""while interacting with a remote network server.""" start="00:27:07.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""How myopic!""" start="00:27:09.820" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""How we work: Emms development""" start="00:27:12.560" video="mainVideo-emms" id="subtitle"]]

[[!template text="""How we work: Emms development:""" start="00:27:12.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This part is an overview of how Emms is developed.""" start="00:27:15.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""By the end of this part you should be able to understand""" start="00:27:19.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""how we hacked this project, and how you can too.""" start="00:27:23.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Where it's at.""" start="00:27:28.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""How to find our forge.""" start="00:27:29.950" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms has been hosted at the FSF's forge, Savannah,""" start="00:27:32.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""since around 2003.""" start="00:27:36.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is distributed via GNU ELPA and integrated into Emacs.""" start="00:27:39.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Before ELPA it was distributed as a tarball""" start="00:27:46.230" video="mainVideo-emms" id="subtitle"]]
[[!template text="""via ftp.gnu.org but that stopped back in 2020.""" start="00:27:49.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I was initially resistant to ELPA but around the time""" start="00:27:55.140" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when the thousandth person asked me why Emms isn't on ELPA,""" start="00:27:58.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I realized that it had to happen.""" start="00:28:03.850" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can also be found in other places""" start="00:28:07.210" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as Melpa or GitHub but we, the developers of Emms,""" start="00:28:10.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""have nothing to do with that""" start="00:28:16.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and we don't monitor those channels.""" start="00:28:18.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you want the source straight from, well, the source,""" start="00:28:21.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then go to the Savannah Git repository.""" start="00:28:26.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Look who's talking: Where development discussion happens.""" start="00:28:30.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you want to talk to us, discussions all happen""" start="00:28:34.990" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on emms-help@gnu.org.""" start="00:28:38.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We used to use emms-patches@gnu.org""" start="00:28:41.430" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but didn't feel like the volume of incoming patches""" start="00:28:45.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""justified a separate mailing list.""" start="00:28:48.280" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The Rime Of The Ancient Maintainer""" start="00:28:52.590" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The Rime Of The Ancient Maintainer:""" start="00:28:52.590" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There are a number of activities""" start="00:28:55.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""particular to being a maintainer.""" start="00:28:57.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""These are all part of a project's lifecycle.""" start="00:29:00.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Let's review some of them.""" start="00:29:03.390" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""The life and times of an Emms patch""" start="00:29:06.080" video="mainVideo-emms" id="subtitle"]]

[[!template text="""The life and times of an Emms patch:""" start="00:29:06.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A maintainer needs to be able to accept, critique,""" start="00:29:10.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and integrate patches from contributors and developers.""" start="00:29:13.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means, among other things, that the maintainer""" start="00:29:17.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""needs to keep on top of copyright issues.""" start="00:29:20.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Before being able to add Emms to GNU/ELPA,""" start="00:29:24.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we had to make sure that the copyright situation""" start="00:29:29.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was in order.""" start="00:29:31.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This long process required reaching out to people""" start="00:29:33.850" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and having them assign the copyright""" start="00:29:37.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for their work to the FSF,""" start="00:29:39.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or even removing their code entirely""" start="00:29:42.510" video="mainVideo-emms" id="subtitle"]]
[[!template text="""if they couldn't be reached.""" start="00:29:45.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The experience left me with the conviction""" start="00:29:47.970" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that the easiest way to fix""" start="00:29:50.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the copyright situation of your package""" start="00:29:52.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is to ensure that it never gets broken in the first place.""" start="00:29:54.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Often a person will write in to the emms-help mailing list,""" start="00:30:00.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or perhaps raise an issue on IRC.""" start="00:30:04.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If it's a bug report or feature request, we'll discuss it,""" start="00:30:08.030" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and when it's fixed, we'll ask the reporter""" start="00:30:11.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to test the result and provide feedback.""" start="00:30:14.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If it's a patch, then we'll typically go one of three ways.""" start="00:30:17.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A trivial patch, such as fixing a typo""" start="00:30:22.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or corrections on a single line of code,""" start="00:30:24.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will simply be applied by one of the developers.""" start="00:30:27.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A non-trivial, but one-time patch,""" start="00:30:32.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will have to be cleared from a copyright perspective.""" start="00:30:34.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means assigning copyright for the changes to the FSF.""" start="00:30:37.990" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Once that's cleared, then the patch will be applied.""" start="00:30:42.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Finally, if it's a non-trivial patch,""" start="00:30:46.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which looks like it would be the start""" start="00:30:49.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of a long-term development work (my favorite),""" start="00:30:52.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then after copyright is cleared,""" start="00:30:56.010" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that person will be offered to be added""" start="00:30:57.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the members with Git repo access on Savannah.""" start="00:31:00.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""From there, we usually use a dedicated branch""" start="00:31:05.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to do all the playing around""" start="00:31:08.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""before merging it with the main Git repo.""" start="00:31:09.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you have ever sent a patch, feature request,""" start="00:31:13.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or bug report into Emms (small or large), we thank you.""" start="00:31:16.880" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Let It Go: The release process""" start="00:31:24.080" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Let It Go, The Release Process:""" start="00:31:24.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The maintainer is responsible for the release process.""" start="00:31:27.790" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I found that a consistent schedule works well,""" start="00:31:31.610" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is not to say that we have to release on schedule,""" start="00:31:35.130" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but that aiming for a consistent release schedule""" start="00:31:39.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""provides structure and a goal.""" start="00:31:42.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The main Git branch in the repository is stable""" start="00:31:46.050" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and more often than not of release quality.""" start="00:31:50.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Releases are done about every three months.""" start="00:31:53.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And with such a stable main branch,""" start="00:31:56.650" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the process of releasing often involves little more""" start="00:31:59.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""than writing a NEWS entry.""" start="00:32:02.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""As a consequence, new and wonderful features""" start="00:32:05.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which aren't quite ready for prime time""" start="00:32:08.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when a release comes around,""" start="00:32:11.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will remain safely in their branch on the Git repo""" start="00:32:13.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""until after the ELPA release.""" start="00:32:18.200" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""It Is Not In Our Stars, But In Ourselves: Future directions""" start="00:32:23.400" video="mainVideo-emms" id="subtitle"]]

[[!template text="""It Is Not In Our Stars, But In Ourselves; Future Directions:""" start="00:32:23.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One aspect of Emms that needs to improve is ease of setup.""" start="00:32:29.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now that might surprise you, since at the time of writing,""" start="00:32:34.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""it's already pretty easy.""" start="00:32:37.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But my ideal is that the user would need to do""" start="00:32:40.070" video="mainVideo-emms" id="subtitle"]]
[[!template text="""nothing at all after installation.""" start="00:32:43.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And with that, as a goal in mind,""" start="00:32:46.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""there is more work to be done.""" start="00:32:49.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We are working on a player discovery feature.""" start="00:32:52.750" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The idea is simple.""" start="00:32:55.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The code looks for binaries of popular media players""" start="00:32:57.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on the user's machine,""" start="00:33:00.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and for each one found, it asks the user""" start="00:33:01.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""if they want the associated Emms player backend""" start="00:33:04.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to be configured.""" start="00:33:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In effect, this code is already working,""" start="00:33:09.810" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but currently an undocumented, unofficial feature.""" start="00:33:12.590" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You can try it for yourself with""" start="00:33:16.290" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-setup-discover-players`.""" start="00:33:17.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So what's the holdup?""" start="00:33:21.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-setup-discover-players` currently configures""" start="00:33:22.970" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the `emms-player-list` variable,""" start="00:33:26.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but doesn't write it to disk.""" start="00:33:27.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And that means that the configuration""" start="00:33:29.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""isn't preserved between Emacs sessions.""" start="00:33:31.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The question then becomes,""" start="00:33:35.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""what is the best way to preserve this setting?""" start="00:33:36.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I personally don't like anything""" start="00:33:40.310" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to edit my .emacs except me,""" start="00:33:42.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and I wouldn't do that to anyone else.""" start="00:33:46.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now we already write state to the .emacs.d/emms/ directory,""" start="00:33:49.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but that would require care not to""" start="00:33:55.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""clobber a user's existing setup.""" start="00:33:58.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Having the user set up their system in one place,""" start="00:34:01.910" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as a .emacs or a .emmsrc,""" start="00:34:04.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""while saving state to a different place""" start="00:34:08.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is asking for confusion.""" start="00:34:11.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is a good example which I bring up""" start="00:34:14.210" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of where a maintainer needs to""" start="00:34:16.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""solicit opinions from developers,""" start="00:34:18.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""both the Emacs developers,""" start="00:34:21.309" video="mainVideo-emms" id="subtitle"]]
[[!template text="""asking them where packages should save state,""" start="00:34:23.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and the Emms developers, and also users.""" start="00:34:28.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Then, the maintainer needs to""" start="00:34:33.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""carefully choose a path forward.""" start="00:34:35.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It is typical of the kind of issue you have to have in mind""" start="00:34:38.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when you're maintaining a package.""" start="00:34:41.560" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Development policies: Interface language""" start="00:34:44.849" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Development Policies: Interface Language.""" start="00:34:44.849" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A maintainer of an interactive program such as Emms""" start="00:34:49.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""needs to think about user interaction.""" start="00:34:52.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms doesn't use key bindings which are familiar""" start="00:34:55.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to people who are used to GUI media players,""" start="00:34:58.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that can, and has, caused friction.""" start="00:35:02.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Some new users are confused when they press the spacebar""" start="00:35:06.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on an entry in the Emms browser,""" start="00:35:09.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""only to find that nothing starts playing.""" start="00:35:12.530" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Indeed, all that does is to expand the browser tree""" start="00:35:15.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""at that point.""" start="00:35:18.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Then they might press RET on the same entry,""" start="00:35:20.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and be further frustrated at the continuing silence.""" start="00:35:23.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Since what return does is just to add that entry at point""" start="00:35:28.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the current playlist.""" start="00:35:33.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The discussion then arises""" start="00:35:36.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""about how Emms should handle that situation.""" start="00:35:37.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""On one hand, we want to make it as easy as possible""" start="00:35:41.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for new users to learn Emms,""" start="00:35:45.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and adopt a do-what-I-mean interface approach.""" start="00:35:48.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""On the other hand, this is an Emacs project.""" start="00:35:52.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It isn't a stand-alone GUI media player,""" start="00:35:56.750" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and should integrate into Emacs,""" start="00:35:59.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and serve Emacs users first and foremost.""" start="00:36:01.400" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Development policies: Freedom""" start="00:36:05.980" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Development policies: Freedom.""" start="00:36:05.980" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Another maintainer job is to think of Emms' posture""" start="00:36:10.290" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in regards to software freedom.""" start="00:36:15.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Here are a few examples.""" start="00:36:17.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Back with MP3 was still a patent encumbered format,""" start="00:36:19.730" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we pushed hard for Vorbis everywhere""" start="00:36:23.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""along with the PlayOgg campaign.""" start="00:36:26.081" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A then popular music streaming service,""" start="00:36:29.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which will remain unnamed,""" start="00:36:32.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""changed their stance towards third-party applications,""" start="00:36:34.930" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and required individual API keys which could not be shared.""" start="00:36:38.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We stood firm, said &quot;no&quot;,""" start="00:36:43.130" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and removed support for that service.""" start="00:36:45.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A recent suggestion to add support for YouTube""" start="00:36:48.670" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was also nixed,""" start="00:36:51.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""because the particular backend""" start="00:36:53.890" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was found to download and run proprietary javascript""" start="00:36:55.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on the user's machine.""" start="00:36:58.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Saying no to potentially useful or wanted features""" start="00:37:01.850" video="mainVideo-emms" id="subtitle"]]
[[!template text="""because it involves non-free software""" start="00:37:05.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is often an unpopular decision and can alienate people.""" start="00:37:07.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A maintainer needs to think carefully""" start="00:37:13.490" video="mainVideo-emms" id="subtitle"]]
[[!template text="""about each of these decisions,""" start="00:37:15.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as they are rarely straightforward and one-sided.""" start="00:37:17.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And as you see above, they also change over time""" start="00:37:21.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and need to be re-evaluated.""" start="00:37:25.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of the most useful things a maintainer can do""" start="00:37:30.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is to coordinate the development effort""" start="00:37:33.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and help new people join the project.""" start="00:37:35.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In light of that, if you want to work on a project""" start="00:37:39.230" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which has a bit of everything,""" start="00:37:41.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you could do worse than hacking on Emms.""" start="00:37:44.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There is inter-process communication,""" start="00:37:47.810" video="mainVideo-emms" id="subtitle"]]
[[!template text="""displaying graphics, parsing binary files,""" start="00:37:49.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""caching, asynchronous processes, user interface design.""" start="00:37:52.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We also are a project that insists on""" start="00:37:56.530" video="mainVideo-emms" id="subtitle"]]
[[!template text="""keeping a well-written and up-to-date manual.""" start="00:37:59.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you can write English or hack Emacs Lisp at all,""" start="00:38:02.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""chances are that there is something you can do for Emms.""" start="00:38:06.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Just saying.""" start="00:38:09.940" video="mainVideo-emms" id="subtitle"]]

[[!template new="1" text="""Acknowledgements""" start="00:38:12.370" video="mainVideo-emms" id="subtitle"]]

[[!template text="""Acknowledgements:""" start="00:38:12.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I'd like to express my deep gratitude for all of the people""" start="00:38:14.190" video="mainVideo-emms" id="subtitle"]]
[[!template text="""who have hacked on Emms""" start="00:38:18.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""during my time as a maintainer and before it.""" start="00:38:19.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It is often the case that I'm just the person""" start="00:38:23.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""holding the rudder and steering the ship,""" start="00:38:25.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with all of these developers""" start="00:38:28.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""rowing furiously to provide the power""" start="00:38:30.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which actually moves the ship forward.""" start="00:38:33.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Thank you to all.""" start="00:38:36.370" video="mainVideo-emms" id="subtitle"]]



Captioner: yoni

<a name="emms-qanda-transcript"></a>
# Q&A transcript (unedited)

[[!template text="""[Speaker 0]: And I think we are live.""" start="00:00:06.140" video="qanda-emms" id="subtitle"]]
[[!template text="""Hi, Yanny, how are you doing?""" start="00:00:07.580" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Excellent, excellent. Doing very well,""" start="00:00:10.460" video="qanda-emms" id="subtitle"]]
[[!template text="""thank you.""" start="00:00:10.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: So that was a wonderful presentation.""" start="00:00:13.980" video="qanda-emms" id="subtitle"]]
[[!template text="""I first want to commend you on your ability""" start="00:00:17.440" video="qanda-emms" id="subtitle"]]
[[!template text="""to both do the how the user encounters the""" start="00:00:22.040" video="qanda-emms" id="subtitle"]]
[[!template text="""MMS, how the developer might be interested""" start="00:00:24.960" video="qanda-emms" id="subtitle"]]
[[!template text="""about how it works, and I feel like you've""" start="00:00:28.680" video="qanda-emms" id="subtitle"]]
[[!template text="""done a wonderful job of talking to absolutely""" start="00:00:30.720" video="qanda-emms" id="subtitle"]]
[[!template text="""everyone in our audience,""" start="00:00:31.800" video="qanda-emms" id="subtitle"]]
[[!template text="""whatever their skill level.""" start="00:00:32.840" video="qanda-emms" id="subtitle"]]
[[!template text="""So thank you so much for this.""" start="00:00:34.120" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, that of course runs the risk of being,""" start="00:00:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, good for some,""" start="00:00:41.580" video="qanda-emms" id="subtitle"]]
[[!template text="""but excellent for none.""" start="00:00:42.980" video="qanda-emms" id="subtitle"]]
[[!template text="""But hopefully the result is that people can""" start="00:00:46.960" video="qanda-emms" id="subtitle"]]
[[!template text="""get something out of it.""" start="00:00:48.380" video="qanda-emms" id="subtitle"]]
[[!template text="""I think it's very important to make sure that""" start="00:00:51.820" video="qanda-emms" id="subtitle"]]
[[!template text="""everyone feels that they have access to""" start="00:00:55.680" video="qanda-emms" id="subtitle"]]
[[!template text="""Emacs, they have access to EMMS,""" start="00:00:57.239" video="qanda-emms" id="subtitle"]]
[[!template text="""that they can do this in whatever capacity""" start="00:01:00.640" video="qanda-emms" id="subtitle"]]
[[!template text="""they want. It's for everyone.""" start="00:01:02.800" video="qanda-emms" id="subtitle"]]
[[!template text="""I really believe that.""" start="00:01:05.440" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Yeah, and I understand this risk about having""" start="00:01:09.440" video="qanda-emms" id="subtitle"]]
[[!template text="""a talk that is kind of a jack-of-all-trades,""" start="00:01:10.680" video="qanda-emms" id="subtitle"]]
[[!template text="""but frankly you've done a wonderful job of""" start="00:01:14.440" video="qanda-emms" id="subtitle"]]
[[!template text="""making it interesting for everyone,""" start="00:01:16.560" video="qanda-emms" id="subtitle"]]
[[!template text="""because also I think the parts worked really""" start="00:01:19.540" video="qanda-emms" id="subtitle"]]
[[!template text="""well, and people always had something to look""" start="00:01:21.820" video="qanda-emms" id="subtitle"]]
[[!template text="""forward in terms of their expertise of what""" start="00:01:24.240" video="qanda-emms" id="subtitle"]]
[[!template text="""particularly spoke to them.""" start="00:01:25.360" video="qanda-emms" id="subtitle"]]
[[!template text="""So thank you again. What I'm going to do,""" start="00:01:27.560" video="qanda-emms" id="subtitle"]]
[[!template text="""we have about 14 minutes of Q&A,""" start="00:01:29.440" video="qanda-emms" id="subtitle"]]
[[!template text="""So I'll invite people,""" start="00:01:30.760" video="qanda-emms" id="subtitle"]]
[[!template text="""as I usually do, to add their questions in""" start="00:01:33.400" video="qanda-emms" id="subtitle"]]
[[!template text="""the other pad that you can find on the talks""" start="00:01:35.320" video="qanda-emms" id="subtitle"]]
[[!template text="""or on IRC. You can also join us in the""" start="00:01:38.560" video="qanda-emms" id="subtitle"]]
[[!template text="""discussion. I will make sure this time to""" start="00:01:40.200" video="qanda-emms" id="subtitle"]]
[[!template text="""ping Sasha to open the Q&A.""" start="00:01:42.180" video="qanda-emms" id="subtitle"]]
[[!template text="""Can you open, I-V-E-M-M-S.""" start="00:01:44.680" video="qanda-emms" id="subtitle"]]
[[!template text="""All right, and in the meantime,""" start="00:01:48.700" video="qanda-emms" id="subtitle"]]
[[!template text="""whilst we wait for people to join us in the""" start="00:01:50.940" video="qanda-emms" id="subtitle"]]
[[!template text="""room, I will start reading some of the""" start="00:01:52.360" video="qanda-emms" id="subtitle"]]
[[!template text="""questions off the pad.""" start="00:01:53.960" video="qanda-emms" id="subtitle"]]
[[!template text="""So we had the first question about the music""" start="00:01:57.180" video="qanda-emms" id="subtitle"]]
[[!template text="""that we played during the launch break,""" start="00:01:58.780" video="qanda-emms" id="subtitle"]]
[[!template text="""and It's 1 of our dear friends,""" start="00:02:01.320" video="qanda-emms" id="subtitle"]]
[[!template text="""Shoshin Ganshangroh, a free album,""" start="00:02:05.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Basement Dazed. I've put the link in the pad""" start="00:02:09.360" video="qanda-emms" id="subtitle"]]
[[!template text="""and we've been using Shoshin's music for the""" start="00:02:12.520" video="qanda-emms" id="subtitle"]]
[[!template text="""last 3 years, I think,""" start="00:02:13.420" video="qanda-emms" id="subtitle"]]
[[!template text="""and everyone, people are so excited.""" start="00:02:15.060" video="qanda-emms" id="subtitle"]]
[[!template text="""Some people say, why is it so noisy in the""" start="00:02:17.220" video="qanda-emms" id="subtitle"]]
[[!template text="""background? But it's just because there's 1""" start="00:02:18.480" video="qanda-emms" id="subtitle"]]
[[!template text="""part of the different tracks that sounds like""" start="00:02:20.940" video="qanda-emms" id="subtitle"]]
[[!template text="""static and it always gets people.""" start="00:02:24.280" video="qanda-emms" id="subtitle"]]
[[!template text="""We should probably do something about this,""" start="00:02:25.900" video="qanda-emms" id="subtitle"]]
[[!template text="""but frankly it makes me laugh every time.""" start="00:02:27.520" video="qanda-emms" id="subtitle"]]
[[!template text="""Starting with the first actual question,""" start="00:02:30.460" video="qanda-emms" id="subtitle"]]
[[!template text="""well actually it's a bit of a meme question,""" start="00:02:32.640" video="qanda-emms" id="subtitle"]]
[[!template text="""for the next Emacs Con,""" start="00:02:34.340" video="qanda-emms" id="subtitle"]]
[[!template text="""could we have an eMMS playlist to follow the""" start="00:02:37.280" video="qanda-emms" id="subtitle"]]
[[!template text="""talks along?""" start="00:02:37.760" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Oh that sounds like an excellent idea but I""" start="00:02:43.940" video="qanda-emms" id="subtitle"]]
[[!template text="""guess I'm wondering what they mean exactly by""" start="00:02:46.560" video="qanda-emms" id="subtitle"]]
[[!template text="""that. Is that a shareable playlist that we""" start="00:02:48.960" video="qanda-emms" id="subtitle"]]
[[!template text="""can pass along and just have people go to a""" start="00:02:54.560" video="qanda-emms" id="subtitle"]]
[[!template text="""URL and just be able to play that?""" start="00:02:56.320" video="qanda-emms" id="subtitle"]]
[[!template text="""I think that's an excellent idea.""" start="00:02:58.620" video="qanda-emms" id="subtitle"]]
[[!template text="""It should be a relatively low bandwidth""" start="00:03:00.660" video="qanda-emms" id="subtitle"]]
[[!template text="""process.""" start="00:03:01.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: And it's typically the type of stuff that is""" start="00:03:06.580" video="qanda-emms" id="subtitle"]]
[[!template text="""right of our alley. I'm thinking about the""" start="00:03:10.840" video="qanda-emms" id="subtitle"]]
[[!template text="""ICS file that we produce for all the events""" start="00:03:15.480" video="qanda-emms" id="subtitle"]]
[[!template text="""that are related to Emacs.""" start="00:03:17.020" video="qanda-emms" id="subtitle"]]
[[!template text="""You know the workshop that happened in Paris""" start="00:03:18.820" video="qanda-emms" id="subtitle"]]
[[!template text="""or in New York, LA? Sasha compiles a list of""" start="00:03:22.360" video="qanda-emms" id="subtitle"]]
[[!template text="""all the events and when they happen,""" start="00:03:23.560" video="qanda-emms" id="subtitle"]]
[[!template text="""and then we provide this to everyone.""" start="00:03:25.360" video="qanda-emms" id="subtitle"]]
[[!template text="""And we can do very much the same with""" start="00:03:27.040" video="qanda-emms" id="subtitle"]]
[[!template text="""EmacsConf. You could have a playlist for""" start="00:03:29.380" video="qanda-emms" id="subtitle"]]
[[!template text="""EmacsConf 2023, where you get all the talks""" start="00:03:31.980" video="qanda-emms" id="subtitle"]]
[[!template text="""and perhaps also the Q&A sessions so that you""" start="00:03:34.760" video="qanda-emms" id="subtitle"]]
[[!template text="""can relieve the 16 hours of content that""" start="00:03:36.780" video="qanda-emms" id="subtitle"]]
[[!template text="""we're producing. That'd be great,""" start="00:03:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""that's a great idea I think.""" start="00:03:39.240" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Absolutely, and if there are any limitations""" start="00:03:43.660" video="qanda-emms" id="subtitle"]]
[[!template text="""in the Emacs playlist structure that things""" start="00:03:48.060" video="qanda-emms" id="subtitle"]]
[[!template text="""are missing in the playlist structure,""" start="00:03:49.640" video="qanda-emms" id="subtitle"]]
[[!template text="""then it would be a great impetus to implement""" start="00:03:53.040" video="qanda-emms" id="subtitle"]]
[[!template text="""those and extend the playlist structure.""" start="00:03:55.080" video="qanda-emms" id="subtitle"]]
[[!template text="""Because after all, it's Lisp,""" start="00:03:57.380" video="qanda-emms" id="subtitle"]]
[[!template text="""it really is data and functions all mixed""" start="00:04:01.360" video="qanda-emms" id="subtitle"]]
[[!template text="""together, so we can do that.""" start="00:04:03.160" video="qanda-emms" id="subtitle"]]
[[!template text="""It would be very interesting to dive into it""" start="00:04:06.180" video="qanda-emms" id="subtitle"]]
[[!template text="""and see what's missing.""" start="00:04:07.000" video="qanda-emms" id="subtitle"]]
[[!template text="""That would be even more informative than what""" start="00:04:10.020" video="qanda-emms" id="subtitle"]]
[[!template text="""it can do.""" start="00:04:10.680" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Great. All right, moving on to the next""" start="00:04:14.900" video="qanda-emms" id="subtitle"]]
[[!template text="""question. I like to use music and audiobooks""" start="00:04:17.000" video="qanda-emms" id="subtitle"]]
[[!template text="""in very different ways.""" start="00:04:18.279" video="qanda-emms" id="subtitle"]]
[[!template text="""With music, I like shuffling by artists and""" start="00:04:21.440" video="qanda-emms" id="subtitle"]]
[[!template text="""with audiobooks, I want to read sequentially""" start="00:04:23.300" video="qanda-emms" id="subtitle"]]
[[!template text="""and pick the same playlist over a couple of""" start="00:04:27.260" video="qanda-emms" id="subtitle"]]
[[!template text="""days or weeks. Do you have any tips for using""" start="00:04:29.240" video="qanda-emms" id="subtitle"]]
[[!template text="""these 2 opposing media's workflow?""" start="00:04:30.860" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yes, so I have similar situations where I""" start="00:04:38.520" video="qanda-emms" id="subtitle"]]
[[!template text="""have very long endurance races that I watch,""" start="00:04:43.920" video="qanda-emms" id="subtitle"]]
[[!template text="""which I do all my media consumption is done""" start="00:04:47.160" video="qanda-emms" id="subtitle"]]
[[!template text="""via EMMS. I also listened to music.""" start="00:04:50.720" video="qanda-emms" id="subtitle"]]
[[!template text="""And so there's also a middle in between.""" start="00:04:54.020" video="qanda-emms" id="subtitle"]]
[[!template text="""There's 1 end in which you have popular""" start="00:04:57.980" video="qanda-emms" id="subtitle"]]
[[!template text="""music. These are standalone songs that are""" start="00:05:01.560" video="qanda-emms" id="subtitle"]]
[[!template text="""typically 3 to 4 minute long and they are""" start="00:05:04.860" video="qanda-emms" id="subtitle"]]
[[!template text="""best consumed in a random you know order""" start="00:05:07.900" video="qanda-emms" id="subtitle"]]
[[!template text="""because they are designed around,""" start="00:05:09.780" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, a commercial radio distribution.""" start="00:05:12.080" video="qanda-emms" id="subtitle"]]
[[!template text="""I guess I'm dating myself by saying radio,""" start="00:05:15.140" video="qanda-emms" id="subtitle"]]
[[!template text="""but you know all the that.""" start="00:05:17.120" video="qanda-emms" id="subtitle"]]
[[!template text="""In the middle there are longer works like""" start="00:05:20.940" video="qanda-emms" id="subtitle"]]
[[!template text="""musicals and classical where these are units""" start="00:05:26.100" video="qanda-emms" id="subtitle"]]
[[!template text="""where they might be very long but you would""" start="00:05:30.200" video="qanda-emms" id="subtitle"]]
[[!template text="""have several tracks that you do want to have""" start="00:05:33.160" video="qanda-emms" id="subtitle"]]
[[!template text="""1 after the other, and you want to be able to""" start="00:05:35.600" video="qanda-emms" id="subtitle"]]
[[!template text="""stop and go to the next track.""" start="00:05:38.360" video="qanda-emms" id="subtitle"]]
[[!template text="""And then at the very, very other end,""" start="00:05:40.760" video="qanda-emms" id="subtitle"]]
[[!template text="""you have extremely long format,""" start="00:05:44.020" video="qanda-emms" id="subtitle"]]
[[!template text="""which is included in a single file,""" start="00:05:46.360" video="qanda-emms" id="subtitle"]]
[[!template text="""such as an audio book,""" start="00:05:47.920" video="qanda-emms" id="subtitle"]]
[[!template text="""a movie, a tutorial that you're watching,""" start="00:05:51.400" video="qanda-emms" id="subtitle"]]
[[!template text="""or in my case, you know,""" start="00:05:54.100" video="qanda-emms" id="subtitle"]]
[[!template text="""a 24 hour, the 24 hours of Le Mans,""" start="00:05:56.580" video="qanda-emms" id="subtitle"]]
[[!template text="""just the 24 hour race,""" start="00:05:58.040" video="qanda-emms" id="subtitle"]]
[[!template text="""which, you know, that's 1 heck of a file.""" start="00:06:01.120" video="qanda-emms" id="subtitle"]]
[[!template text="""So that is 1 of the reasons eMMS has a number""" start="00:06:07.380" video="qanda-emms" id="subtitle"]]
[[!template text="""of elements such as the meta playlist mode""" start="00:06:10.160" video="qanda-emms" id="subtitle"]]
[[!template text="""and multiple playlists.""" start="00:06:11.260" video="qanda-emms" id="subtitle"]]
[[!template text="""So I would say that they would open a number""" start="00:06:16.160" video="qanda-emms" id="subtitle"]]
[[!template text="""of playlists in eMMS, generate a number of""" start="00:06:19.540" video="qanda-emms" id="subtitle"]]
[[!template text="""playlists that have each class of media.""" start="00:06:26.040" video="qanda-emms" id="subtitle"]]
[[!template text="""So the shorter form songs,""" start="00:06:28.940" video="qanda-emms" id="subtitle"]]
[[!template text="""the more pop songs you have in 1 playlist""" start="00:06:33.580" video="qanda-emms" id="subtitle"]]
[[!template text="""where you can sort, shuffle it,""" start="00:06:35.920" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, save it, do whatever you want.""" start="00:06:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""Then a separate playlist for the long form""" start="00:06:41.980" video="qanda-emms" id="subtitle"]]
[[!template text="""stuff. Sometimes that playlist will have even""" start="00:06:44.340" video="qanda-emms" id="subtitle"]]
[[!template text="""only 1 file in it if it's long enough,""" start="00:06:48.960" video="qanda-emms" id="subtitle"]]
[[!template text="""then have a key combination which takes you""" start="00:06:52.120" video="qanda-emms" id="subtitle"]]
[[!template text="""directly to 1 playlist or the other,""" start="00:06:55.280" video="qanda-emms" id="subtitle"]]
[[!template text="""and within the long-form playlist,""" start="00:06:57.340" video="qanda-emms" id="subtitle"]]
[[!template text="""looking at the bookmarking function of EMMS,""" start="00:07:01.980" video="qanda-emms" id="subtitle"]]
[[!template text="""which is designed around being able to save a""" start="00:07:06.560" video="qanda-emms" id="subtitle"]]
[[!template text="""particular stopping point or multiple""" start="00:07:10.080" video="qanda-emms" id="subtitle"]]
[[!template text="""stopping points, bookmarks in the audio,""" start="00:07:12.240" video="qanda-emms" id="subtitle"]]
[[!template text="""and being able to jump back into that audio.""" start="00:07:15.300" video="qanda-emms" id="subtitle"]]
[[!template text="""The point to remember about the bookmarking""" start="00:07:18.600" video="qanda-emms" id="subtitle"]]
[[!template text="""feature is that sometimes it really depends""" start="00:07:23.720" video="qanda-emms" id="subtitle"]]
[[!template text="""on you have to have the right back end.""" start="00:07:25.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Not all back ends with replaying,""" start="00:07:28.900" video="qanda-emms" id="subtitle"]]
[[!template text="""not all types of media work well with a""" start="00:07:33.120" video="qanda-emms" id="subtitle"]]
[[!template text="""bookmarking function, and bug reports""" start="00:07:36.200" video="qanda-emms" id="subtitle"]]
[[!template text="""welcome. But also there are other backends""" start="00:07:38.960" video="qanda-emms" id="subtitle"]]
[[!template text="""such as MPV where you can configure it that""" start="00:07:44.820" video="qanda-emms" id="subtitle"]]
[[!template text="""when you quit playing the song or the media""" start="00:07:49.860" video="qanda-emms" id="subtitle"]]
[[!template text="""with, you know, cue internally.""" start="00:07:55.080" video="qanda-emms" id="subtitle"]]
[[!template text="""So sometimes the back end has to continue""" start="00:07:58.140" video="qanda-emms" id="subtitle"]]
[[!template text="""playing that song. That's what I do in order""" start="00:08:04.400" video="qanda-emms" id="subtitle"]]
[[!template text="""to, on 1 hand, switch over to a...""" start="00:08:07.560" video="qanda-emms" id="subtitle"]]
[[!template text="""I want to hear... I'm coding,""" start="00:08:09.620" video="qanda-emms" id="subtitle"]]
[[!template text="""I want to hear some music,""" start="00:08:10.800" video="qanda-emms" id="subtitle"]]
[[!template text="""I go to my playlist of short songs,""" start="00:08:12.860" video="qanda-emms" id="subtitle"]]
[[!template text="""then I'm sitting back and I want to watch a""" start="00:08:16.280" video="qanda-emms" id="subtitle"]]
[[!template text="""long form something from where I left off and""" start="00:08:20.340" video="qanda-emms" id="subtitle"]]
[[!template text="""there I go to the other playlist and use""" start="00:08:22.420" video="qanda-emms" id="subtitle"]]
[[!template text="""bookmarks or the features of the back end""" start="00:08:26.140" video="qanda-emms" id="subtitle"]]
[[!template text="""that I'm using.""" start="00:08:26.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Okay, thank you for the answer.""" start="00:08:31.200" video="qanda-emms" id="subtitle"]]
[[!template text="""We have about 7 minutes and we have more""" start="00:08:34.440" video="qanda-emms" id="subtitle"]]
[[!template text="""questions, so that's great.""" start="00:08:35.280" video="qanda-emms" id="subtitle"]]
[[!template text="""Moving on to the next 1.""" start="00:08:37.440" video="qanda-emms" id="subtitle"]]
[[!template text="""Is there a way to search a music selection by""" start="00:08:40.080" video="qanda-emms" id="subtitle"]]
[[!template text="""lyrics? Assuming those lyrics are in the""" start="00:08:42.080" video="qanda-emms" id="subtitle"]]
[[!template text="""metadata or are available elsewhere,""" start="00:08:43.580" video="qanda-emms" id="subtitle"]]
[[!template text="""it would be neat to call songs up from the""" start="00:08:46.300" video="qanda-emms" id="subtitle"]]
[[!template text="""lyrics to the song. Perhaps is this""" start="00:08:48.660" video="qanda-emms" id="subtitle"]]
[[!template text="""implemented so that you can all aliases,""" start="00:08:50.860" video="qanda-emms" id="subtitle"]]
[[!template text="""so they can use aliases for the song that you""" start="00:08:54.560" video="qanda-emms" id="subtitle"]]
[[!template text="""like, defining those aliases or shortcuts""" start="00:08:56.640" video="qanda-emms" id="subtitle"]]
[[!template text="""either inside or outside eMMS?""" start="00:08:58.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Okay, so I think you've got 2 questions.""" start="00:08:59.760" video="qanda-emms" id="subtitle"]]
[[!template text="""First about the lyrics and then the aliases.""" start="00:09:01.500" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, so it's effectively not possible to do""" start="00:09:08.360" video="qanda-emms" id="subtitle"]]
[[!template text="""right now. There's a sense in which it is,""" start="00:09:10.880" video="qanda-emms" id="subtitle"]]
[[!template text="""but not really. What actually needs to""" start="00:09:14.820" video="qanda-emms" id="subtitle"]]
[[!template text="""happen? The problem is that the caching""" start="00:09:18.840" video="qanda-emms" id="subtitle"]]
[[!template text="""system is extremely naive.""" start="00:09:21.780" video="qanda-emms" id="subtitle"]]
[[!template text="""It's just really a hash that's written to""" start="00:09:24.800" video="qanda-emms" id="subtitle"]]
[[!template text="""disk. And maybe now with SQLite integration""" start="00:09:30.560" video="qanda-emms" id="subtitle"]]
[[!template text="""or other or just the fact that computers have""" start="00:09:35.200" video="qanda-emms" id="subtitle"]]
[[!template text="""a lot more speed and space than they used to""" start="00:09:39.220" video="qanda-emms" id="subtitle"]]
[[!template text="""have, we need to expand the cache to be a lot""" start="00:09:43.340" video="qanda-emms" id="subtitle"]]
[[!template text="""more greedy and a lot more flexible so that""" start="00:09:47.020" video="qanda-emms" id="subtitle"]]
[[!template text="""we can store things such as lyrics in as part""" start="00:09:52.580" video="qanda-emms" id="subtitle"]]
[[!template text="""of the metadata. There's no reason not to do""" start="00:09:56.000" video="qanda-emms" id="subtitle"]]
[[!template text="""that. Unless your collection would have to be""" start="00:10:02.220" video="qanda-emms" id="subtitle"]]
[[!template text="""truly enormous in order to slow things down.""" start="00:10:06.560" video="qanda-emms" id="subtitle"]]
[[!template text="""We wouldn't even need to compress the lyrics""" start="00:10:09.860" video="qanda-emms" id="subtitle"]]
[[!template text="""in order to store them like that.""" start="00:10:11.320" video="qanda-emms" id="subtitle"]]
[[!template text="""But that is a goal. So our rewrite of the""" start="00:10:15.920" video="qanda-emms" id="subtitle"]]
[[!template text="""cache is currently in progress,""" start="00:10:17.840" video="qanda-emms" id="subtitle"]]
[[!template text="""and the goal is to have a system where you""" start="00:10:21.680" video="qanda-emms" id="subtitle"]]
[[!template text="""can put any related information,""" start="00:10:24.920" video="qanda-emms" id="subtitle"]]
[[!template text="""including lyrics, and map that to a""" start="00:10:30.060" video="qanda-emms" id="subtitle"]]
[[!template text="""particular piece of the media,""" start="00:10:31.400" video="qanda-emms" id="subtitle"]]
[[!template text="""be it a URL or a... So you could have in a""" start="00:10:36.900" video="qanda-emms" id="subtitle"]]
[[!template text="""sense, you could have a URL to a lecture and""" start="00:10:40.080" video="qanda-emms" id="subtitle"]]
[[!template text="""the metadata associated would be some text,""" start="00:10:44.440" video="qanda-emms" id="subtitle"]]
[[!template text="""some notes or something else like that.""" start="00:10:47.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Right, so that was about the lyrics.""" start="00:10:51.140" video="qanda-emms" id="subtitle"]]
[[!template text="""I'm not sure how it answers the question""" start="00:10:53.040" video="qanda-emms" id="subtitle"]]
[[!template text="""about the aliases. I mean you can still""" start="00:10:54.560" video="qanda-emms" id="subtitle"]]
[[!template text="""filter what you've mentioned about the cache.""" start="00:10:56.380" video="qanda-emms" id="subtitle"]]
[[!template text="""I think it's... Do we consider the aliases to""" start="00:10:59.240" video="qanda-emms" id="subtitle"]]
[[!template text="""be anything within the metadata?""" start="00:11:01.120" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: No, you're right. That is a separate""" start="00:11:08.040" video="qanda-emms" id="subtitle"]]
[[!template text="""question. I don't have a great answer for""" start="00:11:12.380" video="qanda-emms" id="subtitle"]]
[[!template text="""that right now.""" start="00:11:12.980" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Okay, great. Well, we'll put a pin on this""" start="00:11:16.280" video="qanda-emms" id="subtitle"]]
[[!template text="""and we can return to it.""" start="00:11:17.440" video="qanda-emms" id="subtitle"]]
[[!template text="""You can return to it at a later stage.""" start="00:11:19.690" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah. All right, moving on to the next""" start="00:11:21.880" video="qanda-emms" id="subtitle"]]
[[!template text="""question, then. I'll just,""" start="00:11:22.800" video="qanda-emms" id="subtitle"]]
[[!template text="""we'll put a pin on this.""" start="00:11:25.180" video="qanda-emms" id="subtitle"]]
[[!template text="""All right, next question.""" start="00:11:26.420" video="qanda-emms" id="subtitle"]]
[[!template text="""Are there plans for managing metadata with""" start="00:11:29.020" video="qanda-emms" id="subtitle"]]
[[!template text="""online resource backends,""" start="00:11:30.040" video="qanda-emms" id="subtitle"]]
[[!template text="""i.e. Discogs or music brains?""" start="00:11:32.020" video="qanda-emms" id="subtitle"]]
[[!template text="""What about something like Beats and Emacs or""" start="00:11:34.360" video="qanda-emms" id="subtitle"]]
[[!template text="""part of the EMMS?""" start="00:11:34.920" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, so that's an active discussion on the""" start="00:11:40.520" video="qanda-emms" id="subtitle"]]
[[!template text="""mailing list right now.""" start="00:11:42.140" video="qanda-emms" id="subtitle"]]
[[!template text="""We don't want to replicate what Beats does""" start="00:11:47.340" video="qanda-emms" id="subtitle"]]
[[!template text="""very, very well in eMMS.""" start="00:11:49.680" video="qanda-emms" id="subtitle"]]
[[!template text="""We don't want a clunky interface with Beats.""" start="00:11:53.860" video="qanda-emms" id="subtitle"]]
[[!template text="""We do want some kind of,""" start="00:11:57.440" video="qanda-emms" id="subtitle"]]
[[!template text="""and so it's hard to tell exactly where to""" start="00:12:00.100" video="qanda-emms" id="subtitle"]]
[[!template text="""draw that line. So the big answer is yes,""" start="00:12:03.160" video="qanda-emms" id="subtitle"]]
[[!template text="""absolutely, there is a plan to do that.""" start="00:12:04.960" video="qanda-emms" id="subtitle"]]
[[!template text="""The details become complicated because for 1""" start="00:12:09.760" video="qanda-emms" id="subtitle"]]
[[!template text="""thing, the backend, the database that""" start="00:12:15.900" video="qanda-emms" id="subtitle"]]
[[!template text="""MusicBrain uses, AcoustID,""" start="00:12:18.140" video="qanda-emms" id="subtitle"]]
[[!template text="""I don't remember if AcoustID is the binary or""" start="00:12:21.500" video="qanda-emms" id="subtitle"]]
[[!template text="""the database, but that's actually for""" start="00:12:25.680" video="qanda-emms" id="subtitle"]]
[[!template text="""non-commercial use only.""" start="00:12:27.500" video="qanda-emms" id="subtitle"]]
[[!template text="""So not only do you need to compile a piece of""" start="00:12:31.320" video="qanda-emms" id="subtitle"]]
[[!template text="""software on your computer as a shim,""" start="00:12:35.280" video="qanda-emms" id="subtitle"]]
[[!template text="""which is what you need to do in order to set""" start="00:12:37.540" video="qanda-emms" id="subtitle"]]
[[!template text="""up beats to do fingerprinting.""" start="00:12:39.180" video="qanda-emms" id="subtitle"]]
[[!template text="""But it also crosses this line between""" start="00:12:44.720" video="qanda-emms" id="subtitle"]]
[[!template text="""completely free software to completely free""" start="00:12:47.660" video="qanda-emms" id="subtitle"]]
[[!template text="""software interfacing with a non-commercial""" start="00:12:49.400" video="qanda-emms" id="subtitle"]]
[[!template text="""only service. So a lot of the discussion""" start="00:12:56.000" video="qanda-emms" id="subtitle"]]
[[!template text="""that's going on now is what is the contour?""" start="00:12:58.660" video="qanda-emms" id="subtitle"]]
[[!template text="""Where would be where we would be effective""" start="00:13:02.160" video="qanda-emms" id="subtitle"]]
[[!template text="""for EMMS to do management and where not?""" start="00:13:08.720" video="qanda-emms" id="subtitle"]]
[[!template text="""For 1 thing, I would love to be able to...""" start="00:13:11.600" video="qanda-emms" id="subtitle"]]
[[!template text="""1 thing that we definitely would love to be""" start="00:13:13.980" video="qanda-emms" id="subtitle"]]
[[!template text="""able to do is when you hit E on a file and""" start="00:13:18.340" video="qanda-emms" id="subtitle"]]
[[!template text="""you get all the metadata to be able to then""" start="00:13:21.540" video="qanda-emms" id="subtitle"]]
[[!template text="""give a command to say,""" start="00:13:23.000" video="qanda-emms" id="subtitle"]]
[[!template text="""hey, play to music brains and see if you can""" start="00:13:25.320" video="qanda-emms" id="subtitle"]]
[[!template text="""improve that metadata.""" start="00:13:26.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Do you have better metadata,""" start="00:13:29.020" video="qanda-emms" id="subtitle"]]
[[!template text="""more complete metadata to complete that?""" start="00:13:33.400" video="qanda-emms" id="subtitle"]]
[[!template text="""That is definitely in the pipeline.""" start="00:13:35.840" video="qanda-emms" id="subtitle"]]
[[!template text="""How best to do it, that's a discussion.""" start="00:13:40.900" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Okay, Yoni, we have about 2 minutes until we""" start="00:13:45.460" video="qanda-emms" id="subtitle"]]
[[!template text="""need to go to the next talk.""" start="00:13:46.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Okay, I'll risk it. 1 more question and a""" start="00:13:52.960" video="qanda-emms" id="subtitle"]]
[[!template text="""short answer if you can.""" start="00:13:53.800" video="qanda-emms" id="subtitle"]]
[[!template text="""Have the developers considered using Emacs""" start="00:13:57.440" video="qanda-emms" id="subtitle"]]
[[!template text="""customized functionality to persistently""" start="00:13:59.060" video="qanda-emms" id="subtitle"]]
[[!template text="""store settings when using eMMS setup discover""" start="00:14:01.720" video="qanda-emms" id="subtitle"]]
[[!template text="""players?""" start="00:14:02.120" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yes, absolutely. That's another active place,""" start="00:14:08.000" video="qanda-emms" id="subtitle"]]
[[!template text="""especially with the discover players.""" start="00:14:11.840" video="qanda-emms" id="subtitle"]]
[[!template text="""How to do it exactly without annoying people""" start="00:14:14.440" video="qanda-emms" id="subtitle"]]
[[!template text="""and clobbering their own settings,""" start="00:14:17.840" video="qanda-emms" id="subtitle"]]
[[!template text="""we just need to be very careful about that.""" start="00:14:20.360" video="qanda-emms" id="subtitle"]]
[[!template text="""Yes, that's in the coming releases.""" start="00:14:23.040" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: All right, well, Younif,""" start="00:14:26.520" video="qanda-emms" id="subtitle"]]
[[!template text="""thank you so much for your time.""" start="00:14:27.900" video="qanda-emms" id="subtitle"]]
[[!template text="""Feel free to stay in the room.""" start="00:14:29.440" video="qanda-emms" id="subtitle"]]
[[!template text="""I see that some people have started joining""" start="00:14:30.920" video="qanda-emms" id="subtitle"]]
[[!template text="""on BBB. If you have more questions,""" start="00:14:33.720" video="qanda-emms" id="subtitle"]]
[[!template text="""feel free to unmute yourself and ask them""" start="00:14:36.780" video="qanda-emms" id="subtitle"]]
[[!template text="""live. Younid, I could ask you also to perhaps""" start="00:14:39.520" video="qanda-emms" id="subtitle"]]
[[!template text="""answer the question. I've put the link to the""" start="00:14:41.600" video="qanda-emms" id="subtitle"]]
[[!template text="""pad in the BBB chat, so if you look at the...""" start="00:14:43.980" video="qanda-emms" id="subtitle"]]
[[!template text="""Here, I think, we're not mirrored on BBB.""" start="00:14:47.220" video="qanda-emms" id="subtitle"]]
[[!template text="""If you look at the left you should be able to""" start="00:14:49.080" video="qanda-emms" id="subtitle"]]
[[!template text="""see the chat and the questions and if you""" start="00:14:51.500" video="qanda-emms" id="subtitle"]]
[[!template text="""could just answer the last question that""" start="00:14:52.720" video="qanda-emms" id="subtitle"]]
[[!template text="""would be great. For us on the general track""" start="00:14:55.440" video="qanda-emms" id="subtitle"]]
[[!template text="""we will be moving to the next talk and""" start="00:14:57.980" video="qanda-emms" id="subtitle"]]
[[!template text="""Yannick do you have any last thing to say in""" start="00:14:59.700" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Thank everyone who put together the""" start="00:15:02.720" video="qanda-emms" id="subtitle"]]
[[!template text="""conference and thank you to everyone who""" start="00:15:04.320" video="qanda-emms" id="subtitle"]]
[[!template text="""helps with the EMMS.""" start="00:15:06.680" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: 10 seconds? All right,""" start="00:15:08.160" video="qanda-emms" id="subtitle"]]
[[!template text="""well, thank you so much,""" start="00:15:09.160" video="qanda-emms" id="subtitle"]]
[[!template text="""Yoni. We'll probably see you later.""" start="00:15:10.940" video="qanda-emms" id="subtitle"]]
[[!template text="""Bye-bye. Wonderful. And I think we are off""" start="00:15:17.720" video="qanda-emms" id="subtitle"]]
[[!template text="""air. Thank you so much,""" start="00:15:18.620" video="qanda-emms" id="subtitle"]]
[[!template text="""Juni. I need to step out and go take care of""" start="00:15:20.800" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Okay, wonderful. Thank you very much.""" start="00:15:23.260" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: the next talk. Bye-bye.""" start="00:15:24.080" video="qanda-emms" id="subtitle"]]
[[!template text="""And just to, I forgot to mention,""" start="00:15:25.520" video="qanda-emms" id="subtitle"]]
[[!template text="""but you can still talk here and everything is""" start="00:15:27.160" video="qanda-emms" id="subtitle"]]
[[!template text="""still being recorded. So,""" start="00:15:28.320" video="qanda-emms" id="subtitle"]]
[[!template text="""I'll see you later.""" start="00:15:28.880" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: Excellent. Bye-bye. Bye.""" start="00:15:32.320" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Oh, hello.""" start="00:15:35.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Wait, you're still, I cannot hear you yet.""" start="00:15:40.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 4]: You are currently the only person in this""" start="00:15:42.900" video="qanda-emms" id="subtitle"]]
[[!template text="""conference.""" start="00:15:43.080" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: Okay.""" start="00:16:12.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Can you hear me now? I just wanted to say hi""" start="00:16:18.120" video="qanda-emms" id="subtitle"]]
[[!template text="""and thank you. My name's Grant.""" start="00:16:19.840" video="qanda-emms" id="subtitle"]]
[[!template text="""I've, you helped me contribute to EMMS maybe""" start="00:16:23.740" video="qanda-emms" id="subtitle"]]
[[!template text="""2 or 3 years ago. I was trying to do the""" start="00:16:26.820" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: So,""" start="00:16:28.480" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: track tag stuff. yeah.""" start="00:16:29.340" video="qanda-emms" id="subtitle"]]
[[!template text="""So I just wanted to say thank you.""" start="00:16:32.148" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Thank you for continuing and going through""" start="00:16:35.400" video="qanda-emms" id="subtitle"]]
[[!template text="""that entire process. I know that 1 of the""" start="00:16:38.560" video="qanda-emms" id="subtitle"]]
[[!template text="""things that happens is that people want to""" start="00:16:40.380" video="qanda-emms" id="subtitle"]]
[[!template text="""contribute, but it's not as slick as GitHub""" start="00:16:43.940" video="qanda-emms" id="subtitle"]]
[[!template text="""and stuff like that, especially with the""" start="00:16:46.080" video="qanda-emms" id="subtitle"]]
[[!template text="""copper assignment. And objectively,""" start="00:16:53.400" video="qanda-emms" id="subtitle"]]
[[!template text="""it's not that. It's just harder than what""" start="00:16:56.920" video="qanda-emms" id="subtitle"]]
[[!template text="""they imagine it might be.""" start="00:16:58.680" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah. Well, I appreciate it.""" start="00:17:01.500" video="qanda-emms" id="subtitle"]]
[[!template text="""I think you're doing a wonderful job as a""" start="00:17:03.340" video="qanda-emms" id="subtitle"]]
[[!template text="""maintainer. I still hang out on the list and""" start="00:17:07.200" video="qanda-emms" id="subtitle"]]
[[!template text="""enjoy listening in on the discussions.""" start="00:17:09.380" video="qanda-emms" id="subtitle"]]
[[!template text="""So.""" start="00:17:09.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: Yeah. But that's it. I think that's it.""" start="00:17:14.240" video="qanda-emms" id="subtitle"]]
[[!template text="""I think that's it. And I think that's it.""" start="00:17:16.700" video="qanda-emms" id="subtitle"]]
[[!template text="""And I think that's it.""" start="00:17:17.640" video="qanda-emms" id="subtitle"]]
[[!template text="""I appreciate it. And I'll leave you to all of""" start="00:17:23.339" video="qanda-emms" id="subtitle"]]
[[!template text="""you to go on from being a product.""" start="00:17:27.781" video="qanda-emms" id="subtitle"]]
[[!template text="""And that she valued to all of us long term""" start="00:17:28.088" video="qanda-emms" id="subtitle"]]
[[!template text="""being a project.""" start="00:17:28.180" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: If you're not super duper active,""" start="00:17:31.460" video="qanda-emms" id="subtitle"]]
[[!template text="""being there long term,""" start="00:17:33.420" video="qanda-emms" id="subtitle"]]
[[!template text="""people tend to find it easier trying to""" start="00:17:37.360" video="qanda-emms" id="subtitle"]]
[[!template text="""continue contributing to the project if""" start="00:17:40.840" video="qanda-emms" id="subtitle"]]
[[!template text="""there's a consistency there,""" start="00:17:42.360" video="qanda-emms" id="subtitle"]]
[[!template text="""if there isn't a churn,""" start="00:17:43.520" video="qanda-emms" id="subtitle"]]
[[!template text="""if there is a kind of a core group.""" start="00:17:47.720" video="qanda-emms" id="subtitle"]]
[[!template text="""I guess it's like, you think it's constant.""" start="00:17:52.440" video="qanda-emms" id="subtitle"]]
[[!template text="""Eliezer Etzke and RMS,""" start="00:17:58.280" video="qanda-emms" id="subtitle"]]
[[!template text="""whatever on the next mailing list,""" start="00:18:00.420" video="qanda-emms" id="subtitle"]]
[[!template text="""You know, okay, there are certain people that""" start="00:18:03.040" video="qanda-emms" id="subtitle"]]
[[!template text="""I think so. So thank you for that.""" start="00:18:05.600" video="qanda-emms" id="subtitle"]]
[[!template text="""That's very important.""" start="00:18:06.340" video="qanda-emms" id="subtitle"]]
[[!template text="""That helps.""" start="00:18:07.540" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, I'm, I feel like when I started using""" start="00:18:12.560" video="qanda-emms" id="subtitle"]]
[[!template text="""EMMS several years ago,""" start="00:18:14.180" video="qanda-emms" id="subtitle"]]
[[!template text="""it's, it's improved a lot since then.""" start="00:18:16.500" video="qanda-emms" id="subtitle"]]
[[!template text="""And I notice your focus on helping new users""" start="00:18:19.540" video="qanda-emms" id="subtitle"]]
[[!template text="""get started quickly. And I think the talk""" start="00:18:22.540" video="qanda-emms" id="subtitle"]]
[[!template text="""today will help with that too.""" start="00:18:23.840" video="qanda-emms" id="subtitle"]]
[[!template text="""So""" start="00:18:24.160" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: yeah, I want to put you know,""" start="00:18:32.380" video="qanda-emms" id="subtitle"]]
[[!template text="""the, especially the TLDR,""" start="00:18:33.860" video="qanda-emms" id="subtitle"]]
[[!template text="""like how to start it on the link that to the""" start="00:18:37.500" video="qanda-emms" id="subtitle"]]
[[!template text="""website, find somehow that we can get on to""" start="00:18:44.080" video="qanda-emms" id="subtitle"]]
[[!template text="""prepare for that. And this together.""" start="00:18:52.900" video="qanda-emms" id="subtitle"]]
[[!template text="""Now, question for you,""" start="00:18:54.700" video="qanda-emms" id="subtitle"]]
[[!template text="""Where would you like to see EMMS go?""" start="00:18:58.260" video="qanda-emms" id="subtitle"]]
[[!template text="""Where do you see it landing?""" start="00:18:59.440" video="qanda-emms" id="subtitle"]]
[[!template text="""What do you feel like this is what this is""" start="00:19:02.780" video="qanda-emms" id="subtitle"]]
[[!template text="""we're sorely missing these things?""" start="00:19:04.540" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: I don't know. I mean, I picked it up,""" start="00:19:09.740" video="qanda-emms" id="subtitle"]]
[[!template text="""because I both use it to play my music""" start="00:19:13.540" video="qanda-emms" id="subtitle"]]
[[!template text="""collection, but also, like I record my own""" start="00:19:17.100" video="qanda-emms" id="subtitle"]]
[[!template text="""music. And I wanted to be able to edit my""" start="00:19:20.140" video="qanda-emms" id="subtitle"]]
[[!template text="""metadata in Emacs, because editing metadata""" start="00:19:23.500" video="qanda-emms" id="subtitle"]]
[[!template text="""elsewhere sucks. And so that's kind of why I""" start="00:19:29.100" video="qanda-emms" id="subtitle"]]
[[!template text="""got involved with that.""" start="00:19:30.280" video="qanda-emms" id="subtitle"]]
[[!template text="""And I was like, being able to edit metadata,""" start="00:19:33.440" video="qanda-emms" id="subtitle"]]
[[!template text="""especially for content that maybe you're""" start="00:19:37.580" video="qanda-emms" id="subtitle"]]
[[!template text="""creating or because I have a bunch of files""" start="00:19:41.760" video="qanda-emms" id="subtitle"]]
[[!template text="""of just unlabeled stuff I've recorded on,""" start="00:19:44.340" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, different quarters,""" start="00:19:45.340" video="qanda-emms" id="subtitle"]]
[[!template text="""things like that. So that's kind of where I""" start="00:19:47.440" video="qanda-emms" id="subtitle"]]
[[!template text="""was focusing on it. It's the only media tool""" start="00:19:50.320" video="qanda-emms" id="subtitle"]]
[[!template text="""that lets me do that, you know,""" start="00:19:52.540" video="qanda-emms" id="subtitle"]]
[[!template text="""I can play the music back and have quick""" start="00:19:54.520" video="qanda-emms" id="subtitle"]]
[[!template text="""editing. So I know there was a couple of""" start="00:19:58.260" video="qanda-emms" id="subtitle"]]
[[!template text="""things we had talked about in terms of maybe""" start="00:20:00.860" video="qanda-emms" id="subtitle"]]
[[!template text="""improving kind of the user interface for the""" start="00:20:03.260" video="qanda-emms" id="subtitle"]]
[[!template text="""tag editor, things like that.""" start="00:20:05.440" video="qanda-emms" id="subtitle"]]
[[!template text="""So I don't have any grand visions for where""" start="00:20:09.300" video="qanda-emms" id="subtitle"]]
[[!template text="""EMMS should go. I know pretty much all the""" start="00:20:15.660" video="qanda-emms" id="subtitle"]]
[[!template text="""things I've heard about it already.""" start="00:20:16.920" video="qanda-emms" id="subtitle"]]
[[!template text="""You can hook up to GNU FM,""" start="00:20:20.200" video="qanda-emms" id="subtitle"]]
[[!template text="""the Scrabbling Service,""" start="00:20:21.940" video="qanda-emms" id="subtitle"]]
[[!template text="""and all that kind of stuff.""" start="00:20:23.200" video="qanda-emms" id="subtitle"]]
[[!template text="""I don't really feel like it's missing much,""" start="00:20:26.920" video="qanda-emms" id="subtitle"]]
[[!template text="""especially being able to choose the back""" start="00:20:29.020" video="qanda-emms" id="subtitle"]]
[[!template text="""ends. I guess, if anything,""" start="00:20:31.880" video="qanda-emms" id="subtitle"]]
[[!template text="""it's the interface. How can it be even more""" start="00:20:34.960" video="qanda-emms" id="subtitle"]]
[[!template text="""intuitive for users? And I think that,""" start="00:20:38.160" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, we need more people playing around""" start="00:20:41.500" video="qanda-emms" id="subtitle"]]
[[!template text="""with it, I guess. Yeah.""" start="00:20:43.380" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: I think a really good""" start="00:20:46.220" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Well, yeah. example of that is,""" start="00:20:47.520" video="qanda-emms" id="subtitle"]]
[[!template text="""because I'm sure there are lots of people""" start="00:20:49.240" video="qanda-emms" id="subtitle"]]
[[!template text="""playing around with it,""" start="00:20:50.440" video="qanda-emms" id="subtitle"]]
[[!template text="""arriving at a conclusion,""" start="00:20:51.460" video="qanda-emms" id="subtitle"]]
[[!template text="""keeping it to themselves and moving on.""" start="00:20:53.860" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah. Which, and I know that a lot of bits of""" start="00:20:59.160" video="qanda-emms" id="subtitle"]]
[[!template text="""software put a send a bug report feature in""" start="00:21:01.820" video="qanda-emms" id="subtitle"]]
[[!template text="""and stuff like that and no 1 uses those""" start="00:21:04.660" video="qanda-emms" id="subtitle"]]
[[!template text="""either. So that's the frictional cost.""" start="00:21:07.600" video="qanda-emms" id="subtitle"]]
[[!template text="""I think the context switch for people between""" start="00:21:10.440" video="qanda-emms" id="subtitle"]]
[[!template text="""this doesn't work to actually formulating in""" start="00:21:16.120" video="qanda-emms" id="subtitle"]]
[[!template text="""words what didn't work,""" start="00:21:17.840" video="qanda-emms" id="subtitle"]]
[[!template text="""that is a very expensive context which most""" start="00:21:21.380" video="qanda-emms" id="subtitle"]]
[[!template text="""people will not do. And we're poorer for""" start="00:21:24.800" video="qanda-emms" id="subtitle"]]
[[!template text="""that. So, I think that when we integrate""" start="00:21:32.220" video="qanda-emms" id="subtitle"]]
[[!template text="""music brains and other things like that into.""" start="00:21:34.740" video="qanda-emms" id="subtitle"]]
[[!template text="""Now, of course, music brains will probably,""" start="00:21:37.460" video="qanda-emms" id="subtitle"]]
[[!template text="""it would be very funny if you pull up your""" start="00:21:41.200" video="qanda-emms" id="subtitle"]]
[[!template text="""stuff, right? Something that you wrote and""" start="00:21:43.480" video="qanda-emms" id="subtitle"]]
[[!template text="""you say, hey, music brains match this and""" start="00:21:46.080" video="qanda-emms" id="subtitle"]]
[[!template text="""it's not there, then it'll probably suggest""" start="00:21:48.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, I've heard that.""" start="00:21:51.720" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: some wild things. Yeah,""" start="00:21:52.660" video="qanda-emms" id="subtitle"]]
[[!template text="""because there are, there was a system I was""" start="00:21:58.260" video="qanda-emms" id="subtitle"]]
[[!template text="""looking at its code for researching stuff for""" start="00:22:02.060" video="qanda-emms" id="subtitle"]]
[[!template text="""EMS And I'm trying to remember what it's""" start="00:22:04.480" video="qanda-emms" id="subtitle"]]
[[!template text="""named. It begins with a J,""" start="00:22:05.720" video="qanda-emms" id="subtitle"]]
[[!template text="""it's this media player,""" start="00:22:07.160" video="qanda-emms" id="subtitle"]]
[[!template text="""free floss media player that it's like a""" start="00:22:13.780" video="qanda-emms" id="subtitle"]]
[[!template text="""media server that can cast to a television""" start="00:22:17.020" video="qanda-emms" id="subtitle"]]
[[!template text="""and stuff like that. And I asked it to""" start="00:22:20.940" video="qanda-emms" id="subtitle"]]
[[!template text="""automatically label things and the results""" start="00:22:24.280" video="qanda-emms" id="subtitle"]]
[[!template text="""were horrible. It thought that half of my""" start="00:22:28.180" video="qanda-emms" id="subtitle"]]
[[!template text="""songs were movies. It thought that JPEGs were""" start="00:22:32.960" video="qanda-emms" id="subtitle"]]
[[!template text="""songs. It just, it did some,""" start="00:22:35.800" video="qanda-emms" id="subtitle"]]
[[!template text="""it did incredibly, it's not a solved problem,""" start="00:22:40.520" video="qanda-emms" id="subtitle"]]
[[!template text="""I think. So the, what I'm thinking with""" start="00:22:44.660" video="qanda-emms" id="subtitle"]]
[[!template text="""MusicBrainz and those services is that you""" start="00:22:49.340" video="qanda-emms" id="subtitle"]]
[[!template text="""hit a button and you have you get another""" start="00:22:51.840" video="qanda-emms" id="subtitle"]]
[[!template text="""pane with a suggestion and you either and you""" start="00:22:57.040" video="qanda-emms" id="subtitle"]]
[[!template text="""can copy through you can say okay copy this""" start="00:22:59.060" video="qanda-emms" id="subtitle"]]
[[!template text="""and this in this field over or reject the""" start="00:23:01.560" video="qanda-emms" id="subtitle"]]
[[!template text="""suggestion and maybe get another 1.""" start="00:23:03.960" video="qanda-emms" id="subtitle"]]
[[!template text="""So,""" start="00:23:04.940" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, I like that a lot.""" start="00:23:07.360" video="qanda-emms" id="subtitle"]]
[[!template text="""That's more like a diff,""" start="00:23:09.160" video="qanda-emms" id="subtitle"]]
[[!template text="""right? Like you get the diff between the 2""" start="00:23:11.280" video="qanda-emms" id="subtitle"]]
[[!template text="""and you can apply which changes you like.""" start="00:23:13.540" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah. Was it Jellyfin?""" start="00:23:15.580" video="qanda-emms" id="subtitle"]]
[[!template text="""Is that... Jellyfin? Yeah,""" start="00:23:18.220" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Jellyfin, yes.""" start="00:23:19.460" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, And when that happened,""" start="00:23:22.340" video="qanda-emms" id="subtitle"]]
[[!template text="""did it clobber all your metadata?""" start="00:23:24.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Or does it just label stuff?""" start="00:23:27.440" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: No, it...""" start="00:23:28.860" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Escalate things somewhere inside it and to""" start="00:23:38.240" video="qanda-emms" id="subtitle"]]
[[!template text="""looking for really, not allow me to do very""" start="00:23:49.020" video="qanda-emms" id="subtitle"]]
[[!template text="""easily. So I was, so, you know,""" start="00:23:54.640" video="qanda-emms" id="subtitle"]]
[[!template text="""on 1 hand, it makes me feel,""" start="00:23:56.660" video="qanda-emms" id="subtitle"]]
[[!template text="""oh, we're not the only ones dealing with""" start="00:23:58.980" video="qanda-emms" id="subtitle"]]
[[!template text="""this. We're not the only ones struggling with""" start="00:24:00.680" video="qanda-emms" id="subtitle"]]
[[!template text="""this. On the other hand,""" start="00:24:01.440" video="qanda-emms" id="subtitle"]]
[[!template text="""it would be nice if that's a paragon that we""" start="00:24:05.660" video="qanda-emms" id="subtitle"]]
[[!template text="""can look to and say, this is a wonderful way""" start="00:24:08.460" video="qanda-emms" id="subtitle"]]
[[!template text="""of doing it. Let's incorporate as much of""" start="00:24:11.320" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, it's a tricky problem,""" start="00:24:15.180" video="qanda-emms" id="subtitle"]]
[[!template text="""especially if you're modifying people's media""" start="00:24:18.220" video="qanda-emms" id="subtitle"]]
[[!template text="""files you know so""" start="00:24:19.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: that as we can. yeah I'm also very convinced""" start="00:24:23.040" video="qanda-emms" id="subtitle"]]
[[!template text="""that so I'm not a mainframe for MMS because""" start="00:24:31.560" video="qanda-emms" id="subtitle"]]
[[!template text="""I'm old and curmudgeonly essentially in my,""" start="00:24:35.020" video="qanda-emms" id="subtitle"]]
[[!template text="""in the way they do it.""" start="00:24:37.660" video="qanda-emms" id="subtitle"]]
[[!template text="""And honestly, I rarely ever,""" start="00:24:40.080" video="qanda-emms" id="subtitle"]]
[[!template text="""I use the MMS browser when I need to debug""" start="00:24:42.780" video="qanda-emms" id="subtitle"]]
[[!template text="""the MS browser. I don't,""" start="00:24:44.240" video="qanda-emms" id="subtitle"]]
[[!template text="""I use very simple commands and I even rarely""" start="00:24:48.740" video="qanda-emms" id="subtitle"]]
[[!template text="""look at the playlists.""" start="00:24:50.440" video="qanda-emms" id="subtitle"]]
[[!template text="""That was 1 of the things because when I got""" start="00:24:53.940" video="qanda-emms" id="subtitle"]]
[[!template text="""into MMS originally when my eyesight started""" start="00:24:56.680" video="qanda-emms" id="subtitle"]]
[[!template text="""going so I had to rely less and less on GUI""" start="00:24:59.640" video="qanda-emms" id="subtitle"]]
[[!template text="""interfaces. So that was,""" start="00:25:02.800" video="qanda-emms" id="subtitle"]]
[[!template text="""so to this day that's how I use EMMS.""" start="00:25:06.340" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, it's interesting.""" start="00:25:08.560" video="qanda-emms" id="subtitle"]]
[[!template text="""I remember running into a browser bug because""" start="00:25:13.260" video="qanda-emms" id="subtitle"]]
[[!template text="""I think just my age, like,""" start="00:25:15.480" video="qanda-emms" id="subtitle"]]
[[!template text="""I want to be able to tab through and like""" start="00:25:18.120" video="qanda-emms" id="subtitle"]]
[[!template text="""that was a huge that that changed recently""" start="00:25:20.060" video="qanda-emms" id="subtitle"]]
[[!template text="""right where you tab and it unfolds in the""" start="00:25:22.640" video="qanda-emms" id="subtitle"]]
[[!template text="""browser but yeah I realized that people use""" start="00:25:27.620" video="qanda-emms" id="subtitle"]]
[[!template text="""emms in so many different ways just like any""" start="00:25:30.600" video="qanda-emms" id="subtitle"]]
[[!template text="""piece of emacs there's there's many ways to""" start="00:25:36.020" video="qanda-emms" id="subtitle"]]
[[!template text="""do it but appreciate your time I'm gonna""" start="00:25:39.960" video="qanda-emms" id="subtitle"]]
[[!template text="""actually put together this Christmas tree""" start="00:25:41.880" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: So. Wonderful.""" start="00:25:43.400" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: behind me. Yeah, just wanted to say hi,""" start="00:25:45.260" video="qanda-emms" id="subtitle"]]
[[!template text="""meet you in person. But yeah.""" start="00:25:50.900" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, excellent. I appreciate it a lot and we""" start="00:25:54.340" video="qanda-emms" id="subtitle"]]
[[!template text="""generate""" start="00:25:55.080" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: some interesting questions.""" start="00:25:59.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah, thank you.""" start="00:26:00.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 4]: You are currently the only person in this""" start="00:26:03.760" video="qanda-emms" id="subtitle"]]
[[!template text="""conference.""" start="00:26:03.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: I'm going to have a look at the questions""" start="00:26:13.480" video="qanda-emms" id="subtitle"]]
[[!template text="""here.""" start="00:26:14.060" video="qanda-emms" id="subtitle"]]
[[!template text="""Let's see. Let's see. So there is,""" start="00:26:29.440" video="qanda-emms" id="subtitle"]]
[[!template text="""okay. There's a question here.""" start="00:26:32.900" video="qanda-emms" id="subtitle"]]
[[!template text="""I like what you said about balancing the""" start="00:26:34.540" video="qanda-emms" id="subtitle"]]
[[!template text="""concern for software freedom with the worry""" start="00:26:36.140" video="qanda-emms" id="subtitle"]]
[[!template text="""that this might alienate the package user.""" start="00:26:38.360" video="qanda-emms" id="subtitle"]]
[[!template text="""I wonder if you have advice for other""" start="00:26:39.960" video="qanda-emms" id="subtitle"]]
[[!template text="""maintainers how to communicate this sort of""" start="00:26:41.720" video="qanda-emms" id="subtitle"]]
[[!template text="""thing diplomatically? Yes,""" start="00:26:43.660" video="qanda-emms" id="subtitle"]]
[[!template text="""when you have to deny implementing a feature""" start="00:26:45.660" video="qanda-emms" id="subtitle"]]
[[!template text="""for a freedom reason. This in fact happens""" start="00:26:48.480" video="qanda-emms" id="subtitle"]]
[[!template text="""all the time. A recent example of this was a""" start="00:26:56.140" video="qanda-emms" id="subtitle"]]
[[!template text="""YouTube download, right,""" start="00:26:58.380" video="qanda-emms" id="subtitle"]]
[[!template text="""the YouTube download feature.""" start="00:26:59.540" video="qanda-emms" id="subtitle"]]
[[!template text="""At the time, okay, so stepping back,""" start="00:27:04.040" video="qanda-emms" id="subtitle"]]
[[!template text="""the request was to have a YouTube download""" start="00:27:07.440" video="qanda-emms" id="subtitle"]]
[[!template text="""feature integrated strongly into eMMS so that""" start="00:27:11.940" video="qanda-emms" id="subtitle"]]
[[!template text="""you put in a YouTube URL and you can download""" start="00:27:16.260" video="qanda-emms" id="subtitle"]]
[[!template text="""the video and play it.""" start="00:27:17.640" video="qanda-emms" id="subtitle"]]
[[!template text="""And the question isn't really whether you can""" start="00:27:22.080" video="qanda-emms" id="subtitle"]]
[[!template text="""chain YouTube Downloader or 1 of those things""" start="00:27:24.660" video="qanda-emms" id="subtitle"]]
[[!template text="""into your EMMS configuration.""" start="00:27:26.600" video="qanda-emms" id="subtitle"]]
[[!template text="""You can do whatever you want.""" start="00:27:28.140" video="qanda-emms" id="subtitle"]]
[[!template text="""But the question is, does EMMS actually""" start="00:27:30.840" video="qanda-emms" id="subtitle"]]
[[!template text="""integrate with it really,""" start="00:27:33.340" video="qanda-emms" id="subtitle"]]
[[!template text="""really strongly to the extent where it tells""" start="00:27:35.740" video="qanda-emms" id="subtitle"]]
[[!template text="""you oh you don't need to download install""" start="00:27:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""please go ahead and install that or whatever""" start="00:27:40.320" video="qanda-emms" id="subtitle"]]
[[!template text="""and at the time we checked it we found out""" start="00:27:43.740" video="qanda-emms" id="subtitle"]]
[[!template text="""that you know the version that we were""" start="00:27:45.800" video="qanda-emms" id="subtitle"]]
[[!template text="""looking at of the YouTube download or YTDLP""" start="00:27:49.280" video="qanda-emms" id="subtitle"]]
[[!template text="""or whatever it was called,""" start="00:27:51.720" video="qanda-emms" id="subtitle"]]
[[!template text="""actually downloaded a good amount of""" start="00:27:56.200" video="qanda-emms" id="subtitle"]]
[[!template text="""proprietary JavaScript onto your machine and""" start="00:27:59.200" video="qanda-emms" id="subtitle"]]
[[!template text="""ran it, just as if you were going on to the""" start="00:28:02.300" video="qanda-emms" id="subtitle"]]
[[!template text="""YouTube page, which is not for me to tell""" start="00:28:06.560" video="qanda-emms" id="subtitle"]]
[[!template text="""people not to do if they want to do that,""" start="00:28:09.980" video="qanda-emms" id="subtitle"]]
[[!template text="""but it's absolutely for me not to cause to""" start="00:28:16.240" video="qanda-emms" id="subtitle"]]
[[!template text="""happen on the user's machine without them.""" start="00:28:18.540" video="qanda-emms" id="subtitle"]]
[[!template text="""1 of the last thing that I want to do in the""" start="00:28:21.480" video="qanda-emms" id="subtitle"]]
[[!template text="""world is have a user inside Emacs press a""" start="00:28:25.980" video="qanda-emms" id="subtitle"]]
[[!template text="""button and have proprietary software get""" start="00:28:29.760" video="qanda-emms" id="subtitle"]]
[[!template text="""downloaded behind their back and run on their""" start="00:28:32.300" video="qanda-emms" id="subtitle"]]
[[!template text="""machine that would be disastrous so we had to""" start="00:28:38.240" video="qanda-emms" id="subtitle"]]
[[!template text="""say no we had to say that's I'm sorry that's""" start="00:28:41.380" video="qanda-emms" id="subtitle"]]
[[!template text="""beyond the pale and in fact in doing so some""" start="00:28:47.060" video="qanda-emms" id="subtitle"]]
[[!template text="""people who were using this system said,""" start="00:28:51.100" video="qanda-emms" id="subtitle"]]
[[!template text="""actually I had no idea it was doing this""" start="00:28:53.900" video="qanda-emms" id="subtitle"]]
[[!template text="""behind my back. I thought it was just magic.""" start="00:28:56.660" video="qanda-emms" id="subtitle"]]
[[!template text="""I thought it was a YouTube video without any""" start="00:28:58.860" video="qanda-emms" id="subtitle"]]
[[!template text="""freedom issues. I'm going to look into it or""" start="00:29:01.580" video="qanda-emms" id="subtitle"]]
[[!template text="""I'm going to stop using it.""" start="00:29:03.120" video="qanda-emms" id="subtitle"]]
[[!template text="""So my advice would be Stand firm and just be""" start="00:29:11.180" video="qanda-emms" id="subtitle"]]
[[!template text="""Not not preachy. Don't tell people what they""" start="00:29:15.040" video="qanda-emms" id="subtitle"]]
[[!template text="""need to do be very clear about what you stand""" start="00:29:19.580" video="qanda-emms" id="subtitle"]]
[[!template text="""for and what the project stands for,""" start="00:29:21.900" video="qanda-emms" id="subtitle"]]
[[!template text="""and so they very clearly know where you""" start="00:29:28.660" video="qanda-emms" id="subtitle"]]
[[!template text="""stand. And I think that people actually""" start="00:29:30.460" video="qanda-emms" id="subtitle"]]
[[!template text="""appreciate that more than a political answer,""" start="00:29:36.540" video="qanda-emms" id="subtitle"]]
[[!template text="""right? That has been my experience.""" start="00:29:43.540" video="qanda-emms" id="subtitle"]]
[[!template text="""Now, excuse me, taking into account that 1 or""" start="00:29:49.800" video="qanda-emms" id="subtitle"]]
[[!template text="""2 people will tell you,""" start="00:29:52.200" video="qanda-emms" id="subtitle"]]
[[!template text="""this is terrible. I'm leaving.""" start="00:29:54.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: If you do this,""" start="00:30:00.550" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: This is useless. you're free software or""" start="00:30:01.460" video="qanda-emms" id="subtitle"]]
[[!template text="""whatever, and just leave.""" start="00:30:03.400" video="qanda-emms" id="subtitle"]]
[[!template text="""But some people are ornery.""" start="00:30:05.860" video="qanda-emms" id="subtitle"]]
[[!template text="""That's not necessarily something bad that you""" start="00:30:09.360" video="qanda-emms" id="subtitle"]]
[[!template text="""did. But that has happened.""" start="00:30:11.680" video="qanda-emms" id="subtitle"]]
[[!template text="""There are multiple stories.""" start="00:30:14.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Because the MMS is so old,""" start="00:30:16.840" video="qanda-emms" id="subtitle"]]
[[!template text="""there are multiple points in which non-free""" start="00:30:20.080" video="qanda-emms" id="subtitle"]]
[[!template text="""software intersected with the EMS because of""" start="00:30:23.940" video="qanda-emms" id="subtitle"]]
[[!template text="""multimedia and we had to go the other""" start="00:30:28.580" video="qanda-emms" id="subtitle"]]
[[!template text="""direction and so far it has served EMS well""" start="00:30:33.300" video="qanda-emms" id="subtitle"]]
[[!template text="""like the project has died as a result.""" start="00:30:38.240" video="qanda-emms" id="subtitle"]]
[[!template text="""Of course, can't prove a negative,""" start="00:30:39.800" video="qanda-emms" id="subtitle"]]
[[!template text="""don't know where we would be if we had taken,""" start="00:30:42.040" video="qanda-emms" id="subtitle"]]
[[!template text="""gone down that route. I'm pretty sure we""" start="00:30:44.760" video="qanda-emms" id="subtitle"]]
[[!template text="""would need a new ELPA,""" start="00:30:46.100" video="qanda-emms" id="subtitle"]]
[[!template text="""and I think being so clearly integrated with""" start="00:30:50.860" video="qanda-emms" id="subtitle"]]
[[!template text="""emacs is a huge benefit to eMMS because it's""" start="00:30:55.040" video="qanda-emms" id="subtitle"]]
[[!template text="""it allows people to install it very easily.""" start="00:30:57.660" video="qanda-emms" id="subtitle"]]
[[!template text="""And those are all the questions that I can""" start="00:31:08.760" video="qanda-emms" id="subtitle"]]
[[!template text="""see.""" start="00:31:09.020" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: You""" start="00:31:15.060" video="qanda-emms" id="subtitle"]]

Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20emms%3A%20Emacs%20MultiMedia%20System%20%28EMMS%29)


<!-- End of emacsconf-publish-after-page -->