Giter Site home page Giter Site logo

sf-creator's Introduction

Soundfont creation

This library aims to create a soundfont based on a directory containing sound files (.wav).

Current support:

Planned support:

  • Soundfont 2 sf2 (This will be more tricky, as it is a binary format, as Polyphone is able to convert sfz to sf2, I will postpone this)

Project setup

Creating a project specific virtual environment (recommended)

You can omit this step if you are ok with installing the dependencies system wide and go directly to the next step: Installing dependencies.

virtualenv venv
source venv/bin/activate

or, under Windows:

virtualenv venv
venv\Scripts\activate

Installing dependencies

pip install -r requirements.txt

Run

This will create a file soundfont.sfz alongside the wav files in the given directory.

python main.py sfz <directory-to-wave-files>

Run python main.py --help or python main.py <command> --help, where <command> can be sfz or decentsampler for now, to get the full list of arguments.

Automatic note detection and mapping of samples

The given samples are scanned for note names (A0 to C8). If a note name is found in a filename of a sample, the midi note for this sample will be set automatically.

In addition to that, in case of missing samples in between for certain notes an automatic distribution is calculated, so that all notes between A0 and C8 are covered.

If there are two samples for the same note available, a round robin/random change is assumed.

TODO and resources

  • Make automatic distribution over all midi notes from 21 to 108 optional, and add an option to configure the highest and the lowest, ideally relative to the hightest and lowest pitch of the samples
  • Detect pitch automatically (for melodic instruments at least), using https://pypi.org/project/crepe/

More SFZ Support

The best starting point for SFZ is https://sfzformat.com/.

DecentSampler support

An XML based format developed by David Hilowitz (see https://youtu.be/UxPRmD_RNCY).

  • Create an XML Schema for highlighting and autocompletion
  • Implement DecentSamplerWriter
  • Add options for UI (cover)
  • ...and effects

SF2 Support

This will get tricky, as this is a binary format with not too much examples. There are a few applications reading or even writing sf2 out there, at least at a very basic level. But as Polyphone is able to convert sfz to sf2, I will postpone this.

sf-creator's People

Contributors

paulwellnerbou avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

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.