0
$\begingroup$

A while back I posted on the Reverse Engineering site about an audio DSP system whose designer had passed away and whose manufacturer no longer had source code (but the question was deleted). Basically, the audio filter settings are passed from a Windows program to the DSP device presumably as coefficients and then generic descriptions of those filters (boost/cut, frequency and bandwidth) are passed back from the box to the software - but only if it somehow recognizes the filter setting.

I want to be able to generate the filter settings separately from the manufacturer software, so I need to know how they are calculated. I've not been able to deduce how this is structured from observing the USB communication that I've gathered. So, I wonder if AI could do this.

How would I go about creating an AI to send commands to the box (I know how to communicate with the box and have a framework for how these types of commands are phrased) and then look at the responses to either further decode the system and/or create an algorithm for creating filters?

The communication with the DSP mixer box is basically via "Serial" commands and although it uses a USB port, there is a significant bottleneck inside the command control system in the mixer box. Any attempts to reverse engineer may encounter problems based on the sheer amount of time that it would take to compile enough data. Or not.

$\endgroup$
  • 1
    $\begingroup$ By "reverse engineer" do you mean you want to know exactly how it works? Or just make another thing which you're still not quite sure what it does but you can get the same output? Most 'AI' is still a black box, even to those who made it. $\endgroup$ – Lio Elbammalf Aug 12 at 10:17
  • $\begingroup$ So let me get this straight...You have some predefined filters and a Windows program asks the device whether any of the pre-defined filter match the current requirements. If yes the parameters are sent back from device...Else nothing happens? Is this correct? If so which part is missing in the step? $\endgroup$ – DuttaA Aug 12 at 12:12
  • $\begingroup$ @ Lio, I seek 2 potential outcomes - One is that I can decipher the human based design and the 'recipe' will make complete sense. The other is that an algorithm (that I likely don't understand) can be made that will predict the behavior, essentially giving me a recipe that I don't necessarily understand. $\endgroup$ – chmedly Aug 12 at 14:09
  • $\begingroup$ @ Dutta, I apologize, I have not determined the exact behavior of the device. But I do know that if it is sent a filter setting from the existing software, it can be queried about the filter and a pre-defined description is returned. But other filter shapes are possible that are not predefined as measured by sending an audio signal through the device. Brute force: create a large "dictionary" of inputs that result in the pre-defined outputs. Programming would be a lookup.. But I would like to find a mathematical way to "calculate" the result and then arbitrary responses would be possible. $\endgroup$ – chmedly Aug 12 at 14:18
0
$\begingroup$

Yes this is entirely possible. As was previously mentioned, complex connectionist systems are often thought of as black boxes(despite us being able to "look in" the box given enough computation and analysis) because of the difficulty in understanding learning and the networks ultimate decision making.

Here, we can model the problem as such: given an input of filter settings(and presumably some information about the audio), predict the target descriptors as an output. All you really need to do is generate a dataset from the program and then train it in a multi-label classification context to predict the output descriptors.

$\endgroup$
  • $\begingroup$ I can certainly write some code to gather a dataset. Bsicaly "Brute Force" in a previous comment. In fact, is any AI necessary? I could simply create a lookup table using the first discovered input that results in a given predefined output. In this case my use would be limited to the predefined filters. But can AI somehow do this better? More efficiently? Predict undefined outcomes? And how do I begin? I assume there is some kind "seed" that is started and then as it "learns" it changes into the machine that I want? I suppose the AI itself becomes the "algorithm" that I'm looking for... $\endgroup$ – chmedly Aug 12 at 14:35
  • $\begingroup$ @chmedly depending on the number of input/output pairs, it very well could be easier to construct a lookup table. However if the space is not too large this would more than likely be the quickest and most effective. To start create a dataset, if you are able to capture all pairs without too large a memory/computational cost than just create a table. Otherwise construct a set of a large portion of pairs and then convert the categorical data into scalar values an algorithm can use. $\endgroup$ – hisairnessag3 Aug 12 at 15:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.