Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

Behringer CMD Micro DJ Midi Controller for use with Flex 6000

178101213

Comments

  • DH2ID
    DH2ID Member ✭✭
    edited May 2017
    Thank you, Chris. If you -or someone else - gets the program to run,
    I would be very glad to know the OS (7/10?) and any ideas, why it
    refuses to run on my PC's (I've tested only under Windows 7 32 and 64bit)

  • Steve G1XOW
    Steve G1XOW Member ✭✭
    edited May 2017
    I tried it for 2 minutes this morning before heading out for work.

    It would not load/run the 64 bit version (Windows 10 Creator edition 64 bit).

    Interestingly it looks like the main app was being removed by anti-virus measures but had no more time to check for sure.

    73 de Steve G1XOW

  • Craig Haggerty
    Craig Haggerty Member ✭✭
    edited June 2020
    Good morning, I had changed the initial IP address to my home computer.  This version changes it back to William's default.  Hopefully this will now work for all.  Here it is...

    https://www.dropbox.com/sh/j7f6b2udxoc9p72/AABrJsIwwuyidQ5qjgOT4sLEa?dl=0

  • Jason NR0X
    Jason NR0X Member
    edited May 2017
    I used the AGC slider for the B side.  Here's the code I used.

    if ((channel == 0) && (number == agcb)) {
    if (shift==true)
        {c.write("c44|display panafall set 0x40000000 bandwidth="+(map(value,0,127,0.03, 10))+" center="+FreqA+"
    ");}
        else
        {c.write("c44|display panafall set 0x40000000 bandwidth="+(map(value,0,127,0.03,0.92))+" center="+FreqA+"
    ");}
      }


    So I had to pick a zoom range.  To do this, I mapped the 0-127 range of the slider to between 0.03 and 0.92, which is just a tiny bit before the Wideband Noise Filter kicks in.  It's just under 1 mhz of bandwidth, which is usually plenty of room.  I also added an IF statement for the shift button though, so if Shift is ON, it will coom out to 10 mhz, instead.

    I think maybe I sould also figure out how to make it center the frequency as it zooms, though.  It's easy to lose the slice!

    I think a better way would be to use the Browse knob, and use it to scale the bandwidth by a precentage with each click. What do you guys think?

    I like this Processing IDE.  you can just click PLAY and it runs the program so you can see what happens right away.
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    Alex, I've had the same problem with the earlier version which i believe was related to USB or Java. I reverted to earlier version of Java and made sure to have Midi inserted prior to selecting SSDR that seemed to cure. Later updated Java and all seems well. Not sure of exact cause.
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    Forgot to mention I'm using Win7pro 64 bit
  • DH2ID
    DH2ID Member ✭✭
    edited May 2017
    Thank you for your answer, Bob. I'm also using your OS version.
    Update: Craig changed his program, which works now.
    73, Alex - DH2ID
  • DH2ID
    DH2ID Member ✭✭
    edited May 2017
    Thank you, Craig, works fine now.
    I'll be using the original software, though, as I want the tune button for the
    external tuner on top (without pressing shift first). It would be great,
    if you could program an options menu to individually set the buttons and
    sliders.
    73, Alex - DH2ID
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    I have not tried this interface since upgrading to Windows 10.  It worked fine on Win 8 & 8.1.  But here are a few suggestions that MAY help.  (or not...)

    Make sure that if you are trying to run the program that you are running the compiled version, not the source code version.  (They are in separate sub-directories in the un-zipped folder)  If you download "Processing" and want to run things, there are some files that need to be put in the directory with the source code if you are running it that way.  

    Search the original thread about the Hercules DJ2 controller where William and I had lengthy exchanges as he brought me up to speed on the program before he switched to the Behringer CMD Micro and started a new thread.  I am at the office right now and it has been over two years since I messed with this, so I don't remember the exact files/directories.

    Other thoughts:

    1) I seem to remember there being some frustration in that the program used the same UDP port that other software used and it tended to get bogged down or buffer overloaded.  The solution, I think, was in getting the program to open an additional port so that it didn't have to share all the data with the other programs on the port....  (Long time, don't remember).

    2) It may be that installing "Processing" puts some needed files in the system that enable the program to run. 

    3) I would love to see someone port this over to C# and abandon Processing altogether, even though Processing is very easy to learn and follow the logic and syntax.  (This may be a Summertime project for me if I can learn enough C#, but don't hold your breath....)

    Once you learn it, and understand the logic of William's program, it is very easy to modify, customize layout, add features and commands, and even reprogram for other MIDI controllers. It is a great option for those who cannot afford a Maestro, but need more control than the FlexControl Knob gives.  

    There are other Commercial programs out there that already interface with the CMD-Micro - Pegasus & SSDR-IOS are two that I know of. Pegasus is interesting, but more than I need with my 6500.  I plan to find an interface for my iPad that will allow me to use my controllers (Hercules DJ2 LE and Behringer CMD PL1) with my iPad Air. - especially after SSDR V.2.0 is released.
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    Craig (W0CHH) ....Could I suggest that you begin a new thread for this and include your links in the initial posting?  This may prevent your updated software links from getting burried in previous discussion threads and make it more easy for interested parties to find them, and this discussion....Thanks for your work to keep this software interface going!

    Ken - NM9P
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    ...Craig said: "I trust William will not mind if I release this here.  I would have direct mailed him, but I couldn't find an email address."....

    In my initial exchanges with William, I asked about this, and his response was that I was free to modify and share his code, as long as I put some comment in it giving him credit for his share of it, and that I did not commercialize it.  I had no problem with that.  

    In the early stages, we bounced a lot of ideas off of each other and shared a lot of code snippets . . . with William doing most of the heavy lifting.  Then our development took different forks, since we had different controllers that needed some different logic in some areas.  

    Then he got interested in other hobbies and time and energy for this project (and Ham Radio/Flex Radio) ran out.  I miss his input and innovation, But I understand that a person only has so much time and energy and can usually only pursue one or two great hobby passions.
  • Chris DL5NAM
    Chris DL5NAM Member ✭✭
    edited May 2017
    Ken, SSDR IOS has include since last version Behringer. Only a small adapter is needed. So Behringer runs also under IOS

    73 Chris
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    Ken et al
    sounds like a couple of good suggestions as the other thread is long and tough to find exactly what I want to see.  I find the midi box easy to use and I need to study 'Processing' to understand the coding...but I need to learn c# also...but at my age it's probably not going to happen.   As another note, I have a Maestro and got the adjustable feet but in looking at the fixed stand that came with it, I decided it would work as stand for the midi box and sure enough it does.  Had to add a couple of screws to attach.  Wonder if Flex would sell fixed stand separately?  
  • K5CG
    K5CG Danny Member ✭✭
    edited May 2017
    You could probably buy the stand as a replacement part. How wide is it? How well does the CMD Micro fit? Picture please!
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    As a suggestion.  
    In one version of the program, William had incorporated a rudimentary text configuration file to select a few function / key options and allow the user to enter the IP address of the rig.  I had planned upon capitalizing upon this.
     
    The way I had planned to do this was with an expanded text configuration file.  
    All of the defined commands would be given a name in the config file, and then they could be linked with a particular button or dial.  I planned to document the text file with the "#" lines so that it would be easy for others who received a copy of the software to know how to modify the config file.  

    When the program loads the config file, the un-commented lines become actual
    variable definitions as though they were part of the variable definition section of the program.  The advantage is also that the program would be easier for people to understand and trace because rather than merely having MIDI note numbers, they would see plain language command definitions.

    Example:
    ======================================
    # NM9P MIDI Controller Setup

    # Edit this line with the IP Address of your rig
    HamRig = 192.168.76.207

    #Define Controller
    MIDIController = "CMD-Micro"


    #Link Radio Command 
    #Commands that are not assigned a value will not be available.
    # Buttons

    PTT  = 13
    Mode Select = 15
    Filter Select = 16
    VOX Toggle =  25
    RIT = 26
    RIT CL = 27
    XIT = 28
    XIT CL = 29
    Mute Slice = 
    WNB = 
    CWX1 = 41
    CWX2 = 42
    CWX3 = 43
    CWX4 = 
    CWX5 = 

    # etc, etc, etc,     

    # Dials & Sliders

    # Most dials and sliders return a value of 0-127 which is translated in the program to
    #    a control range of 0-100, 0-50, or others, depending upon the control function.
    # Enter in the format: ( control number, low value, high value) if you desire
    #   a control range less different from the standard.  
    #   Numbers without limits will default to the control's standard range.
    #   For example:  
    #   "CW Speed = 65, 15, 45" sets the CW Speed control to MIDI control number 65
    #    and sets the CW Speed range of the control from 15-45 WPM.

    CW Speed = 65, 15, 45
    TX Power = 66, 0, 100
    AGC-T = 67
    Line Gain = 68
    Headphone Gain = 69
    RIT = 70
    XIT = 71

    ===================

    you get the idea.

    Names and numbers are for illustration and are not actual button definitions.
    By using string names for the Midi Key controls, the Config file the various subroutines can be written so that instead of searching for the actual MIDI "note" assignment of the control, it would ask i the key pressed was "TX Power" which has the value of the key assigned to the desired button.  

    Then instead of editing the program every time you wanted to reorganize the layout, or even if you wanted to use it on a different MIDI controller, you just edit the Config text file.  All of the name & number translation are in the individual command definitions, including control range calculations.  

    I had planned to put routines for as many commands as I could think of, each one given its own name in the config file.

    Then changing controllers or reorganizing the command layout would be a simple matter of editing the text file.  I could even have a selector to choose multiple config files - for casual, dxing, contesting, remote operation, etc.

    As I expanded the program, adding additional control options, All I would need to do is add the short If/then/else statement, with the new function name as part of the formula, and then add that name to the configuration text file and assign it a MIDI key number......

    It seemed a lot simpler, as a relative noob to the program, than creating a GUI window to assign controls to functions.

    But, unfortunately I never finished the project. 
    Perhaps this may give some ideas to someone else working on it.

    Ken - NM9P
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    Ok I'm traveling at present but will post pix when I return. The stand fits very well and you just have to position it to have attachment screws to not interfere with battery cover etc. Midi bos sits at about 30-45 degrees from horizontal. Pix will show.
  • K5CG
    K5CG Danny Member ✭✭
    edited May 2017
    PLEEEEEEEEEEEEASE! This would be awesome.
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    Danny If I don't post over the weekend remind me
  • DH2ID
    DH2ID Member ✭✭
    edited May 2017
    That's very good, Ken. For easier setting a dropdown menu would be great.
    I really like the Behringer CMD micro, using it all the time.
    image
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    I had only planned on doing it this way because I am completely unskilled with drop-down menus and the like!  I DO know how to edit a text file!  A visual menu system of some sort was going to be a second or third phase.  Probably after I ported it out to C#.  Someday............

    You guys are starting to stir my interest up to the point that I may give this another shot this summer....  That's all I needed...another project!  ha ha.

    BTW...nice picture.  I never thought about hanging one from a shelf.  I may need to try to find a good deal on a CMD Micro.  My CMD PL1 is HUGE!  
    But I cannot afford to have THREE different MIDI controllers lying about...
  • DH2ID
    DH2ID Member ✭✭
    edited May 2017
    Ken, I just put it there so nobody asks me where all the knobs are :-)
    Just joking...
    But I'm really glad that the program gets further developed, being
    strictly a hardware guy myself. I had to learn a bit FORTRAN and C when I was
    at Heidelberg university but I really can't program well ...
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    Here is pix using Maestro standimage
  • Bob- W5TX
    Bob- W5TX Member ✭✭
    edited May 2017
    image
  • K5CG
    K5CG Danny Member ✭✭
    edited May 2017
    That's pretty nice! Thank you!
  • Paul Burton
    Paul Burton Member ✭✭
    edited June 2020
    I have been working on an implementation of Flex-CMD Micro DJ Midi Controller in Flexlib using Visual Studio 15 and C#.  It is pretty much complete except that interrupts from the big tuning knobs need to be slowed down when they are turned too fast.  I haven't figured out how to do that.  It's custom tailored to my liking (different from the previous implementations) but a different compile with different preferences is pretty easy.  

    It might be interesting for someone who wants to play with it more.  I am willing to provide source for this, but don't currently have a repository for distributing it.  Let me know if there's interest.

    Paul
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    Have you examined William's source code to see his ways of slowing down the response of the main tuning wheels? It incorporated a touch-knob speed-up, and counting routines to reduce the response , requiring more "clicks" to count up before it advanced a step.
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    Btw. I would love to see it, if nothing else to see how you handled I/O routines. I am a total noob at C#.
  • Paul Burton
    Paul Burton Member ✭✭
    edited May 2017
    Ken - I briefly looked at William's source but was really interested in doing my own thing, and anyway Flexlib/C# programming is totally different from the Ethernet API thing.  If the tuning knob is turned too fast, the tune control's message queue gets overloaded and the tuning slows down dramatically.  I need to somehow detect that the message cue is being overloaded so I can throw away some of the messages and increase the tuning step. I'm a bit of a newbie at this so it takes me a while to figure out these challenges, but that's the fun of it when it finally works.

    I will have to find a place to disseminate the C#/Visual Studio source plus a setup/MSI package for installing the program outside VS   I'll let you know on this thread when I get it ready.  Be aware that I've reassigned many of the controls to my liking, so it's different from William's.  Hopefully it will help you get going.

    Paul

  • Asher - K0AU
    Asher - K0AU Member ✭✭
    edited March 2020
    I've written two versions of this in C# - one as a native Windows Forms app. Then I ported FlexLib to .NET and rewrote as a web app using the Chrome browser.  Chrome has a native MIDI driver which simplifies the client. For the WIndows version I used a MIDI library to ingest Midi device events.  I have not had trouble with Midi event overruns.  However I did have some trouble with event overruns in the web version with FFT streams, and used a foundation class called "BlockingCollection" that should give you enough control if you use a producer task to take Midi events and a consumer task to process or discard if too many events are in the processing queue.

    It's been a few months since I touched either code base, but what you're doing should work out fine and the action code is actually pretty simple once you build the scaffolding.  I built my Windows app using a Dictionary of action routines indexed by MidiEvent.  Performance is fine.
  • Ken - NM9P
    Ken - NM9P Member ✭✭
    edited May 2017
    I would suggest taking another look for the sake of understanding the logic he used, not the exact code. You may be able to port the logic solutions over to C#. On a related matter. I remember a thread on the API where Steve said it is often best to group frequency stepping units together when the changes are rapid and send it in one burst of a consolidated number. So that you are not sending too many commands too quickly. I.e. if you have 10 steps of 10Hz in 50 ms. then you send one command step of 100 Hz instead of 10 individual steps.

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.