PDA

Visualizza la versione completa : Aiuto Progetto C#


teo91
19-04-2011, 18:52
ciao a tutti. il mio prof di informatica mi ha consigliato, come progetto per la tesina di maturità, di sviluppare una tastiera MIDI in C#. Ho provato a scrivere qualche linea di codice, ma mi sono bloccato e non so cosa dovrei modificare

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

[DllImport("winmm.dll")]
private static extern int midiOutOpen(ref int handle, int deviceID,
int proc, int instance, int flags);

[DllImport("winmm.dll")]
private static extern int midiOutClose(int handle);

[DllImport("winmm.dll")]
protected static extern int midiOutShortMsg(int handle, int message);


namespace midi
{
public partial class Form1 : Form
{
private Button apriMidiBtn;
private int lphMidiOut;

[DllImport("winmm.dll")]
private static extern int midiOutOpen(ref int handle, int deviceID,
int proc, int instance, int flags);

[DllImport("winmm.dll")]
private static extern int midiOutClose(int handle);

[DllImport("winmm.dll")]
protected static extern int midiOutShortMsg(int handle, int message);

[DllImport("winmm.dll")]
protected static extern int midiOutGetDevCaps(int deviceID,
ref int caps, int sizeOfMidiOutCaps);

[DllImport("winmm.dll")]
protected static extern int midiOutGetNumDevs();

public Form1() //constructor
{
InitializeComponent();


}

private void apriMidiMapper_Click(object sender, EventArgs e)
{
if (midiOutOpen(ref lphMidiOut, -1, 0, 0, 0) != 0) MessageBox.Show("non posso aprire il MidiMapper");
else
{
MidiOutMessage(lphMidiOut, 0xC0, 0, 19, 0);
MidiOutMessage(lphMidiOut, 0xC0, 12, 19, 0);
}
}




int MidiOutMessage(int handle, int iStatus, int iCanale, int iDato1, int iDato2)
{
int message=0;
message = iStatus | iCanale | (iDato1 << 8) | (iDato2 << 16);
return midiOutShortMsg(handle , message);
}


int MidiNoteOn(int hMidi, int iCanale, int iNota, int iVel)
{
return MidiOutMessage(hMidi, 0x090, iCanale, iNota, iVel);

}


int MidiNoteOff(int hMidi, int iCanale, int iNota, int iVel)
{
return MidiOutMessage(hMidi, 0x080, iCanale, iNota, iVel);
}

private void chidiMidiMapper_Click(object sender, EventArgs e)
{
midiOutClose(lphMidiOut);
}

private void suona_Click(object sender, EventArgs e)
{
MidiNoteOn(lphMidiOut, 0 , 69, 60);
}

private void basta_Click(object sender, EventArgs e)
{
MidiNoteOff(lphMidiOut, 0 , 69, 0);
}

int MidiOutMessage(int handle, int iStatus, int iCanale, int iDato1, int iDato2)
{
int message=0;
message = iStatus | iCanale | (iDato1 << 8) | (iDato2 << 16);
return midiOutShortMsg(handle , message);
}

int MidiNoteOn(int hMidi, int iCanale,int ottava, int iNota, int iVel)
{
return MidiOutMessage(hMidi, 0x090, iCanale,12*ottava+iNota , iVel);

}


int MidiNoteOff(int hMidi, int iCanale, int ottava, int iNota, int iVel)
{
return MidiOutMessage(hMidi, 0x080, iCanale, 12*ottava+iNota,iVel);
}

void cambiaStrumento(int strumento)
{

MidiOutMessage(lphMidiOut, 0xC0, 1, strumento, 0);

}



}
}

un'altra domanda: oltre al fatto che il programma non va, il prof mi ha chiesto di cambiare l'interfaccia grafica e di mettere i tasti, come fosse una vera tastiera MIDI e poi di controllarla con la keyboard. sono assolutamente nel panico... qualcuno potrebbe darmi una mano?

LeleFT
20-04-2011, 09:11
Sei nella sezione sbagliata: C# e tutti i linguaggio .NET hanno il forum dedicato "Visual Basic e .NET Framework".

Hai dato alla discussione un titolo tropop generico.

Hai postato il codice senza l'uso degli appositi tag CODE.

Non hai indicato quali errori ottieni, ma solo ciò che vorresti ottenere, lasciando agli utenti l'onere di spulciarsi il codice, copiarlo, incollarlo, compilarlo, eseguirlo e anche mettertelo a posto.

Non è questo il modo di usare il forum.

Riapri una nuova discussione, nel forum corretto (http://forum.html.it/forum/forumdisplay.php?s=&forumid=56), prendendo prima visione del Regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973888).


Ciao. :ciauz:

Loading