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
MobaXterm-GenKey

MobaXterm-GenKey 你懂的!! 本地启动 需要安装Python3!!!

malaohu 328 Dec 29, 2022
Arknights gacha simulation written in Python

Welcome to arknights-gacha repository This is my shameless attempt of simulating Arknights gacha. Current supported banner types (with potential bugs)

Swyrin 3 May 07, 2022
Runs macOS on linux with qemu.

mac-on-linux-with-qemu Runs macOS on linux with qemu. Pre-requisites qemu-system-x86_64 dmg2img pulseaudio python[click] Usage After cloning the repos

Arindam Das 177 Dec 26, 2022
It really seems like Trump is trying to get his own social media started. Not a huge fan tbh.

FuckTruthSocial It really seems like Trump is trying to get his own social media started. Not a huge fan tbh. (When TruthSocial actually releases, I'l

0 Jul 18, 2022
Traits for Python3

Do you like Python, but think that multiple inheritance is a bit too flexible? Are you looking for a more constrained way to define interfaces and re-use code?

121 Nov 15, 2022
Demo of connecting Rasa with Zalo

Demo of connecting Rasa with Zalo

6 Jul 25, 2022
mrcal is a generic toolkit to solve calibration and SFM-like problems originating at NASA/JPL

mrcal is a generic toolkit to solve calibration and SFM-like problems originating at NASA/JPL. Functionality related to these problems is exposed as a set of C and Python libraries and some commandli

Dima Kogan 102 Dec 23, 2022
A python package template that can be adapted for RAP projects

Warning - this repository is a snapshot of a repository internal to NHS Digital. This means that links to videos and some URLs may not work. Repositor

NHS Digital 3 Nov 08, 2022
Track testrail productivity in automated reporting to multiple teams

django_web_app_for_testrail testrail is a test case management tool which helps any organization to track all consumption and testing of manual and au

Vignesh 2 Nov 21, 2021
Chemical equation balancer

Chemical equation balancer Balance your chemical equations with ease! Installation $ git clone

Marijan Smetko 4 Nov 26, 2022
Short, introductory guide for the Python programming language

100 Page Python Intro This book is a short, introductory guide for the Python programming language.

Sundeep Agarwal 185 Dec 26, 2022
A smart personal companion and health assistant.

Steps to Install : Clone the repository Go to ResQ-Sources Execute ResQ-Lite.py --: Manual Controls : DanceRobot.py --: You can call functions like fo

Tuhinadri Banerjee 1 May 25, 2022
This repo created to complete the task HACKTOBER 2021, contribute now and get your special T-Shirt & Sticker. TO SUPPORT OWNER PLEASE PRESS STAR BUTTON

❤ THIS REPO WILL CLOSED IN 31 OCT 00:00 ❤ This repository will automatically assign the hacktoberfest and hacktoberfest-accepted labels to all submitt

Rajendra Rakha 307 Dec 27, 2022
py2dis - A disassembly engine & library for Python

py2dis - A disassembly engine & library for Python. py2dis is a disassembly library for Python that does not use any modules/libraries other than colo

3 Feb 04, 2022
This is a fork of the BakeTool with some improvements that I did to have better workflow.

blender-bake-tool This is a fork of the BakeTool with some improvements that I did to have better workflow. 99.99% of work was done by BakeTool team.

Acvarium 3 Oct 04, 2022
Using Python to parse through email logs received through several backup systems.

outlook-automated-backup-control Backup monitoring on a mailbox: In this mailbox there will be backup logs. The identification will based on the follo

Connor 2 Sep 28, 2022
万能通用对象池,可以池化任意自定义类型的对象。

pip install universal_object_pool 此包能够将一切任意类型的python对象池化,是万能池,适用范围远大于单一用途的mysql连接池 http连接池等。 框架使用对象池包,自带实现了4个对象池。可以直接开箱用这四个对象池,也可以作为例子学习对象池用法。

12 Dec 15, 2022
Lectures for Udemy - Complete Python Bootcamp Course

Complete-Python-Bootcamp Welcome to the Repository for the Complete Python Bootcamp! This is the Repository for the Udemy course - "Complete Python Bo

Marci 2k Dec 28, 2022
Modify the value and status of the records KoboToolbox

Modify the value and status of the records KoboToolbox (Modica el valor y status de los registros de KoboToolbox)

1 Oct 30, 2021
Generate Azure Blob Storage account authentication headers for Munki

Azure Blob Storage Authentication for Munki The Azure Blob Storage Middleware allows munki clients to connect securely, and directly to a munki repo h

Oliver Kieselbach 10 Apr 12, 2022