Hey all!
So, let me present some benefits of using this software:
You don't need to use Adobe AE to create visual beat meter anymore.
Fagustree developed a beat detection tool that can generate timestamps array from mp3 beat track.
The timestamps are then used to feed the beat meter generator.
I personally find this approach easier and less frustrating than using AE. I suggest to other authors, especially the starting ones who struggle with making visual beats to check this functionality.
(Can you later add the beat detection tool link and information on how to create a project to the first post fagustree?)
The other thing that this beat generation allows is randomization of beat patterns and green segments.
Here is an example of my approach:
I create multiple beat patterns variants in my editing software:
Then render each of these tracks (in this case four) to mp3, use fagustree's tool to convert them to timestamps, measure timestamps of beat pattern segments in my editor and then put it all to my code that hadles it:
Code: Select all
// Here I'm loading multiple beat files
const beats1 = require('./beats/beats1.json');
const beats2 = require('./beats/beats2.json');
const beats3 = require('./beats/beats3.json');
const beats4 = require('./beats/beats4.json');
const beatPool = [ beats1, beats2, beats3, beats4 ];
const setup = async () => {
// Segments taken from Vegas project
var segments = [ 0, 64.364, 79.780, 110.978, 141.208, 171.938, 187.754, 221.855, 248.748, 264.097, 294.828, 333.600 ];
var beatData = []; //Final beat pattern that will be feeded to the visual beat generator
//Green sections setup
var maxGreen = 3;
var minGreen = 1;
//Generate random number of green sections based on setup
var randomGreen = Math.floor(Math.random() * (maxGreen - minGreen + 1)) + minGreen;
//Pick green segments
var segmentsNumbers = [];
for (var i=0; i < segments.length-1; ++i) {
segmentsNumbers.push(i);
}
var greenSegments = [];
while (greenSegments.length < randomGreen && segmentsNumbers.length != 0) {
var index = Math.floor(Math.random()*segmentsNumbers.length);
var pickedSegment = segmentsNumbers[index];
segmentsNumbers.splice(index, 1);
greenSegments.push(pickedSegment);
}
// Beats Randomizer
// Loop through segments
for (var i = 0; i < segments.length - 1; i++) {
var randomBeat = beatPool[Math.floor(Math.random() * beatPool.length)]; //Get random beat
// Pick beat values that are between segment bounds and push them to finalBeat
for (var x = 0; x < randomBeat.length; x++) {
if (randomBeat[x] > segments[i] && randomBeat[x] < segments[i + 1]) {
if (greenSegments.includes(i)) { //Check if the segment is green
beatData.push([randomBeat[x], "green", null, "green"]); //Adds green information to time stamps
} else {
beatData.push(randomBeat[x]);
}
}
}
}
.
.
.
Ta-da! Done.
I't actually pretty simple. You can see the result and beats changing in the demo when you reload it and use left/right arrow to skip around.
I'm avare that not every author knows how to code and that the CH editing part is time consuming and hard enough even without the additional coding. That leads me to the idea of developing some library of modules/templates from which authors could easily draw from.
I would be more than happy to contribute and share relevant parts of my code that could be reused in other projects.
Now to my new Cock Hero - Replay:
My focus using this software for this project will be all about randomization and replayability, but there are other areas that could be explored.
Let me share few ideas that come to mind to maybe inspire other authors:
New game +
Branching paths
Multiple difficulties
Score tracking
Interactive rule sets
My current requests:
Beat change indicators
Faster download speeds
Possible issues and worries:
Bugs
Longevity and support of the software
I'm very impressed by what fagustree created so far. I've got this idea for randomized beats around 5 years ago and I still can't believe that it is now possible!
Overall I think this software has potential to be a game changer when it comes to CH developement and exploration of new ideas and CH concepts.