Git Product home page Git Product logo

notreaper's Introduction

chat on Discord

NotReaper is a custom song and community mapper for the VR rhythm game Audica.

Main showcase GIF

What can it do?

NotReaper is equipped with many tools and features to help you make Audica maps exactly how you want in an as short amount of time as possible. Here's some of the highlights.

  • Direct loading, generating, and exporting of Audica files. No more hassle.
  • A responsive and user friendly interface. Complete with 100% more animations.
  • Drag all the things with Drag Select, your new best friend. Unless you hate productivity, that is.
  • Custom-color responsive UI. Want to have teal and gold notes? You got it, chief.
  • Mildly entertaining changelogs.

More Info

Drag Selecting

Drag Selecting

Make your dreams become a reality with the selector that can be dragged.

  • Drag on the Timeline or the Grid to select a bunch of notes.
  • Drag them around to reposition, or drag them on the timeline to change their beat position.
  • Flip note colors, position horizontally or vertically. It's flipping awesome.
  • When you get bored of holding a bunch of notes hostage, deselect them all with a hotkey.
    • What? I'm not a monster, okay?

Customization

Customization

Get bored of staring at the same UI over and over? Make NotReaper more like home.

  • Configure what colors you want to use for the Audica targets, and the UI will follow suite.
  • Don't like the background? Me neither. Change it to a picture of kittens for a 20% mapping speed increase.
  • Custom keybindings! Want to save with Ctrl+C and add notes with L? Be my guest. (soon)

How the heck do I use this thing

https://www.youtube.com/watch?v=4MIahCZRkUg Full tutorial here.

I ask myself that question everyday. For a comprehensive list of the default hotkeys, hit F1 in-game to pull up a neat page with words and animations on it.

For help with using the tool itself, join the Audica Modding Discord!

Credits

NotReaper is the work of quite a few awesome people.

NotReaper Team

CircuitLord: Lead developer of the project, and video creation guy.

Jukibom: Developer, creator of many of Drag Select's features.

Mettra: Developer, fixer of the undo/redo system nightmare.

october: Concept artist, graphics designer, and bugtester.

And all the awesome people on Audica Modding Discord who've reported bugs and tested it out.

History

It all began with Rolopogo, and the Audica Editor. This was also worked on by CameronBess and Wolf.

Eventually, all development stopped, and the project went dead. CircuitLord took it up and began to rewrite and rebuild the entire project from what had been there originally. Optimizing, organizing, and adding new features. At some point it had changed so much, that it was decided to rename the project to NotReaper, imitating the main mapping tool used for Audica (Reaper).

Controls

(These'll get moved later)

Notes:
1: Basic Note
2: Sustain Note
3: Horizontal Note
4: Vertical Note
5: Chain Start
6: Chain Node
7: Melee Note

S: Toggle color

G: Switch to grid view
N: Switch to no grid view

Press V or hold Control: Enter selection mode
While in selection mode, you can adjust the length of sustain notes
Control + X,C, or V after selecting notes to cut, copy, and paste them.
Delete: Delete selected notes F: Swap color of selected notes. Ctrl + F: Swap horizontal positon of selected notes. Shift + F: Swap vertical position of selected notes. Ctrl + Q-Y: Change the hitsound of the selected notes. Ctrl + D: Deselect all notes.

Escape: Main menu

Shift + Scroll while hovering over the big timeline to scale it up and down.
Space: Toggle song playback
Scroll with the mouse wheel to scrub through the song

Sounds:
Q: Kick
W: Snare
E: Percussion
R: Chain start
T: Chain node
Y: Melee

Config File

This is the current config file and all possible values. Note that newer versions do not currently write all keys to the file and just use a default so if your config is out of date please check below for some configurable options you may set.


COLOR represents an rgba value as { "r": 0-1, "g": 0-1, "b": 0-1, "a": 0-1 }.

{
    "leftColor": { COLOR },                 // left note color, default { "r": 0.0, "g": 0.5, "b": 1.0, "a": 1.0 }
    "rightColor": { COLOR },                // right note color, default { "r": 1.0, "g": 0.47, "b": 0.14, "a": 1.0 }
    "selectedHighlightColor": { COLOR },    // halo around selected notes, default { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 }
    "mainVol": 0-1,                         // music volume (also in pause menu), default 0.5
    "noteVol": 0-1,                         // note hit volume (also in pause menu), default 0.5
    "sustainVol": 0-1,                      // sustain not hit volume, default 0.5
    "audioDSP": number,                     // DSP buffer size, lower = better latency but may cause crackling, default 480
    "noteHitScale": number,                 // scale transform applied to hit notes, default 0.5 (1.0 for old behaviour)
    "UIFadeDuration": number,               // duration in seconds of certain ui fades, default 1.0
    "useDiscordRichPresence": true / false, // displays current working map in discord, default true
    "showTimeElapsed": true / false,        // displays amount of time using NR in discord, default true
    "bgImagePath": "Path\\To\\Image.png"    // image file to use as a background, default %appdata%\..\locallow\CircuitCubed\NotReaper\BG1.png
}

notreaper's People

Contributors

circuitlord avatar jukibom avatar lmadara1 avatar mallgrab avatar mettra avatar octoberu avatar wolferacing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

notreaper's Issues

Bookmark system

It looks like there's a bookmark system in MiniTimeline.cs but it currently conflicts with other tool selection mapped to numeric keys (ctrl + shift + number to make a bookmark, number to return)

Weird Drag Select behavior when leaving tool while dragging

I sort of attempted to fix this in my latest commits, but it didn't seem to fix it completely.
Steps:
Select some notes.
Start dragging them somewhere on the grid.
Let go of ctrl before you let go of the mouse button

When you try to drag again, the notes will start dragging off the wrong pivot point.

Improved overlay for targets to be placed

The cursor shows an icon of the same style and opacity as the target icons already in the grid / scene. It isn't always obvious that a new icon is about to be placed on click.

Not sure what this should look like, one suggestion by aggrogahu is an inverted style.

image

Delete has weird memory management behaviour

Delete + undo + redo does not delete and allows undo again (invalid state, multiple notes)

Causes null exception for any other redo actions with affectedTargets (redo adds from scratch - delete should maybe move to a temporary bucket or something...?)

Missing tags in metadata

PreviewTimeSeconds missing from metadata, also a button for setting current time as previewtime

Waveform view on timeline

I think it would be helpful to be able to see the song waveform in the timeline. Many other editors have this like Moonscraper, and it would help with syncing notes if the bpm or offset is a little off.

Can't create audica file

It is currently not possible to create audica files with a German system locale (and probably other locales as well). The call to ffmpeg has to be made with a decimal point for the delay filter. Apparently, a localized call is made instead (German has a decimal comma), resulting in ffmpeg to fail:

Running ffmpeg with args -y -i "C:\Users\path\to\a\song.ogg" -af "adelay=1464,90683229814|1464,90683229814" -map 0:a "C:/Users/path/to/NotReaper-v1.1.3/NotReaper/NotReaper_Data/StreamingAssets\FFMPEG\output.ogg"

The above command gives a No such filter: '90683229814|1464' error in cmd. Replacing the decimal commas with decimal points converts the file as expected.

notreaper-stacktrace.txt

A "Reaper" input mode

At least, I think that's what this issue was originally reported for...

An option to make left click place left hand notes and right click place right hand notes. Double click to delete.

May be worth using this ticket for any other shortcuts and stuff that might ease the transition for Reaper users?

Hold shift to disable snapping

Hold Shift to temporarily switch selectedSnappingMode between None and previous (Melee / Grid) exactly like ctrl does

Select + drag targets makes it possible to move outside the grid

This should NOT be a validation step on loading existing files as some maps do have targets outside of the grid using offsets rather than the pitch value.

This only affects the UI of single notes and groups of notes being dragged around and should be prevented in the drag code (unless an override modifier is held? Some people do like to push things out of the grid).

Error Checker

Error Checker function that parses a cues file and finds errors in the map, such as chain link nodes that don't have a chain start, targets with invalid hitsounds or tickLengths, etc.

Can be extended to give warnings on targets that go against good practice, such as low single melees. Or for following lower difficulty guidelines, such as no slotted notes for Standard, etc.

Errors:

  • headless chains
  • invalid hitsound
  • targets occupying same pitch at same time
  • targets of the same color occurring at the same time
  • no untraceable chains
  • no chains slower than eighth note rhythm

General

  • low solo melees
  • melees with non-melee hitsound
  • insufficient break between a sustain end and the next target on the same hand*
  • insufficient break between a chain end and the next target on the same hand*

*value for these should be configurable, default being 1 full beat.

Advanced warnings:

  • no simultaneous targets more than 4 spaces apart
  • no more than 3 consecutive 16th notes
  • slot notes need at least 2 beats of lead-in time

Standard warnings:

  • no slot targets
  • no simultaneous melee + shot target
  • no simultaneous targets more than 3 spaces apart
  • no more than 2 consecutive 8th notes
  • no consecutive 8th notes on one hand
  • no other targets allowed during the duration of a chain
  • melees can't be faster than 1/4 note
  • targets that are less than a half note from each other cannot be more than 3 grid spaces apart
  • no hand crossing with simultaneous targets
  • no hand crossing with sustains
  • chains need at least 2 beats of lead-in time
  • chains need at least 2 beats of rest afterwards if next target is not also a chain
  • melees need at least 2 beats of rest afterwards if next target is not also a melee

Beginner warnings:

  • no chains
  • no melees
  • changing between hands need at least a measure of lead-in time
  • simultaneous targets need at least a measure of lead-in time
  • simultaneous targets need at least 2 beats of rest afterwards if next target is not also a simultaneous target
  • no more than 2 consecutive 1/4 notes (most targets should be on 1/2 notes)
  • no more than 3 grid spaces between ANY targets

Future iterations can have links with each error and warning that jump to the offending targets in editor.

cues have 0 ticklength

default ticklength for non sustain cues are currently 0, which creates issues of compatibility with converting back to midi:

image

since the cues will be represented as this tiny hard to see midi notes that are hard to select.

A default of 120 ticklength for regular targets would probably be good. 120 is the equivalent of a sixteenth note, and makes for good visibility in midi editors. In the event that a cue immediately following a cue happens before 120 ticks, this doesn't actually cause any issues with the game or in midi, afaik.

Grid Precision + UI enhancements

I put grid and UI together in this suggestion because the UI enhancement suggested correlates to the placement of objects on the grid.

I am proposing the three following additions/enhancements to NotReaper:

  • 1.) The ability to have grid precision. Having grid precision will allow for more granular placement of objects while still having a reference point to the initial grid, making symmetrical patterning and even spacing/accenting substantially easier to do within the normal 1x1 grid spacing. With proper implementation and tight enough precision, chain notes can be quickly placed with mathematically proper spacing, allowing for better consistency in chain links (i.e. more precise, distance-based snapping).

  • 2.) The ability to see the X/Y coordinates of a highlighted note. Whether or not this is an X/Y pairing of coordinates by pixel or if a relative, fractional/decimal number based off of the grid index is irrelevant - it will allow for placing another notes that are potentially unsnapped with similar points along a particular axis.

  • 3.) The ability to see your coordinates within the grid itself. Sometimes, a pattern presentation might be too subtle to lock onto a grid coordinate (unless snapping can be extremely precise); however, having a visibility of X/Y coordinates can guarantee placement that is where you intend, perhaps mathematically.

I'm an idiot and had all of these things in one image but apparently lost a layer for the grid when flattening, so have two images.

X/Y coordinates: https://i.imgur.com/KWPDxI8.jpg
Grid: https://i.imgur.com/0g5jRks.png

Repeaters

Repeaters are sections of notes that can be defined, then places into a song along the timeline. Repeater sections all reference the same underlying notes, meaning that any modifications to a Repeater will automatically transfer to the same sections throughout the timeline.

UI Mockup:

Repeaters can also be shortened relative to their true length, meaning only that subsection of the Repeater will be present at that time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.