Coder Social home page Coder Social logo

ilesinge / shabda Goto Github PK

View Code? Open in Web Editor NEW
15.0 3.0 0.0 418 KB

Shabda is a semantic audio samples curator for livecoding software such as Estuary or Tidal Cycles

Home Page: https://shabda.ndre.gr/

License: MIT License

Python 60.62% Dockerfile 2.24% HTML 0.99% CSS 4.42% JavaScript 31.73%
tidalcycles python freesound livecoding flask audio audio-samples

shabda's Introduction

Shabda

Shabda logo

Shabda is a tool to fetch random samples from https://freesound.org/ based on given words or to generate Text-to-Speech samples for use in impro sessions on instruments such as Tidal Cycles, Estuary or Strudel.

Shabda is the Sanskrit word for "speech sound". In Sanskrit grammar, the term refers to an utterance in the sense of linguistic performance.

Install

Use (command line)

In order to download a sample pack, execute in the terminal shabda <definition> --licenses <license_name>.

Any word can be a pack definition. If you want more than one sample, separate words by a comma: blue,red

You can define how many variations of a sample to assemble by adding a colon and a number. e.g. blue,red:3,yellow:2 will produce one 'blue' sample, three 'red' samples and two 'yellow' sample.

The optional --licenses parameter allows to fetch only samples that have the specified license. Multiple licenses can be allowed by repeating the --licenses argument. Possible licenses are cc0 (Creative Commons Zero), by (Creative Commons Attribution), and by-nc (Creative Commons Attribution Non-Commercial).

Full example:

shabda spaghetti:2,monster:4 --licenses cc0 --licenses by

The first time you execute this command, it will ask you for a Freesound token, that you will be redirected to. You will need a Freesound account.

By default, samples will be downloaded in a samples directory under the current working directory. You can override this by adding a config.ini file to the $HOME/.shabda/ directory, containing:

[shabda]

samples_path=/path/to/your/desired/samples/directory/

Use (web application)

Launch the web application:

In debug mode:

FLASK_APP=shabda FLASK_DEBUG=1 flask run

In production:

gunicorn --workers=4 "shabda:create_app()" -b localhost:8000

Test

poetry run pytest

Notes

With Estuary, Shabda makes use of this feature: https://github.com/dktr0/estuary/wiki#adding-sound-files-to-estuarywebdirt-on-the-fly

All command line examples must be preceded by poetry run if in hacking/development mode.

Roadmap

See: https://github.com/users/ilesinge/projects/4

shabda's People

Contributors

dependabot[bot] avatar ilesinge avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

shabda's Issues

Append search term to file name

Would it be possible to append the search term onto each of the downloaded samples (or have an option to do so).

For example, running python3 shabda_cli.py cats --num 10 1517 python3 shabda_cli.py cats --num 10 would create the folder cats and each file in the folder would be 1_cats.wav, 2_cats.wav, 3_cats.wav etc.

The use case for this is that I am currently using Shabda to put random samples on an MPC Live. It stores all of the used samples in the same directory, so if two files have the same name they get overwritten.

pipenv install fails

Trying to compile 29faf7a and install dependencies with pipenv install and it gives me the following error, even on a clean installation:

/home/hellocatfood/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 1.16.0-unknown is an invalid version and will not be supported in a future release
  warnings.warn(
/home/hellocatfood/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 2.22.1ubuntu1 is an invalid version and will not be supported in a future release
  warnings.warn(
/home/hellocatfood/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 0.1.43ubuntu1 is an invalid version and will not be supported in a future release
  warnings.warn(
/home/hellocatfood/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release
  warnings.warn(
Creating a virtualenv for this project...
Pipfile: /home/hellocatfood/Desktop/shabda/Pipfile
Using /usr/bin/python3 (3.10.6) to create virtualenv...
⠼ Creating virtual environment...created virtual environment CPython3.10.6.final.0-64 in 130ms
  creator CPython3Posix(dest=/home/hellocatfood/.local/share/virtualenvs/shabda-aQTE5Ffy, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/hellocatfood/.local/share/virtualenv)
    added seed packages: pip==22.2.2, setuptools==65.3.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

✔ Successfully created virtual environment! 
Traceback (most recent call last):
  File "/home/hellocatfood/.local/bin/pipenv", line 8, in <module>
    sys.exit(cli())
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/cli/options.py", line 56, in main
    return super().main(*args, **kwargs, windows_expand_args=False)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/vendor/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/cli/command.py", line 234, in install
    do_install(
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/core.py", line 1973, in do_install
    ensure_project(
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/core.py", line 553, in ensure_project
    ensure_virtualenv(
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/core.py", line 486, in ensure_virtualenv
    do_create_virtualenv(
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/core.py", line 1019, in do_create_virtualenv
    project._environment = Environment(
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/environment.py", line 72, in __init__
    self._base_paths = self.get_paths()
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/environment.py", line 394, in get_paths
    c = subprocess_run(command)
  File "/home/hellocatfood/.local/lib/python3.10/site-packages/pipenv/utils/processes.py", line 75, in subprocess_run
    return subprocess.run(
  File "/usr/lib/python3.10/subprocess.py", line 501, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib/python3.10/subprocess.py", line 969, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.10/subprocess.py", line 1845, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/home/hellocatfood/.local/share/virtualenvs/shabda-aQTE5Ffy/bin/python'

Using Ubuntu 22.04

Sort by license

Can an option be added to filter the downloaded/collected samples by license type? This will be especially useful for users of the cli version who want to then use the samples in a commercial project and not be restricted by license.

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.