diff options
author | EmacsConf Organizers <orga@front0.emacsconf.org> | 2021-01-30 17:00:44 +0000 |
---|---|---|
committer | EmacsConf Organizers <orga@front0.emacsconf.org> | 2021-01-30 17:00:44 +0000 |
commit | 0b487f878d36f62b7a29df13e4172cf04243e45f (patch) | |
tree | 5202f7dde992fa00dabd0ed90fb620231bc6e57a /2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt | |
parent | 677d96158e0eb1d975bb76c7a6e0c695b42aabd2 (diff) | |
parent | 42831835bf8daf375e9515f84f5f9ff2adac7f94 (diff) | |
download | emacsconf-wiki-0b487f878d36f62b7a29df13e4172cf04243e45f.tar.xz emacsconf-wiki-0b487f878d36f62b7a29df13e4172cf04243e45f.zip |
Merge branch 'master' of git://git.emacsconf.org/emacsconf-wiki
Diffstat (limited to '2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt')
-rw-r--r-- | 2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt | 1101 |
1 files changed, 511 insertions, 590 deletions
diff --git a/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt b/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt index debfa46c..24e598d5 100644 --- a/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt +++ b/2020/subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.vtt @@ -3,98 +3,79 @@ WEBVTT 00:00:01.360 --> 00:00:04.480 Hello, my name is Grant Shangreaux. -00:00:04.480 --> 00:00:07.279 +00:00:04.480 --> 00:00:09.519 This is my talk titled Bard Bivou(m)acs: +Publishing Music with Emacs. -00:00:07.279 --> 00:00:07.919 -Publishing Music +00:00:09.519 --> 00:00:14.400 +I'm a software developer with Unabridged +Software in Lincoln, Nebraska. -00:00:07.919 --> 00:00:10.719 -with Emacs. I'm a software - -00:00:10.719 --> 00:00:12.799 -developer with Unabridged Software in - -00:00:12.799 --> 00:00:14.400 -Lincoln, Nebraska. - -00:00:14.400 --> 00:00:16.800 +00:00:14.400 --> 00:00:18.720 Long time Emacs user, relatively new - -00:00:16.800 --> 00:00:18.720 Emacs hacker. -00:00:18.720 --> 00:00:20.480 -Hopefully, I'll be able to show +00:00:18.720 --> 00:00:22.487 +Hopefully, I'll be able to show you +my workflow, -00:00:20.480 --> 00:00:22.960 -you my workflow, with +00:00:22.487 --> 00:00:30.480 +with how I publish music with Emacs. -00:00:22.960 --> 00:00:30.480 -how I publish music with Emacs. +00:00:30.480 --> 00:00:35.520 +All right. So as a musician, I would +like to publish my music online. -00:00:30.480 --> 00:00:33.440 -All right. So as a musician, I would like +00:00:35.520 --> 00:00:39.040 +I could publish with popular online +music services, -00:00:33.440 --> 00:00:35.520 -to publish my music online. +00:00:39.040 --> 00:00:41.061 +but I'm more of a DIY-type, -00:00:35.520 --> 00:00:37.200 -I could publish with popular - -00:00:37.200 --> 00:00:39.040 -online music services, - -00:00:39.040 --> 00:00:42.000 -but I'm more of a DIY-type, so I chose to - -00:00:42.000 --> 00:00:44.719 -go ahead and publish with Emacs. +00:00:41.061 --> 00:00:44.719 +so I chose to go ahead and +publish with Emacs. 00:00:44.719 --> 00:00:48.160 What's the motivation behind this? -00:00:48.160 --> 00:00:49.760 +00:00:48.160 --> 00:00:51.600 A lot of it comes down to some - -00:00:49.760 --> 00:00:51.600 fundamental freedoms -00:00:51.600 --> 00:00:54.960 +00:00:51.600 --> 00:00:57.178 that Emacs and GNU software +represent to me, -00:00:54.960 --> 00:00:59.120 -represent to me, as well as my - -00:00:59.120 --> 00:01:01.840 -ideas on culture and my background. +00:00:57.178 --> 00:01:01.840 +as well as my ideas on culture and my +background. 00:01:01.840 --> 00:01:04.080 -I don't believe that music is a consumer good. - -00:01:04.080 --> 00:01:06.080 -It's a form of knowledge, +I don't believe that music is +a consumer good. -00:01:06.080 --> 00:01:08.320 -like an algorithm. +00:01:04.080 --> 00:01:08.320 +It's a form of knowledge, like an +algorithm. -00:01:08.320 --> 00:01:10.479 -And it's just such a part of +00:01:08.320 --> 00:01:11.036 +And it's just such a part of culture, -00:01:10.479 --> 00:01:13.119 -culture, like in tribal cultures, music +00:01:11.036 --> 00:01:12.780 +like in tribal cultures, -00:01:13.119 --> 00:01:16.640 -was seen as a gift from the cosmos or +00:01:12.780 --> 00:01:17.405 +music was seen as a gift from the cosmos +or the gods. -00:01:16.640 --> 00:01:18.000 -the gods. It was +00:01:17.405 --> 00:01:20.288 +It was a gift maybe through an +individual vessel, -00:01:18.000 --> 00:01:19.920 -a gift maybe through an individual - -00:01:19.920 --> 00:01:21.920 -vessel, but was shared with the people +00:01:20.288 --> 00:01:21.920 +but was shared with the people 00:01:21.920 --> 00:01:23.520 and shared with everyone, @@ -108,11 +89,12 @@ So to me, music is something that 00:01:29.840 --> 00:01:31.520 should be shared and should be -00:01:31.520 --> 00:01:34.640 -freely enjoyed by everyone. Of course, +00:01:31.520 --> 00:01:33.818 +freely enjoyed by everyone. -00:01:34.640 --> 00:01:36.560 -artists should be compensated as well, +00:01:33.818 --> 00:01:36.560 +Of course, artists should be +compensated as well, 00:01:36.560 --> 00:01:39.040 but that's a whole different topic. @@ -120,41 +102,43 @@ but that's a whole different topic. 00:01:39.040 --> 00:01:41.040 So when I want to share my music, -00:01:41.040 --> 00:01:42.720 +00:01:41.040 --> 00:01:43.520 I want to do it without impacting - -00:01:42.720 --> 00:01:43.520 anyone's freedom. -00:01:43.520 --> 00:01:45.680 -Using GNU software like Emacs is a +00:01:43.520 --> 00:01:45.425 +Using GNU software like Emacs -00:01:45.680 --> 00:01:49.200 -good way that I can ensure that +00:01:45.425 --> 00:01:49.200 +is a good way that I can ensure that -00:01:49.200 --> 00:01:52.840 -I won't be requiring people to +00:01:49.200 --> 00:01:52.597 +I won't be requiring people -00:01:52.840 --> 00:01:55.840 -sign away their freedoms for anything. +00:01:52.597 --> 00:01:55.840 +to sign away their freedoms for +anything. -00:01:55.840 --> 00:01:57.119 -There's a lot more I could say about +00:01:55.840 --> 00:01:57.367 +There's a lot more I could say +about this -00:01:57.119 --> 00:01:58.799 -this but I don't have time. +00:01:57.367 --> 00:01:58.799 +but I don't have time. 00:01:58.799 --> 00:02:03.439 -Feel free to reach out to me by email or IRC. +Feel free to reach out to me by +email or IRC. 00:02:03.439 --> 00:02:06.479 Part of the motivation for me, -00:02:06.479 --> 00:02:08.239 +00:02:06.479 --> 00:02:08.775 personally, is that Emacs is super +magical. -00:02:08.239 --> 00:02:10.720 -magical. It's an all-in-one solution. +00:02:08.775 --> 00:02:10.720 +It's an all-in-one solution. 00:02:10.720 --> 00:02:12.720 Like I said, the GNU software aligns with @@ -162,25 +146,22 @@ Like I said, the GNU software aligns with 00:02:12.720 --> 00:02:14.480 Creative Commons' ideas. -00:02:14.480 --> 00:02:16.800 -I can do file management. I can author +00:02:14.480 --> 00:02:16.067 +I can do file management. -00:02:16.800 --> 00:02:18.879 -HTML, all the web stuff I need even, +00:02:16.067 --> 00:02:20.239 +I can author HTML, all the web stuff +I need even, literate-style. -00:02:18.879 --> 00:02:20.239 -literate-style. +00:02:20.239 --> 00:02:22.171 +I can handle media and metadata. -00:02:20.239 --> 00:02:22.640 -I can handle media and metadata. I've got +00:02:22.171 --> 00:02:24.640 +I've got version control, remote server +access... -00:02:22.640 --> 00:02:24.640 -version control, remote server access... - -00:02:24.640 --> 00:02:26.800 +00:02:24.640 --> 00:02:28.080 All the tools I need are right under my - -00:02:26.800 --> 00:02:28.080 fingertips with this tool 00:02:28.080 --> 00:02:30.000 @@ -204,23 +185,22 @@ So, how do you use Emacs to publish music? 00:02:41.680 --> 00:02:43.440 Well, for me, I needed -00:02:43.440 --> 00:02:45.120 -a couple of things. I needed to be able +00:02:43.440 --> 00:02:44.258 +a couple of things. -00:02:45.120 --> 00:02:46.480 -to audition and label +00:02:44.258 --> 00:02:47.564 +I needed to be able to audition and +label unlabeled audio tracks. -00:02:46.480 --> 00:02:48.319 -unlabeled audio tracks. I have a lot of +00:02:47.564 --> 00:02:50.320 +I have a lot of files that +I don't know where they came from. -00:02:48.319 --> 00:02:50.000 -files that I don't know where they +00:02:50.320 --> 00:02:51.213 +I don't know what they are. -00:02:50.000 --> 00:02:51.280 -came from. I don't know what they are. I - -00:02:51.280 --> 00:02:53.840 -need to be able to listen to them, +00:02:51.213 --> 00:02:53.840 +I need to be able to listen to them, 00:02:53.840 --> 00:02:56.800 and I need to be able to add metadata to @@ -240,20 +220,19 @@ And in the end, I wanted to take those 00:03:05.120 --> 00:03:08.319 files and programmatically produce a web page -00:03:08.319 --> 00:03:11.920 -for people to consume. I found out that - -00:03:11.920 --> 00:03:14.879 -Emacs scores a hundred percent on all of +00:03:08.319 --> 00:03:10.442 +for people to consume. -00:03:14.879 --> 00:03:18.000 -these requirements that I had for this, and +00:03:10.442 --> 00:03:14.879 +I found out that Emacs scores a hundred +percent on all of -00:03:18.000 --> 00:03:20.720 -a lot of that came from EMMS, the Emacs +00:03:14.879 --> 00:03:17.709 +these requirements that I had for this, -00:03:20.720 --> 00:03:22.640 -multimedia system. +00:03:17.709 --> 00:03:22.640 +and a lot of that came from EMMS, the +Emacs multimedia system. 00:03:22.640 --> 00:03:26.080 EMMS is great. @@ -261,17 +240,18 @@ EMMS is great. 00:03:26.080 --> 00:03:27.760 If you haven't checked it out, please do. -00:03:27.760 --> 00:03:30.000 -It's a little bit unintuitive, but +00:03:27.760 --> 00:03:29.736 +It's a little bit unintuitive, -00:03:30.000 --> 00:03:34.000 -once you get into it, you know it works. +00:03:29.736 --> 00:03:34.000 +but once you get into it, you know it +works. -00:03:34.000 --> 00:03:36.640 -Basically, what EMMS gave me was the +00:03:34.000 --> 00:03:36.420 +Basically, what EMMS gave me was -00:03:36.640 --> 00:03:38.720 -ability to listen to the tracks, +00:03:36.420 --> 00:03:38.720 +the ability to listen to the tracks, 00:03:38.720 --> 00:03:39.680 organize playlists. @@ -297,17 +277,14 @@ so (require 'emms-mark). I'm going to 00:03:54.879 --> 00:03:59.680 go through, and I'm going to open the red... -00:03:59.680 --> 00:04:02.319 -I've got this. These files here. So +00:03:59.680 --> 00:04:02.092 +I've got this. These files here. -00:04:02.319 --> 00:04:04.480 -you can see these files are mp3s. +00:04:02.092 --> 00:04:04.480 +So you can see these files are mp3s. -00:04:04.480 --> 00:04:06.080 -They're recorded on a - -00:04:06.080 --> 00:04:07.599 -digital recorder. +00:04:04.480 --> 00:04:07.599 +They're recorded on a digital recorder. 00:04:07.599 --> 00:04:09.920 If I had the choice, I would have a @@ -318,35 +295,28 @@ recorder that used a different format, 00:04:12.319 --> 00:04:14.640 but so be it. I can mark all these files -00:04:14.640 --> 00:04:16.160 -and I can do EMMS - -00:04:16.160 --> 00:04:20.000 -add to .., and now they've been loaded - -00:04:20.000 --> 00:04:27.040 -into a playlist. - -00:04:27.040 --> 00:04:29.040 -So you can see the playlist here. There's +00:04:14.640 --> 00:04:27.040 +and I can do EMMS add to .., and now +they've been loaded into a playlist. -00:04:29.040 --> 00:04:30.400 -some leftover files. +00:04:27.040 --> 00:04:28.698 +So you can see the playlist here. -00:04:30.400 --> 00:04:32.000 -So I've got these three files in my +00:04:28.698 --> 00:04:30.400 +There's some leftover files. -00:04:32.000 --> 00:04:33.759 -playlist, and as you can see, it's just +00:04:30.400 --> 00:04:31.771 +So I've got these three files -00:04:33.759 --> 00:04:34.639 -the file name, +00:04:31.771 --> 00:04:33.361 +in my playlist, and as you can see, -00:04:34.639 --> 00:04:36.800 -the path. I don't have any metadata +00:04:33.361 --> 00:04:35.194 +it's just the file name, the path. -00:04:36.800 --> 00:04:38.560 -associated with them. +00:04:35.194 --> 00:04:38.560 +I don't have any metadata associated +with them. 00:04:38.560 --> 00:04:41.360 In this playlist, I can hit E, @@ -360,37 +330,30 @@ the tag information that I have. 00:04:47.360 --> 00:04:49.840 I could edit these here. -00:04:49.840 --> 00:04:51.520 -I could edit them one at a time, but that's +00:04:49.840 --> 00:04:51.129 +I could edit them one at a time, -00:04:51.520 --> 00:04:53.919 -not really great. I want superpower +00:04:51.129 --> 00:05:03.101 +but that's not really great. I want +superpower metadata authoring. -00:04:53.919 --> 00:05:04.479 -metadata authoring. So, +00:05:03.101 --> 00:05:07.159 +So, by marking them, I can then hit E, -00:05:04.479 --> 00:05:07.680 -by marking them, I can then hit E, and I +00:05:07.159 --> 00:05:12.639 +and I have all three of the tracks +loaded up in this tags buffer. -00:05:07.680 --> 00:05:10.479 -have all three of the tracks loaded up in +00:05:12.639 --> 00:05:16.912 +On top of that, I can do EMMS tag +editor, -00:05:10.479 --> 00:05:12.639 -this tags buffer. +00:05:16.912 --> 00:05:22.840 +set all, C-c C-r, and I want to +set the artist. -00:05:12.639 --> 00:05:15.759 -On top of that, I can do EMMS - -00:05:15.759 --> 00:05:18.800 -tag editor, set all, C-c C-r, - -00:05:18.800 --> 00:05:22.840 -and I want to set the artist. - -00:05:22.840 --> 00:05:25.680 +00:05:22.840 --> 00:05:26.320 so these are some recordings of my - -00:05:25.680 --> 00:05:26.320 family. 00:05:26.320 --> 00:05:31.039 @@ -405,53 +368,45 @@ Spring Walk with Lap Harp. 00:05:40.160 --> 00:05:45.520 I want to set the year. -00:05:45.520 --> 00:05:48.960 +00:05:45.520 --> 00:05:53.759 And then I'm going to go ahead and put - -00:05:48.960 --> 00:05:53.759 these in manually, -00:05:53.759 --> 00:05:55.840 -but with the power of Emacs keyboard - -00:05:55.840 --> 00:05:57.039 -macros and +00:05:53.759 --> 00:05:56.759 +but with the power of Emacs +keyboard macros -00:05:57.039 --> 00:05:59.600 -registers and so on. I could do this +00:05:56.759 --> 00:05:59.600 +and registers and so on. I could do this 00:05:59.600 --> 00:06:02.319 programmatically as well, -00:06:02.319 --> 00:06:04.000 -which would make it a lot easier if I +00:06:02.319 --> 00:06:03.818 +which would make it a lot easier -00:06:04.000 --> 00:06:06.000 -had much more than three files to - -00:06:06.000 --> 00:06:07.440 +00:06:03.818 --> 00:06:07.440 +if I had much more than three files to do this with. 00:06:07.440 --> 00:06:09.919 Submit the changes with C-c C-c, -00:06:09.919 --> 00:06:11.520 -and now we've got the playlist. You can - -00:06:11.520 --> 00:06:13.120 -see the artist and track number have +00:06:09.919 --> 00:06:11.232 +and now we've got the playlist. -00:06:13.120 --> 00:06:15.039 -been updated here. +00:06:11.232 --> 00:06:15.039 +You can see the artist and track number +have been updated here. 00:06:15.039 --> 00:06:17.360 And then the final piece of this is that -00:06:17.360 --> 00:06:19.039 -if you look at this, you can see that the +00:06:17.360 --> 00:06:18.875 +if you look at this, you can see that -00:06:19.039 --> 00:06:20.479 -file name is still the same. +00:06:18.875 --> 00:06:20.479 +the file name is still the same. 00:06:20.479 --> 00:06:22.639 So if I were looking at the directory, @@ -468,29 +423,27 @@ for people to download, 00:06:28.000 --> 00:06:30.319 it's nice to be able to have that -00:06:30.319 --> 00:06:32.400 -filename reflect the track number and the +00:06:30.319 --> 00:06:32.044 +filename reflect the track number -00:06:32.400 --> 00:06:34.800 -artist and so on. So there's another +00:06:32.044 --> 00:06:33.609 +and the artist and so on. -00:06:34.800 --> 00:06:41.199 -command, EMMS +00:06:33.609 --> 00:06:40.250 +So there's another command, -00:06:41.199 --> 00:06:44.160 -rename tag editor, rename, so it could be +00:06:40.250 --> 00:06:42.970 +EMMS rename tag editor, rename, -00:06:44.160 --> 00:06:45.120 -just capital R. +00:06:42.970 --> 00:06:45.120 +so it could be just capital R. -00:06:45.120 --> 00:06:47.199 -I think I need to mark all of these, hit +00:06:45.120 --> 00:06:46.991 +I think I need to mark all of these, -00:06:47.199 --> 00:06:48.880 -capital R, and then it's going to ask me - -00:06:48.880 --> 00:06:50.000 -to confirm +00:06:46.991 --> 00:06:50.000 +hit capital R, and then it's going to +ask me to confirm 00:06:50.000 --> 00:06:54.400 and say yes to all of them. @@ -504,86 +457,78 @@ whoops I have to update it--you'll see 00:07:04.319 --> 00:07:06.319 it's been updated with the artist, -00:07:06.319 --> 00:07:09.840 -track number and - -00:07:09.840 --> 00:07:11.120 -track name. +00:07:06.319 --> 00:07:11.120 +track number and track name. -00:07:11.120 --> 00:07:14.639 -This format is a format string, so +00:07:11.120 --> 00:07:14.432 +This format is a format string, -00:07:14.639 --> 00:07:17.360 -it's customizable of course. +00:07:14.432 --> 00:07:17.360 +so it's customizable of course. 00:07:17.360 --> 00:07:21.039 I just decided to go with the default. -00:07:21.039 --> 00:07:24.160 +00:07:21.039 --> 00:07:24.948 So that's pretty great, this workflow +just with EMMS. -00:07:24.160 --> 00:07:26.000 -just with EMMS. I didn't have to do - -00:07:26.000 --> 00:07:28.080 -anything. This is all there. It's all - -00:07:28.080 --> 00:07:30.960 -built in. It gave me exactly what +00:07:24.948 --> 00:07:27.585 +I didn't have to do anything. This is +all there. -00:07:30.960 --> 00:07:32.639 -I was looking for in terms of being able +00:07:27.585 --> 00:07:31.673 +It's all built in. It gave me exactly +what I was looking for -00:07:32.639 --> 00:07:35.599 -to process a lot of raw audio files +00:07:31.673 --> 00:07:35.599 +in terms of being able to process a lot +of raw audio files, -00:07:35.599 --> 00:07:37.599 -add metadata to them and get them ready - -00:07:37.599 --> 00:07:39.280 +00:07:35.599 --> 00:07:39.280 +add metadata to them, and get them ready for publishing. 00:07:39.280 --> 00:07:41.599 And this is for publishing for playback -00:07:41.599 --> 00:07:43.520 -in any media player. It'll be - -00:07:43.520 --> 00:07:46.560 -useful. Not just for the web page that I'm +00:07:41.599 --> 00:07:44.026 +in any media player. It'll be useful. -00:07:46.560 --> 00:07:48.479 -building. So the +00:07:44.026 --> 00:07:47.639 +Not just for the web page that I'm +building. -00:07:48.479 --> 00:07:50.560 -final part, of course, is to build the +00:07:47.639 --> 00:07:51.440 +So the final part, of course, is to +build the web page. -00:07:50.560 --> 00:07:54.960 -web page. Emacs makes authoring HTML trivial. +00:07:51.440 --> 00:07:54.960 +Emacs makes authoring HTML trivial. -00:07:54.960 --> 00:07:57.440 -As I was going through this, I +00:07:54.960 --> 00:07:57.357 +As I was going through this, -00:07:57.440 --> 00:07:59.039 -wanted to challenge myself and just be, +00:07:57.357 --> 00:07:59.701 +I wanted to challenge myself and just +be, like, -00:07:59.039 --> 00:08:00.400 -like, can I do this +00:07:59.701 --> 00:08:03.520 +can I do this just all with Emacs? +Can I just make this? -00:08:00.400 --> 00:08:03.520 -just all with Emacs? Can I just make this? +00:08:03.520 --> 00:08:05.134 +I don't need a... I don't need Ruby. -00:08:03.520 --> 00:08:05.440 -I don't need a... I don't need Ruby. I don't +00:08:05.134 --> 00:08:06.707 +I don't need Rails. I don't need Node. -00:08:05.440 --> 00:08:07.039 -need Rails. I don't need Node. I don't +00:08:06.707 --> 00:08:08.528 +I don't need any of this other stuff. -00:08:07.039 --> 00:08:08.960 -need any of this other stuff. I have my - -00:08:08.960 --> 00:08:10.560 -tool right here. It's a fully... +00:08:08.528 --> 00:08:10.560 +I have my tool right here. It's a +fully... 00:08:10.560 --> 00:08:12.560 It's a whole operating system, basically, @@ -591,83 +536,78 @@ It's a whole operating system, basically, 00:08:12.560 --> 00:08:15.039 plus programming languages. -00:08:15.039 --> 00:08:17.360 -So the first thing I started with was +00:08:15.039 --> 00:08:17.171 +So the first thing I started with -00:08:17.360 --> 00:08:19.919 -buffer scripting for manipulating text. +00:08:17.171 --> 00:08:19.919 +was buffer scripting for +manipulating text. 00:08:19.919 --> 00:08:22.560 That's kind of the easiest way to do it. -00:08:22.560 --> 00:08:24.319 -Basically, anything you can do in a - -00:08:24.319 --> 00:08:25.280 -buffer, you can do +00:08:22.560 --> 00:08:24.692 +Basically, anything you can do in +a buffer, -00:08:25.280 --> 00:08:28.479 -programmatically with Elisp. So this +00:08:24.692 --> 00:08:27.834 +you can do programmatically with Elisp. -00:08:28.479 --> 00:08:30.319 -might be a good example for beginners. If +00:08:27.834 --> 00:08:30.217 +So this might be a good example for +beginners. -00:08:30.319 --> 00:08:33.919 -you haven't done any Elisp yet, +00:08:30.217 --> 00:08:33.919 +If you haven't done any Elisp yet, -00:08:33.919 --> 00:08:36.000 -a simple example is to create this +00:08:33.919 --> 00:08:39.557 +a simple example is to create this div +output here. -00:08:36.000 --> 00:08:36.959 -this div +00:08:39.557 --> 00:08:41.581 +You can use this with-temp-buffer, -00:08:36.959 --> 00:08:40.000 -output here. You +00:08:41.581 --> 00:08:44.240 +so basically creating an imaginary +buffer. -00:08:40.000 --> 00:08:41.760 -can use this with-temp-buffer, so +00:08:44.240 --> 00:08:45.945 +insert is just like typing, -00:08:41.760 --> 00:08:44.240 -basically creating an imaginary buffer. - -00:08:44.240 --> 00:08:46.640 -insert is just like typing, so you put - -00:08:46.640 --> 00:08:48.800 -strings in, you put new lines in, +00:08:45.945 --> 00:08:48.800 +so you put strings in, +you put new lines in, 00:08:48.800 --> 00:08:50.959 you can build some strings together. -00:08:50.959 --> 00:08:52.080 -Here you can see - -00:08:52.080 --> 00:08:54.000 -I'm doing a random number, so every time - -00:08:54.000 --> 00:08:55.360 -I execute this, +00:08:50.959 --> 00:08:53.551 +Here you can see I'm doing a random +number, -00:08:55.360 --> 00:08:57.920 -my content changes. I can generate +00:08:53.551 --> 00:08:55.360 +so every time I execute this, -00:08:57.920 --> 00:09:01.040 -dynamic content in HTML blocks +00:08:55.360 --> 00:08:56.790 +my content changes. -00:09:01.040 --> 00:09:04.399 -with Elisp. For my +00:08:56.790 --> 00:09:03.685 +I can generate dynamic content in HTML +blocks with Elisp. -00:09:04.399 --> 00:09:05.920 -web page builder, It's a little more +00:09:03.685 --> 00:09:06.493 +For my web page builder, it's a little +more complex. -00:09:05.920 --> 00:09:08.000 -complex. I'm pulling data out +00:09:06.493 --> 00:09:08.000 +I'm pulling data out 00:09:08.000 --> 00:09:12.080 using EMMS data structures, 00:09:12.080 --> 00:09:16.080 -so it's pulling that out from the track data. +so it's pulling that out from +the track data. 00:09:16.080 --> 00:09:19.440 And then I'm using some program to @@ -675,50 +615,48 @@ And then I'm using some program to 00:09:19.440 --> 00:09:21.440 generate list elements, so each track is -00:09:21.440 --> 00:09:23.200 -going to have the title +00:09:21.440 --> 00:09:24.086 +going to have the title and +track number, -00:09:23.200 --> 00:09:25.120 -and track number, and then a button for +00:09:24.086 --> 00:09:25.869 +and then a button for playing it, -00:09:25.120 --> 00:09:26.959 -playing it, plus the source +00:09:25.869 --> 00:09:28.206 +plus the source of the audio file, -00:09:26.959 --> 00:09:29.519 -of the audio file, which will get added +00:09:28.206 --> 00:09:30.480 +which will get added here. -00:09:29.519 --> 00:09:30.480 -here. +00:09:30.480 --> 00:09:32.485 +Right now, this is hard coded for Opus, -00:09:30.480 --> 00:09:32.640 -Right now, this is hard coded for Opus, so +00:09:32.485 --> 00:09:37.200 +so it won't work for my MP3s. -00:09:32.640 --> 00:09:37.200 -it won't work for my MP3s. +00:09:37.200 --> 00:09:38.867 +I'm going to skip over snippets. -00:09:37.200 --> 00:09:39.120 -I'm going to skip over snippets. Turns +00:09:38.867 --> 00:09:42.017 +Turns out format strings were good +enough for me. -00:09:39.120 --> 00:09:41.200 -out format strings were good enough +00:09:42.017 --> 00:09:45.035 +Snippets could be useful, -00:09:41.200 --> 00:09:45.519 -for me. Snippets could be useful, but +00:09:45.035 --> 00:09:47.267 +but format is super powerful, -00:09:45.519 --> 00:09:48.160 -format is super powerful, and I didn't +00:09:47.267 --> 00:09:49.839 +and I didn't really even need +all that much power, -00:09:48.160 --> 00:09:49.839 -really even need all that much power, - -00:09:49.839 --> 00:09:51.279 +00:09:49.839 --> 00:09:52.187 basically, just doing string +interpolation. -00:09:51.279 --> 00:09:53.519 -interpolation. So if you haven't seen - -00:09:53.519 --> 00:09:54.560 -format before, +00:09:52.187 --> 00:09:54.560 +So if you haven't seen format before, 00:09:54.560 --> 00:09:56.720 you basically put these control strings @@ -726,37 +664,29 @@ you basically put these control strings 00:09:56.720 --> 00:09:59.120 or control characters inside of a string, -00:09:59.120 --> 00:10:03.120 -and you can generate an +00:09:59.120 --> 00:10:05.040 +and you can generate an output string +that you want. -00:10:03.120 --> 00:10:05.040 -output string that you want. +00:10:05.040 --> 00:10:07.344 +So in my generator code, basically, -00:10:05.040 --> 00:10:07.600 -So in my generator code, basically, it's +00:10:07.344 --> 00:10:08.720 +it's down here, -00:10:07.600 --> 00:10:08.720 -down here, - -00:10:08.720 --> 00:10:10.959 +00:10:08.720 --> 00:10:12.800 I'm calling format with this Bard - -00:10:10.959 --> 00:10:12.800 Bivou(m)acs template, -00:10:12.800 --> 00:10:15.920 -and that's basically a big +00:10:12.800 --> 00:10:17.491 +and that's basically a big string of +HTML. -00:10:15.920 --> 00:10:18.240 -a big string of HTML. It's just +00:10:17.491 --> 00:10:21.200 +It's just my whole page of HTML -00:10:18.240 --> 00:10:21.200 -my whole page of HTML - -00:10:21.200 --> 00:10:22.959 +00:10:21.200 --> 00:10:24.399 with those control characters in just - -00:10:22.959 --> 00:10:24.399 four places. 00:10:24.399 --> 00:10:26.399 @@ -765,41 +695,38 @@ One of them populates the track list. 00:10:26.399 --> 00:10:29.760 That's really the meat of the program. -00:10:29.760 --> 00:10:32.079 +00:10:29.760 --> 00:10:34.746 Again, this is a combination of using +buffer scripting, using HTML mode, -00:10:32.079 --> 00:10:33.440 -buffer scripting, +00:10:34.746 --> 00:10:37.279 +inserting text format strings, -00:10:33.440 --> 00:10:37.279 -using HTML mode, inserting text format strings, +00:10:37.279 --> 00:10:39.251 +and then I can indent-region -00:10:37.279 --> 00:10:40.000 -and then I can indent-region so the HTML - -00:10:40.000 --> 00:10:41.920 -actually looks pretty +00:10:39.251 --> 00:10:41.920 +so the HTML actually looks pretty 00:10:41.920 --> 00:10:45.200 when it comes out of it as well. -00:10:45.200 --> 00:10:50.160 +00:10:45.200 --> 00:10:54.000 I will show that, just really quick - -00:10:50.160 --> 00:10:54.000 actually. -00:10:54.000 --> 00:10:56.880 -So you can see, this is the HTML that got +00:10:54.000 --> 00:10:57.540 +So you can see, this is the HTML that +got generated. -00:10:56.880 --> 00:10:58.800 -generated. I've got my template. +00:10:57.540 --> 00:10:58.800 +I've got my template. -00:10:58.800 --> 00:11:02.560 -I inserted the title here, the style, the +00:10:58.800 --> 00:11:02.193 +I inserted the title here, the style, -00:11:02.560 --> 00:11:05.760 -font was all inserted, +00:11:02.193 --> 00:11:05.760 +the font was all inserted, 00:11:05.760 --> 00:11:07.920 and then this whole list of of tracks here. @@ -810,98 +737,100 @@ It's kind of messy to look at, 00:11:11.200 --> 00:11:14.399 but this track list, this whole div here, -00:11:14.399 --> 00:11:15.920 -is all generated by - -00:11:15.920 --> 00:11:22.480 -my generator code, and it works. It's great. +00:11:14.399 --> 00:11:22.480 +is all generated by my generator code, +and it works. It's great. 00:11:22.480 --> 00:11:27.120 Okay, moving on. -00:11:27.120 --> 00:11:30.240 +00:11:27.120 --> 00:11:30.945 So the other thing was that as I was +developing this, -00:11:30.240 --> 00:11:32.079 -developing this, I decided to use - -00:11:32.079 --> 00:11:33.200 -Org Babel and some of his +00:11:30.945 --> 00:11:32.547 +I decided to use Org Babel -00:11:33.200 --> 00:11:35.360 -its features for multi-language +00:11:32.547 --> 00:11:35.588 +and some of its features for +multi-language things -00:11:35.360 --> 00:11:36.880 -things because I needed to style it with +00:11:35.588 --> 00:11:37.839 +because I needed to style it with CSS -00:11:36.880 --> 00:11:37.839 -CSS and +00:11:37.839 --> 00:11:39.835 +and put actions in Javascript, -00:11:37.839 --> 00:11:40.480 -and put actions in Javascript, and also I - -00:11:40.480 --> 00:11:42.480 -used SVG for authoring stuff. +00:11:39.835 --> 00:11:42.480 +and also I used SVG for authoring stuff. 00:11:42.480 --> 00:11:46.079 It was a little bit complicated. -00:11:46.079 --> 00:11:47.680 -It probably would have been simpler had I +00:11:46.079 --> 00:11:47.484 +It probably would have been simpler + +00:11:47.484 --> 00:11:48.680 +had I not used Org Babel, -00:11:47.680 --> 00:11:49.600 -not used Org Babel, but it's also really +00:11:48.680 --> 00:11:49.894 +but it's also really fun. -00:11:49.600 --> 00:11:51.440 -fun. I think it's a cool, +00:11:49.894 --> 00:11:53.663 +I think it's a cool, cool idea to use +literate programming. -00:11:51.440 --> 00:11:53.839 -cool idea to use literate programming. My +00:11:53.663 --> 00:11:57.001 +My idea was to create HTML +components. -00:11:53.839 --> 00:11:55.839 -idea was to create HTML +00:11:57.001 --> 00:11:59.519 +I could name it like this, -00:11:55.839 --> 00:11:59.519 -components. I could name it like this, +00:11:59.519 --> 00:12:00.959 +put a format string inside it, -00:11:59.519 --> 00:12:01.440 -put a format string inside it, and build +00:12:00.959 --> 00:12:02.800 +and build a function -00:12:01.440 --> 00:12:02.800 -a function +00:12:02.800 --> 00:12:04.302 +in Elisp to format it -00:12:02.800 --> 00:12:05.519 -in Elisp to format it and spit out the +00:12:04.302 --> 00:12:07.120 +and spit out the HTML that I want. -00:12:05.519 --> 00:12:07.120 -HTML that I want. +00:12:07.120 --> 00:12:09.581 +By doing this, then, -00:12:07.120 --> 00:12:10.320 -By doing this, then, I can +00:12:09.581 --> 00:12:12.388 +I can just change things in my Org file, -00:12:10.320 --> 00:12:12.880 -just change things in my Org file which, +00:12:12.388 --> 00:12:14.814 +which, not getting a whole lot of time +to work on it, -00:12:12.880 --> 00:12:14.320 -not getting a whole lot of time to work +00:12:14.814 --> 00:12:16.615 +I can come back to it -00:12:14.320 --> 00:12:16.959 -on it, I can come back to it and +00:12:16.615 --> 00:12:19.335 +and I have a lot of notes. -00:12:16.959 --> 00:12:19.839 -I have a lot of notes. I can +00:12:19.335 --> 00:12:21.695 +I can kind of generate things as I'm +going -00:12:19.839 --> 00:12:21.920 -kind of generate things as I'm going and +00:12:21.695 --> 00:12:24.399 +and keep notes for myself, +and keep the... -00:12:21.920 --> 00:12:24.399 -keep notes for myself, and keep the... +00:12:24.399 --> 00:12:25.308 +I don't know. It's cool. -00:12:24.399 --> 00:12:25.600 -I don't know. It's cool. Literate +00:12:25.308 --> 00:12:26.672 +Literate programming is fun. -00:12:25.600 --> 00:12:27.519 -programming is fun. So I don't need to +00:12:26.672 --> 00:12:27.519 +So I don't need to 00:12:27.519 --> 00:12:29.279 go into that too much, but you can see if @@ -909,41 +838,42 @@ go into that too much, but you can see if 00:12:29.279 --> 00:12:31.040 I execute this here, -00:12:31.040 --> 00:12:33.360 -I get the the div that I want. It's a +00:12:31.040 --> 00:12:32.983 +I get the the div that I want. -00:12:33.360 --> 00:12:34.880 -little bit funny. You'll see I have the +00:12:32.983 --> 00:12:34.013 +It's a little bit funny. -00:12:34.880 --> 00:12:36.480 -string like this, the way that +00:12:34.013 --> 00:12:35.786 +You'll see I have the string like this, -00:12:36.480 --> 00:12:39.200 -noweb expands, I can't do this on a - -00:12:39.200 --> 00:12:40.000 -single line. +00:12:35.786 --> 00:12:40.000 +the way that noweb expands, I can't do +this on a single line. 00:12:40.000 --> 00:12:43.839 It looks funny when you do that, -00:12:43.839 --> 00:12:45.440 -so that might be something to work out +00:12:43.839 --> 00:12:45.931 +so that might be something +to work out later. -00:12:45.440 --> 00:12:48.959 -later. CSS blocks can either be tangled out +00:12:45.931 --> 00:12:48.959 +CSS blocks can either be tangled out 00:12:48.959 --> 00:12:52.639 -and referenced in the HTML source or inlined. +and referenced in the HTML source, +or inlined. 00:12:52.639 --> 00:12:54.639 Here's an example I have of inlining it. -00:12:54.639 --> 00:12:56.959 -So I've got my little CSS block named +00:12:54.639 --> 00:12:57.609 +So I've got my little CSS block +named style, -00:12:56.959 --> 00:13:00.320 -style, Javascript named script, +00:12:57.609 --> 00:13:00.320 +Javascript named script, 00:13:00.320 --> 00:13:03.040 and then I've got this HTML source block @@ -954,20 +884,23 @@ with noweb expansion. 00:13:04.839 --> 00:13:07.920 These double angle brackets here -00:13:07.920 --> 00:13:09.839 -are where I'm going to expand the block +00:13:07.920 --> 00:13:09.396 +are where I'm going to expand -00:13:09.839 --> 00:13:12.639 -named style. I'm actually calling a function, +00:13:09.396 --> 00:13:12.639 +the block named style. I'm actually +calling a function, -00:13:12.639 --> 00:13:14.399 -so I want the result of the function +00:13:12.639 --> 00:13:14.737 +so I want the result of the +function here, -00:13:14.399 --> 00:13:17.040 -here, and then the script will just get +00:13:14.737 --> 00:13:18.881 +and then the script will just get +expanded here. -00:13:17.040 --> 00:13:22.959 -expanded here. So org-babel-expand-src-block, +00:13:18.881 --> 00:13:22.959 +So org-babel-expand-src-block, 00:13:22.959 --> 00:13:25.360 you can see what it looks like. @@ -975,50 +908,45 @@ you can see what it looks like. 00:13:25.360 --> 00:13:28.160 I've got my style here. I've got my title. -00:13:28.160 --> 00:13:29.920 -I've got that main content class - -00:13:29.920 --> 00:13:31.279 -I showed before, +00:13:28.160 --> 00:13:31.279 +I've got that main content class I +showed before, 00:13:31.279 --> 00:13:34.480 -and the script as well. So that's kind of cool. +and the script as well. +So that's kind of cool. -00:13:34.480 --> 00:13:36.320 +00:13:34.480 --> 00:13:37.527 I could just run org-babel-tangle and +get my thing out -00:13:36.320 --> 00:13:38.160 -get my thing out and just - -00:13:38.160 --> 00:13:40.480 -edit one file instead of multiple files. - -00:13:40.480 --> 00:13:41.600 -Not for everyone, +00:13:37.527 --> 00:13:40.480 +and just edit one file instead of +multiple files. -00:13:41.600 --> 00:13:45.839 -but I thought it was kind of fun. +00:13:40.480 --> 00:13:46.455 +Not for everyone, but I thought it was +kind of fun. All right. -00:13:45.839 --> 00:13:47.760 -All right. Oh, and the final thing is that +00:13:46.455 --> 00:13:48.807 +Oh, and the final thing is +that in Emacs, -00:13:47.760 --> 00:13:49.199 -in Emacs, you can +00:13:48.807 --> 00:13:51.320 +you can author and view SVG. -00:13:49.199 --> 00:13:52.880 -author and view SVG. So this is just an +00:13:51.320 --> 00:13:58.297 +So this is just an Org. This SVG, I used +to make the play and pause buttons. -00:13:52.880 --> 00:13:57.199 -Org. This SVG, I used to make the play +00:13:58.297 --> 00:13:59.519 +I didn't know this, -00:13:57.199 --> 00:13:59.519 -and pause buttons. I didn't know this, +00:13:59.519 --> 00:14:02.162 +but if you edit an SVG file, -00:13:59.519 --> 00:14:02.800 -but if you edit an SVG file, you can - -00:14:02.800 --> 00:14:08.800 -toggle back and forth +00:14:02.162 --> 00:14:08.800 +you can toggle back and forth 00:14:08.800 --> 00:14:13.199 between the code and the image. @@ -1026,107 +954,102 @@ between the code and the image. 00:14:13.199 --> 00:14:17.360 It's pretty sweet. So I can iteratively -00:14:17.360 --> 00:14:19.680 -work through this because of how - -00:14:19.680 --> 00:14:20.560 -Emacs is. +00:14:17.360 --> 00:14:20.560 +work through this +because of how Emacs is. 00:14:20.560 --> 00:14:24.959 Final considerations here, -00:14:24.959 --> 00:14:27.360 -like when doing this, I want it to be all +00:14:24.959 --> 00:14:26.247 +like when doing this, -00:14:27.360 --> 00:14:29.279 -free, so I want to use fonts that use a +00:14:26.247 --> 00:14:27.606 +I want it to be all free, -00:14:29.279 --> 00:14:30.079 -free license. +00:14:27.606 --> 00:14:30.079 +so I want to use fonts that use a free +license. 00:14:30.079 --> 00:14:32.800 I found GNU Unifont. It's kind of cool. -00:14:32.800 --> 00:14:34.800 -The content license... I chose +00:14:32.800 --> 00:14:34.333 +The content license... -00:14:34.800 --> 00:14:37.600 -Creative Commons Attribution ShareAlike, +00:14:34.333 --> 00:14:37.600 +I chose Creative Commons Attribution +ShareAlike, 00:14:37.600 --> 00:14:39.920 which is kind of like the GPL. -00:14:39.920 --> 00:14:42.880 -Ideally, I could serve it with Emacs. I'd +00:14:39.920 --> 00:14:42.663 +Ideally, I could serve it with Emacs. -00:14:42.880 --> 00:14:44.800 -like to remove idiosyncrasy so other - -00:14:44.800 --> 00:14:46.320 +00:14:42.663 --> 00:14:46.320 +I'd like to remove idiosyncrasy so other people can use it. 00:14:46.320 --> 00:14:48.720 It's pretty much just my tool right now. -00:14:48.720 --> 00:14:51.040 -Not requiring the web browser... I can - -00:14:51.040 --> 00:14:54.079 -ship playlists so that you can just +00:14:48.720 --> 00:14:50.734 +Not requiring the web browser... -00:14:54.079 --> 00:14:58.000 -click or link to a playlist on your favorite +00:14:50.734 --> 00:14:56.648 +I can ship playlists so that you can +just click or link to a playlist -00:14:58.000 --> 00:15:00.639 -player, even EMMS if you want, and then +00:14:56.648 --> 00:15:00.068 +on your favorite player, even EMMS if +you want, -00:15:00.639 --> 00:15:02.639 -packing up those albums in like a ZIP or - -00:15:02.639 --> 00:15:04.320 -.tar file. +00:15:00.068 --> 00:15:04.320 +and then packing up those albums in like +a ZIP or .tar file. 00:15:04.320 --> 00:15:08.639 So you can go to churls.world . -00:15:08.639 --> 00:15:10.880 -It just has a link to this album. I'll +00:15:08.639 --> 00:15:10.644 +It just has a link to this album. -00:15:10.880 --> 00:15:14.000 -display it here in just a second. +00:15:10.644 --> 00:15:14.000 +I'll display it here in just a second. 00:15:14.000 --> 00:15:17.519 You can contact me. I'm shoshin on #emacs 00:15:17.519 --> 00:15:21.040 -in IRC and on sourcehut. You can email me +in IRC and on sourcehut. You can email me: 00:15:21.040 --> 00:15:23.680 grant@churls.world, personal, or 00:15:23.680 --> 00:15:26.800 -grant@unabridgedsoftware.com. All right, now. +grant@unabridgedsoftware.com. +All right, now. 00:15:26.800 --> 00:15:32.079 Let's see about this... -00:15:32.079 --> 00:15:33.680 -This is up online, so if you want to - -00:15:33.680 --> 00:15:35.120 -listen to my +00:15:32.079 --> 00:15:34.316 +This is up online, so if you +want to listen -00:15:35.120 --> 00:15:39.199 -college band's album from 20 years ago, +00:15:34.316 --> 00:15:39.199 +to my college band's album from +20 years ago, 00:15:39.199 --> 00:15:43.040 here it is: Cassiopeia Basement Days. -00:15:43.040 --> 00:15:47.680 -Whoops. I made this art in Krita. You can +00:15:43.040 --> 00:15:46.887 +Whoops. I made this art in Krita. -00:15:47.680 --> 00:15:51.199 -press play. You can skip around. +00:15:46.887 --> 00:15:51.199 +You can press play. You can skip around. 00:15:51.199 --> 00:15:55.040 I do have the playlist up here too. @@ -1134,8 +1057,6 @@ I do have the playlist up here too. 00:15:55.040 --> 00:15:58.560 So yeah, thanks for listening. -00:15:58.560 --> 00:16:00.880 -I hope you enjoyed it, and enjoy the rest - -00:16:00.880 --> 00:16:07.360 -of EmacsConf. Goodbye! +00:15:58.560 --> 00:16:07.360 +I hope you enjoyed it, and enjoy the +rest of EmacsConf. Goodbye! |