Ebay Classic organs

Collapse

Announcement

Collapse
No announcement yet.

Beginner MIDI project

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

  • tbeck
    replied
    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.

    Leave a comment:


  • myorgan
    commented on 's reply
    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

  • jbird604
    commented on 's reply
    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!)

  • tbeck
    commented on 's reply
    For sure I'd rather believe in the multiverse than gremlins or poltergiests.

  • Admin
    commented on 's reply
    Bummer. Things pop in and out of the multiverse all the time. It will turn up, but in the meantime, I've found a strong flashlight used for illumination and focusing attention along with a strong magnet can often speed the reappearance of universe traversing objects.

  • tbeck
    replied
    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.

    Leave a comment:


  • tbeck
    replied
    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.

    Leave a comment:


  • jbird604
    commented on 's reply
    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.

  • tbeck
    replied
    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

    Leave a comment:


  • Admin
    commented on 's reply
    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.

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

    Leave a comment:


  • Admin
    replied
    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.

    Leave a comment:


  • tbeck
    replied
    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.

    Leave a comment:


  • tbeck
    replied
    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.

    Leave a comment:


  • tbeck
    commented on 's reply
    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.
Working...
X