• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Contributors welcome! Open Source Python Client for Sennheiser Sound Control Protocol (SSC)

jj-wohlgemuth

Member
Joined
May 27, 2021
Messages
32
Likes
60
Disclaimer: I am marked as a "manufacturer" in this Forum because I happen to work for a Pro Audio Company. This project however is a private project of mine. None of the things I write in this thread or in the repository represent opinions or statements other than my own.

I am looking for contributors to the open source project pyssc. The Sennheiser Sound Control Protocol is a specific adaption of Open Sound Control (OSC). Pyssc is a simple client implementation that allows users to discover SSC Devices in their networks and subsequently communicate with those Devices via SSC. There are a lot of Devices out there that use SSC. Users of this particular forum might know Devices such as the Neumann KH 80, the Neumann KH 750 or the Neumann KH 150, which use the SSC Protocol.

Here are some ways you can contribute to this Open Source Project:
  • Perform tests and log bugs and other outcomes in Github (no prior experience needed)
  • Extend documentation/tutorials (no prior experience needed)
  • Fix Bugs and Extend the functionality (Requires (Python) programming skills)

Any kind of contribution and input is welcome! Looking forward to hearing from you.

https://github.com/jj-wohlgemuth/pyssc

1666959676695.png
 
Looks interesting.

What will a Neumann loudspeaker owner be able to do with this?
 
Anyone who has access to the internet can contribute to this project independently of what audio gear they have. If you want to contribute by testing with real SSC Hardware and you own a KH 80, a KH 750 and/or a KH 150 then that's even better.
Looks interesting.

What will a Neumann loudspeaker owner be able to do with this?
 
Right.

But after the project is complete, what will a random Neumann loudspeaker owner be able to do with the software?
 
Right.

But after the project is complete, what will a random Neumann loudspeaker owner be able to do with the software?
This project is just starting so I can't speak to what might be able to do in the future. If some people come together to work on this they can decide what direction they want to take it in.
At the current point in time owners of KH 80/750/150 can use it to configure all the writable SSC settings on their devices with it... Filters, Levels, Mute, LED Brighness, Standby settings, Delays ... you name it. The python package doesn't have a GUI but you can use it via the Python REPL or write all sorts of automation or interfaces on top of it. I personally used pyssc to build a level/mute controller based on a Raspberry Pi for my home setup. I'll share that project some other day when I have time.
 
At the current point in time owners of KH 80/750/150 can use it to configure all the writable SSC settings on their devices with it... Filters, Levels, Mute, LED Brighness, Standby settings, Delays ... you name it.

I am interested in the project and would also like to try the software once there is a first version that can run on Windows. But I don't have time to participate in the very early stages when you need your own progamming environment for it.

However: I find it a pity that such software does not come "officially" from Neumann. I had actually hoped that the iPad app would be further developed and brought together with the MA1. There are already very nicely designed options for changing all the important settings.

I would like the MA1 software to display the settings made (delay, filter, etc.) after the automatic alignment, and then you can manually change them or add filters yourself if necessary.

If Neumann cannot do this itself, it would of course be nice if this software could. Just reading out the settings after automatic calibration would be helpful and interesting.
 
Any idea if it would work with micropython for use with a Pi Pico W or ESP32 in making a wireless remote?
 
Any idea if it would work with micropython for use with a Pi Pico W or ESP32 in making a wireless remote?
I asked myself the same question because Raspberries got so expensive due to the current chip situation. The communication itself uses the standard socket package. You should be able to use that package on Micropython as well.

To find the IP address of the SSC device pyssc uses zeroconf. I'm not sure if that is available for Micropython. However you only need to run it once. The devices have fixed IPs. Once you know them you don't need to scan again. You could find out the IP using regular Python on a different machine and then store it on your Micropython Device and use it for the subsequent socket communication.

If you try it out please let me know what happens. Happy to help if I can!
 
I am interested in the project and would also like to try the software once there is a first version that can run on Windows. But I don't have time to participate in the very early stages when you need your own progamming environment for it.

However: I find it a pity that such software does not come "officially" from Neumann. I had actually hoped that the iPad app would be further developed and brought together with the MA1. There are already very nicely designed options for changing all the important settings.

I would like the MA1 software to display the settings made (delay, filter, etc.) after the automatic alignment, and then you can manually change them or add filters yourself if necessary.

If Neumann cannot do this itself, it would of course be nice if this software could. Just reading out the settings after automatic calibration would be helpful and interesting.
@DjBonoBobo those are all interesting points about Neumann.Control and the MA 1 app. As always my recommendation is to address this kind of feedback directly to Neumann ( via [email protected] ).

With pyssc as it is right now you can already read and write the DSP settings. However there's no GUI so you'd need to script a little or use the console.
 
I ended up not buying KH 80s because of the iPad-only nature of the software at the time. Had Neumann included the SSC documentation in their technical area I would probably have bought a pair, but as it is I have no SSC devices. I'll keep an eye on the project as it's interesting, and might affect choices next time I'm buying speakers.
 
With pyssc as it is right now you can already read and write the DSP settings. However there's no GUI so you'd need to script a little or use the console.
This is important info about possibility also to read data. Thank you.
I worked in many programing languages but never Python. And because of a bit higher age it is not easy for me to learn another one, I thought that after retiring I will stop programing but... maybe I will try to do something. But time is still some limitation.
For me the most important think is if there is some possibility of GUI programming library in Windows. I don't like command line for last 25 years :) . My idea would be to create some screen where each parameter could be changed and seen and add parameter by parameter to this screen. Very simple in the beginning but may be more complex in the future.
Are there any other Python programmers here?
 
This is important info about possibility also to read data. Thank you.
I worked in many programing languages but never Python. And because of a bit higher age it is not easy for me to learn another one, I thought that after retiring I will stop programing but... maybe I will try to do something. But time is still some limitation.
For me the most important think is if there is some possibility of GUI programming library in Windows. I don't like command line for last 25 years :) . My idea would be to create some screen where each parameter could be changed and seen and add parameter by parameter to this screen. Very simple in the beginning but may be more complex in the future.
Are there any other Python programmers here?
Cool yeah I was thinking to use React for the GUI and Python for the back end. I don't love building GUIs and working with JS but if that's something you're interested in we might have a match!
How about you create an issue on Github with your ideas and then we take it from there?
 
I have made issue on Github with some ideas. Maybe somebody else may add something, I can add it to Github if one does not have account.
 
With pyssc as it is right now you can already read and write the DSP settings. However there's no GUI so you'd need to script a little or use the console.
I have no time to learn how to use this - i don´t even know where to start and which program to use for this.
But if someone made a small tool - a bit like CPU-Z - that simply shows all the parameters of each speaker, that would be very useful for me. Just to know what the MA1-software does secretely. The next step would be the ability to edit those parameters, that would be all i wanted from such a software.
My idea would be to create some screen where each parameter could be changed and seen and add parameter by parameter to this screen. Very simple in the beginning but may be more complex in the future.
Or maybe something like this. :)
 
I know how to use it a bit but still have not time, my mind is set currently in different direction. There is still some block for working with monitor settings. Later I will try to do something. But not in Javascript, I never used it. But I promis nothing.

I will copy some ideas which I wrote to GitHub site. Maybe somebody else will have some additions/corrections.
Hi, I have some ideas for future pyssc GUI as discussed in ASR. Take it only as first ideas for discussion.

  1. Should be as simple as possible at least in the beginning.
  2. Best would be all parameters and actions accessible from one screen if it will fit.
  3. Should be created not only for stereo or 2.1, but also for more monitors (I use currently 4.1), maybe something like matrix table: columns - array of monitors, rows - list of parameters, maybe also column like Set parameter to all monitors for some parameters where it has sense and button Send this parameter or button row Send all parameters to this monitor. Loops thru monitor or parameter arrays.
  4. Parameter can be added to the list once function for it is in test or developed. 1-3 parameters are enough for initial GUI testing.
  5. If the window would be expandable according number of rows/columns - nice feature for future.
  6. Parameters logically grouped/ordered according their sense.
 
@jj-wohlgemuth
I wanted to try switch on/off led lights. installed python, pyssc. in IDLE I found all monitors. Writing and reading IP setup was also ok, but selecting special monitor did not worked.
I have no idea what to do.
device_1 = found_setup.ssc_devices[0]
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
device_1 = found_setup.ssc_devices[0]
AttributeError: 'NoneType' object has no attribute 'ssc_devices'

Also it is not easy to understand which commands are available for monitors and what they do. For instance how to set the LED light level? This should be relatively safe function for debugging. /brightness ? Can you make a short list of commands which have sense for us?
 
A bit more of the command history would help in determining what went wrong. What did you do immediately before the bit you quoted?

I haven't seen the exactly what's available for the monitors. Neumann don't even advertise that they're using SSC. Sennheiser's SSC documentation describes some of it for some of their radio mics. From what I remember the protocol includes commands you can use to get the device to tell you what commands it supports and the range of possible values - search for the term 'reflection' in the protocol document linked by the OP.
 
Exactly what is written here https://github.com/jj-wohlgemuth/pyssc

First setup.json created correctly in Python home folder:
import pyssc as ssc
found_setup = ssc.scan()
found_setup.to_json('setup.json')

setup.json content, IPs are changed by me:
{
"Left": "fe80::2a36:38ff:fe60:xxxx",
"Right": "fe80::2a36:38ff:fe60:xxxx",
"Left Subwoofer": "fe80::2a36:38ff:fe60:xxxx",
"Neumann KH 80-1": "fe80::2a36:38ff:fe60:xxxx",
"Neumann KH 80": "fe80::2a36:38ff:fe60:xxxx"
}

Here is the error:
Python 3.11.0 (main, Oct 24 2022, 18:13:38) [MSC v.1933 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.

import pyssc as ssc
found_setup = ssc.Ssc_device_setup().from_json('setup.json')
device_1 = found_setup.ssc_devices[0]
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
device_1 = found_setup.ssc_devices[0]
AttributeError: 'NoneType' object has no attribute 'ssc_devices'
 
This is important info about possibility also to read data. Thank you.
I worked in many programing languages but never Python. And because of a bit higher age it is not easy for me to learn another one, I thought that after retiring I will stop programing but... maybe I will try to do something. But time is still some limitation.
For me the most important think is if there is some possibility of GUI programming library in Windows. I don't like command line for last 25 years :) . My idea would be to create some screen where each parameter could be changed and seen and add parameter by parameter to this screen. Very simple in the beginning but may be more complex in the future.
Are there any other Python programmers here?
I programmed in java and python and can assure you python is easy to learn and use. It's an object based language that compiles at runtime iirc and uses only 1 type of variable. Instead of { } brackets indents are used in methods, which makes it look beautiful and easy to read.

The only disadvantage is that it is so forgiving in nature it can happen that it makes a mistake in interpretation.
 
Back
Top Bottom