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
Meilleur outil de hacking Zapp en 2021 pour Termux

WhatsApp-Tool Meilleur outil de hacking Zapp en 2021 pour Termux Cet outil est le seul prennant en compte les dernières mises à jour de WhatsApp. FONC

2 Aug 17, 2022
log4shell pwner for vulnerable minecraft servers

Log4-hell name supposed to be Log4$hell but oh well log4shell pwner for vulnerable minecraft servers install all reqs python + a minecraft client for

1 Jan 05, 2022
About Python's multithreading and GIL

About Python's multithreading and GIL

Souvik Ghosh 3 Mar 01, 2022
This is the improvised version of Dobot Magician which can be implemented for Dobot M1

pydobotM1 This is the edited driver for Dobot M1 version of the original pydobot library intended for use with the Dobot Magician. Here's what you nee

Shaik Abdullah 2 Jul 11, 2022
Ronin - Create Fud Meterpreter Payload To Hack Windows 11

Ronin - Create Fud Meterpreter Payload To Hack Windows 11

Dj4w3d H4mm4di 6 May 09, 2022
a url shortener with fastapi and tortoise-orm

fastapi-tortoise-orm-url-shortener a url shortener with fastapi and tortoise-orm

19 Aug 12, 2022
MinimalGearDisplay, Assetto Corsa app

MinimalGearDisplay MinimalGearDisplay, Assetto Corsa app. Just displays the current gear you are on. Download and Install To use this app, clone or do

1 Jan 10, 2022
Scientific color maps and standardization tools

Scicomap is a package that provides scientific color maps and tools to standardize your favourite color maps if you don't like the built-in ones. Scicomap currently provides sequential, bi-sequential

Thomas Bury 14 Nov 30, 2022
Run python scripts and pass data between multiple python and node processes using this npm module

Run python scripts and pass data between multiple python and node processes using this npm module. process-communication has a event based architecture for interacting with python data and errors ins

Tyler Laceby 2 Aug 06, 2021
An upgraded version of extractJS

extractJS_2.0 An enhanced version of extractJS with even more functionality Features Discover JavaScript files directly from the webpage Customizable

Ali 4 Dec 21, 2022
Force you (or your user) annotate Python function type hints.

Must-typing Force you (or your user) annotate function type hints. Notice: It's more like a joke, use it carefully. If you call must_typing in your mo

Konge 13 Feb 19, 2022
SimplePyBLE - Python bindings for SimpleBLE

The ultimate fully-fledged cross-platform Python BLE library, designed for simplicity and ease of use.

Open Bluetooth Toolbox 27 Aug 28, 2022
Opendrop - An open Apple AirDrop implementation written in Python

OpenDrop: an Open Source AirDrop Implementation OpenDrop is a command-line tool that allows sharing files between devices directly over Wi-Fi. Its uni

Secure Mobile Networking Lab 7.5k Jan 03, 2023
Basic code and description for GoBigger challenge 2021.

GoBigger Challenge 2021 en / 中文 Challenge Description 2021.11.13 We are holding a competition —— Go-Bigger: Multi-Agent Decision Intelligence Challeng

OpenDILab 183 Dec 29, 2022
Python Excuse Generator

Excuse Generator Python Excuse Generator This project is an excuse generator that provides the user with an excuse as to why they weren't paying atten

Collin Sanders 5 Jul 07, 2022
An experimental Python-to-C transpiler and domain specific language for embedded high-performance computing

An experimental Python-to-C transpiler and domain specific language for embedded high-performance computing

Andrea Zanelli 562 Dec 28, 2022
An universal linux port of deezer, supporting both Flatpak and AppImage

Deezer for linux This repo is an UNOFFICIAL linux port of the official windows-only Deezer app. Being based on the windows app, it allows downloading

Aurélien Hamy 154 Jan 06, 2023
Would upload anything I do with/related to brainfuck

My Brainfu*k Repo Basically wanted to create something with Brainfu*k but realized that with the smol brain I have, I need to see the cell values real

Rafeed 1 Mar 22, 2022
Powering up Apache JMeter with Streamlit and opening the door for machine learning.

Powering up Apache JMeter with Streamlit Overview Apache JMeter is an open source load testing tool written in 100% pure Java. JMeter supports umpteen

NaveenKumar Namachivayam ⚡ 16 Aug 24, 2022
Probably the best way to simulate block scopes in Python

This is a package, as it says on the tin, to emulate block scoping in Python, the lack of which being a clever design choice yet sometimes a trouble.

88 Oct 26, 2022