JSFiddle - React, Tailwind, and code Playground

HTML

<div id="viz"></div>

CSS

body {
  background: black;
}

#viz {
  position: relative;
  margin: 20vh auto;
  text-align: center;
  height: 100px;
  line-height: 100px;
}

.bar {
  position: relative;
  vertical-align: top;
  width: 2px;
  color: #677E8A;
  margin: 0 1px;
  display: inline-block;
}

.bar:before, .bar:after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
}

.bar:after {
  background: currentColor;
  z-index: 2;
  left: 0;
  right: 0;
}

.bar:before {
  left: -1px;
  right: -1px;
  transform-origin: 50% 50%;
  transform: scaleY(3);
  color: inherit;
  background: linear-gradient(to top, black, #5555ff, black);
  filter: blur(2px);
  z-index: 1;
}

JavaScript

for (let i = 0; i < 100; i++) {
	let bar = document.createElement("div");
  bar.classList.add("bar");
  viz.appendChild(bar);
}

let bars = document.querySelectorAll(".bar");

function update(dt) {
	dt = dt || 0;
	for (let bar of bars) {
  	bar.style.height = (Math.random()*100)+"px";
  }
}

window.setInterval(update, 100);