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
The Official Jaseci Code Repository

Jaseci Release Notes Version 1.2.2 Updates Added new built-ins for nodes and edges (context, info, and details) Fixed dot output Added reset command t

136 Dec 20, 2022
Mannaggia is a python application to praise or more likely to curse the saints

Mannaggia-py 👼 Remember Mannaggia? This is a Python remake of it, with new features. mannaggia is a python application to praise or more likely to cu

Christian Visintin 9 Aug 12, 2022
A dog facts python module

A dog facts python module

Fayas Noushad 3 Nov 28, 2021
Checking-For-Fibonacci-Syquence-In-Python - Checking For Fibonacci Syquence In Python

Checking-For-Fibonacci-Syquence-In-Python The Fibonacci sequence is a set of num

John Michael Oliba 1 Feb 14, 2022
Материалы для курса VK Углубленный Python, весна 2022

VK Углубленный Python, весна 2022 Материалы для курса VK Углубленный Python, весна 2022 Лекции и материалы (слайды, домашки, код с занятий) Введение,

10 Nov 02, 2022
Ultimate Score Server for RealistikOsu

USSR Ultimate Score Server for RealistikOsu (well not just us but it makes the acronym work.) Also I wonder how long this name will last. What is this

RealistikOsu! 15 Dec 14, 2022
YunoHost is an operating system aiming to simplify as much as possible the administration of a server.

YunoHost is an operating system aiming to simplify as much as possible the administration of a server. This repository corresponds to the core code, written mostly in Python and Bash.

YunoHost 1.5k Jan 09, 2023
Plugin to manage site, circuit and device diagrams and documents in Netbox

Netbox Documents Plugin A plugin designed to faciliate the storage of site, circuit and device specific documents within NetBox Note: Netbox v3.2+ is

Jason Yates 38 Dec 24, 2022
A lightweight and unlocked launcher for Lunar Client made in Python.

LCLPy LCL's Python Port of Lunar Client Lite. Releases: https://github.com/Aetopia/LCLPy/releases Build Install PyInstaller. pip install PyInstaller

21 Aug 03, 2022
Program Input Data Mahasiswa Oop

PROGRAM INPUT NILAI MAHASISWA MENGGUNAKAN OOP PENGERTIAN OOP object-oriented-programing/OOP adalah paradigma pemrograman berdasarkan konsep "objek", y

Maulana Reza Badrudin 1 Jan 05, 2022
Just some information about this nerd.

Greetings, mates, I am ErrorDIM - aka ErrorDimension 👋 🧬 Programming Languages I Can Use: 🥇 Top Starred Repositories: # Name Stars Size Major Langu

ErrorDIM 3 Jan 11, 2022
Scripts for hosting urbit in production-ish

Urbit Sysops Contains some helpful scripts for hosting Urbit. There are two variants included in this repo: one using docker, and one using plain syst

Jōshin 12 Sep 25, 2022
A python package to manage the stored receiver-side Strain Green's Tensor (SGT) database of 3D background models and able to generate Green's function and synthetic waveform

A python package to manage the stored receiver-side Strain Green's Tensor (SGT) database of 3D background models and able to generate Green's function and synthetic waveform

Liang Ding 7 Dec 14, 2022
Clackety Keyboards Powered by Python

KMK: Clackety Keyboards Powered by Python KMK is a feature-rich and beginner-friendly firmware for computer keyboards written and configured in Circui

KMK Firmware 780 Jan 03, 2023
Markov Chain Composer

Markov Chain Composer Using Markov Chain to represent relationships between words in song lyrics and then generating new lyrics.. ahem interpretive po

Kylie 85 Dec 09, 2022
This is sample project needed for security course to connect web service to database

secufaku This is sample project needed for security course to "connect web service to database". Why it suits alignment purpose It connects to postgre

Mark Nicholson 6 May 15, 2022
Buggy script to play with GPOs

GPOwned /!\ This is a buggy PoC I made just to play with GPOs in my lab. Don't use it in production! /!\ The script uses impacket and ldap3 to update

45 Dec 15, 2022
30DaysOfCode-PhoenixClub - Solution of everyday coding problem given in 30DaysofCode contest held on Hackerrank

30DaysOfCode-PhoenixClub 👨‍💻 Every day problems solution given in 30DaysOfCode

Urveshkumar 8 Jan 30, 2022
A python script that automatically joins a zoom meeting based on your timetable.

Zoom Automation A python script that automatically joins a zoom meeting based on your timetable. What does it do? It performs the following processes:

Shourya Gupta 3 Jan 01, 2022
A Linux program to create a Windows USB stick installer from a real Windows DVD or image.

WoeUSB-ng A Linux program to create a Windows USB stick installer from a real Windows DVD or image. This package contains two programs: woeusb: A comm

Longinus 1 Nov 19, 2021