Convert Beat Saber maps to Tesla light shows!

Overview

Tesla x Beat Saber - Light Show Converter

Convert Beat Saber maps to Tesla light shows!

This project requires FFMPEG and all packages from requirements.txt (Use "pip install -r requirements.txt")

With the new Tesla software update a new light show feature has been added. This makes it possible to control the car lights timed with music. I however, am way too lazy to create my own light shows, so I coded a program to do it for me. As someone that has played a lot of the popular VR-game Beat Saber, I thought I could use those levels to generate a light show. This program works by taking the data from a Beat Saber level and translating it to the xLights format Tesla uses. The program is in very early stages, but I plan to build more features upon it.

Features

  • Translates note positions and timings to front lights
  • Translates background effects to rear lights
  • Converts ogg file to wav and links it to light show file
  • Optionaly downloads direct links to beat map zip files and extracts them

What it doesn't do (yet...)

  • It doesn't output a ready-to-use fseq file. You'll have to load up the xsq file in xLights and compile it to an fseq file
  • It doesn't check for any limit violations. This means you'll most likely have to trim the light show in xLights to stay within limits

Check out the side by side comparison video:

Tesla x Beat Saber - Light show convertion comparison

Usage

Run main.py with first argument being either a path to a Beat Saber difficulty file, or a direct download link to a Beat map zip file

See demo video for examples:

Tesla x Beat Saber - Light show convertion demo

Leave a star if you like the project to encurage me to keep working on it :)

You might also like...
An app that mirrors your phone to your compute and maps controller input to the screen

What is 'Dragalia Control'? An app that mirrors your phone to your compute and maps controller input to the screen. Inputs are mapped specifically for

skimpy is a light weight tool that provides summary statistics about variables in data frames within the console.
skimpy is a light weight tool that provides summary statistics about variables in data frames within the console.

skimpy Welcome Welcome to skimpy! skimpy is a light weight tool that provides summary statistics about variables in data frames within the console. Th

A tool for light-duty persistent memoization of API calls

JSON Memoize What is this? json_memoize is a straightforward tool for light-duty persistent memoization, created with API calls in mind. It stores the

A light library to build tiny websites
A light library to build tiny websites

A light library to build tiny websites

A python package that computes an optimal motion plan for approaching a red light

redlight_approach redlight_approach is a Python package that computes an optimal motion plan during traffic light approach. RLA_demo.mov Given the par

Homed - Light-weight, easily configurable, dockerized homepage
Homed - Light-weight, easily configurable, dockerized homepage

homed GitHub Repo Docker Hub homed is a light-weight customizable portal primari

Convert three types of color in your clipboard and paste it to the color property (gamma correct)
Convert three types of color in your clipboard and paste it to the color property (gamma correct)

ColorPaster [Blender Addon] Convert three types of color in your clipboard and paste it to the color property (gamma correct) How to Use Hover your mo

An awesome script to convert the University Of Oviedo web calendar to Google or Outlook calendars.
An awesome script to convert the University Of Oviedo web calendar to Google or Outlook calendars.

autoUniCalendar Un script en Python para convertir el calendario de la intranet de la Universidad de Oviedo en un calendario de Outlook o Google Calen

Convert-Decimal-to-Binary-Octal-and-Hexadecimal

Convert-Decimal-to-Binary-Octal-and-Hexadecimal We have a number in a decimal number, and we have to convert it into a binary, octal, and hexadecimal

Comments
  • ModuleNotFoundError: No module named 'validators'

    ModuleNotFoundError: No module named 'validators'

    When running the following command:

    python3 main.py https://eu.cdn.beatsaver.com/103d39b43966277c5e4167ab086f404e0943891f.zip

    I receive the following result:

    Traceback (most recent call last): File "main.py", line 4, in <module> import validators

    opened by SyrupBoy76 2
  • Error while translating (appendToNodes)

    Error while translating (appendToNodes)

    Hey man,

    first of all: Incredible script! Really good idea to do it like that! I found a bug while trying it out.

    Run your script with this url: https://eu.cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.zip You can find the beat saber show here: https://beatsaver.com/maps/4e8d

    If you run the script the following error comes up:

    python3 Main.py https://eu.cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.zip
    Downloading...
    Extracting...
    Converting egg to wav...
    Translating...
    Traceback (most recent call last):
      File "/Users/***/teslabeatsaber/Main.py", line 18, in <module>
        translateBeatmap(difficultyMapPath)
      File "/Users/***/teslabeatsaber/Translator.py", line 65, in translateBeatmap
        appendToNodes(etree.fromstring('<Effect ref="0" name="On" selected="1" startTime="' + str(startTime) + '" endTime="' + str(startTime + LightBlinkDuration) + '" palette="1"/>'), LightBindingsLeft[positionString])
    KeyError: '18895000'
    
    opened by RaminGe 2
  • [Request] Combine two blocks right after each other

    [Request] Combine two blocks right after each other

    Hey,

    I have a suggestion which would make sense for almost every song generation. If there are two blocks right after each other they should get combined:

    Now: Bildschirmfoto 2022-01-18 um 22 33 22

    Should be: Bildschirmfoto 2022-01-18 um 22 32 54

    This would save many commands for each show. And the user could then go over it and adjust the timings if needed.

    opened by RaminGe 1
  • [Request] Options for different model of car

    [Request] Options for different model of car

    This is a tremendous tool that works as-advertised. The only thing I could request to make it a bit more universal is an optional parameter when running to choose what type of car is being produced so that certain options can be mapped elsewhere.

    e.g. older model3 without power trunk, or SR+ vehicles that don't have fog lights, or newer vehicles with matrix LED for 'TESLA' projection.

    I'm not sure how much is actually mapped to those things now, but as an SR+ owner the fog lights is particularly limiting for these auto-generated shows. It would be great if there were a way to map those lights elsewhere so that I'm not just missing half the 'beats'

    opened by lazyboy0172 1
Owner
HLVM
HLVM
Blender Light Manipulation - A script that makes it easier to work with light

Blender Light Manipulation A script that makes it easier to work with light 1. Wstęp W poniższej dokumentacji przedstawiony zostanie skrypt, który swo

Tomasz 1 Oct 19, 2021
IDA Pro plugin that shows the comments in a database

ShowComments A Simple IDA Pro plugin that shows the comments in a database Installation Copy the file showcomments.py to the plugins folder under IDA

Fernando Mercês 32 Dec 10, 2022
A simple script that shows important photography times. written in python.

A simple script that shows important photography times. written in python.

John Evans 13 Oct 16, 2022
An example project that shows how to check if a certain macro is active in a file.

PlatformIO Check Compiler Flags Example Description Demonstrates the usage of an extra script and a special compilter invocation to get the active mac

Maximilian Gerhardt 1 Oct 28, 2021
Shows VRML team stats of all players in your pubs

VRML Team Stat Searcher Displays Team Name, Team Rank (Worldwide), and tier of all the players in your pubs. GUI WIP: Only username search works (for

Hamish Burke 2 Dec 22, 2022
Cisco IOS-XE Operations Program. Shows operational data using restconf and yang

XE-Ops View operational and config data from devices running Cisco IOS-XE software. NoteS The build folder is the latest build. All other files are fo

null 18 Jul 23, 2022
A tool for RaceRoom Racing Experience which shows you launch data

R3E Launch Tool A tool for RaceRoom Racing Experience which shows you launch data. Usage Run the tool, change the Stop Speed to whatever you want, and

Yuval Rosen 2 Feb 1, 2022
uMap lets you create maps with OpenStreetMap layers in a minute and embed them in your site.

uMap project About uMap lets you create maps with OpenStreetMap layers in a minute and embed them in your site. Because we think that the more OSM wil

null 771 Dec 29, 2022
Scientific color maps and standardization tools

Scicomap is a package that provides scientific color maps and tools to standardize your favourite color maps if you don't like the built-in ones. Scicomap currently provides sequential, bi-sequential, diverging, circular, qualitative and miscellaneous color maps. You can easily draw examples, compare the rendering, see how colorblind people will perceive the color maps. I will illustrate the scicomap capabilities below.

Thomas Bury 14 Nov 30, 2022
Just imagine normal bancho, but you can have multiple profiles and funorange speed up maps ranked

Local osu! server Just imagine normal bancho, but you can have multiple profiles and funorange speed up maps ranked (coming soon)! Windows Setup Insta

Cover 25 Nov 15, 2022