summaryrefslogtreecommitdiffstats
path: root/2020/info/05.md
blob: 7e6cac90e2c0f39572a3b82f9c93dd8544d16cb4 (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
# Bard Bivou(m)acs - Building a bandcamp-like page for an album of music
Grant Shangreaux

[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.webm"]] 
[Download .webm video, 720p, 574M](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux.webm)

I hoped to become a successful musician someday, and while that has
yet to happen, I've recorded a fair share of unreleased music over the
years.  I decided it was time to share some of it with the world
through the power of Emacs!

Rather than using the available non-free (or even free?) platforms out
there, I decided to build a Bandcamp-like page from scratch.  While I
could have chosen many of the static-site building tools, I decided to
use the tool closest to my heart and automate the process of building
a web page from a directory of audio files with Emacs Lisp.

I will share with you how I managed to create a personal workflow for
releasing an album without leaving the One True Editor that includes
editing audio metadata with EMMS and generating HTML while cobbling
together yasnippet and the format macro.

<!-- from the pad --->

Actual start and end time (EST): Start of Q&A: 2020-11-28T10.28.47 EST; End 2020-11-28T10.43.49


# Questions


## What does "Bard Bivoumacs" mean?

Bad pun on "Bandcamp" — a bivouac is an improvised campsite and bard = band


## Does this meta-data workflow also support unsynchronized lyrics within ID3-tags (multi-line meta-data)?

-   The UI for EMMS is complex, a gazillion of functions in that namespace
-   check EMMS info manual (require 'emms-lyrics) this uses lyrics files outside of ID3-tags
-   multi-line metadata may depend on the audio format?


## Is is possible to import batch meta-data?

Not sure, guesses yes. It can connect to metadata services. Backend calls to shell programs for various purposes.


## My current workflow for tagging music is to first apply ReplayGain in foobar2000, fix egregious mistakes there (like funny directory structure, lack of album artist, &#x2026;), then use beets to apply metadata from Musicbrainz/Discogs and go over the remaining albums with foobar2000 again. I wondered whether there's a chance textual tagging could allow doing it all in one program, have you experimented with mass tag updates/queries?

No experience with that, but it could be possible if someone™ made the right textual interface and would be very powerful (for example wdired could be an interesting inspiration).


## Is there a link to some info expanding your philosophy of how to compensate musicians, I was interested to learn more about that.

No; universal (basic?) income would solve a lot of problems.


## What Emacs theme are you using?

kaolin theme, maybe aurora or bubblegum


## Are you using Doom Emacs, per chance?

-   Answered in chat, vanilla Emacs with doom-modeline
-   OK, thanks.


## Is SVG support built in to Emacs?


It's builtin in Emacs 27 (and earlier: <https://www.emacswiki.org/emacs/EmacsSvg>). You can even take screenshots from within Emacs as SVG (if compiled &#x2013;with-cairo)


## How do you take SVG screenshots within emacs?


<https://www.reddit.com/r/emacs/comments/idz35e/emacs_27_can_take_svg_screenshots_of_itself/>


## It seems Mac does not have support for cairo?


- Might need to manually compile Emacs with support for cairo <https://www.reddit.com/r/emacs/comments/7ewewl/compiling_emacs_26090_with_cairo/>
- Download source code then take a look at the &#x2013;help flag when running ./configure. Cairo support is experimental and can be enabled with ./configure &#x2013;with-cairo.
  - I see. Thanks again.

# Notes

-   Musician
-   Org document presented with org-tree-slide: <https://github.com/takaxp/org-tree-slide>
-   EMMS (<https://www.gnu.org/software/emms/>) for metadata authoring and organising playlists
    -   Creates HTML from EMMS metadata
-   <https://github.com/jagrg/org-emms>
-   Publish music by Emacs.
-   I liked the example for beginners!
-   Uses literate programming style to be able to resume work w/o much time available for programming
    -   See (info "(org) Working with Source Code") for single blocks <https://github.com/casouri/ftable/blob/master/ftable.elhat> can be executed in Emacs with C-c C-c
    -   Several languages combined with noweb (info "(org) Noweb Reference Syntax")
-   SVG support used for buttons
-   <http://churls.world> °°°
-   Meta: "You can even take screenshots from within Emacs as SVG" — would it be possible to set up an SVG livestream&#x2026;?
    -   I doubt it would be practical to do it at a high framerate, but it's worth trying out. The other disadvantage of the approach is that there's few vector animation formats (Flash, HTML5), so saving it losslessly to disk will be tricky.