Ebay Classic organs

Collapse

Announcement

Collapse
No announcement yet.

Beginner MIDI project

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    If you can find a MIDI encoder that will handle 12V inputs, it would be as simple as making connections from the pads where the wires from the keys are soldered to the Rodgers PCB to your encoder inputs plus the 12V from the bus rod. It would be important to keep the Rodgers encoder in the circuit as it provides 12V and the resistors to pull the keying voltage back to 0V when a key is released.

    If you're willing to gut the Rodgers keying circuitry, unsolder each key wire from the PCB and connect it to the corresponding encoder input, then reconnect the wire from the bus rod to the encoder's key bus output. The piston buttons use a circuit similar to the keys, just feeding different inputs.

    --- Tom
    Rodgers 660 with additional analog rack sets (practice), 36D/C in digital conversion, Yamaha CVP-107

    Comment


    • #17
      Here are a set of boards with 12v inputs for a couple of manuals. The top board is an encoder/decoder that uses the Teensy 3.6. The larger boards are 64-input SPI boards that handle one manual each using 12v keying as the default mode. The bottom left board handles 32 stops, Allen drawknobs in this case where we reuse the Allen capture supply and the drivers which are attached at the back of each drawknob. I also show a small SPI buffered level shifter that helps with longer cable runs and in cases where it is desirable to run the SPI board at 5v instead of 3.3v.

      I keep promising to post complete info on the boards and I will !! The green I/O boards can be ordered assembled at great prices from JLCPCB. The encoder requires a Teensy at about $30. It's available from OSH Park and I hope to get a version ready for order from JLCPCB. In either case the encoder PCB is not assembled except I may have the voltage regulator and open collector driver IC mounted in the JLCPCB version. Gerbers, schematics, and parts lists are all available. Check my contact info on my web site below. Once I get all this properly posted there will be no need for me to be in the loop unless there are questions.

      Just as an example, 20 assembled 64-input boards ran less that $100 delivered by DHL. I ordered lead-free which is only a little more expensive. Small quantities are a bit pricier per item of course. It would certainly be possible to do a complete medium sized Allen or Rogers console for $150 to $200 plus perhaps a few incidentals like power supplies. A little more to include driver boards if doing a Rodgers with conventional SAMs as the Power MOSFETS get expensive.

      Click image for larger version

Name:	20200430_103314.jpg
Views:	213
Size:	172.8 KB
ID:	728952
      Attached Files
      http://www.kinkennon.com

      Comment


      • myorgan
        myorgan commented
        Editing a comment
        Thank you for sharing these boards, John. It's making me dream of ways I can use them in my applications!

        Michael

    • #18
      I finally had some success today on my MIDI part of this project anyway. I ordered an Arduino Leonardo which provides MIDI USB support without having to use a serial to MIDI bridge on the computer. Ultimately I want to have a foot switch-controlled MIDI device which will send a MIDI message to my VPO I can use to activate the Next button on the combination sequencer.

      I don't have a foot switch yet, but I do have an ultrasonic sensor which came with the starter kit I got from Elegoo. So I thought I could use a motion sensor activated by my foot to send the message.

      I've created the circuit on a breadboard using a MIDI USB library I was able to create a very simple sketch to send the MIDI message.

      I plugged the USB from the Leonardo into the USB hub and the PC recognized it as a MIDI device! I used GO auto-detect feature, moved my foot in front of the sensor, and that was all there was to it. Now all I have to do is move my foot whenever I want to change combinations without moving my hands off the keyboard.

      Of course it isn't ideal. I do have a foot switch on order. Also I have a breadboard and a micro controller on the floor with jumper wires. Not very pretty or durable. But before that becomes an issue, maybe I'll have some success re-MIDIfying my Rodgers console.

      Comment


      • jbird604
        jbird604 commented
        Editing a comment
        That is awesome! Glad it worked out so well for you. You'll be the resident MIDI pro soon!

    • #19
      The 830 is supposed to have a sostenuto function, and has a kick switch mounted on one of the expression pedals to perform this function. Look for it.

      In a PM you asked "Specifically I'm wondering if I can decode the output from the board that handles the keyboards using the existing ribbon connectors from the boards without having to do a ton of soldering." Rodgers data stream was proprietary and did not follow any sort of a standard protocol. So I don't know of any way to tap into it without a custom designed circuit. Surely designing that is more work than wiring the MIDI input board.

      The data scheme of this organ and others of the series for input data is a 3-wire connection providing clock, data, and strobe using 8-bit shift registers wired in sequence; for the input stream like keyboards the shift register provide parallel inputs from the keys, the clock moves the data through the serial stream, and the output comes on the data line. The strobe signal tells the shift registers when to bring the data in from the parallel inputs. Changes in the data are ignored when the strobe is not active.

      Comment


      • tbeck
        tbeck commented
        Editing a comment
        Thanks Toodles. I have a basic idea how shift registers work, and I realize it would be too much work to figure it out. I've never done any soldering and I don't know how long it would take me to become proficient enough to be able to do 2 manuals and pedal. Maybe I can hire someone.

    • #20
      I realize this should probably two threads: midifying the Rodgers, and working to provide some additional MIDI controls to my two-keyboard alternative setup.

      In any case, I've been working on BWV 590, the Pastorale in F. Only the first part has a pedal part. It's very simple, mostly pedalpoint with very long held notes. I don't have a pedalboard with my two MIDI keyboards, so it is frustrating not to be able to play the entire piece properly. Well, outside of my poor technique, that is.

      While waiting for a foot switch to arrive, I came up with the idea of using the Arduino as a MIDI controller to "play" the pedal line in the first part. As proof of concept, I wired a simple button to a breadboard. In the program, I created an array of notes corresponding to the pedal line (there are only 15 notes). So when the button is pressed it will send a MIDI note off event for the current note (obviously not necessary for the first note) and send a note on event for the next note in the array. When it reaches the end, it cycles back to the first. It just requires a momentary change of the switch to activate, so it isn't necessary to hold down the button, it plays the note until the next keypress. A long keypress (2 seconds) resets the sequence so it can be started again from the beginning.

      I've plugged this into the PC, set the pedals to listen to MIDI events from the pedal, and it works! Obviously it's not practical using the button, but when the foot switch arrives, it should work very well. I think I'll try to find some other repertoire that have very simple pedal lines. Now I need to find a way to store a set of sequences so I don't have to reprogram the board every time I want change sequences. Perhaps leave the button to cycle between sequences and use an LCD to display a number, or even a name?

      Well, it's keeping me occupied anyway.

      Comment


      • #21
        My foot switch arrived. I have a question about the wiring. It has three wires: black, white and red.

        My circuit will use the switch as normally high. Which wire is which? Is the white the common wire that I will attach to the ground pin? If so, then I assume the red wire will be connected to the input pin.?

        Any help would be appreciated.

        Comment


        • #22
          Ring it out with an ohm meter. Connect the leads to any two of the wires, for example, black and red. If you have continuity with the switch open, one of those wires is common and the other is NO (normally open) with the white wire NC (normally closed). If you don't have continuity with the switch open, close the switch. If you have continuity one of the wires is common, the other is the NO contact and the white wire is the NC connect. If you don't have continuity with either the switch open or closed, the third wire, white, is the common wire with red and black being the NO and NC contacts. To find out which, move one of the leads to the white wire and determine whether the black or red wire has continuity.

          Once you've determined the wiring of the switch, connect the common wire to ground and the NO wire to the switch.
          -Admin

          Allen 965
          Zuma Group Midi Keyboard Encoder
          Zuma Group DM Midi Stop Controller
          Hauptwerk 4.2

          Comment


          • #23
            Thank you admin. That's a great response. Have you ever written technical manuals?

            Comment


            • Admin
              Admin commented
              Editing a comment
              Thanks. Back thirty years ago when I was writing and publishing consumer software, and when software came with instruction manuals, I wrote the user manuals as well. As the tech support questions would invariably come my way, I learned pretty quickly how to better structure help. Being a software programmer, breaking down a problem into discrete steps goes with the territory.

          • #24
            Time for an update on the MIDI project. I've made a foot switch activated, remote-controlled dual mode MIDI controller with LCD using an Arduino Leonardo.

            In combination mode, the foot switch activates the "next" combination in the combination sequence. The remote controller can be used to set a specific combination number (from 0 to 999) or step forward or backward through the combinations. The display indicates the current combination number. As of now, the MIDI controller only sends, so if the combination setter panel on the VPO is used, the LCD doesn't reflect the change.

            My current VPO set up is two keyboards only, no pedals. So I created a foot switch controlled pedal sequencer. I create the sequences by capturing the MIDI output from a virtual keyboard in a MIDI monitor and saving the output in a text file. I wrote a little python script which reads the text file and creates another file with a comma-separated list I can pasted into the controller source code. The LCD displays the title of the sequence and the current note and pitch.

            The foot switch sends a MIDI note on event when the switch is activated a MIDI note off event when the switch is released and moves the sequence pointer to the next note. So in use, a note is played as long as the foot switch is down and stops playing when the switch is released. The remote controller steps through the sequences (I have seven so far) and also steps forward and backward through the notes to facilitate practice/screwups. I can also reset the current sequence to note 1 if I want to start over again.

            One problem with only having one switch is that it has to be completely released and then depressed to change notes, so it's hard to get a good legato. I've ordered two more switches. One I will add to the controller so that I can use both feet to facilitate a better legato, and the third to act as a dedicated combination sequence activator so that I can change combinations even when using the pedal sequences.

            One major drawback I have right now is that I don't have any external storage so the pedal sequences are hard-coded into the application. If I want to add a sequence, I have to update the code, recompile and flash the micro controller. Also, the internal memory on the Arduinos are quite limited. I'm thinking of adding an SD card reader to make the system more flexible.

            I'm enjoying listening to music with pedals again, even though I know I'm "cheating" it's better than nothing. It's also been a really fun adventure. I'm learning about electronics and I've gotten back into programming again, which I haven't done in over 10 years, other than writing some simple python scripts. The C language is definitely a pain, though. However, as i suspected the main difficulties have been dealing with the mechanical aspects of this project, rather than the virtual ones. Just connecting the foot switch was a big stumbling block. When I received the switch, I didn't have any proper tools, so I ordered a wire stripper/cutter, and some crimping pins. I also ordered a soldering iron with accroutrements but it seemed like crimping would be simpler. Well, without a crimping tool, it isn't so easy. I used needle-nosed pliers, and it works, but it's ugly.

            My next step is to practice soldering so maybe I can begin work on reMIDIfying my Rodgers console. I'll create a new thread for that when I start to get into it, because it really is a separate project

            Comment


            • jbird604
              jbird604 commented
              Editing a comment
              Wow, what a project! Thanks for documenting all this, and I'm sure many of us will benefit from your experience. Keep up the good work and keep on reporting.

          • #25
            I've been obsessed with keeping the combination number shown on GO combination setter and the MIDI controller in sync. It's not really important, but it seems sloppy to have them out of sync.

            So I set out to see if I could get the combination number from GO and as it happens, the label on the combination setter panel sends a sysex message when it changes.

            It seemed like it should be pretty easy to read that sysex and then update the lcd on my controller. Well, it turns out the reading MIDI messages is much harder than sending them. The MIDI library I'm using only reads packets of four bytes at a time, so the entire sysex message from GO has to be assembled and then parsed to get the combination number. Eventually I was able to read the combination number when I changed it in GO, but I was having no luck when I changed the combination from my controller. Here's the combination setter panel:
            Click image for larger version

Name:	combination_setter.png
Views:	94
Size:	168.2 KB
ID:	733227
            In order to set the combination from the controller, I enter numbers on the remote control and then activate the appropriate buttons on the setter panel. So if I want combination 865 I activate the +100 button 8 times, the +10 button 6 times and then the _5 button. After every one of these "taps", the label on the panel changes and triggers a sysex event. So I wasn't parsing the MIDI stream properly and ended up getting the wrong (or no) number.

            Eventually I figured out that I had to read the MIDI buffer a specific number of times for that particular message, rather than checking to see if I had received the last packet and voila, success. The MIDI controller and GO panel are now in sync.

            My next phase is to add the two additional foot switches. My hold-up there is that I want to solder the wires to a connector rather than use a crimping pin but my soldering woes are preventing me.

            Comment


            • #26
              Well it looks like my burgeoning career as a solderist might be over. Today I wanted to start practicing with the conical tip. So I removed the screw holding the tip in the iron and replaces the chisel tip with the conical tip. I finger fumbled the screw 2 or 3 times and the last time it flew away. It is a very tiny screw, but it is black and I have a white tile floor. So it should be no problem to find, right? Hah. It wasn't in the immediate area and after expanding my search with no success, I moved a few pieces of furniture around and swept everything into a dust pan. It's been a while since I cleaned this room, so there was a fair amount of dust and whatnot. I was going through that dustpan like a 49er but I didn't find the screw. I didn't find any gold either, but I had just about as much chance as finding the screw.

              So I'm pretty discouraged. If I'm too thumb-fingered to even put the tip on an iron, I don't think I'm going to be able to do any kind of fine soldering work. I also wanted to add a card reader to my MIDI project, but the breakout board I bought doesn't have the header pins soldered on to the board, so I wanted to see if I could get that to work, but now I don't even have a usable iron. I've done a quick search to see if I can find a replacement screw but so far no luck.

              Maybe it'll be cheaper if I pay someone's airfare to come to Puerto Rico when it's safe to travel and wire up my console.

              Comment


              • tbeck
                tbeck commented
                Editing a comment
                For sure I'd rather believe in the multiverse than gremlins or poltergiests.

              • jbird604
                jbird604 commented
                Editing a comment
                That is a bummer. If you have a well-stocked hardware store they MIGHT have the correct screw in stock. It could even be longer and have a different head, as long as the threads are correct so it will go down in there and hold the solder tip tightly in place. (And while you're at it, get several of the little buggers in case you lose another one!)

              • myorgan
                myorgan commented
                Editing a comment
                I've had the screw holding the tip on come loose when the iron heated up. I think, perhaps, it contracted when heated–but that's the reverse of what it's supposed to do when heated.

                Michael

            • #27
              I bought a mini SD card reader to add to this project. I wanted a way to be able to add pedal sequences to the controller without having to reprogram and reflash, On top of that, the Arduino Leonardo has very limited memory, so I couldn't store very many of the sequences on-board anyway.

              I've been playing around with the code for reading the sequences from the SD card. There is a library which makes the code relatively straightforward, however, as it happens, it also uses a fair amount of memory. This doesn't leave much overhead for storing even one relatively long sequence. I have the idea that I can read the sequence from the card one note at a time and then play it. So basically the app would fetch the note just in time to be played, then cache the next note to be played. I have this algorithm working, but I haven't yet tested it to see if the read and processing cycle is fast enough to use in real time. The deficiency of memory also means that I can only store a few sequence names in memory to scroll through to select the sequence to be played. Since I want more sequences than I can even hold the names of in memory, I have to scroll through the SD card directory and display the name. However, the card library only provides the ability to scroll forward through the directory, at the end of which, it is possible to "rewind" and start at the top once again. This is not really desirable.

              So I decided to upgrade my controller board. I bought a Teensy 4.1, which has a lot of memory and a built-in card reader among other goodies. I also bought a 2.8" color touchscreen display to improve the interface for my project. I haven't received the board yet, but I'm looking forward to using it.

              Comment

              Working...
              X