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
Rock-paper-scissors basic game in terminal with Python

piedra-papel-tijera Juego básico de piedra, papel o tijera en terminal con Python. El juego incluye: Nombre de jugador Número de veces a jugar Resulta

Isaías Flores 1 Dec 14, 2021
A responsive package for Buttons, DropMenus and Combinations

A responsive package for Buttons, DropMenus and Combinations, This module makes the process a lot easier !

Skr Phoenix YT 0 Jan 30, 2022
This repository collects nice scripts ("plugins") for the SimpleBot bot for DeltaChat.

Having fun with DeltaChat This repository collects nice scripts ("plugins") for the SimpleBot bot for DeltaChat. DeltaChat is a nice e-mail based mess

Valentin Brandner 3 Dec 25, 2021
Height 2 LDraw With python

Height2Ldraw About This project aims to be able to make a full lego 3D model using the ldraw file format (.ldr) from a height and color map, currently

1 Dec 22, 2021
清晰易读的7x7像素点阵中文字体和取模工具

FontChinese7x7 上古神器 III : 7x7像素点阵中文字体 想要在低分辨率屏幕上显示中文, 却发现中文字体实在是太大? 找了全网发现字体库最小也只有12x12? 甚至是好不容易找到了一个8x8字体, 结果发现字体收费且明确说明不得以任何形式嵌入到软件当中? 那就让这个项目来解决你的问

Angelic47 72 Dec 12, 2022
Predicting Global Crop Yield for World Hunger

Crop Yield And Global Famine - The fifth project I created during my time at General Assembly. I completed this project with three other classmates in the span of three weeks. Most of my work was dir

Adam Muhammad Klesc 2 Jun 19, 2022
0xFalcon - 0xFalcon Tool For Python

0xFalcone Installation Install 0xFalcone Tool: apt install git git clone https:/

Alharb7 6 Sep 24, 2022
RELATE is an Environment for Learning And TEaching

RELATE Relate is an Environment for Learning And TEaching RELATE is a web-based courseware package. It is set apart by the following features: Focus o

Andreas Klöckner 311 Dec 25, 2022
An Agora Python Flask token generation server

A Flask Starter Application with Login and Registration About A token generation Server using the factory pattern and Blueprints. A forked stripped do

Nii Ayi 1 Jan 21, 2022
This python code will get requests from SET (The Stock Exchange of Thailand) a previously-close stock price and return it in Thai Baht currency using beautiful soup 4 HTML scrapper.

This python code will get requests from SET (The Stock Exchange of Thailand) a previously-close stock price and return it in Thai Baht currency using beautiful soup 4 HTML scrapper.

Andre 1 Oct 24, 2022
It is a Blender Tool which can convert the Object Data Attributes in face corner to the UVs or Vertex Color.

Blender_ObjectDataAttributesConvertTool It is a Blender Tool which can convert the Object Data Attributes in face corner to the UVs or Vertex Color. D

Takeshi Chō 2 Jan 08, 2022
RecurrentArchitectures - See the accompanying blog post

Why this? What is the goal? The goal of this repository is to write all the recurrent architectures from scratch in tensorflow for learning purposes.

Debajyoti Datta 9 Feb 06, 2022
Simple control of Thorlabs Elliptec devices from Python.

Elliptec Simple control of Thorlabs Elliptec devices. No docs yet » Get started · Report a bug · Request a feature About The Project ThorLabs Elliptec

David Roesel 8 Sep 22, 2022
WinBoost: Boost your windows system.

Winboost runs a complete checkup of your entire system locating junk files, speed-reducing issues and causes of any system or application glitches or crashes. Through a lot of research and testing, w

Smit Parmar 4 Oct 01, 2021
Handwrite - Type in your Handwriting!

Handwrite - Type in your Handwriting! Ever had those long-winded assignments, that the teacher always wants handwritten?

coded 7 Dec 06, 2022
Percolation simulation using python

PythonPercolation Percolation simulation using python Exemple de percolation : Etude statistique sur le pourcentage de remplissage jusqu'à percolation

Tony Chouteau 1 Sep 08, 2022
A guy with a lot of useful things to do when doing AtCoder in Python

atcoder_python_env Python で AtCoder をやるときに便利な諸々を用意したやつ コンテスト用フォルダの作成 セットアップ 自動テス

2 Dec 28, 2021
a wordle-solver written in python

Wordle Solver Overview This is yet another wordle solver. It is built with the word list of the official wordle website, but it should also work with

Shoubhit Dash 10 Sep 24, 2022
Trashselected - Plugin for fman.io to move files that has been selected in fman to trash

TrashSelected Plugin for fman.io to move files that has been selected in fman to

1 Feb 04, 2022
Project in which we modelise an Among Us problem using graph theories.

Python-AmongUsProblem Project in which we modelise an Among Us problem using graph theories. The rules are as following: Total of 100 players 10 playe

Gabriel Shenouda 1 Feb 09, 2022