JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=bf7cde751e7634259b1318785982248dMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

MIDI -Send!

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 14.08.2004, 14:13    Titel: MIDI -Send! Antworten mit Zitat

Kennt jemand ein Tutorial über MIDI mit dem ich selber die Töne erzeugen kann und am Besten mit den wenigsten Zeilen Code?

Ich will einfach nur das Statusbyte und die zwei Datenbytes senden können. Und keine MidiFiles dazu einlesen müssen um Töne wiedergeben zu können.
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 20:19    Titel: Antworten mit Zitat

Ich hab es jetzt geschafft soetwas zu coden, aber es funktioniert nicht...eigentlich sollte man einen Ton durchgehend hören, bis man eine Taste drückt, klappt aber nicht...wisst ihr zufällig woran es liegen könnte?
Code:
#include <windows.h>
#include <dsound.h>
#include <dmusici.h>
#include <conio.h>


#pragma comment (lib,"dxguid.lib")
#pragma comment (lib,"dsound.lib")


   // >>>>>> Main status bytes of the MIDI message system <<<<<<

   // Note off event
   const BYTE NOTE_OFF         =   0x80;

   // Note on event
   const BYTE NOTE_ON         =   0x90;

   // Program change
   const BYTE PATCH_CHANGE      =   0xC0;

   // Polyphonic Key Pressure (Aftertouch)
   const BYTE POLY_PRESSURE   =   0xA0;

   // Control Change
   const BYTE CONTROL_CHANGE   =   0xB0;

   //Channel Pressure (After-touch).
   const BYTE CHANNEL_PREASURE =   0xD0;

   // Pitch Wheel Change
   const BYTE PITCH_BEND      =   0xE0;






IDirectMusicPerformance8* m_pPerformance; // Performance interface




HRESULT SendMidiMsg(IDirectMusicGraph8* pGraph,BYTE bStatus,BYTE bByte1,BYTE bByte2,DWORD dwPChannel)
{
   HRESULT hr = -1;

   DMUS_MIDI_PMSG *pDMUS_MIDI_PMSG = NULL;
 
    // Allocates memory for the message

   if (FAILED(hr = m_pPerformance->AllocPMsg(sizeof(DMUS_MIDI_PMSG),(DMUS_PMSG**)&pDMUS_MIDI_PMSG)))
      return -1;
   
   pDMUS_MIDI_PMSG->dwPChannel = dwPChannel;
   pDMUS_MIDI_PMSG->bStatus = bStatus;
   pDMUS_MIDI_PMSG->bByte1 = bByte1;
   pDMUS_MIDI_PMSG->bByte2 = bByte2;
   
   // Stamps the message

   hr = pGraph->StampPMsg((DMUS_PMSG*)pDMUS_MIDI_PMSG);

   if (SUCCEEDED(hr))
   {
      // Sends and frees the message

      if (FAILED(hr = m_pPerformance->SendPMsg((DMUS_PMSG*)pDMUS_MIDI_PMSG)))
      {
         m_pPerformance->FreePMsg((DMUS_PMSG*)pDMUS_MIDI_PMSG);
         return -1;
      }
   } else m_pPerformance->FreePMsg((DMUS_PMSG*)pDMUS_MIDI_PMSG);

   return hr;
}




HRESULT SendMidiMsg(BYTE bStatus,BYTE bByte1,BYTE bByte2,DWORD dwPChannel)
{
   HRESULT hr = -1;

   if (m_pPerformance == NULL)
      return -1;

   // Gets the graph

   IDirectMusicGraph8* pIDirectMusicGraph;
   
   if (FAILED(hr = m_pPerformance->QueryInterface(IID_IDirectMusicGraph8,(void**)&pIDirectMusicGraph)))
      return -1;
   
   SendMidiMsg(pIDirectMusicGraph,bStatus,bByte1,bByte2,dwPChannel);

   return hr;
}















int main()
{
   CoInitialize(NULL);
   CoCreateInstance(CLSID_DirectMusicPerformance,NULL,
      CLSCTX_INPROC,IID_IDirectMusicPerformance8,
      (LPVOID *)&m_pPerformance);

   m_pPerformance->InitAudio(NULL,NULL,NULL,DMUS_APATH_DYNAMIC_STEREO,64,DMUS_AUDIOF_ALL,NULL);


   SendMidiMsg(NOTE_ON,64,127,1);
   getch();
   SendMidiMsg(NOTE_OFF,64,127,1);

   m_pPerformance->Stop(NULL,NULL,0,0);
   m_pPerformance->CloseDown();
   m_pPerformance->Release();
   m_pPerformance=NULL;
   CoUninitialize();

   return 0;
}

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 17.08.2004, 21:20    Titel: Antworten mit Zitat

Im Petzold is dass ziemlich cool beschrieben. Da kann man sich denn auch mit der Tastatur ein kleines MIDI-Keyboard coden, Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.08.2004, 06:08    Titel: Antworten mit Zitat

MiracleBoy hat Folgendes geschrieben:
Im Petzold is dass ziemlich cool beschrieben. Da kann man sich denn auch mit der Tastatur ein kleines MIDI-Keyboard coden, Wink


Genau so was will ich auch machen. Razz

Aber 73,50€ ...im Moment hab ich fürsowas nicht soviel Geld... Crying or Very sad
[url=http://www.amazon.de/exec/obidos/search-handle-url/ix=books-de-intl-us&rank=%2Bsalesrank&fqp=product-type%01us%02keywords%01Petzold&sz=25&pg=1&field-browse=3839&results-mode=refined&results-tag=bnb&test-items-found=23&filtered-bnb=918372:18|5:11|3839:7/qid=1092809171/sr=3-3/ref=sr_3_11_3/302-9164755-2229669]hier[/url]
_________________
The source of all power is in its destiny...


Zuletzt bearbeitet von TheMillenium am 18.08.2004, 06:26, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 18.08.2004, 06:10    Titel: Antworten mit Zitat

Naja 59€ sinds nur bei amazon...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.08.2004, 06:24    Titel: Antworten mit Zitat

Kannst du mir dazu den Amazon-Link geben?

Denn wie du an dem Link den ich oben gepostet habe siehst, habe ich nur teurere Bücher gefunden...ich hoffe du meinst kein C Sharp Buch..

sry, ich bin davon ausgegangen, dass das Buch auf Englisch ist, siche ich aber nach Petzold bei den deutschen Büchern, sehe ich die Ausgabe für 59€ Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kronos
Senior JLI'ler



Anmeldedatum: 19.03.2004
Beiträge: 290

Medaillen: Keine

BeitragVerfasst am: 18.08.2004, 06:26    Titel: Antworten mit Zitat

Dieser Thread sollte wohl eher in "Grafik und Sound" Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.08.2004, 06:30    Titel: Antworten mit Zitat

Nein, ich will das ja mit DX machen und außerdem findet man in Grafik&Sound soweit ich das beobachtet habe nur Soundfiles, Grafiken, Programme dafür, und ganz oberflächliche Fragen über Sound, wie z.B. Auslesen der mp3-Tags...aber eigentlich ist das ja auch egal, da es in beide Foren reinpasst! Wink
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.08.2004, 07:47    Titel: Antworten mit Zitat

Ich hab's jetzt geschafft.
Man braucht eigentlich nur midiOutShortMsg und nicht das ganze drumheurm wie in dem Code was ich gepostet habe! Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum