Zugriff auf Soundcard-Synthi per Script vbs js ws ps wmi? - Win32_SoundDevice?

...komplette Frage anzeigen

1 Antwort

Hey soweit ist das schonmal der richtige Weg Es wäre mal nett einen Code dazu zu haben dann kann man dir besser helfen =) Ansonsten kannst du mich gerne per Skype adden Name kommt per Pn =)

RoSiebzig 29.08.2013, 14:07

ok .. is halt der java code .. Haupt-Ding is eben MidiSystem.getSynthesizer  , dann kann man getReceiver(), getSequencer(), getAvailableInstrumensts(), getTransmitter()   usw machen ..

package myprojects.komponieren01;
import javax.sound.midi.*;

public class Komponieren01 {

  private static void spielMeineKomposition() throws Exception { 
   //Partitur {{Tonhoehe, DauerInViertelNoten, AnzahlWdh},...}
final int DATA[][] = {      // DATA[Anzahl geschweifte Klammern][wievieltes Element in der Klammer]
  { 55, 16, 2 },
..
  { 87, 2, 1 }
};
//Synthesizer öffnen und Receiver holen
Synthesizer synth = MidiSystem.getSynthesizer(); 
synth.open();
Receiver rcvr = synth.getReceiver();
//Melodie spielen
ShortMessage msg = new ShortMessage();
for (int i = 0; i < DATA.length; ++i) {
  for (int j = 0; j < DATA[i][2]; ++j) { //Anzahl Wdh. je Note
    //Note an
    msg.setMessage(ShortMessage.NOTE_ON, 0, DATA[i][0], 64);
    rcvr.send(msg, -1);
    //Pause
    try {   Thread.sleep(DATA[i][1] * 50); } catch (Exception e) {
      //nothing
    }
    //Note aus
    // ohne die folgenden zwei Zeilen wirkt sich aus, wie "mit Pedal"
  msg.setMessage(ShortMessage.NOTE_OFF, 0, DATA[i][0], 0);
  rcvr.send(msg, -1);
  msg.setMessage(ShortMessage.PROGRAM_CHANGE, 0, 48, 0);
  rcvr.send(msg, -1);       // .. scheint keine Wirkung zu haben ..
    } }
//Synthesizer schließen
synth.close();
  }

  public static void main(String[] args)  {
try {   spielMeineKomposition();    } catch (Exception e) {
  e.printStackTrace();
  System.exit(1);
}
System.exit(0);
  }
}
0
RoSiebzig 29.08.2013, 14:16
@RoSiebzig

.. und nichts von alledem steht in vbs & Co. so zur Verfügung .. es fehlt mir ein Synthi-Objekt auf das ich zugreifen kann (wie auf MidiSystem).

Geht das mit einem der CreationClassName DeviceID und PNPDeviceID ?

(kein Skype, übrigens)

0
RoSiebzig 29.08.2013, 14:26
@RoSiebzig

.. oder kann bzw muß man vielleicht   .sound.midi´   o.ä.WScript.Sound.Midi`   (??) importieren, geht das überhaupt irgendwie?

0
RoSiebzig 29.08.2013, 15:56
@RoSiebzig

.. hab hier gerade noch ´was entdeckt:   MCI Devices - sequencer  (zwar kein synthi, aber vllt is das schon der sequencer vom bzw für den soundcard-synthi)   mciSendString  . Nur, wie mach ich mir im und für´s script MCI und seine Objekte und Befehle verfügbar? .. importieren? .. eine bestimmte midi / mci °.dll laden/importieren/abrufen? .. oder geht´s problemlos per eine Windows-Variable? DCOM-Komponente? (get?)MCIDevice? CreateObject("WScript.MCIDevice")??

Wie hüpft man zwischen den etlichen specifications?

0

Was möchtest Du wissen?