summaryrefslogtreecommitdiffstats
path: root/2019/transcripts/28.md
diff options
context:
space:
mode:
Diffstat (limited to '2019/transcripts/28.md')
-rw-r--r--2019/transcripts/28.md104
1 files changed, 104 insertions, 0 deletions
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.