[ANNOUNCEMENT] Beameter Generator 0.1 with bpm detection

Discussion about Cock Hero and other sexy videos.

Moderator: andyp

kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

[ANNOUNCEMENT] Beameter Generator 0.1 with bpm detection

Post by kerkersklave »

I never made a cockhero video, but I always had a few PMVs lying arround that I wanted to add some stroking sounds and a beatmeter to. It just always seemed to complicated to me, especially with using free tools. While editing some video files together works quite nicely even with basic tools and skills, matching the beats and animating a beatmeter seemed a lot of work.
As I'm a great fan of the various cockhero videos I also wanted to give something back to the community, so I decided to spend a few evenings to build a few tools that hopefully simplify the process drastically.

The beatmeter generator provides four tools
- An editor allowing you to play a sound file at various speeds and insert beats by clicking a button. The beats are shown on a time line and can be editited afterwards.
- A animation generator that generates a series of images. It does not directly generate video, as this approach is more flexible. Most video ediing tools can generate the video easily from a sequence of images at a fixed frame rate. But this way there are no issues with transparency etc.
- A sound generator that generates an audio file matching the beats
- A bpm analyzer that analyzes a song (or a part of it) and computes the BPM. It seems to work very well with typical songs.

The tools come with some basic images, sounds and settings, but you can use custom images to generate the beatmeter. If you have any questions or troubles or need some extra feature, please let me know. If these tools are useful to cockhero authors, I am willing to spend some more efford improving them.

Here is a screenshot of the tool:
Image

Here is an example what the generated Beatmeter looks like:
Image

Or an other style:
Image

Here you can see a short example video. It's just a short video I've downloaded somewhere and quickly added a beatmeter.
http://motherless.com/D377329

And here is a video with the other style:
http://motherless.com/45ED010
The orignal video is from here:
https://de.pornhub.com/view_video.php?v ... 77ed9d8355

I used the bpm detection for this one and added the basic beats exactly according to what it detected.
Then I just added beats to get the rythms and pasted them over the basic beats.

If you want to try the tool you can download it here (scroll down):
https://gitlab.com/SklaveDaniel/BeatmeterGenerator
You will need a Java 8 JRE to run it. I've only tested it on Linux, but it should be platform independent. You will also find the sourcecode there.
Last edited by kerkersklave on Sun Jun 25, 2017 1:41 am, edited 5 times in total.
User avatar
Xity
Explorer
Explorer
Posts: 64
Joined: Wed Jun 17, 2015 6:54 pm

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by Xity »

This looks great! To be honest, I haven't actually downloaded/tried it yet, but I was actually thinking of doing a similar project at one point but gave up because user interfaces are hard. I'm glad to see someone else doing it! A few of the features I really wanted to incorporate would make beatmeter making, super nice.

Here are some of those features (in order of (what I believe is) implementation difficulty):

1. After manually putting in all the beats, the program could have a feature to auto-align them to a single bpm (and subdivisions of it), so that the end result is perfectly in sync, and also allows the user to be slightly sloppier with adding the beats, since manually adding a lot of beats is going to get very tedious. (I can help with the math for auto-aligning; if you want, PM me, I'd love to help in whatever way I can)

2. Again, since manually adding every single beat can be tedious, it could be cool to have a "pattern paintbrush", where you enter a pattern, and then it paints that pattern in a range specified by the user (or alternatively, allow the user to copy-paste sections of beats).

3. Auto-detect the bpm of the song (goes along with my first comment), so that you can easily align beats. (I have no idea how one could do this, or if this is even remotely possible without google-level machine learning)

I realize some of these could be hard to implement, and without the auto-alignment, I'll probably still stick with Audacity for now, but if you can make it slightly more user-friendly, I can see this inspiring lots of new creators, and making my life so much easier!

Thanks again, for taking the time to make this, and help other creators!

- X
Check out my Cock Hero videos: Chroma 1, Chroma 2, Chroma 3.
My first multi-episode series project: Cock Hero Spec19 Season 1.
My latest project: Interactive Cock Hero Demos
kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by kerkersklave »

Thank you for your comments. I already feal that my tool is easier to use than Audacity, but maybe I am not experienced enough. It also uses the same format as Audacity uses for labels, so if you place the beats using labels in audacity, you can just export that and use my tool to generate the beatmeter.

With regard to your suggestions:
- Copy and pasting beat sequences should be easy, I think I'll add that next. I could also add something like a "paste n times"-command where a pattern is copied n times merging the last beat of a repetition with the first of the next. I am not sure if one would need anything more than that.
- Autoaligment: well, processing the beat list with regard to some simple rules should be rather easy. I'm not sure how helpful this is however. Music does not necesserily have an absolutely constant speed, if it is not synthesized. I could imagine something like this: select the first and last beat, and a number how often the time in between should be diveded. Then all beats in between will be alligned to the nearest grid element.
- Beat detection: I know that there are algorithms to do that. Audacity might even have a plugin for that. I am not sure, how well that would work. If someone points me to a two page algorithm applicable to an array of audio samples without too much fuzz its probably not too much efford.

PS: Just noticed: Audacity has a tool for beat-detection. So you could just use that export it and import it into my tool. I'm not sure whether this is really helpful though. It seems to detect beat-like noises and not really the basic beat of the music. That would probalby involve a lot more "AI".
User avatar
Xity
Explorer
Explorer
Posts: 64
Joined: Wed Jun 17, 2015 6:54 pm

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by Xity »

kerkersklave wrote: Sat Jun 17, 2017 10:58 pm Thank you for your comments. I already feal that my tool is easier to use than Audacity, but maybe I am not experienced enough. It also uses the same format as Audacity uses for labels, so if you place the beats using labels in audacity, you can just export that and use my tool to generate the beatmeter.
I haven't been using the labels in Audacity, so I don't know how hard that is; I've taken my beat sound, trimmed it more-or-less to the correct length given the bpm of the song, and then copy-pasted it to the end (and then if it got misaligned toward the end, I'd re-adjust the length of the original beat and then repeat until it was close enough. Then I could get double-time it by copying the whole track and shifting it by half a beat length. Then I get different patterns by removing beats from those two tracks. This is easier for me than putting in literally like 500 beats by hand; and I end up with precisely aligned beats.
kerkersklave wrote: Sat Jun 17, 2017 10:58 pm With regard to your suggestions:
- Copy and pasting beat sequences should be easy, I think I'll add that next. I could also add something like a "paste n times"-command where a pattern is copied n times merging the last beat of a repetition with the first of the next. I am not sure if one would need anything more than that.
That would be great. I think if it had that feature (especially paste n times), I would definitely prefer your tool over Audacity, because then it would be no harder for me to use. (This could then be used in a similar way to how I copy the beats in Audacity).
kerkersklave wrote: Sat Jun 17, 2017 10:58 pm - Autoaligment: well, processing the beat list with regard to some simple rules should be rather easy. I'm not sure how helpful this is however. Music does not necesserily have an absolutely constant speed, if it is not synthesized. I could imagine something like this: select the first and last beat, and a number how often the time in between should be diveded. Then all beats in between will be alligned to the nearest grid element.
You say the user would pick how many subdivisions between the first and last beat; but they might not want to count that. You could make it slightly more user friendly by checking all integers up to something like 500 times the length of the track in minutes (songs will probably not be more than 250 bpm - making 500 bpm for double time) or make it even more just to be safe; then, see which gird alignment is closest to the beats and snap them to that grid.
kerkersklave wrote: Sat Jun 17, 2017 10:58 pm - Beat detection: I know that there are algorithms to do that. Audacity might even have a plugin for that. I am not sure, how well that would work. If someone points me to a two page algorithm applicable to an array of audio samples without too much fuzz its probably not too much efford.

PS: Just noticed: Audacity has a tool for beat-detection. So you could just use that export it and import it into my tool. I'm not sure whether this is really helpful though. It seems to detect beat-like noises and not really the basic beat of the music. That would probalby involve a lot more "AI".
I didn't know Audacity had a Beat Finder, but I tried it and it is not that great. I do think this is a heavily AI problem unfortunately.

Thanks for taking the time to respond, and for trying to make it better! I honestly would love to see this at it's full potential, because I don't know about other creators, but I spend at least an hour per song adding the beats in, and this could make it so much easier and also let me make a custom beatmeter at the same time!!! I also imagine this will allow people who didn't know how to edit beats, or thought it was too hard, to be able to do it, so we can have even more creators!

THANK YOU FOR THIS,
- X

P.S. If you want any help with this project, feel free to PM me; I'm not a professional, and I don't know Java, but I have a significant amount of experience with Python if that could be of any help.

Also, new idea, although could be hard/impossible to implement depending on how you started (and is not super necessary): make the program able to accept plug-ins. For example, let it run a little python script on the beats, or something else, idk. This is not super-important though.
Check out my Cock Hero videos: Chroma 1, Chroma 2, Chroma 3.
My first multi-episode series project: Cock Hero Spec19 Season 1.
My latest project: Interactive Cock Hero Demos
kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by kerkersklave »

Ok, I took a few hours today to improve the beat handling. I've added copy and paste and some kind of alignment.

The copy and paste allows you to select some beats copy them and insert them at the current position moving the current position to the last or first beat (depending wheter you insert to the left or right). This allows you to repeat patterns quickly or to just fill your beat track with basic beats.

There are two aligment tools: the simple one spreads the beats equally between first and last beat selected. The complex one requires you to specify how many repetitions of the pattern there are between the first and the last beat (exclusive). It then equally distributes the patterns and adjusts the positions in the patterns to the average. This should be usefull to align more complex patterns. E.g. if you want to align something like 1-2 123 1-2 123 1-2 123 you set it to two repetions plus 4 extra beats (the last pattern is incomplete, as the last selected beat is exclusive, because it marks the length of the last break.) and then you can align it.

You can also move selected beats to the current position or by a set interval.

If you have "simple" beat patters that are just a subset of a constant base beat, the easiest thing probably is to play the song and match the base beat for a few seconds. Then copy and paste it over the length of the song. Make sure, the first and last beat align perfectly. Then use equal aligment to get a perfect match. Listen to it, to verify. Then just delete beats, or delete sections and copy in certain patterns.

I don't think I will add a plugin API soon. The tool is written in Scala so plugins would have to be written in Scala or some other JVM-Language. The beat-files have a really simple format, basically every line looks like this:
0.5 0.5 Beat
The timestamps are in seconds and are repeated twice because in Audacity labels can have a duration. But they are always exactly the same.

So if you want to process the beats somehow you can just parse that file which is one line in most programming languages.
If you have something in mind, that would be helpful and want to experiment, just implement it that way and if it turns out to be good and it would profit form UI-integration, i'll port the code to Scala (should be easy from python) and add it.

It would be great if you would try the tool on some of your projects and give me feedback. (And other authors as well.)
I really would like to make the process as easy as I can.

If you are interessted in custom beatmeters: the tool uses a couple of SVG-Images and combines them. SVG so they scale to different sizes. You can do it your self but I would be interessted to include a couple of beatmeter styles directly. So if you want something different then what I have now, just draw me an SVG-image of your beatmeter and I create the required images from that and add it to the tool.
kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by kerkersklave »

Just a quick update: I've pollished the UI a bit. Better handling of the audio background thread when moving the controlls while playing, a bunch of usefull shortcuts etc. It feels very pleasant to use to me now.
If someone already tried it, I would suggest to download it again. I might add more features, but I have included most of what I can think of at the moment.
User avatar
Xity
Explorer
Explorer
Posts: 64
Joined: Wed Jun 17, 2015 6:54 pm

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by Xity »

I will download and try it sometime this week for a small little side-project, and I'll let you know how it goes!

Thanks again,

- X
Check out my Cock Hero videos: Chroma 1, Chroma 2, Chroma 3.
My first multi-episode series project: Cock Hero Spec19 Season 1.
My latest project: Interactive Cock Hero Demos
User avatar
pl3b
Explorer At Heart
Explorer At Heart
Posts: 180
Joined: Sat Apr 16, 2016 8:50 am

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by pl3b »

If you're still looking for ideas I'd check Ableton Live. I've seen a CH creator tutorial somewhere but I can't find it now.

Personally I really like the way it handles creating beat patterns and having it to sync with the beats of the song. It of course has more than just BPM measuring, tempo changes and much more, but the beat generator you're making doesn't need all that of course. Out of all I'd really check out how you can create beats there - it's quite intuitive and easy to sync with the song.
kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by kerkersklave »

I am still looking for ideas/feedback.

There does not seem to be a free version of that tool so I can't try it. (I do not want to buy it, just to look at it.)
I've watched the tutorial on the website on editing midi-beats, that seems to be pretty standard.
This is of course much nicer than Audacity which has no midi-editing. I did not see much on any automatic beat maching features though. If there is something really useful I would want to know what it does, how good it is and how it is done.
Tommyy
Explorer
Explorer
Posts: 47
Joined: Tue Sep 25, 2012 9:11 am

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by Tommyy »

Thanks for the work
However I have trouble getting it to work. Is it possible to translate it into some kind of easier accessable software.
kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by kerkersklave »

Could you explain a bit what did not work for you and how I could make it more accessible?

It should not be difficult to run the software, what you have to do is the following:
- Download the Java SE 8 JRE from http://www.oracle.com/technetwork/pt/ja ... index.html (Basically the first Button where it says Download and JRE.
- Download the latest build of my tool from the project website. Direct link: https://gitlab.com/SklaveDaniel/Beatmet ... ?job=build
- Open the command line (cmd on windows)
- Go to the directory, where you have the jar file and some wav audio file, run java -jar beatmeter-generator.jar editor -i audio.wav

I am not sure how I could make it easier than that. I could make it run natively on windows by somehow bundeling it with the JRE. Also, I could of course replace all the command line stuff by a graphical interface. But it does not seem too complicated to me, and maybe your problem is somewhere else?

I've tested the tool using Windows now as well and it seems to work fine.
User avatar
Rule63MePlease
Explorer At Heart
Explorer At Heart
Posts: 185
Joined: Sun Sep 20, 2015 4:13 am
I am a: None of the above

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by Rule63MePlease »

Looks interesting, I will have to play around with it soon.
ComboNo1
Explorer At Heart
Explorer At Heart
Posts: 148
Joined: Thu Oct 01, 2015 8:52 pm
Gender: Male
Sexual Orientation: Straight
I am a: None of the above

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by ComboNo1 »

Ok, I downloaded this to play around with it and check it out, and I can't get it to run.

I'm on linux (Fedora 23 - 64 bit ... I know a few releases behind right now too) and I have Java & the JDK installed:

Code: Select all

ComboNo1@somewhere: java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b16)
OpenJDK 64-Bit Server VM (build 25.111-b16, mixed mode)


I know java, and I've written little programs as complex as 3 or 4 classes, but I'm not a programmer (just an amateur/ hobbyist). And I've never had to "jar" all my stuff together in an archive and try and distribute it. And I really haven't written anything of substance in a couple of years, so my coding is foggy, and I've forgotten some stuff.

I downloaded from your link at this part of the page:
Download

The current binary can be downloaded:
beatmeter-generator.jar
... I ran this from the command line:

Code: Select all

ComboNo1@somewhere: java -jar beatmeter-generator.jar editor -i shakira.wav
and I got all this error stuff:
Spoiler: show
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/event/EventTarget
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at io.gitlab.sklavedaniel.beatmetergenerator.BeatEditor$Conf.execute(BeatEditor.scala:58)
at io.gitlab.sklavedaniel.beatmetergenerator.Main$.delayedEndpoint$io$gitlab$sklavedaniel$beatmetergenerator$Main$1(Main.scala:59)
at io.gitlab.sklavedaniel.beatmetergenerator.Main$delayedInit$body.apply(Main.scala:25)
at scala.Function0.apply$mcV$sp(Function0.scala:34)
at scala.Function0.apply$mcV$sp$(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App.$anonfun$main$1$adapted(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.App.main(App.scala:76)
at scala.App.main$(App.scala:74)
at io.gitlab.sklavedaniel.beatmetergenerator.Main$.main(Main.scala:25)
at io.gitlab.sklavedaniel.beatmetergenerator.Main.main(Main.scala)
Caused by: java.lang.ClassNotFoundException: javafx.event.EventTarget
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 48 more
What am I doing wrong? I don't have Java on my windows partition, so I'd like to get it working on linux.
"Everyone loves or should love huge tits."
kerkersklave
Explorer At Heart
Explorer At Heart
Posts: 549
Joined: Sun Jul 06, 2014 2:11 pm
Gender: Male
Sexual Orientation: Open to new ideas!
I am a: Slave

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by kerkersklave »

Oh, the UI uses JavaFX. Oracle distributes that with its JRE now, but with OpenJDK on Linux it usually is a separate package.
I've looked it up using Fedora Package Search and here it is:
https://apps.fedoraproject.org/packages/openjfx

This exists since quite some time now and is the replacement for Swing, so modern GUI-Applications won't run without it, but it seems it is only included with Fedora since 25.
If you do not want to upgrade your system, you probably have to install the Oracle JRE/JDK.

Here is a manual for Fedora to do that: https://fedoraproject.org/wiki/JDK_on_Fedora
ComboNo1
Explorer At Heart
Explorer At Heart
Posts: 148
Joined: Thu Oct 01, 2015 8:52 pm
Gender: Male
Sexual Orientation: Straight
I am a: None of the above

Re: [ANNOUNCEMENT] Beameter Generator 0.1

Post by ComboNo1 »

kerkersklave wrote: Wed Jun 21, 2017 6:14 pm Oh, the UI uses JavaFX. Oracle distributes that with its JRE now, but with OpenJDK on Linux it usually is a separate package.
I've looked it up using Fedora Package Search and here it is:
https://apps.fedoraproject.org/packages/openjfx

This exists since quite some time now and is the replacement for Swing, so modern GUI-Applications won't run without it, but it seems it is only included with Fedora since 25.
If you do not want to upgrade your system, you probably have to install the Oracle JRE/JDK.

Here is a manual for Fedora to do that: https://fedoraproject.org/wiki/JDK_on_Fedora
Thanks for the quick "help desk" reply back. :-D

I will fiddle around getting my java working/up to date with all the modern components (JavaFX) and then I will take a look at your program!

Thanks again :-)
"Everyone loves or should love huge tits."
Post Reply

Who is online

Users browsing this forum: andyp, ginep, HotBen, kerastop, sewola1209 and 75 guests