Skip to main content

Live music coding inspired by Sonic Pi

Project description

POCKETROCKIT - A rocket in your pocket that rocks!

Original project page: https://projects.om-office.de/frans/pocketrockit.git

Write a music track in Python and play it while you write it (as you might know it from Sonic Pi, but written in Python (sonic.py was not available on PyPi, though)).

Write melodies, create rythm patterns, define endless simultaneously playing instruments, all in a .. well .. simple Python syntax.

Installation

[<PYTHON> -m] pip[3] install [--upgrade] pocketrockit

Usage

Workflow is not quite mature yet, so here is the short version for now.

Create and enter a separate folder and provide required SoundFont files (configurable later, hard-coded for now).

Pocketrockt expects two SoundFont files: instrumental.sf2 and drums.sf2. You can download and move/rename any file that works for you, and you can also just create symlinks (this is what I do).

This is just an example:

mkdir mytracks
cd mytracks
ln -s /usr/share/soundfonts/FluidR3_GM.sf2 instrumental.sf2
wget https://musical-artifacts.com/artifacts/2744/JV_1080_Drums.sf2
ln -s JV_1080_Drums.sf2 drums.sf2

The file FluidR3_GM.sf2 was shipped with FluidSynth for me, and I got JV_1080_Drums.sf2 from here.

Create a file myfirsttrack.py with the following content:

#!/usr/bin/env python3

from pocketrockit import Env, midiseq, player, track

@track
def my_first_track(env: Env):

    @player
    def metronome():
        yield from midiseq("x x x x", channel=128, note=37)

    @player
    def melody1():
        yield from midiseq(
            "| .                .                 .                (II I)      "
            "| (II  VI<)        (IV< VI< . II<)   .                (II I)      "
            "| (II  VI<)        (IV< VI< . II<)   .                (II III)    "
            "| (IV  . III IV)   (. IV . II)       (III . II III)   (. III . I) "
            ,
            key="A5", channel=13)

Now - keeping the editor open for later use - execute this file. You can either make it executable and run it directly or you run python3 instead:

chmod +x myfirsttrack.py
./myfirsttrack.py

# or

python3 myfirsttrack.py

Development & Contribution

pip3 install -U poetry pre-commit
git clone --recurse-submodules https://projects.om-office.de/frans/pocketrockit.git
cd pocketrockit
pre-commit install
# if you need a specific version of Python inside your dev environment
poetry env use ~/.pyenv/versions/3.10.4/bin/python3
poetry install

After modifications, this way a newly built wheel can be checked and installed:

poetry build
poetry run twine check dist/pocketrockit-0.0.25-py3-none-any.whl
python3 -m pip install --user --upgrade dist/pocketrockit-0.0.25-py3-none-any.whl

Stuff to read / Sources

SoundFonts

flatpak install flathub com.polyphone_soundfonts.polyphone flatpak run com.polyphone_soundfonts.polyphone instrumental.sf2

Music stuff

Drum patterns

Tech stuff

Notation

Similar projects

Troubles

ALSA lib conf.c:4555:(snd_config_update_r) Cannot access file /usr/local/share/alsa/alsa.conf
ALSA lib seq.c:935:(snd_seq_open_noupdate) Unknown SEQ default
sudo mkdir /usr/local/share/alsa
sudo ln -s /usr/share/alsa/alsa.conf /usr/local/share/alsa/alsa.conf

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pocketrockit-0.0.31.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pocketrockit-0.0.31-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file pocketrockit-0.0.31.tar.gz.

File metadata

  • Download URL: pocketrockit-0.0.31.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.4 Linux/6.4.13-200.fc38.x86_64

File hashes

Hashes for pocketrockit-0.0.31.tar.gz
Algorithm Hash digest
SHA256 358a39390258e8a0815b70cbdd84fdabfc01f4d41413d941ed8ed7b827d5c606
MD5 68ee8bab0c690d247b7462ff360a1c25
BLAKE2b-256 9fd47cfd1e8f3c4f1562e6babe27ec848ad1df28328ff58de7a4cc1a32c44df5

See more details on using hashes here.

File details

Details for the file pocketrockit-0.0.31-py3-none-any.whl.

File metadata

  • Download URL: pocketrockit-0.0.31-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.4 Linux/6.4.13-200.fc38.x86_64

File hashes

Hashes for pocketrockit-0.0.31-py3-none-any.whl
Algorithm Hash digest
SHA256 5189b936414ffc9e07e8c67c9490db98f413f21dc2b4b91eecc0432a5028e65f
MD5 d89e836a3123dfa3f1a1b1b6b671ac89
BLAKE2b-256 7f346b801cf56f6faf685bfa4c3f83913785af4a1dac9d3f42eedb1498f80ef4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page