From 6ae6e11b3662119874e8968feaeb9203961cd874 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Wed, 13 May 2020 22:16:22 -0400 Subject: add the rest of 2019 transcripts thanks again aindilis for those of them that you transcribed! --- 2019/transcripts/28.md | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 2019/transcripts/28.md (limited to '2019/transcripts/28.md') diff --git a/2019/transcripts/28.md b/2019/transcripts/28.md new file mode 100644 index 00000000..8befe3b8 --- /dev/null +++ b/2019/transcripts/28.md @@ -0,0 +1,104 @@ +[[!meta title="Play and control your music with Emacs - Damien Cassou"]] + +- Hi everyone. In this lightening talk, I would like to present + MPDel, which is a user interface for MPD, the Music Player Daemon, + that's implemented in Emacs Lisp and runs entirely within Emacs. So + it relies on Music Player Daemon, which is quite old because it's a + sixteen years old project serving music with many different clients. + So if I look at clients of MPD you see there are all different kinds + so this ?android? projects or web projects or GTK projects and a + curses project, web projects, so yeah many different kinds of + clients. MPDel is implemented in Emacs Lisp, it's divided into + three parts. So there is a library libmpdel, which is it's own + project. That's doesn't propose any user interface, but instead it + proposes a set of primitive functions to build user interfaces on + top. Then you have the screenshot here on top of the MPDel, so it's + mostly tabulated lists based, and then you have another UI which is + based on ?IV?, and I will present ?the? two user interfaces in this + context of this project. So let's start the video by navigating the + music database. So it's a simple job to get the list of all your + artists. You can navigate with ?turned-out? shortcuts. And you + have isearch obviously ?for? imenu, and so I can go to ?pink? sites + with quick shortcuts. When you select your artists you can go to + which album by pressing return, and to go from an album to a + particular artist's songs, you also press return. + +- So that is going ?deep? from the album to the artist and from the + artist to the songs, and with carrots or shift-6 on my keyboard you + go up to the parent from the song to the albums, and from the albums + to the artists. So the next thing we can see is the playlists, so + on the left you have the database, and on the right I will put the + playlist. So for now there is nothing to listen to, and I will add + things in these lists, so we can add either artists, albums or + individual songs, so let's add one of my favorite songs, ?So equals? + from Pink Floyd. So you can add it to the playlist, or add it + immediately stop playing it, so this time I want to immediately play + it, so I press P for play. + +- And then I will press the carrot to go back to the artists and add + some more music, I will add an album by Dire Straits. So if I press + P now it will add all the album and also start with the first song, + but because I don't want to interrupt ?ecos? I will just press a to + add all the songs from this album. What we want to do now is + manipulate the playlists, so for now ?ecos? has started playing and + I can modify the playlist to decide what will be next, so by default + it's Sultans of Swing, but I can change that for prioritization for + example. + +- Like that, so I can move one song, I can also mark multiple songs + and move them around. + +- It's also possible to play the next song and the previous song so + you have M-n to play the next. And M-p to play the previous one. If + you wanted to delete a few songs from your album you can select them + and then press k for deletion, and then they are removed from the + database, not from the database, but only from the playlists. With + t you can toggle the mark, so if I want to select everything by + ?except ...? I can just press t. And t again to ??, if I want to + select everything I can always press t when nothing is marked, so I + can erase everything at once. + +- Something I can do now is display some information about the + currently played song, so I can press v wherever I am to get the + list of songs. It's very important to notice that whatever view you + are in the shortcuts are always the same, so if I go back to the + navigator with n, I can press ?? information about the current song, + so v here, which ?? about the current song. So you see that there + is the time, and the album and artist and ?? status, so if I pause + the music, it ?? pause. And backplaying. I can move forward and + move backward with M-s and M-v, I can do that slowly or fast with + different shortcuts, and from the current song you can press carrots + to go to the parents, so it's exactly the same shortcut as how we + were navigating from the songs to the albums and from the albums to + the artists, so it's carrots, and you go from the song to its album + and then from the album to the artist. + +- I tried when designing the shortcuts to make the keybindings do + always the same thing wherever you are, so if I press M-f now I will + fast-forward the current song, so the same shortcuts work the same + everywhere. And if I press ?....? Another way to control the + current playlists or stop playlists is to use the Ivy based + interface so it doesn't pop up any buffer, but you can still + navigate your database and select the songs to play. So if I start + the interface I get the list of all my artists in the minibuffer, so + I can choose for example MCC artists and the ?? ?king? and the song + I will pick this one for example, and there are many things I can do + from here, so I can add to the current playlist I can start playing + immediately, I can start and stop playlists, so let's see I just p + for playing it immediately. + +- So MPDel is mostly based on tabulated lists, which I really liked. + And after I implemented MPDel, I liked that kind of view so much I + decided to use the views for other kinds of packages, so I + implemented a database navigator, and also a network manager client + using tabulated lists, and I realized that all of those libraries + and tools they were sharing the same kind of code. So I decided to + abstract away from all of those and I created navigel which makes it + very easy to implement tabulated lists if you have a model of your + domain data that you want to navigate. + +- There is a lightening talk at EmacsConf about navigel so I encourage + you to have a look at it if you're interested in how I reimplemented + MPDel so that it's much simpler, and how I implemented all the other + packages. This is the end of my talk, I hope you liked it. And + happy EmacsConf. -- cgit v1.2.3