User Forum    :: Powered by YaBB
  « MIDI-OX User Forum - Windows Scripting Host on win2000? »
Welcome, Guest. Please Login or Register.
May 9th, 2025, 9:02am


Home Home Help Help Search Search Members Members Login Login Register Register


   MIDI-OX User Forum
   MIDI-OX
   Scripting Questions
(Moderator: Jamie OConnell)
   Windows Scripting Host on win2000?
« Previous topic | No topic »
Pages: 1  Reply Reply Notify of replies Notify of replies Send Topic Send Topic Print Print
   Author  Topic: Windows Scripting Host on win2000?  (Read 2093 times)
Dimitri
New Member
*



MIDI-OX Rules!

   


Posts: 2
Windows Scripting Host on win2000?
« on: Aug 13th, 2002, 9:57pm »
Quote Quote Modify Modify

First of all I would like to thank you for your super app MidiOX. I use it as a midipatcher/filter to control my synths and secuencers from internal and external midi sources. And it works great, even for live performances.
 
But, as a programmer, I am also very interested in the MidiOX COM interface. I would like to write my own arpeggiator using WSH/Javascript. But in all the scripts I tested I couldn't receive any midi data from the COM object. I could send midi data, query devices, etc, but the functions GetMidiInput() and GetMidiInputRaw() never return any receiving data I see in the Input Monitor and Port Activity Window.
 
I run Windows 2000-SP3, with a Unitor 8, WHS 5.6. I use the following JS-script for testing:
 

function Mox_OnMidiInput( t, s, c, d1, d2 ) {
 WScript.Echo( t+","+s+","+c+","+d1+","+d2);
}
 
var Mox = WScript.CreateObject("MIDIOX.MOXScript.1","Mox_On");
 
Mox.ShutdownAtEnd = 1;
 
var msg = "";
 
var dev = Mox.GetFirstOpenMidiInDev();
while( dev ) {
 msg += "Input "+Mox.GetInPortID(dev)+": "+dev+"\n";
 dev = Mox.GetNextOpenMidiInDev();
}
 
dev = Mox.GetFirstOpenMidiOutDev();
while( dev ) {
 msg += "Output "+Mox.GetOutPortID(dev)+": "+dev+"\n";
 dev = Mox.GetNextOpenMidiOutDev();
}
 
WScript.Echo(msg);
 
Mox.FireMidiInput = 1;
Mox.DivertMidiInput = 1;
 
 
while( !Mox.ShouldExitScript ) {
 
 msg = Mox.GetMidiInputRaw();
 
 if( msg ) {
  WScript.Echo(msg);
 } else {
  Mox.sleep(100);
  Mox.OutputMidiMsg( -1, 146, 78, 127);
 }
}
 
WScript.Quit();

 
It gives the following output:
 

Input 3: Un In 03 (From MC 505)
Input 4: Un In 04 (From AN1X)
....
Output 2: Un Out 01 (To Elect-R)
Output 3: Un Out 02 (To Rs7000)
...

 
So that part works fine. But I never receive any Midi Data. Do you have a clue? Maybe some functions are known not to work on win2000? Maybe WSH/Javascript is the problem?
IP Logged
Jamie OConnell
Administrator
*****






   
WWW Email

Gender: male
Posts: 2027
Re: Windows Scripting Host on win2000?
« Reply #1 on: Aug 14th, 2002, 1:22am »
Quote Quote Modify Modify

I was able to run your script under Windows XP, and I got the Mox_OnMidiInput() routine to fire, but I had to comment out the "msg = Mox.GetMidiInputRaw();", because it was masking the MidiInput() messages:
 

  ...
  while( !Mox.ShouldExitScript ) {  
 
   msg = 0;
// Mox.GetMidiInputRaw();
 
   if( msg ) {  
     WScript.Echo(msg);  
   } else {  
   Mox.sleep(100);  
  
// Mox.OutputMidiMsg( -1, 146, 78, 127);
  }  
  ...

 
If you're not getting any MIDI input, try re-registering the app.  Go to the MIDI-OX folder and type:  
 
 MIDIOX.EXE /RegServer
 
You have to change to the app folder because of a command line processing bug (fixed in next release).
« Last Edit: Aug 14th, 2002, 1:24am by Jamie OConnell » IP Logged

--Jamie
Music is its own reward.

Dimitri
New Member
*



MIDI-OX Rules!

   


Posts: 2
Re: Windows Scripting Host on win2000?
« Reply #2 on: Aug 20th, 2002, 6:43pm »
Quote Quote Modify Modify

Thanx for you help, it works now Smiley But I noticed something strange using filters in the filter dialog. When I place a checkmark on a channel and do not place any checkmark on a filter type (note on/off, etc) all midi data on that channel will be received in the input-screen as expected, but will not be send to the listening WSH script. (That is also a reason why I didn't receive any data)
 
This means that I can not use any realtime filtering in combination with an active WSH script, doesn't it? Cry Is there a work around or maybe I do something wrong. I think a WSH script will not be fast enough to do all the filtering on 8 ports itself using 'DivertMidiInput'. I didn't check if data-mapping has the same 'blocking effect' for WSH scripts.
 
Dimitri
IP Logged
Jamie OConnell
Administrator
*****






   
WWW Email

Gender: male
Posts: 2027
Re: Windows Scripting Host on win2000?
« Reply #3 on: Aug 20th, 2002, 8:01pm »
Quote Quote Modify Modify

When you place a checkmark on a Channel in the filter, you are specifying that ALL data on the channel be filtered, and no data is passed to the Script or the Output.  You CAN use real-time filtering of input data before it is passed to the script. Only check channels that you want Filtered not the ones that you want passed.
IP Logged

--Jamie
Music is its own reward.

Pages: 1  Reply Reply Notify of replies Notify of replies Send Topic Send Topic Print Print

« Previous topic | No topic »


MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.