Multitrack exporter for OP-Z

Overview

Underbridge for OP-Z

Multitrack exporter


Description

  • Exports patterns and projects individual audio tracks to seperate folders for use in your DAW.
  • Python cross plattform with single file binary for x86 linux Windows and Mac.

Using Packaged single file Binarys (The easy way)

  • Executables reside in the folder /dist/ or in the release tab.
  • on Windows underbridge.exe
  • On Linux: ./underbridge
  • on Mac Open terminal and change directory to where the underbridge_mac file is located and execute: chmod 755 underbridge_mac ./underbridge_mac or open underbridge_mac

Underbridge_alt was packaged on a different system. Might help if you run into problems. (Outdated)

Installation (Less easy way)

Windows

  • Install Python 3.9 if not already, 3.10 seems to cause problems.
  • install mido : pip install mido
  • install rt-midi: pip isntall rt-midi
  • install pipwin: pip install pipwin
  • install pyaudio pipwin install pyaudio

**- Activate OP-Z device input in sound settings of windows and make it default (Should detect automatically just to be sure. ** **- Close all other Applications that might use any audio source like your Browser etc **

  • run python underbridge.py

Mac Install - ( tested on Mac OS Monterey 12.3 )

install portaudio: brew install portaudio install mido: pip install mido install tk: brew install python-tk install rt-midi: pip install python-rtmidi install pyaudio: pip install pyaudio

Set OP-Z device as input in sound of system preferences

open terminal and type: python3 underbridge.py to start

Ubuntu 20.10 LTS

  • sudo apt install portaudio19-dev
  • sudo apt install python3-tk
  • pip install python-rtmidi
  • pip install pyaudio

python3 underbridge.py to start

Steps

  • connect OP-Z via USB
  • Run underbridge

Single Pattern Mode

  • Select Pattern you want to export
  • Enter name for the project. This is used for the folder structure
  • Get BPM from led code or Smartphone app.
  • Enter BPM and longest Bar of you track (1-4)
  • Optionally enter additional seconds at the end of the recording to capture reverb tails etc.
  • Select pattern mode
  • Select directory you want to record the waves to
  • Click record and wait until finished.

Project mode

  • Select Porject and first Pattern you want to export on OP-Z.
  • Enter name for the project. This is used for the folder structure
  • Get BPM from led code or Smartphone app.
  • Enter BPM
  • Enter longest Bar of you track (1-4)
  • Enter the Nr. of Patterns your song consists of.
  • Optionally enter additional seconds at the end of the recording to capture reverb tails etc.
  • Select project mode
  • Select directory you want to record the waves to
  • Click record and wait until finished.

Troubleshooting

  • When the recorded audio contains buzzing or other artifacts try disabling the USB charging with "display" and "bottom right key" to disable.
  • If the playback of the OP-Z starts correctly but no tracks are muted check that MIDI IN in the OP-Z app or via combo is enabled.
Comments
  • Mac version is not running on OSX 10.15.7

    Mac version is not running on OSX 10.15.7

    Hi Thomas, Mac version: the file behaves like a text file, and with the proporties I just can choose: Open this file with app. And how can I run it with: ./underbridge_mac? Thank you so much for your time....

    opened by studio67 13
  • Ideas and some bug

    Ideas and some bug

    Hi Thomas! As I told you on YT, this is awsome. You gave my OPz a new life. I have some ideas, maybe they are not possible, and probably you already thought about them, but anyway.

    1. It would be great if there was a boolean selector (checkbox) for each of the the 10 Programs so it would bounce the selected programs at once. And maybe add a numeric input under each checkbox to indicate the number of patterns in each one. More automated process of the bounce.
    2. I don't know if this is possible, but recording the channels 9 and 10 (FX channels) would be dope, for recording FX returns. And maybe the Tape channel and the Module channel too, now that module has line input with the new ZM4 module. As I said, not quite sure if this is doable. Now bugs My system specs are the following: Threadripper x1950, 64gb of ram, Windows 11 latest update 2022.3 I've encounter that the app stops working after the first pattern is recorded. Got you some screenshots. https://user-images.githubusercontent.com/31211802/161423010-392c9af1-c86d-46df-946d-97830980cf24.png https://user-images.githubusercontent.com/31211802/161423022-88c7e565-463f-47a4-bc6e-289d5b73a66a.png This error happens everytime that it finishes the pattern that is recording. Both in pattern mode and in Program mode. To mitigate I have to close the app and reestart it again. BTW I'm using your released windows binary (.exe) Thank you and cheers! Keep the good work going! AsierT
    opened by AsierT 12
  • [Question] What getBPM() function is for?

    [Question] What getBPM() function is for?

    I am looking around the code and try to clean it a bit. I came across getBPM function but I do not fulle get it. From what I see it blocks the midi port for later use - am I right with that (I don't have any experience with midio module):

    def getBPM():
        global op_device
        inport= mido.open_input(op_device)
        msg = inport.poll()
    

    If it is so - why the additional step? Why not do that after user clicks "Record"?

    opened by atalun 6
  • [FEATURE] Adding loop markes on exported wav files

    [FEATURE] Adding loop markes on exported wav files

    When exporting wav file, the tail could be easily identified by setting proper loop markers. It would make easy to import loops in DAW and use tail for mixing (when loop finishes).

    enhancement 
    opened by atalun 4
  • [FEATURE] Change midi mute to audio mute

    [FEATURE] Change midi mute to audio mute

    Shouldn't underbridge use CC 54 (audio mute) instead of CC 53 (midi mute). I don't see any negative consequences, but for the stems it would be beneficial to include all midi data (for instance transposition or punch-in effects). It would also make it possible to export individual stems for effect tracks and tape track.

    opened by atalun 3
  • Add Seconds Feature

    Add Seconds Feature

    Currently the add seconds feature, just keeps the loop going. But if the idea was to record the tails of the sounds, then the loop should be stopeed before recording the additional seconds.

    For examle if i have a bussy lead line with long reverb and delay tails, I would want to preserve the tails of theese effects without the additional notes in the beggining of the lead pattern. This is especially important at the end of the song.

    opened by EmilFekete 2
  • Licence

    Licence

    Is this project opensource? If yes, perhaps it should be stated, how it is licensed? I would gladly contribute, but there is no info regarding licensing.

    opened by atalun 2
  • [FEATURE] Configuring stems

    [FEATURE] Configuring stems

    That would be big one - if the option to select, which channels go into which stem. For instance one could select, wether want to record particular channel with effect, or want to have additional stem for effects. whether one want to combine drums to one stem or not

    enhancement 
    opened by atalun 2
  • missing requirements.txt file

    missing requirements.txt file

    It is a good practice to use requirements.txt for python dependencies, so one could simply make pip install -r requirements.txt

    to install all necessary libraries.

    enhancement 
    opened by ArekEmplocity 2
  • No USB class compliant sound on Windows10

    No USB class compliant sound on Windows10

    There is currently a problem that there is no input form the OP-Z available on windows. The only way this works, for example in Bitwig, is with asio4all.

    Trying the ASio4All version of PyAduio now. That would mean one has to install asio4all as an additional dependency.

    bug 
    opened by BKLronin 1
  • Number of bars 9

    Number of bars 9

    Hi!

    As stated in the op-z manual,setting the track length multiplier to 9 makes the track 16 times longer. (https://teenage.engineering/guides/op-z/track) Currently it just records the first 9 bars.

    opened by EmilFekete 1
  • OPZ sequence error

    OPZ sequence error

    Hello! This is an amazing little program that just doesn't seem to work for me. I am on mac. It works for some patterns, then others for some reason I get a "OPZ sequence error, please restart opz or press cancel" Is there a way to solve this? Like I said, its weird because it works sometimes.

    opened by jonathanwilson84 2
  • Change to modify display on OPZ to reflect current track being recorded

    Change to modify display on OPZ to reflect current track being recorded

    You can add this into the "setSolo" method to make the OPZ change its display so that it reflects the track that is currently being recorded.

    msg2 = mido.Message('control_change', control= 102, channel= 0, value= chn+1) self.outport.send(msg2)

    I also have gotten the code working so that it will export all 8 tracks, up to 8 measures, separately for each pattern up to 16 patterns. I can send the code if you would like. It sort of makes a mess of things, but works for my purposes.

    opened by blee430 0
Releases(1.1.3)
Owner
Thomas Herrmann
Loves making things.
Thomas Herrmann
A toy repo illustrating a minimal installable Python package

MyToy: a minimal Python package This repository contains a minimal, toy Python package with a few files as illustration for students of how to lay out

Fernando Perez 19 Apr 24, 2022
Cardano SundaeSwap ISO SPO vote ranking script

Cardano SundaeSwap ISO SPOs vote ranking This Python 3 script uses the database populated by cardano-db-sync from the Cardano blockchain to generate a

SM₳UG 1 Nov 17, 2021
Box CRUD API With Python

Box CRUD API: Consider a store which has an inventory of boxes which are all cuboid(which have length breadth and height). Each Cuboid has been added

Akhil Bhalerao 3 Feb 17, 2022
Análise do Aplicativo Prévias PSDB 2021

Análise do Aplicativo Prévias PSDB 2021 Com a recente polêmica sobre o aplicativo usado nas Prévias do PSDB de 2021, fiquei curioso para saber como er

Paulo Matias 18 Jul 31, 2022
Collection of functions for working with interlaced content in VapourSynth.

vsfieldkit Collection of functions for working with interlaced content in VapourSynth. It does not have any hard dependencies outside of VapourSynth.

Justin Turner Arthur 11 May 27, 2022
Developing and Comparing Vision-based Algorithms for Vision-based Agile Flight

DodgeDrone: Vision-based Agile Drone Flight (ICRA 2022 Competition) Would you like to push the boundaries of drone navigation? Then participate in the

Robotics and Perception Group 115 Dec 10, 2022
Package to provide translation methods for pyramid, and means to reload translations without stopping the application

Package to provide translation methods for pyramid, and means to reload translations without stopping the application

Grzegorz Śliwiński 4 Nov 20, 2022
Create standalone, installable R Shiny apps using Electron

Create standalone, installable R Shiny apps using Electron

Chase Clark 5 Dec 24, 2021
Group P-11's submission for the University of Waterloo's 2021 Engineering Competition (Programming section).

P-11-WEC2021 Group P-11's submission for the University of Waterloo's 2021 Engineering Competition (Programming section). Part I Compute typing time f

TRISTAN PARRY 1 May 14, 2022
It's like Forth but in Python

It's like Forth but written in Python. But I don't actually know for sure since I never programmed in Forth, I only heard that it's some sort of stack-based programming language. Porth is also stack-

Tsoding 619 Dec 21, 2022
This is a practice on Airflow, which is building virtual env, installing Airflow and constructing data pipeline (DAGs)

airflow-test This is a practice on Airflow, which is Builing virtualbox env and setting Airflow on that env Installing Airflow using python virtual en

Jaeyoung 1 Nov 01, 2021
Repo created for the purpose of adding any kind of programs and projects

Programs and Project Repository A repository for adding programs and projects of any kind starting from beginners level to expert ones Contributing to

Unicorn Dev Community 3 Nov 02, 2022
The Google Assistant on a rotary phone

Google Assistant Rotary Phone Shoutout to my dad who had this idea a year ago and I'm only now getting around to doing it. Notes This is the code used

rydercalmdown 10 Nov 04, 2022
Find all solutions to SUBSET-SUM, including negative, positive, and repeating numbers

subsetsum The subsetsum Python module can enumerate all combinations within a list of integers which sums to a specific value. It works for both negat

Trevor Phillips 9 May 27, 2022
Scitizen - Help scientific research for the benefit of mankind and humanity 🔬

Scitizen - Help scientific research for the benefit of mankind and humanity 🔬 Scitizen has been built from the ground up to give everyone the possibi

Pierre CORBEL 21 Mar 08, 2022
Lightweight and Modern kernel for VK Bots

This is the kernel for creating VK Bots written in Python 3.9

Yrvijo 4 Nov 21, 2021
flake8 plugin which forbids match statements (PEP 634)

flake8-match flake8 plugin which forbids match statements (PEP 634)

Anthony Sottile 25 Nov 01, 2022
Stack-overflow-import - Import arbitrary code from Stack Overflow as Python modules.

StackOverflow Importer Do you ever feel like all you’re doing is copy/pasting from Stack Overflow? Let’s take it one step further. from stackoverflow

Filip Haglund 3.7k Jan 08, 2023
This application demonstrates IoTVAS device discovery and security assessment API integration with the Rapid7 InsightVM.

Introduction This repository hosts a sample application that demonstrates integrating Firmalyzer's IoTVAS API with the Rapid7 InsightVM platform. This

Firmalyzer BV 4 Nov 09, 2022
A demo Piccolo app - a movie database!

PyMDb Welcome to the Python Movie Database! Built using Piccolo, Piccolo Admin, and FastAPI. Created for a presentation given at PyData Global 2021. R

11 Oct 16, 2022