Ebay Classic organs

Collapse

Announcement

Collapse
No announcement yet.

Beginner MIDI project

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

  • tbeck
    commented on 's reply
    John, it never occurred to me to try to "monetize" my work. But if I could find a way to get a new console I'd be very happy! I'm thinking that maybe I should have spent the energy and time into trying to midify my console or get it repaired, but I really have enjoyed learning new technologies. If or when I get a working console I'll no longer have need of the pedal sequencing aspect of the project but I really like the combination functionality and I can see using it even with a standard console. I'll have to look into other platforms to make it a little easier to program and integrate into a standard PC VPO setup.

    Thanks for your encouragement.

  • jbird604
    commented on 's reply
    I am absolutely astounded at the functionality you've built into this. Necessity is indeed the mother of invention!

    Surely all this coding and devising could be useful to other organists, and there ought to be a market for your product. Maybe you can somehow leverage this to get yourself a new console shipped right to your home! I surely think your skill and industry is worth a lot, though I know we all exist in a universe where there isn't all that much market for our organ ideas.

    Good luck and keep up the good work!

  • tbeck
    replied
    I've made some changes in the functionality of this project.

    I began using a graphical windows framework which allowed me to make significant changes in functionality to the controller. I was able to eliminate the IR remote. All the functionality provided by the remote is now available on the touchscreen. The framework provides an excellent alpha-numeric keypad for entering data which has opened up a lot of possibilities for this controller.

    The application consists of four screens: Performance, Work, Sequence and Expression.
    On the Performance, or main screen, are widgets which scroll through and select the piece of music (work) which has been stored on the SD card. For each work, there are widgets for that work controlling the pedal sequence and combinations. Both pedal sequences and combinations for the work can be fast-forwarded to the end, rewound to the beginning or stepped through sequentially in either direction. Of course, foot switches also control both the sequence and combinations. There are two foot switches for the pedal sequences (right and left) and a middle foot switch for selecting the next combination in the combination sequence. I'll go into the combination functionality more fully at the end of this post. Also available are general cancel and combination set buttons. Use of these buttons provides the functionality without having the combination setter panel in GO open. Since I don't have a touch screen attached to the PC, this is welcome functionality.

    Information stored for the work and displayed on the Work screen consists of: the title, file name, volume (name of book, if applicable), page number within the volume and number of combinations. Entering a new work is now relatively simple. Before I had this framework, I had to remove the SD card and mount it on the PC and create the file in a text editor. Now I can simply use the alpha-numeric keypad to enter the information and create a new file directly on the SD card.

    I've upgraded the functionality in this app to enable me to create new pedal sequences directly from the app. Formerly, in order to create new sequences, I had to load a midi monitor to monitor one of the keyboards. I saved the midi messages to a text file and then ran a python script to remove all but the note on messages. I had to remove the SD card from the midi controller and mount it in the PC and save the text file and then remount the card in the controller. It worked but it was very tedious. When I create a new sequence now, I click the "Record" button on the sequence screen and it monitors the midi output stream from a keyboard and writes only the note on messages to a sequence file associated with the selected work. This is a much more efficient way to create new pedal sequences.

    The expression page has five slider controls that can be linked to expression pedals in GO. My current setup does not have any expression pedals at all, so I can use this in initial setup of a registration for a work. Of course it is useless during performance, but it was easy to add, so it's there if I want to use it. One aspect that is potentially useful is that I can directly enter a number between 0 and 127 (the full range of expression) to set a level. I'm considering saving expression level number in the combinations.

    This app has provided me with a solution to a problem that has vexed me for some time, i.e., how to archive or manage my combinations. I've asked the question here and other places as to how people remember or store their combinations for a given work and received many different solutions - from writing the combinations in the music to maintaining a spreadsheet. I don't like writing on the music. I'm also not very organized. In order to save the combinations in a spreadsheet, I would have to have the spreadsheet open on some device, or write the combinations and work on a pad or piece of scrap paper and then enter them into the spreadsheet later. I just can't do this. I'm too lazy or disorganized or something. And there is never a pen or pencil around when I want one. So I've come up with a system using this app/controller which I find very satisfactory. In fact, I may continue to use this even if I ever get my console working again and have real pedals.

    For each work, I specify the maximum number of combinations I think I will use. For many works, this is never more than one. For the others I do some work on the piece and see where I think I want the changes, then when I enter the maximum number of combinations for a work, I usually pad it out by one or two. The app then looks up the next free combination number, which is saved on the SD card and adds to the work file the next sequential combination numbers. So for instance, if the next free sequence number is 200 and the maximum number of sequences is 5, it reserves 200 through 204 for the work on the SD card. Now when the work is selected it automatically sets the combination in GO to 200. I can step through the combinations either using the foot switch or the widgets on the Performance panel. I can set the registration for each combination using the set button, step to the next combination, and continue setting the registrations for the entire piece. The combinations are then save in GO. Subsequently whenever I select that work, all the combinations are available and I never have to notate or even remember or care about the combination number.

    Of course it's disadvantageous not to be able to alter the number of combinations for a given work. I'm considering upgrading this to maintain a "map" of used combinations so that I can add combinations to a work simply by finding a free combination and adding it the file for that work. Removing a combination from a work would simply entail marking that particular combination as free. I've even considered an even more grandiose plan of managing the combinations outside of GO whereby I would actually maintain which stops are used in each combination and save that info in a file. Of course, that implies that I would have to have a file for each sample set. It's a lot of work with potentially not much payback. It might be fun, though and it would allow me to save expression pedal settings in the combination as well.
    Last edited by tbeck; 12-13-2020, 08:29 AM. Reason: Fixed some typos.

    Leave a comment:


  • Larason2
    replied
    Ah, I somehow missed page 2 of this thread. Sorry, new to this forum. Based on what I have read of your accomplishments with the MIDI board on this thread, you shouldn’t have too much trouble taking out the Rodgers electronics and adding your own. You could order a pre-made board from a company like Midi Boutique, but given your skills already with the teensy, it shouldn’t be too hard for you to midify the whole console with multiple teensy’s. If you do pull out the existing circuitry, I would hold onto it. I took the existing circuitry to the recycling station, only to discover later that some of the electrical components I discarded would have been useful with other aspects of the project. You might be able to reuse the existing wiring harness, with either a converter board for the teensy, or make your own converter board using a proto board. You can mount circuit boards to wood using metal standoffs and small screws. I would encourage you to keep working on it, you would be amazed what you can accomplish with persistence!

    Leave a comment:


  • tbeck
    commented on 's reply
    Well, actually I made my own MIDI foot switches for this project. I don't really have access to other consoles or electronic organs with AGO specs. So it's either start from scratch and build one (which I don't really have the woodworking skills to do) or fix the one I have.
    Last edited by tbeck; 09-21-2020, 06:16 AM. Reason: Fixed a typo.

  • Larason2
    replied
    I removed the circuitry from a Yamaha Electone organ from the 70’s, and rewired it to work with a midi controller from Midi Boutique (Largonet). It is a time consuming project, but I am very happy with the results. This would probably be more feasible than trying to get the Rodgers working again. I have looked into getting an expression pedal working with an arduino board, and I even bought all the components I need to do it, but lately I have been focusing on other projects. I feel like learning how to program the arduino is going to be time consuming. There are some midi foot switches available, some relatively inexpensive that I would consider while you look into getting the Rodgers working again.

    Leave a comment:


  • tbeck
    replied
    Time for an update. I migrated from the Arduino Leonardo to Teensy 4.1. I'm also using a 3.2" (the less said about my first one, the 2.8", the better). I actually managed to solder on the header pins without frying the board, so that was an accomplishment. The Teensy 4.1 has a mini SD card reader onboard, which I'm using to store sequences, and now, combination data.

    Upon booting, the program loads all the sequences file names and titles loaded on the SD card. Sequences are selected by scrolling through the list using a remote controller. As the sequence information is displayed on the screen the program loads all the note data into an array, which is played by a right and left foot switch. Pedal notes play for as long as the switch is down, thus facilitating legato and playing two notes at once. Keys on the remote controller step through sequence, forward or back. Pressing '0' on the controller resets the sequence to the beginning. The sequence "wraps around" to the beginning when the last note is played. Combinations can be selected by number from the remote controller. The program reads MIDI sysex message from GO in order to keep the combination number displayed on the controller in sync. So if I change the combination from the controller, or from the GO interface, the correct number is displayed on the controller.

    I've been thinking about implementing my own combination/capture system so I've add some functionality to this program. If a combo files exists for the selected piece it is loaded and can be stepped through using a middle foot switch. The combination is activated when the sequence is loaded so it is possible to start playing without looking up a combination and entering by hand. When the last combination is reached after stepping through, no more changes are made if you press the middle switch by mistake. The combinations are reset to the beginning when the sequence being played is reset. The system I'm playing around with right now, at least for the Bach works I play, is that the BWV number is the default beginning combination. In order to avoid running out of gaps between BWV numbers, I choose sequential numbers for combinations starting with 1. Of course many of the pieces don't need registration changes, but I can add as many changes into the combination file that I need. I keep note of the last number used and start the next set of combinations with a small gap in case I want to add some registration changes to an existing work. This system allows me to set up combination sequences that are not necessarily contiguous. One of the frustrations of using combination sequences occurs, at least in GrandOrgue, when you want to add a registration in the middle of a sequence. This displaces all of the subsequent combinations by one and your carefully documented combination settings are invalidated if you don't remember to go to the end of your sequence and then delete a combination. Which I've done on many occasions. With my system, the combination numbers are mapped into an array and actuated with the middle foot switch. This system is not without it's tedium, of course. When I'm creating the combinations, I have to keep track of which numbers I've used and them create the combo document on the SD card. I've started with a fresh slate, so I intend to use sequential numbers to make it easier to enter and keep track of. I'll use a range of numbers for the initial for the default combination for each piece, and then subsequent numbers can be used for any registration changes. Since most of Bach's organ music falls within a range of BMV numbers, this won't be a problem. I think I'll save the Bach combinations as a separate file so that I can use other ranges for different composers.

    Eventually I would like to automate creating the combo file and keeping track of the last number used in code by possible starting a capture session, then stepping through the combinations as the program stores them and then rights them out to a new file on the SD card.

    To that end, I want to use the touch screen for entering the filename and title for a work as well as initiating the capture session, etc. I've been experimenting with using the touchscreen for input, and it's fairly tedious. I'm using a library called GUIslice which provides a framework for adding visual controls, such as listboxes, sliders, number and alpha keypads, etc. It has a tool to use on the desktop which is used to create your GUI. You can then export the code created and use it to add event handling, etc. It works pretty well so far, but I'm just starting out with it.

    Since the program has grown and gotten more complex the limitations of the Arduino IDE has become apparent. I'm using Platformio with MSCode as the IDE and when it works, it is a much more pleasant experience than the Arduino IDE. Unfortunately, I cannot get the GUIslice code to compile or work properly with Platformio. It works fine in the Arduino IDE, but with Platformio it either won't compile in one configuration, or in another, will compile but won't accept touchscreen input. If anyone has any experience with this platform, I'd appreciate some help.

    Here's the display. It's not elegant, and does not have any of the GUIslice controls.
    Click image for larger version

Name:	MIDI controller_forum.jpg
Views:	144
Size:	869.7 KB
ID:	742527

    Leave a comment:


  • 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:	226
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.
Working...
X