[wdmaudiodev] Re: Generic Virtual MIDI-driver...

  • From: "Bob" <rfreeze@xxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 23 Mar 2009 09:22:11 -0500

This sounds like a great idea.  I like the specs.

I have a virtual MIDI driver (WDM) I wrote 2 or 3 years ago that I will
donate the source for IF somebody is going to run with this idea.  I don't
have time to offer further contribution.

What I did was basically join a couple of examples and replace the READ and
WRITE calls with read/write to a buffer instead.  All it does is send
whatever it receives to the other side.

It's not pretty being a rather brute force approach, but if it gets
something going I'm game.

 

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Tobias Erichsen
Sent: Monday, March 23, 2009 7:25 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Generic Virtual MIDI-driver...

Hi everyone,

like I wrote in my last mail from Friday I would highly welcome a
complete MIDI-driver-
sample that implements the following functionality:

- Software-only (like MSVAD)
- Private interface for applications (either by custom KS properties or
private IOCTLs)
- Dynamically creatable/destroyable MIDI-ports with freely configurable
friendly-name
  without the need for any reboots
- the created MIDI-Port is accessible to all kinds of standard
application through
  the standard interfaces like "old-school" MME API, DirectX...
- The "backend" / "virtual-hardware" side of the MIDI-port is
implemented by the application
  (if someone needs some clarification on how this would work, I can
provide with a more
  thorough description)

This kind of driver would allow for all kind of cool functionality:
- DAW-applications could create MIDI-ports on demand to interface to
other stand-alone
  applications for MIDI-message-exchange
- Special-operation MIDI-port(s) can be created by just writing a simple
user-space application
  or service.  Making a multitude of functions possible like:
        - MIDI-over-NET tunneling
        - MIDI-patchbays
        - MIDI-filters

Apart from the "real-world" uses, the driver-writer-community has some
benefits as well
- For many applications the need of writing a driver would be eliminated
totally!
- Serve as a blueprint for other driver-writers on how to implement this
functionality 
- Functionality that has not been that well documented (like dynmaic
creation of ports,
  dynamic friendly-names etc.) can be deduced rather easily by browsing
this sample.

It would by highly convenient if such driver could be incorporated into
the standard-shipment
of the next Windows OS version.

In the last couple of years (and especially in the last months) a large
number of companies &
individuals have asked many times for information about writing drivers
which each implement
some of the functionality I have sketched out above - having a generic
driver which implements
the sum of all those request would really bring forward the
DAW-community (both on the developer
& on the user side)

I would be willing to start up such an endeavor but I must admit that
apart from having written
several device-drivers (in other areas) already, I have no intimate
knowledge about the imple-
mentation of the kernel-streaming-mechanisms on the driver side - so any
help from other
interested parties would be highly welcome.  Especially the area of
private-interfaces and
dynamic creation/destruction of ports with a free friendlyname is
something that is still
a closed book to me...

I have thought about a driver that would be called VMIDI.SYS
implementing the functionality
described above and also having a matching DLL: VMIDI.DLL which creates
an easy to use user-
space DLL for applications to interface to this driver in a
standard-way.

So any feedback on this subject is highly welcome (hopefully some of the
folks who have
asked for such stuff in the past are still monitoring this mailing-list
to get feedback
if this contemplated driver would implement most/all of what they were
trying to achieve :-)

Best regards,
Tobias
******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: