I think you covered it well. 
The only thing I would add is that you can use the same class where property values are shared and then use another class for the differences.
e.g.
<div class="container curtains">...</div>
<div class="container buttons">...</div>
<div class="container initial">...</div>
This is what I keep saying to you and you have to build the page with the end goal in mind. You can’t say what if I want more videos and then change the format of how each video is presented. Or suddenly have one with a load of buttons and one with curtains and one with flying elephants or whatever takes your fancy at the time. 
You have to build with this goal in mind from the start.
The current demo has 3 different sections. One has a curtain effect, one has multiple buttons and the other section holds 2 buttons to trigger either of the two above.
As @Paul_Wilkins said the ideal would be to have the button that triggers the player to be in the same container so you can easily find it without explicit references but that would need a new approach with the html.
If that’s your goal then I would change the html to this structure.
<audio></audio>
<div class="outer">
<div class="container with-curtain">
<svg class="playa thePlay" width="100%" height="100%" viewBox="0 0 64 64">
<path d="M25.6,46.4L44.8,32L25.6,17.6V46.4z M32,0C14.3,0,0,14.3,0,32s14.3,32,32,32s32-14.3,32-32S49.7,0,32,0z
M32,57.6C17.9,57.6,6.4,46.1,6.4,32S17.9,6.4,32,6.4S57.6,17.9,57.6,32S46.1,57.6,32,57.6z">
</svg>
<div class="inner-container curtain">
<div class="ratio-keeper">
<div class="wrapa">
<div class="video video-frame"></div>
</div>
<div class="panel-left"></div>
<div class="panel-right"></div>
</div>
</div>
</div>
<!-- end container -->
<div class="container with-buttons">
<svg class="playb thePlay" width="100%" height="100%" viewBox="0 0 64 64">
<path d="M25.6,46.4L44.8,32L25.6,17.6V46.4z M32,0C14.3,0,0,14.3,0,32s14.3,32,32,32s32-14.3,32-32S49.7,0,32,0z
M32,57.6C17.9,57.6,6.4,46.1,6.4,32S17.9,6.4,32,6.4S57.6,17.9,57.6,32S46.1,57.6,32,57.6z" />
</svg>
<div class="inner-container button-container">
<div class="playButton b1" data-audio="http://getradio.me/svoefm">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b2" data-audio="ttp:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b3" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b4" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b5" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b6" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b7" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b8" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
<div class="playButton b9" data-audio="http:/fm1.hostingradio.ru:14536/rock90.mp3">
<div class="button">
<div class="light"></div>
<div class="dots"></div>
<div class="characters"></div>
<div class="shine"></div>
<div class="shadow"></div>
</div>
</div>
</div>
</div>
<!-- end container -->
</div>
I have hard coded just the blue button for example
The js I changed is this:
function coverClickHandler(evt) {
const cover = evt.currentTarget.parentElement;
cover.classList.add("active");
//hide all containers except this one
// should really loop through all containers except the active one
// I just hard coded it for example
document.querySelector(".container.with-buttons").classList.add("hide");
I only did that for example and the last part would need to be done properly
Note that we don’t need to add the slide class because the active class on the container can be used instead (as I mentioned about a 1000 times). The above routine could then be used for any container. You wouldn’t need to duplicate it if done properly.
Each button is inside the container that it refers to. All you have to do on click the button and it adds an active class to its own container and then hide the other containers. This could scale up and down with as many buttons as required without explicit relationships.