Glitchy Complextro Bassline Simulator
About this app
Create your own glitchy complextro basslines effortlessly with this interactive web app. Customize patterns, effects, and rhythms to produce unique bassline sounds.
Glitchy Complextro Bassline Simulator Glitchy Complextro Bassline Simulator Select Your Patterns (checkboxes below): Pattern 1 Pattern 2 Pattern 3 Pattern 4 Pattern 5 Pattern 6 Effects and Glitches: Distort Reverse Delay Play
Related apps
Put this on your site
Source
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Glitchy Complextro Bassline Simulator</title>
<meta name="description" content="Create your own glitchy complextro basslines effortlessly with this interactive web app. Customize patterns, effects, and rhythms to produce unique bassline sounds.">
<meta name="keywords" content="music, simulator, complextro, bassline, synth, sound, interactive, audio">
<!-- Libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/fontawesome.min.css" crossorigin="anonymous">
<script type="text/javascript">
try {
document.addEventListener("DOMContentLoaded", function() {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
let oscillator, gainNode, isPlaying = false;
const basslinePatterns = [];
function updatePattern() {
const width = 16;
const cols = $('.column input:checked').length;
// randomly overwrite with glitches
for(let i = 0; i < width; i++) {
const delay = Math.random() * 500 + 100;
basslinePatterns[i] = Math.floor(Math.random() * (cols > 0 ? 2 : 1));
}
}
function playBassline() {
if (!isPlaying) {
isPlaying = true;
oscillator = audioContext.createOscillator();
gainNode = audioContext.createGain();
oscillator.type = 'sawtooth';
oscillator.frequency.setValueAtTime(110, audioContext.currentTime); // Depending on the complexity
oscillator.connect(gainNode);
gainNode.connect(audioContext.destination);
gainNode.gain.setValueAtTime(0.1, audioContext.currentTime);
oscillator.start();
playPattern();
}
}
function stopBassline() {
if (isPlaying) {
oscillator.stop();
isPlaying = false;
}
}
function playPattern() {
const interval = 250;
basslinePatterns.forEach((val, index) => {
setTimeout(() => {
if (val) {
gainNode.gain.setValueAtTime(1, audioContext.currentTime);
gainNode.gain.setValueAtTime(0.1, audioContext.currentTime + 0.1);
}
}, index * interval);
});
if (isPlaying) {
setTimeout(playPattern, basslinePatterns.length * interval);
}
}
$('#play-button').on('click', function() {
if (isPlaying) {
stopBassline();
$('#play-button').text('Play');
} else {
updatePattern();
playBassline();
$('#play-button').text('Stop');
}
});
$('.column input').on('change', function() {
updatePattern();
});
});
} catch (error) {
throw error;
}
</script>
<style>
body {
background: linear-gradient(to bottom, #1e3c72, #2a5298);
color: white;
font-family: 'Arial', sans-serif;
}
#main-container {
text-align: center;
padding: 20px;
}
h1 {
color: #ffcc00;
margin-bottom: 20px;
}
.column {
display: inline-block;
margin: 0 10px;
}
.button {
margin-top: 20px;
padding: 10px 15px;
background-color: #00c4cc;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 18px;
}
.button:hover {
background-color: #00858d;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<h1>Glitchy Complextro Bassline Simulator</h1>
<div class="columns">
<div class="column">
<h3>Select Your Patterns (checkboxes below):</h3>
<label><input type="checkbox" checked> Pattern 1</label><br>
<label><input type="checkbox" checked> Pattern 2</label><br>
<label><input type="checkbox"> Pattern 3</label><br>
<label><input type="checkbox"> Pattern 4</label><br>
<label><input type="checkbox"> Pattern 5</label><br>
<label><input type="checkbox"> Pattern 6</label><br>
</div>
<div class="column">
<h3>Effects and Glitches:</h3>
<label><input type="checkbox" class="fx"> Distort</label><br>
<label><input type="checkbox" class="fx"> Reverse</label><br>
<label><input type="checkbox" class="fx"> Delay</label><br>
</div>
</div>
<button id="play-button" class="button">Play</button>
</div>
</body>
</html>
NEW APPS
These are apps made by the community!