Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.gradle/*
build/*
bin/*
.vscode/settings.json
samples/Abracadabra.mp3
samples/edamame.mp3
Target/*.sm
Target/*.mp3
58 changes: 58 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "30s preview",
"request": "launch",
"mainClass": "autostepper.AutoStepper",
"projectName": "AutoStepper",
"args": "input=samples/${input:mp3} output=${input:out_dir} duration=30 preview=true",
"vmArgs": "-Xmx4096m",
"console": "integratedTerminal"
},
{
"type": "java",
"name": "Full",
"request": "launch",
"mainClass": "autostepper.AutoStepper",
"projectName": "AutoStepper",
"args": "input=samples/${input:mp3} output=${input:out_dir} duration=300",
"vmArgs": "-Xmx4096m",
"console": "integratedTerminal"
},
{
"type": "java",
"name": "PreviewAll",
"request": "launch",
"mainClass": "autostepper.AutoStepper",
"projectName": "AutoStepper",
"args": "input=samples/${input:mp3} output=${input:out_dir} duration=300 preview=true",
"vmArgs": "-Xmx4096m",
"console": "integratedTerminal"
}
],
"inputs": [
{
"id": "mp3",
"type": "pickString",
"description": "Select mp3 to use",
"options": ["PopVocal-AgusAlvarez&Markvard-BeautifulLiar(freetouse.com).mp3",
"HipHop-Aylex-GoodDays(freetouse.com).mp3",
"Electro-Aylex-TurnItLouder(freetouse.com).mp3",
"Disco-Burgundy-DreamsofTomorrow(freetouse.com).mp3",
"DontAskWhatTheHeckIsThat.mp3",
"Abracadabra.mp3"],
"default": "Abracadabra.mp3"
},
{
"id": "out_dir",
"type": "promptString",
"description": "Select output to use",
"default": "out"
}
]
}
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,15 @@ updatesm=true will look for existing .sm stepfiles using the same filenames gene

You can also use the output as a base to further edit & perfect songs, with AutoStepper doing most of the dirty work.


I will add it is optimized for pad use, not keyboard use (e.g. difficulty isn't high enough).

### JDK for development
You can get it from adoptium.net, in case you work on Windows

### Minim library
All credits for processing to author of: https://github.com/ddf/Minim/tree/main

Phr00t

** LICENSING: Modified MIT license to restrict commercial use & require attribution **
Expand All @@ -53,3 +60,13 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

## Fork information

This is a fork of "Phr00t's Software".
Original copyright © 2018 Phr00t's Software.

Modifications and additional code:
Copyright © 2025 Fightlapa - github

This fork is distributed under the same license as the original project.
63 changes: 63 additions & 0 deletions Target/parse.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# To convert sm file written by professionalist
# to compare later on with algorithm there for matching accuracy

# Open input file
input_filename = "Abracadabra.sm"
output_filename = "AbracadabraOut.sm"

with open(input_filename, "r") as f:
lines = f.readlines()

output_lines = []
current_block = []

first_trigger = False
second_trigger = False
parse_mode = False

for line in lines:
line = line.strip()
if parse_mode:
if line == "," or line == ";": # End of a block
# Process current block: add '.' to each line
index = 0
for l in current_block:
# print (f"Block fragment: {l} len: {len(current_block)} index: {index % 2 == 0}")
if len(current_block) == 16:
output_lines.append(l)
elif len(current_block) == 4:
output_lines.append(l)
output_lines.append("0000")
output_lines.append("0000")
output_lines.append("0000")
elif len(current_block) == 8:
output_lines.append(l)
output_lines.append("0000")
index+=1
# You can uncomment it to add also "," lines
# output_lines.append(line)
# for l in output_lines:
# print (f"Output fragment: {l}")
current_block = []
elif len(line) == 4: # Skip empty lines
current_block.append(line)
elif "dance-single" in line or "dance-double" in line:
first_trigger = False
second_trigger = False
parse_mode = False
break
else:
output_lines.append(line)
else:
if "dance-single:" in line:
first_trigger = True
elif "Hard:" in line:
second_trigger = True
if first_trigger and second_trigger:
parse_mode = True

# Save to new file
with open(output_filename, "w") as f:
f.write("\n".join(output_lines))

print(f"Processed file saved as {output_filename}")
101 changes: 101 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '7.1.2'
}

sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

sourceSets {
main {
java {
srcDirs = ['src']
}
}
test {
resources {
srcDirs = ['test']
}
}
}

application {
mainClass = 'autostepper.AutoStepper'
}

repositories {
mavenCentral()
maven { url = uri('https://repo.clojars.org/') }
}

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1'

// Argument parsing
implementation 'net.sf.jopt-simple:jopt-simple:5.0.4'

// HTML parsing
implementation 'org.jsoup:jsoup:1.11.2'

// Trove collections (gnu.trove.*)
implementation 'net.sf.trove4j:trove4j:3.0.3'

// MP3 decoder (JLayer)
implementation 'javazoom:jlayer:1.0.1'

// JavaSound SPI – MP3
implementation 'com.googlecode.soundlibs:mp3spi:1.9.5-1'

// Tritonus (JavaSound implementation)
implementation 'com.googlecode.soundlibs:tritonus-share:0.3.7-2'
implementation 'org.clojars.automata:tritonus-aos:1.0.0'
implementation 'org.clojars.automata:jsminim:2.1.0'
}

test {
useJUnitPlatform()
}

shadowJar {
archiveBaseName.set('AutoStepper')
archiveClassifier.set('') // replaces normal jar

mergeServiceFiles()
}

// Make the distribution use the shadow JAR
tasks.named('distZip') {
dependsOn shadowJar
// Optional: include shadowJar artifact instead of default jar
from(shadowJar.archiveFile) {
into('lib')
}
}

tasks.named('installDist') {
dependsOn shadowJar
from(shadowJar.archiveFile) {
into('lib')
}
}

tasks.named('distTar') {
enabled = false
}

tasks.named('startScripts') {
enabled = false
}

tasks.named('startShadowScripts') {
enabled = false
}

tasks.named('shadowDistTar') {
enabled = false
}

tasks.named('shadowDistZip') {
enabled = false
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
104 changes: 104 additions & 0 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion lib/export.txt

This file was deleted.

Binary file removed lib/jl1.0.1.jar
Binary file not shown.
Binary file removed lib/jopt-simple-5.0.4.jar
Binary file not shown.
Binary file removed lib/jsminim.jar
Binary file not shown.
Binary file removed lib/jsoup-1.11.2.jar
Binary file not shown.
Binary file removed lib/mp3spi1.9.5.jar
Binary file not shown.
Binary file removed lib/tritonus_aos.jar
Binary file not shown.
Binary file removed lib/tritonus_share.jar
Binary file not shown.
Binary file removed lib/trove-3.0.3.jar
Binary file not shown.
Binary file added samples/Cure.mp3
Binary file not shown.
Binary file not shown.
Binary file added samples/DontAskWhatTheHeckIsThat.mp3
Binary file not shown.
Binary file not shown.
Binary file added samples/HipHop-Aylex-GoodDays(freetouse.com).mp3
Binary file not shown.
Binary file not shown.
Loading