Code Monkey home page Code Monkey logo

pti-tools's Introduction

Stich & Slice

Create beat sliced instruments for the Polyend Tracker in the browser. Load audio files and export a perfectly sliced .pti file.

Features

  • Load audio files and concatenate
  • Layer multiple samples per slice
  • Trim silence from the beginning and end of samples (per slice/layer)
  • Control volume per slice/layer
  • Export .pti files with slice markers
  • Export .wav files with cue points (usable on other devices/software, e.g. the Dirtywave M8 or the 1010music Blackbox)

Screenshot

Try it now: jaap3.github.io/pti-tools.

Written in Vue 3 and TypeScript.

Development

Use Docker Compose to run the development environment.

docker-compose build
docker-compose up

This will build the project and run the development server.

Once the server is up and running you can view the project in the browser at http://localhost:5173/.

Contributing

Contributions are welcome!

  • Fork the repository and make a pull request.
  • Create an issue to report a bug or suggest a feature.

Reporting bugs

Make sure to include the following information when reporting bugs:

  • Steps to reproduce the bug
  • Expected behavior
  • Actual behavior
  • The version and name of the browser/operating system in use
  • Screenshots/screencapture if applicable/possible

Suggesting features

Make sure to include the following information when suggesting features:

  • Description of the feature
  • Expected behavior
  • UI design/mockup (if applicable)

Making a pull request

Make sure the pull request relates to an issue (bug report or feature request), i.e. do not fix a bug or implement a feature without first creating an issue to describe it.

Pull requests representing a minor change (e.g. fixing a typo or adding a comment) are excempt from this rule.

All pull requests should pass linting and unit tests. There is no guarantee that a pull request will be accepted.

Disclaimer

This tool is not associated with Polyend. Use at your own risk.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

pti-tools's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

pti-tools's Issues

.wav export, with cue markers

Add the option to download .wav files with embedded cue markers.

This would make this tool useable for people using the Dirtywave M8 and possible Renoise as well.

A dropdown to select the file format could be added next to the download button (defaulting to .pti).

The wavefile library is able to create .wav files with embedded cue markers. The API looks pretty straightforward as well.

Prevent loading overly long samples

The Tracker has a limit on sample length, avoid loading samples that go over this limit. (TODO: figure out this limit).

There should be a notification to the user when this happens.

Lint/format CSS

Use style lint to lint CSS, investigate best settings/plugins etc.

Adjust offset of layers

Allow the start of a layers to be shifted forwards.

This could be used to delay the start of additional sound.

I'd imagine some sort of input that would allow me to enter an offset in milliseconds. It could als be useful if the waveform display of the slice somehow reflected the offset of layers. Maybe by adding a marker? Definitely only when the layer editor is active

Avoid exporting overly long instruments

It is likely that loading up to 48 samples will exceed the maximum sample length of the Tracker. Notify the user when that happens and disable the download button.

See also #1 and #4

Adjust tuning of slices and layers

Please make it possible to create variations of sounds by adding (fine)tune controls. These would allow to adjust the playback rate of the sample in semitones and cents.

I'm imagining two range inputs, similar to the pti-file-inspector.

Read cue markers from .wav file

It would be nice if slices were created automatically when loading a single .wav file with cue points. That way it would be possible to export a sliced file and edit it again later.

Trim samples

Because of memory limitations any silence at the start/end of a slice is a waste of space. If possible, add an option to trim the start/end (or both) of a slice.

REX to PTI?

Possible to add REX file converting? Upload .rex or .rx2 file and the app spits out sliced .pti file.

Reuse loaded / created slices

It would be cool if it was possible to pick a sample from the currently loaded samples. This would help with layering sounds, e.g. when creating a kick + hihat it would be easy to pick from the list of sounds loaded. It would be even cooler if layered samples where also available, so reusing the layers kick + hihat to add a snare

Add a way to stop playing a sample

Once a sample is playing the only way to stop it is to start playing another sample. Turn the play button into a stop button while the sample is playing.

Add a way to control slice volume

Samples may vary widely in volume, this makes it hard to create instruments where all slices are usable. Add a way to control the volume per slice. This is especially useful when layering samples, to avoid clipping etc.

I'd expect some way to input the amount of gain (positive/negative) directly and/or a slider.

Load directories

Besides dropping files it would be nice to be able to drop an entire directory.

Currently dropping a directory does nothing. I'd like to drop a directory and load all the files inside it in one go.

Sort imports

Turn on eslint import sorting, investigate best practices. See if something similar to what isort does for python is possible.

Adjust start endpoint of samples

Please make it possible to adjust the start and end position of a layer. In effect this would make it possible to cut a part of the start and/or end of a sound.

I imagine this would be controlled by a set of inputs that allow me to set the start/endpoint in milliseconds. It would be nice if the playback region was also represented in the waveform display.

Note that this is seperate from #60, which is about shifting the moment in time the sample would start playing.

Adjust the trim silence sensitivity

It might be useful to be able to adjust the sensitivity of the trim feature. Right now it's fairly conservative, leaving the tail of noisy samples intact. I think a range input would be a good interface to set this value.

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.