TK.

Upcoming MBHP_MF_NG module

353 posts in this topic

Hi Zam

I didn't forget you yet but i just made my front and will be able to test in a more handy way soon. Its quite hard to test without a solid "fixed" solution.

It will take about 3 Weeks so im back to this task in August.

best regards

novski

Share this post


Link to post
Share on other sites

Hi Novski

 

No pb

actually I reduce around 220u (two 470 in series)

 

I made a new proto front panel in 3mm alu, it also improve mechanical noise.

 

I redone wiring with separate shilded cable for the 3 functions

servo, motor, and sensor

the servo 1kHz still there in my audio path :( I'm out of idea.

 

I think I read somewhere here, about grounding unused servo output and/or sensor

can someone confirm ?

 

best

 

Zam

Share this post


Link to post
Share on other sites

I'm f...ing lost in the programming side

 

I just try to compil by myself (as a training) the basic mbhp_mf_ng_v1_004 (without touching any code), I just have few day reading all I can on wiki and install tools

 

I'm so lost, that I don't know where to start to tel my situation, I feel so stupid...

 

I just want to change MIOS_SRIO_NumberSet in the main.inc file to test different touch sensor pulse regarding my noise

 

Zam

Share this post


Link to post
Share on other sites

If you are not able to execute the Makefile, try to execute following command in the mbhp_mf_ng_v* directory directly:

 

gpasm  -p p18f452  -I./src -I ./include/asm -I ./include/share -I ./modules/app_lcd/dummy  setup_mbhp_mf_ng_standard.asm

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites
If you are not able to execute the Makefile, try to execute following command in the mbhp_mf_ng_v* directory directly:

 

gpasm  -p p18f452  -I./src -I ./include/asm -I ./include/share -I ./modules/app_lcd/dummy  setup_mbhp_mf_ng_standard.asm

 

Best Regards, Thorsten.

hello Thorsten

tks for help

 

10 min to understand why terminal answer me "No such file or directory" when I send cd command... it need a space after...now you have my skill level :sad:

I was finally able to execute your command, seem to work, I have a new .hex (regading the info date) also .cod and .ist

 

I will try to change MIOS_SRIO_NumberSet number

 

--------------------------------

 

Now some question to be sure I understand correctly.

 

MIOS_SRIO_NumberSet is the trig clock from PIC RD4 right? so if I increase to let say 0x05, my noise frequency should go down to 200hz (5/1000sec) ?

MIOS_SRIO_UpdateFrqSet is the time the shift register take info ? it determine the touch response time to standby the motor right? here we have 10ms

 

Now, were is the parameter (if one) who set the master clock used by MIOS_SRIO_NumberSet?

What can I do if I want MIOS_SRIO_NumberSet to be 0.05 ms (20kHz) or better 50kHz/0.02ms

 

Best

 

Zam

Share this post


Link to post
Share on other sites

Man !!!!

It work :rolleyes:

HUGE improvement in audio noise, this f... 1Khz noise go away

I still have the shift register 10us pulse clicking in audio (my PSI monitor are so efficient revealing fast transient), but as I lower MIOS_SRIO_NumberSet to 32ms (0x20) the intermodulation go down to 31.25hz in place of 1K, so just become inaudible

 

back soon

 

Zam

Share this post


Link to post
Share on other sites

hello

 

I try again to compile trough xcode without succes :(

 

Zam

 

post-20897-0-03357900-1407167288_thumb.j

Edited by Zam

Share this post


Link to post
Share on other sites
Now some question to be sure I understand correctly.

 

MIOS_SRIO_NumberSet is the trig clock from PIC RD4 right? so if I increase to let say 0x05, my noise frequency should go down to 200hz (5/1000sec) ?

MIOS_SRIO_UpdateFrqSet is the time the shift register take info ? it determine the touch response time to standby the motor right? here we have 10ms

 

Now, were is the parameter (if one) who set the master clock used by MIOS_SRIO_NumberSet?

What can I do if I want MIOS_SRIO_NumberSet to be 0.05 ms (20kHz) or better 50kHz/0.02ms

 

No, totally wrong...

Without going into too much detail: this would work in MIOS32 projects where the SRIO is scanned via SPI, but it doesn't work on a PIC where the SRIO is scanned directly from the PIC via bit-bangning.

This is done each mS, the number of SRIOs doesn't change this.

And if somebody would try to reduce the timer period for the bit-banging routine, the PIC would be busy with scanning the SRIO, but wouldn't be able to do anything else (-> no motor control).

 

 

So, forget this change please, embedded programming is sometimes not straightforward, you've to consider many limitations to come to a compromise which works in reality.

I think that on a PIC the touch sensor handling can't be optimized anymore.

 

 

HUGE improvement in audio noise, this f... 1Khz noise go away

I still have the shift register 10us pulse clicking in audio (my PSI monitor are so efficient revealing fast transient), but as I lower MIOS_SRIO_NumberSet to 32ms (0x20) the intermodulation go down to 31.25hz in place of 1K, so just become inaudible

 

MIOS_SRIO_NumberSet doesn't set the scan frequency, it sets the number of SRIO components modulo 16

Which means: 32 % 16 = 0 -> no SRIO is scanned anymore, no noise... but also no touchsensor scans, right?

 

 

I try again to compile trough xcode without succes :(

 

but you can compile in the terminal, right?

(I don't use Xcode by myself, too complicated ;-))

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites
No, totally wrong...

Without going into too much detail: this would work in MIOS32 projects where the SRIO is scanned via SPI, but it doesn't work on a PIC where the SRIO is scanned directly from the PIC via bit-bangning.

This is done each mS, the number of SRIOs doesn't change this.

And if somebody would try to reduce the timer period for the bit-banging routine, the PIC would be busy with scanning the SRIO, but wouldn't be able to do anything else (-> no motor control).

 

ok, tks to correct me!

So the question is, can I manage the shift register for touchsensor with MIOS32 if I use a 32 core (for button/led/touch) and PIC (MF) just for the motor ?

What is the actual SRIO max scan frequency in MIOS32? the idea is to have it way upper 20/20khz range.

 

Other option is to have an assigned button that switch the MIOS_SRIO_NumberSet between 1 and 0 when printing a mix.

 

 

 

MIOS_SRIO_NumberSet doesn't set the scan frequency, it sets the number of SRIO components modulo 16

Which means: 32 % 16 = 0 -> no SRIO is scanned anymore, no noise... but also no touchsensor scans, right?

 

Of course, my mistake sorry, I mean MIOS_SRIO_UpdateFrqSet !!!

I set it to 0x20 (32ms) with improvement in noise, the slower detection response don't seem a problem right now

 

 

but you can compile in the terminal, right?

(I don't use Xcode by myself, too complicated ;-))

 

Ho! if it's too complicated for you, I better forget this for the moment...

Yes I have success to compile, with the code you give me to copy/past in the terminal

 

I just don't know/understand what I do, but it work :p

 

----------

 

Now it's time for next step

can you help me with this ?

 

 

What I also could provide is a small perl script which generates a look-up table based on given points:

fader_cali.png

 

Build process would be:

- adapt and generate the table in/with the perl script -> this will generate an include file

- rebuild the mbhp_mf_ng firmware with a PIC assember

- upload the new firmware (.hex file) with MIOS Studio

 

The whole update process will take ca. 30 seconds... fast enough to try out various settings.

 

Required tools: perl (scripting language), gputils (PIC assembler), text editor

And if you would install "gnuplot" on your computer as well, the perl script would spit out a diagram with the calibration curve as shown above

 

 

I think perl is already installed with devtools on my computer?

also a working gputils as I was able to compile with your terminal command.

How many "given point" can we use? if possible 14 should be good.

lets say 0-5-10-15-20-25-30-35-40-45-50-60-70-cut

I will made new measurement for respective PB value at both side, fader DAW and analog fader

 

----

 

Also i just drop some update about analog side accuracy i'm able to reach with new setup.

I'm less than +/- 0.5 dB between automation rec and automation play

I'm around +/- 0,05 dB between two automation play (audio recorded two time trough automated fader, with phase cancellation test)

The system miss shoot with 1 dB accuracy from the automation print, but always miss shoot the same with 1/10dB accuracy

it's in the 1mm range! i'm close to the 1024 step in 10cm fader, i can't do better and I'm happy with that :smile:

 

 

Best

 

Zam

Share this post


Link to post
Share on other sites
Of course, my mistake sorry, I mean MIOS_SRIO_UpdateFrqSet !!!

 

Ok, this obsoletes all other questions and now I understand what you did.

This of course reduces the scan frequency by x * 1 mS, results into 32 mS (as you've mentioned) and if you are saying that there is a HUGE improvement then let it like it is, everything else will overcomplicate the project.

 

I've to add that this was a clever idea! I haven't expected that the pulse is weak enough so that it will be filtered out on lower frequencies! :)

 

Now it's time for next step

can you help me with this ?

 

This hasn't been forgotten... but please be a little bit more patient.

 

Before giving you any code I've to test it, because everything which hasn't been tested typically doesn't work due to unexpected reasons, especially when I'm doing changes in code that I wrote many years ago!

 

 

I think perl is already installed with devtools on my computer?

 

You can try this in the terminal: 

perl -version

perl isn't installed if this command won't be found.

 

 

How many "given point" can we use? if possible 14 should be good.

lets say 0-5-10-15-20-25-30-35-40-45-50-60-70-cut

I will made new measurement for respective PB value at both side, fader DAW and analog fader

 

There is no limitation, because the perl script will do the calculation work, the PIC will only process pre-made tables.

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Thorsten

 

increasing the MIOS_SRIO_UpdateFrqSet to 32ms result to intermodulation around 30hz (31.35 to be precise), of course way better than the 1ms/1khz. The "fundamental" pulse still there even 10us (i was able tu reduce a little to sensitivities at 5 with shielded wire). Usable at mixing process, but not when printing the mix so an easy solution to desactivate the SR with a single button is an option. How it is easy to ad button function that is not a part of the user parameter in MF_NG tool ?

Also I run long wire (60/70cm) as mechanical integration is not easy, I think now I can't go to my first route with the pcb at the back of the console, I have to go with shorter wire and find room closer to the fader modules. I have 3 cm free under the armrest, needed to remove fader and channel by sliding in this modular system. I will find a solution to put the MF PCB here, with easy remove system to be able to service the desk.

 

 

This hasn't been forgotten... but please be a little bit more patient.

 

Before giving you any code I've to test it, because everything which hasn't been tested typically doesn't work due to unexpected reasons, especially when I'm doing changes in code that I wrote many years ago!

 

Of course !!! just give me (if you can and without any pressure at all) some time range?

 

 

----

 

 

ordinateur-de-zam:~ Zam$ perl -version

This is perl, v5.10.0 built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)

 

:smile:
 

 

There is no limitation, because the perl script will do the calculation work, the PIC will only process pre-made tables.

 

Cool ! you are cleaver :rolleyes:

 

Best

Zam

Edited by Zam

Share this post


Link to post
Share on other sites

Ok, please try this firmware:

 

http://www.ucapps.de/mbhp/mbhp_mf_ng_v1_005.zip

 

Once installed, follow the instructions of this README.txt:

http://svnmios.midibox.org/filedetails.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fmbhp_mf_ng%2Ftools%2FREADME.txt

 

I will officially release this version if you can confirm that it's working at your side.

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

I really like the whole concept, just one PCB for faders, and it's looking so easy! Thanks for sharing, can't wait to built my own 'little home console'

Share this post


Link to post
Share on other sites
Ok, please try this firmware:

 

http://www.ucapps.de/mbhp/mbhp_mf_ng_v1_005.zip

 

Once installed, follow the instructions of this README.txt:

http://svnmios.midibox.org/filedetails.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fmbhp_mf_ng%2Ftools%2FREADME.txt

 

I will officially release this version if you can confirm that it's working at your side.

 

Best Regards, Thorsten.

Hey Thosten

I don't expect this so fast !!!! you are amazing

I'm in the middle of mix session, I'm back to you asap :)

best

Zam

Share this post


Link to post
Share on other sites

Thorsten

 

I just have a quick test, here is my report:

 

I was able to generate the table without any problem

I understand (but I be wrong) that "cal_tables_only.hex" only change the table, but it reset the whole setting

 

Fader respond fine to the new table when monitoring position data in MF tool curve

Extreme setting for ex

my @x = (0, 765, 1023);
my @y = (0, 256, 1023);

get the PID lost and fader have oscilation

but I don't think some one use so extreme setting

 

I don't try more than 3 point for now

 

As I say i'm in the middle of mixing session, so i'm not able to put my motor fader in the desk frame, I can't check with audio passing trough and some 10 or more value table

 

Now, one question!

How can I monitor the 10 bits value data used, i can only monitor 14bits PB value to take and record the point I need for my table.

 

anyway great job !

tks a lot man.

 

Best

 

Zam

 

---------

edit: i have my answer

done with openoffice calc and some brain burning :rofl:

 

pitch bend value (+/- 14 bit) (say A data)

then B=A+8192 (to have a 0 to 16384 as B data)

then C=(B/16384)*1024 to have linear scale from14bits to 10bits

 

result seem more than realistic so I hope I'm right ?

 

now with "C" I have a direct value to edit my table :)

 

OK now I write all this and feel stupide...

here is the one formula conversion... C=((A/16384)*1024)+512 ...

Edited by Zam

Share this post


Link to post
Share on other sites

Ok, you already found out the required calculation by yourself! :)

 

 

How can I monitor the 10 bits value data used, i can only monitor 14bits PB value to take and record the point I need for my table.

 

For the case that it helps: in mf.inc you will find following lines

 

MF_Tick_TraceFader
        movff   ADRESL, MF_TRACE_VALUE_L        ; take original value from ADC so that AIN deadband doesn't matter!
        movff   ADRESH, MF_TRACE_VALUE_H

You could replace them by:

MF_Tick_TraceFader
        movff   MF_VALUE_L, MF_TRACE_VALUE_L        ; take original value from ADC so that AIN deadband doesn't matter!
        movff   MF_VALUE_H, MF_TRACE_VALUE_H

in order to display the translated response in MIOS Studio

 

There is no alternative way how I can help you to visualize the changes.

I know that the task to find a satisfying calibration table w/o further analysis is a challenge - but providing more sophisticated debugging helps would result into much more effort at my side.

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Thorsten

 

It's fine, I don't need more.

My only need is to know the 10bit value for a specific fader position to edit the table.

I have the formula, and I will try your code to have a direct reading in MIOS in place of PB value

 

On my side I will instantly visualize the change when monitoring the audio level, no need for other tools

 

Hope I can load the fader tomorrow or monday, and giving you a definitive feedback

 

Best regards

Zam

Share this post


Link to post
Share on other sites

hello

 

sorry for the delay, lot of work at the studio

currently testing the new table tool with the fader loaded, it work :)

 

I will give more feedback this evening, when I optimise my table

 

Zam

Share this post


Link to post
Share on other sites

Ok!!!

 

I made a 42 point table !!!, 1dB step from 0 (top) to -30 and 5dB from 30 to cut (bottom). the 0 to 30 dB is about 2/3 of the fader length.

I start with a 10-12 point, 5dB step table, but the 0 to 20dB is critical and realize that the audio taper from my fader is strange in this area, for example the 5 to 10 dB distance is smaller than the 10 to 15dB.

5dB table is accurate at the 5dB step spot but not between, so I decide "super accurate table"

Plus I have two fader so i measure both and made an average table

 

I have some listening test with stereo track send to both fader, channel full paned L/R, but unmatched level is made pre fader (test for 5, 10 and 15 dB L/R differential)

Then I compensate with fader, link them (group fader in DAW), and move one,  the second fader follow the the touched one with accuracy and keep the relative gain with success.

 

The result is a solid L/R balance without excessive floating center. I think the audio log taper tolerance is the most important factor in this effect.

I don't measure this, but it sound excellent to me, let say not more than +/- 3 ° in my 60° equi triangle monitor installation. Of course it's not so accurate at the bottom of the fader, but I don't care, and I'm not sure a more accurate table will resolve this

Anyway stereo tracking is WAY better compared to my actual stereo fader loaded in the desk.

 

The matching between DAW fader value and real analogue attenuation is the other aspect of this new table tool, and it work fine

I still have 4dB offset from reading value because my fader DAW is +6 max, but I don't care.

I think "relative" (as dB are) and if I reduce 7dB in the DAW my audio fader move down at the right position to reduce 7dB too

 

On side effect I think I can't solve, it's the DAW interpolation value when you are in the "positive" side of the fader (0 to +6)

when you are in this area with one fader the other (linked) folow closer and closer to reach the +6 at the same time, killing the relative gain.

 

For me this function is a FULL success, exactly what I'm looking for, Thorsten you are a MASTER.

Maybe at the moment i'm the only one that have some interest in this but i'm sure all of you will find this useful for some function, like matching a specific dB scale label in your front panel even if it's only a DAW remote, or have some custom curve response under the finger, super accurate in some area...

 

Tks a lot :thumbsup:

 

I have lot of work in the next few week, but i'm still aroud. In september i will prototype an analog PI controller from latest 90' analog automated studer desk.

No PWM, no H bridge, no motor noise... smoooooooth DC

I have to think how to substitute the MF board with the AOUT and his DAC, but keep your wonderful soft side

Is that easy to "just" remove the PID controller in the MF soft and assign output not to the PIC PWM but AOUT ?

 

best

 

Zam

Share this post


Link to post
Share on other sites

Great!

 

Thanks also for the detailed report. I guess that sooner or later somebody else with similar interests will come back to us. :)

 

> Is that easy to "just" remove the PID controller in the MF soft and assign output not to the PIC PWM but AOUT ?

 

yes, this would be easy. Do you have a schematic of the PID controller?

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

hey Thorsten

 

you can find the schematic here   ftp://ftp.studer.ch/Public/Products/Mixing_Analog/990/Manuals/990_Serv.pdf  page 115

 

Ufader (P9-7) come from the fader, servo track 0-5V (look at page 89, signal is also send to some Ain).

Usoll (P9-1) come from the processor board, IntelMCU out, analog mux/demux and flipflop is folowing (starting page 141), don't know the signal but i think it's DAC 0-5V.

That's here i'm thinking to plug some AOUT with "simple" PitchBend to CV (log with the new table tool).

We just need one output, this is the the target position from 0-5v, the motor direction is given by the sum from this voltage value and Ufader voltage. With 2.5V offset I guess.

 

The "stop motor" is also at analog side troughs Q5, don't know how to implement this right now I have to think about.

You have the sensor detection circuit at the bottom of the shematic IC3 IC4 Q6 Q7, not sure how it work, but maybe we can use TOUCH (P9-6) going to some AIN or SR so computer and DAW know that something is touched, and route this trough another AOUT going to ENABLE (P9-2).

There is no need for script that stop the PWM or (AOUT/Usoll) at this point, but send some CV to active the gate, and ground the driver input.

 

Voilà !

 

I take time (and friend help me!) to understand the schematic, don't be fooled !!! it's not an H bridge (my first visual impression), the 4 transistor are just current helper for IC1-1 and IC2-1 output.

 

Best

Zam

 

PS: I'm off link for the next 3 days

Edited by Zam

Share this post


Link to post
Share on other sites

Hi Zam

Can you explain me more bout the advantage of this?

I wold like to help you improve your Faders if i can learn something and maybe use it for my Fadercore afterwards..

br

novski

Share this post


Link to post
Share on other sites
Hi Zam

Can you explain me more bout the advantage of this?

I wold like to help you improve your Faders if i can learn something and maybe use it for my Fadercore afterwards..

br

novski

 

Hello Novski

i'm sorry to not be so active since few weeks, i announced analog PID proto for September, but I have lot of work at the studio, so it's delayed a little.

The advantage of analog driver (if it's the question), is a real variable DC signal. I hope both mechanical and electrical noise will be lowered.

After all test performed this summer I become convinced that analog audio signal and PWM/SH pulse are not friendly, I can't let this project with compromise. My "hi end" desk deserve the best.

Regards

Zam

Share this post


Link to post
Share on other sites

Hey all !!!

I'm back to this :)

I just ordered pcb from smashTV, in fact a 32 core, AIN, AOU, and DIO

now have to order the BOM for all this, and finish the analog PI pcb under eagle,

Phase II "Studer Motion" on the way :)

Zam

Share this post


Link to post
Share on other sites

I'm interested in using the MF_NG module to control a small fuzz effects pedal's pots. I was wondering if this would work find for motorized rotary poteniometers instead of high quality faders. I love to DIY, but after around 50 hours of day job and 30 hours running a studio, I don't have too much time to learn programming in depth. Could this provide a simple platform for me to send Midi CC's to individual motorized potentiometers to control them? I would be manipulating the pots real time with a controller as well as sending batch CC #s from a Midi preset box. It looks like that's exactly what it does, but since this entire world of digital/midi is a bit new to me I wanted to doublecheck.

 

Also, I've read previous mention of noise making it's way into audio through using motorized pots. If I'm using this for a fuzz pedal, I'm assuming I should keep the power and ground from this circuit completely isolated from the fuzz pedal? Any other tips?

 

Thank you!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now