Giter VIP home page Giter VIP logo

soundscape's Introduction

A video demo of the application is available at this link.

How To Use

The environments we daily deal with constantly provide us with sounds, melodies and noises generating different soundscapes, but have you ever wondered how a song you like would sound in those contexts? Here is the the goal of Soundscape, a Web application meant to make you feel the sounds that surround you in a different way, creating a special bond between music and nature.

  1. Select, upload or record a song
  2. Choose the soundscape you like
  3. Hear the result!
  • The available soundscapes are Srping Mountain, Sea Life and Natural Pond
  • The song must contain at least some vocals or a bass line or a drum pattern or all of them to properly work.

Implementation

The whole process is made of three main steps:

Source Separation

The input audio is analysed and divided into four stems (Vocals, Bass, Drums, Accompaniment) using Spleeter by Deezer, all extracted at 16kHz. Then for each stem the RMS energy is computed to check if the track is actually present.

Harmonic Components

Each available soundscape has two harmonic sounds which can be used to resynthesize the vocal and bass lines, if present, depending on their range. This is done by performing timbre transfer thanks to DDSP by Magenta.

Each harmonic model is trained on a dataset containing between 15 and 20 minutes of the target sound. Due to the difficulty in finding those environmental sounds with a high variability, quality and length, data augmentation was performed making sure to keep the timbre equal through the whole dataset. A preprocessing step of denoising and compressioin was also necessary.

Percussive Components

The percussive part is resynthesized trying to match each drum sound with the most similar noise form the chosen soundscape. This is done by using Omnizart by MCTLab. The percussive sound analyisis and classification regard four types of sounds: Hi-hat, Kick, Snare and Clap. For each soundscape a soundfont was created, containing a series of different sounds belonging to it with different envelopes in order to cover as many percussive sounds as possible, then a randomization of similar soundfont sounds is performed to obtain variety.

Local installation instructions:

# Create python virtual environment and activate it:
py -m venv soundscape-venv
.\soundscape-venv\Scripts\activate
# Install dependencies and download required data:
pip install -U pip
pip install cython
pip install numpy
pip install -r requirements.txt
omnizart download-checkpoints

Substitute soundscape-venv\Lib\site-packages\omnizart\drum\labels.py and soundscape-venv\Lib\site-packages\ddsp\colab\colab_utils.py with the provided labels.py and colab_utils.py files.

Notes

This application was developed as a project for the "Creative Programming and Computing" course at Politecnico di Milano (MSc in Music and Acoustic Engineering).

Luigi Attorresi
Federico Miotello
Giulio Zanetti

soundscape's People

Contributors

fmiotello avatar hamalz avatar luigiattorresi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 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.