Giter Site home page Giter Site logo

pmaillot / x32-behringer Goto Github PK

View Code? Open in Web Editor NEW
218.0 218.0 37.0 1.46 MB

This GIT repo (C language) holds applications and utilities for the Behringer X32 and M32 mixing consoles. Additional details, documentation, implementation examples and apps can be found in my website:

Home Page: https://sites.google.com/site/patrickmaillot/x32

C 99.85% Makefile 0.15%
audio behringer daw fades midas midi mix osc osc-commands reaper scene tap-tempo wave-files windows-gui x-live x32

x32-behringer's People

Contributors

astellingwerf avatar brona-ruzicka avatar dx9s avatar kmitch95120 avatar pmaillot avatar rippert avatar ross-m-dickson avatar stevekmcc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

x32-behringer's Issues

GUESTION: Automated fade for channels

Hello there!

I have been looking at your X32 OSC protocol and thank you very much for sharing it; it is awesome! 😄

I was wondering if what would be the easiest way to create an automated fade with a single OSC message. I'm using osculator so it can be routed as sending multiple different messages when receiving one message. I was thinking if there would be any easier than the manual entering all the values and delays. Would some of the apps you have build or anything else work for that?

Great would also be to get a situation for a fade from the current dB value to a specified dB value.

Best regards,
Jeremias Manninen, from Finland

X32 Emulator unable to read Mixing Station scene: /mtx/02/dyn/thr wrong type

TLDR:
X32Mtx.h has line 99: {"/mtx/02/dyn/thr", {E32}, F_XET, {0}, OffOn}, and similarly for other matrixes.
Yet other /dyn/thr in X32Channel.h and X32Bus.h have type {F32}, F_XET, {0}, NULL}, and indeed your OSC PDF says it is a float.
{"/mtx/01/dyn/filter/f", {E32}, F_XET, {0}, OffOn}, also looks incorrect, should presumably be {F32}, F_XET, {0}, NULL},
Comparing X32Mtx.h and the OSC PDF, I couldn't see other errors, but admittedly I didn't check every matrix copy or follow all enum type definitions.

Problem description:
First, thanks for an amazing set of utilities! I'm trying to use X32 Emulator to receive a Mixing Station offline scene, passing it on to a connected X32 Edit, so I can save as a normal Behringer scene. Both programs can connect to the emulator and read its initial state, and fader moves are passed correctly through the emulator. But loading any offline scene in Mixing Station while connected to the emulator only gets to 5% and gives:

Error: Sync error
Could not complete sync to the console:
Timeout while syncing /mtx/01/dyn/thr
Expected 0.45833334 got 1.05556653E9

X32 emulator shows:
->X, 24 B: /mtx/02/dyn/thr~,f~~[0.4583]
->X, 16 B: /mtx/02/dyn/thr~
X->, 24 B: /mtx/02/dyn/thr~,i~~[1055566507]

i.e. Mixing Stations sends a float for the compression threshold of Matrix 2, then I think sends a request for the same value to verify, but receives back an int. The definition of the OSC for matrix compression threshold seems to be in X32Mtx.h, e.g. line 99 for Matrix 2.

X32 Emulator MacOS not working

I'm not sure if I'm not understanding something, but I keep getting an error of X32 resource file does not exist, create one with '/shutdown' command which isn't going away.

I have tried running the /shutdown command but it hasn't done anything, so I'm not sure how to fix it.

I'm running it from ./X32 -i 192.168.0.18

And the ip is my machines ip

XAir_Command using wrong data type for meter subscription blob data

When running a meter subscription command such as/meters ,si /meters/0 8 in XAir_Command, the result comes back as
X->, 40 B: /meters/0~~~,b~~8 flts: -00.00 000.00 -00.00 -00.00 000.00 000.00 000.00 000.00.
This is incorrect. All meter subscriptions commands result in: Blob contains meter data signed integer 16 bit, resolution 1/256 dB) as single binary blob on the X-air platform, not floats. This is a difference from the X32 OSC. The code to properly decode this already seems to be in X32_dump.c, starting on line 82 if(strncmp(buf, "/meters/15", 10) == 0) {.
/meters/15 (RTA output) is the one case where the X32 uses short little endian integers in a meter subscription. XAir_Command.c may need to call a custom version of xfdump to properly read meter subscriptions.
I don't have a development environment set up on my mac right now, so I cannot test this myself.

File name handling bug

Hi!

I'd actually prefer to bring this up in the Behringer forum, since it affects a lot of users who aren't likely to chase down your github. Of course, that forum is now completely useless!

It would be great if you could figure a way to let users there know that they should workaround the problem until it can be fixed.

It's too bad that the new forum's designers seem to have missed the point of having a forum!

In any case:

I'm seeing a consistent error in the Macintosh version (at least) of X32Xlive_Wav where if a command line like:

 ~/bin/X32mac/X32Xlive_Wav  -n 32 -c 24  ../4E57ABA4/

is used to burst all files to 24 bit and place the results into the current directory, the resulting file names are all prepended with a '.' and become invisible!

Using the '-d .' option solves the problem, but the default for '-d' appears to be broken.

This is a bit confusing, of course, since the files are all created, but don't show up in the finder or in a normal ls command.

thanks again for a great utility and all your work.

Changes to XAIR_Command.c so it can compile in TERMUX on Android

Patrick, I know I should learn how to make a proper pull request, but I found an issue compiling XAIR_Command.c in a TERMUX session on Android. It does compile, but has a bug where the input buffer constantly overflows with "Line too long..." errors.

It turns out that the gcc version in TERMUX is very stingy and only gives an unsigned char when a variable is declared as char. this made input_ch see the -1 value in the non-blocking stdin read come out as a +1, so the buffer filled with fake values.

I tried changing input_ch to a signed char, but those only go to +127, not +255, so that didn't work with your command switch input section.

I ended up making input_ch an int, and using it in the stdin reading section. I also made a new variable, input_ch1 as a char, which I replaced in the command switch section.

Now everything compiles and runs great, on an Android tablet no less. This should all also work on OS X or LINUX, but I'm not sure about Windows, and I don't have a Windows machine. So I'm not sure that this is a good change overall, but if it works in Windows, then you might consider it.

-Ted

X32 emulator not relaying `solosw` OSC commands to X32-Edit

First of all, thanks very much for the emulator -- extremely useful.

I was testing the solo functionality, and I noticed something very strange: I can update the solosw property and the emulator saves things correctly, but the change does not register with X-32 Edit.

As a simple example:

# Set one channel to solo
$ sendosc <emulator_ip> 10023 /-stat/solosw/01 i 1
->X,   28 B: /-stat/solosw/01~~~~,i~~[     1]
X->,   28 B: /-stat/solosw/01~~~~,i~~[     1]

# Check the property is set
$ sendosc <emulator_ip> 10023 /-stat/solosw/01
->X,   24 B: /-stat/solosw/01~~~~,~~~
X->,   28 B: /-stat/solosw/01~~~~,i~~[     1]

# Check the property is not set for other channels
$ sendosc <emulator_ip> 10023 /-stat/solosw/02
$ sendosc <emulator_ip> 10023 /-stat/solosw/03
->X,   24 B: /-stat/solosw/02~~~~,~~~
X->,   28 B: /-stat/solosw/02~~~~,i~~[     0]
->X,   24 B: /-stat/solosw/03~~~~,~~~
X->,   28 B: /-stat/solosw/03~~~~,i~~[     0]

# Turn off solo on channel 01 and turn on solo for channel 02
sendosc <emulator_ip> 10023 /-stat/solosw/01 i 0
sendosc <emulator_ip> 10023 /-stat/solosw/02 i 1
->X,   28 B: /-stat/solosw/01~~~~,i~~[     0]
X->,   28 B: /-stat/solosw/01~~~~,i~~[     0]
->X,   28 B: /-stat/solosw/02~~~~,i~~[     1]
X->,   28 B: /-stat/solosw/02~~~~,i~~[     1]

# Verify the new solo properties are set correctly
$ sendosc <emulator_ip> 10023 /-stat/solosw/01
$ sendosc <emulator_ip> 10023 /-stat/solosw/02
->X,   24 B: /-stat/solosw/01~~~~,~~~
X->,   28 B: /-stat/solosw/01~~~~,i~~[     0]
->X,   24 B: /-stat/solosw/02~~~~,~~~
X->,   28 B: /-stat/solosw/02~~~~,i~~[     1]

Furthermore, I have no problems seeing updates like this show up in X-32 Edit:

sendosc <emulator_ip> 10023 /ch/01/mix/on i 0

I also have problems with the Clear Solo button in X32-Edit, so this could also be a bug in the X32-Edit application. I'll check on a real X32 mixer tomorrow, but I thought I'd check here first to see if you knew what was going wrong.

Thanks very much.

Setup is ambiguous

Hi Patrick,

Thanks for your hard work on a cool set of utils.

The setup instructions are a bit ambiguous. Someone who isn't an experienced programmer would not know how to get started on Windows. Could you provide instructions on specific tooling: mingw vs. visual c++, makefiles, specific step-by-step instructions on how to compile?

Thanks!

logic error in fxparse.c

On line 203 of fxparse.c there's a test for PQ5 when the test should be for PQ5S since the "S" is the dual effect with two sets of parameters.

Here's the diff:
diff --git a/fxparse.c b/fxparse.c
index c268a1b..b1bab91 100644
--- a/fxparse.c
+++ b/fxparse.c
@@ -200,7 +200,7 @@ int XPQ5_PQ5S(char* buf, int k, int ifx, int PQ5S, int PQ5) {
list2int(l_qhlfreq, ll_qhlfreq); // hi freq [1k5, 2k, 3k, 4k, 5k]
ratio2float(10.); // hi boost [0, 10]
toggle2int("OFF"); // transformer [OFF / ON]

  •   if (ifx == PQ5) {
    
  •   if (ifx == PQ5S) {
            toggle2int("OFF");                                      // active [OFF / ON]
            afine2float(-12., 24.);                         // gain [-12, 12]
            list2int(l_qllfreq, ll_qllfreq);        // lo freq [200, 300, 500, 700, 1000]
    

X32 Simulator - crashes with "Segmentation fault: 11"

Dear Patrick,
first of all I would like to thank you for your great piece of software!
I'm using your X32 simulator to develop an interface for the Behringer digital Mixers of the X series.
Personally, I don't own a Behringer so it's great to have this simulator.
The connection works fine so far, but unfortunately I have the problem that the simulator often disconnects.
As an error it reports: "Segmentation fault: 11".
Do you have any idea what could be causing this?

Best regards from Hamburg
Olaf Claussen

Bildschirmfoto 2022-05-16 um 09 25 21

Thanks - and compiling hints

Many thanks for these awesome utils and the docs you've written - they are much appreciated.

I have a few ideas for tweaks I'd like to make - for example simply changing the default IP address to a name "x32" that can be set in /etc/hosts (or the windows equiv)

But I havent worked out how to compile these utils (linux, standard GCC7.3 etc)

I'd contribute a simple Makefile once I've got it.... could you drop some hints?

X32CfgMain.c is old version?

Using the downloaded x32.exe I can sync the initial state from the emulator to Mixing Station. Compiling my own X32.exe, syncing with Mixing Station hangs at 59% as the emulator can't respond to /main/st/grp/dca, /main/m/grp/dca or /main/st/grp/mute. Other things from FW 4.0 like panFollow also seem missing in that file, but are present in the corresponding bus, channel etc. files.

All I can think is that the 3-year-old version of X32CfgMain.c in the git repo hasn't been updated, but you are compiling from an local copy that has been updated for FW 4.0?

(I'm trying to compile myself since I found another type problem, this time in X32Bus.c. Since fixing that and getting a new .exe from you may well just lead to finding the next problem, I thought working through them myself might help.)

X32Commander - Channel Name

I cannot for the life of me figure out how to use X32Commander to rename a channel. I can get it to change channel colors, but not channel names. Is X32Commander capable of dealing with channel names?

Missing comma, probably a bug

Line 386 of X32.c is missing a , between " Linear" and " Live", probably creating one string " Linear Live" and probably causing a bug.

char* XiQeq[] = {" Linear" " Live", " Speech", " Playback", " User", ""};

X32CustomLayer - incorrect preamp settings

Hi,

I'd like to report a defect in x32CustomLayer app

Problem is here:
LoadCStrip(k, i); <<<< first load all data from the second channel, INCLUDING preamp settings
SetASource(i, Asrc[k - 1]); <<<< than change the source

Problem is that loading the channel appies also preamp settings, the settigs are applied BEFORE the source has been changed, so in fact are applied to incorrect preamp.
In result the mix is destroyed after using the app

As the app is design to change the order of the channels only, not changing the ways that the sources are physically connected, it should never change setting of any preamp. The fix is really simple, just filter out preamp settings when applying the saved channel by changing insertion mask from 63 to 62

`
X32CustomLayer.c

line 121:
int LibRecallMask= 62; // mask value for X32 /load and /save command

line 1123:
s_len = Xsprint(s_buf, s_len, 'i', &LibRecallMask);

Emulator crashes when changing FX to delay-type in offline editor

The emulator (windows version) crashes when the type of a FX slot is changed to a delay-type FX (10, 11, 12, 21, 24, 25).

Steps to reproduce:

  • Start the X32 emulator, then connect the X32 EDIT offline editor and sync Mixer > PC.
  • Change any FX slot 1-4 to a delay-type fx.

Expected result:
The OSC calls are responded correctly and the emulator continues listening.

Actual result:
The last request made by X32 EDIT is /node fx/[%]/par which is not responded.
then, the emulator crashes.

not an issue just a question

Hi Pmaillot

congrate for this huge job on this preject !!

i am preparing a touring kit for Live Production/Recording applications
i'm trying to interpolate Live professor cues and Reaper markers using chataigne http://benjamin.kuperberg.fr/chataigne/fr

the idea is to create markers while recording in reaper and changing cues in Live professor
and to going to marker while reading and changing cues

do you know if it's possible to send to reaper an OSC message to create a marker at position with a custom Name ?

best regards

christophe

XR18_Command Can't connect to XR18

The program just spins while trying to connect to XR18.
A sniffer trace shows a continuous stream of /xinfo commands each followed by a response from the XR18. See below:

XR18_Command - v1.32 - (c)2014-15 Patrick-Gilles Maillot

Connecting to XR18............................................................................................................................................................................................................................................................................................................................................^C

From looking at the code the problem is with lines 276 and 285. On line 276 the initial command is set to "/xinfo" but on line 285 the response is checked for "/info".

Below is the proposed fix:

285c285

< if (strcmp(r_buf, "/info") == 0)

        if (strcmp(r_buf, "/xinfo") == 0)
Ken

X32 sim process remains active when quitting terminal first

Process remains active if the terminal is quit without stopping the process. When the X32 sim is opened again the virtual console cannot be initialised since the ip:port is already in use. Full machine restart is required to fix this

Question M32R et control distant temps réel

Bonjour Patrick,

Bravo quel travail !
Je me permets de vous solliciter pour une question de faisabilité.

Je suis à la recherche d'une console pour une application TV/broadcast mobile et je me demandais s'il était possible avec la M32R, de piloter plusieurs submixes en temps réel (via MidiCC ou autre), de façon transparente et sans interférer avec le travail du mixeur sur le mix principal ?

L'idée serait d'utiliser la console à la fois pour le mix standard du programme, mais également de s'en servir comme d'une petite "matrice d'ordre" qui serait contrôlée par plusieurs personnes en même temps, via plusieurs contrôleurs à base de raspberry pi et uniquement sur des opérations simples (mute/demute de départs d'Aux, réglage de niveaux sur des affectations d'Aux).

J'espère que ma question n'est pas trop confuse et que votre maîtrise de la machine vous permettra de m'apporter un éclairage ;)

Merci encore pour votre travail,

Adrien

Integration with video mixer

I'm interested in using this great library to interface with our video mixer (BlackMagic ATEM) to get the video mixer to change to a different camera based on the loudest x32 input. This would allow me to auto-mix my event's video based on who is speaking. I see I can use /meter to get a list of meters for the various inputs which seems like a good start. Any ideas about how I can best find out which mic input would be chosen in realtime for a period of 1 hour or more?

Can't compile apps other than X32_command

Hi and sorry for my English

When I try to compile apps, just like X32GetScene, I always get's errors that gcc can't find x32 libs, can't find functions like "Xsprint()" and another from X32lib folder. I build the object files from X32lib folder, but make still can't find them. Maybe I need to change something in make file?

After all I rename all X32lib files as headers and include everethyng till Make can't show any error. Now I can run X32GetScene, but he is works a little strange. He run 100 ~ 500 lines from reference .scn file and stops to run, just close without error. After all I make script, that split reference .scn file on small subfiles with 100 lines, run X32GetScene on them and glue result them to one file. Thats works well, but I don't think its a better solution. I think it's better to compile X32GetScene as it should be.

a few different errors on X32 Emulator v084 mac

  1. When starting the application I'm getting this: X32 resource file does not exist, create one with '/shutdown' command. How do I fix this?
  2. When connecting from X32 Edit I'm getting this: Error while sending data: No route to host. Do I get this error because I'm running both applications on the same computer?
  3. When connecting Mix station on my Tablet I'm getting this: ->X, 16 B: /mtx/03/grp/dca~
    zsh: segmentation fault /Applications/X32/X32_v084_mac_oc

how to use hex load a scene?

2F 6C 6F 61 64 00 2C 73 69 00 00 00 73 63 65 6E 65 00 30 30
/load� ,si ���scene �00 this command sussce work in osc application
that doesn't work in hex
console screen feedback " type tags not present"

Passing IP or network interface to X32

Om trying to run X32 on my windows10 and X32 is grabbing my virtual network interfave from Virtual Box instead of the IP address from my Wifi or my connected Ethernet cable.
Is there a way to let me decide which IP address X32 will listen on?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.