|
||
Title: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Jun 23rd, 2005, 2:53pm Well, I've done my research to try and find a capable program on the 'net (was even willing to buy one, if reasonably priced), but was unsuccessful. So I'm going to write one that I can use in conjunction with MIDI-Ox and MIDI-Yoke. It'll be a simple "consume MIDI events and output audio or MIDI files" program, written in VB.NET (I downloaded the "Managed DirectX SDK" from Microsoft today) that will not use the Mox COM interfaces. However, I plan to give great kudos to Mox and the team for their amazing program. :P I still plan on using Mox for auto-rerouting on patch change events. Coupled with the program I hope to write, I'll have a very usable live MIDI setup that I'll be able to use to trigger sequences, samples (from hard disk), and bulk transfer performance information. (Perhaps I'll throw in the lyrical page turner like that other gentleman was requesting. Heh.) I'll be sure to keep everyone informed, but realize this isn't an overnight thing...especially with my already insane schedule. After I'm done, I may very well contribute the source to the Mox team so that they can continue to provide best-of-breed MIDI tools to the music community. :) Wish me luck. Let's see how well my 17 years of development experience serves me. :P |
||
Title: Re: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Jun 24th, 2005, 2:22pm I might as well make this a running journal, with Jamie's permission of course, of my discoveries. The first is that the Microsoft DirectX 9 SDK doesn't have any MIDI support in it. Go figure. I found some good stuff on Code Project's website, though. http://www.codeproject.com/cs/media/MIDIToolkit.asp For those of us who are C# and / or VB.NET developers, this toolkit looks very good. I downloaded it to my USB drive today and hope to fiddle with it during the upcoming week. It's received good reviews, though. (Note to Jamie: if you'd like me to refrain from posting this stuff in here, simply delete the thread or post in here to tell me.) |
||
Title: Re: MIDI Sequencer - Revisited Post by Jamie OConnell on Jun 25th, 2005, 12:21pm It's fine to post here. I think I may add a programming section at some point. If I do, I'll move this topic to there. ;) |
||
Title: Re: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Jun 27th, 2005, 1:29pm Heh. A general purpose MIDI programming section would be most welcome, I'm sure. Don't expect results to be quick. Between band practices, gigging, choir directing at church, the 8-ball pool team that I captain, and the weekends when my daughter is staying with me, you can easily imagine that I don't have a lot of free time. It's at times like these that I'm happy I type at 75wpm. Once I figure out what the hell I'm doing I'll be able to give it a whirl rather quickly. :) BTW, if anyone is curious, my band's website is at http://www.t-i-c.info. I'll have pictures from this past Saturday's gig up sometime this week. The site design and implementation were done by me. :P |
||
Title: Re: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Jul 6th, 2005, 9:16am Ok, it's taken me far longer to get started than I'd like to admit, but last night I finally fired up #develop last night and wrote a very simple test program in C# using the Midi Toolkit. Incoming messages from my MOTU MIDI Patch Bay were displayed on the screen (no screenies for you though, but they would have been uninteresting anyway). Links: #develop - http://sourceforge.net/projects/sharpdevelop MIDI Toolkit - http://www.codeproject.com/cs/media/MIDIToolkit.asp Both #develop and the MIDI Toolkit are freeware. Being used to Visual Studio from work, #develop takes some time to get used to in spite of the similar IDE. There are some key features missing as well, most notably a debugger. The MIDI Toolkit seems quite awesome. I've emailed the author a few times and he seems quite intelligent, as is affirmed by the design of the toolkit, which I think is quite good. I only spent 2 hours on the test application last night, which isn't much, but my awkwardness with the IDE started to frustrate me. Also, I've never written a real C# application before so I'm still acquainting myself with the language. And without a debugger it is more cumbersome than you can imagine. More updates to come... |
||
Title: Re: MIDI Sequencer - Revisited Post by JazzSinger on Jul 13th, 2005, 7:26am H'm. Seems the page for the miditoolkit has disappeared! Hope you don't mind me bothering you like this, but could you perhaps send it directly to me? milsyl at hotmail dot com Much appreciate it! Regards. |
||
Title: Re: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Aug 12th, 2005, 11:44am Sorry that it has taken me so long to reply. I took a 'net hiatus for a bit, at least during work hours. :) The toolkit is still there: http://www.codeproject.com/cs/media/MIDIToolkit.asp I'm not sure why it doesn't come up for you. |
||
Title: Re: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Aug 12th, 2005, 11:57am I guess it's time for an update. After the first sample program, I scrapped it and started again with the intention of building something I could use down the road. I have since designed several XML file formats that are used for configurations and instructions to the application. There is a song XML file that contains: - A list of patches / channel / port combinations to be used for this song - A list of routings that specify which MIDI in ports get routed to which MIDI out ports - A list of graph edges that specify which song file gets loaded next when a specific program change message is intercepted There is a port XML file that contains: - A list of MIDI ports and alias names. The aliases are used throughout the rest of the application. The idea is that you could move the other files to any other computer and simply modify the port mapping file so that the correct MIDI ports are associated with the aliases. Each port record points to a device XML file. There is a device XML file that contains: - A list of all patches for each type of device, including the Bank MSB and LSB as well as the Program number - Other miscellaneous device-specific characteristics The program accepts a port mapping XML file and the initial song XML file on the command line. Currently, Program Change messages are properly intercepted and the appropriate song file is loaded. All program change messages are sent out to the device in accordance with the song file's instructions. I am currently in the process of setting up the routing which is theoretically an easy job using the MIDI toolkit, but I seem to be experiencing a technical glitch. I am working with the author of the toolkit to resolve this. Once this is done, I will be moving the application to a multi-threaded architecture so that a thread pool will be used to playback MIDI sequences on receipt of a Note On event. The toolkit supports reading of MIDI files (and playback of the data inside) so the work for me will simply be setting up the thread pool and the communication mechanism. Ideally, I will then be able to move to using the Managed DirectX 9 SDK to add the ability to playback WAV (and hopefully MP3, WMA, etc.) files on receipt of a Note On event. I have the SDK but I haven't started reading documentation on how to use it. There are much simpler C# toolkits that allow for the playback of WAV data, but they seem to be limited to WAV only and only a single WAV at a time. DirectX, I believe, will allow multiple WAV outputs. (I'm not totally sure about that, though.) Then comes the hard work: building a UI for this. This will take me about 9 months (up to a year) to get something usable. But the core application (command-line) will be more than usable by that point, and I intend to incorporate it into my live rig as soon as I get to this point. This will allow me to see how well it performs and make any necessary tweaks. All in all, progress is being made albeit a bit more slowly than I'd like. Then again, I haven't had a lot of time to dedicate to this so I'm happy that I've made it this far. |
||
Title: Re: MIDI Sequencer - Revisited Post by Larry Salomon Jr. on Aug 24th, 2005, 10:04pm Latest status: The glitch I alluded to in the last post is resolved for the most part. Now, I have dynamically defined MIDI message routing working (for short messages...I'm ignoring realtime and SysEx). Next up is the multi-threaded architecture so that I can play back MIDI sequences and then the tough job of adding .WAV (and possibly .MP3 / .WMA) playback all triggered by the touch of a MIDI key. Stay tuned! |
||
MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1! YaBB © 2000-2003. All Rights Reserved. |