Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Aiuto Progetto C#

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    4

    Aiuto Progetto C#

    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?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    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, prendendo prima visione del Regolamento interno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.