Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C#] midiOutShortMsg

  1. #1

    [C#] midiOutShortMsg

    Vorrei sapere come utilizzare questa funzione API di winmm.dll.
    Posseggo una classe che usa questa funzione per suonare file MIDI, tutto funziona ma vorrei capire come è fatta visto che non riesco a fermare il suono di una nota.

    A quanto pare la variabile dwMsg è una cifra esadecimale per dare comandi alla periferica MIDI da quanto capisco dai siti:
    1)http://msdn.microsoft.com/en-us/library/ms711640(VS.85).aspx
    2)http://www.mibac.com/Pages/MIDIReference.html

    In questo ultimo sito ci sono esempi. Mettendo le cifre esadecimali degli esempi come parametro alla funzione suddetta, non succede niente.


    Quello che voglio è una guida su come usare questa funzione, in particolar modo il significato dei messaggi.


    Oppure vorrei sapere se nel framework esiste una funzione simile (ne dubito).


  2. #2
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Grazie mille, era esattamente ciò che cercavo

  4. #4
    Sebbene abbia imparato tante altre cose, non ho trovato il messaggio per fermare una nota (il valore esadecimale 80 dello status byte è NOTE OFF, che non ferma la nota, piuttosto non la fa suonare più).


    Curiosamente mi è venuta un'illuminazione...ovvero usare il messaggio NOTE ON ma con la velocity a 0, in modo da fermare la nota.

    Incredibile, come non ci ho pensato prima!

    A questo punto non so a cosa serve il messaggio NOTE OFF...boh

  5. #5
    Il note off e il note on con velocity zero dovrebbero essere analoghi (EDIT: a ben vedere non è esattamente così... link)... in effetti comunque viene usato maggiormente il note on con velocity zero rispetto al note off per motivi di velocità di trasmissione: sui cavi midi se lo status byte non cambia non viene ritrasmesso, per cui per "spegnere" una nota in mezzo ad un flusso di note on basta inviare semplicemente due data bytes invece di uno status byte (note off), due data byte e un altro status byte (note on) per la nota successiva.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Io la differenza che ho riscontrato è che NOTE OFF non so per quale arcano motivo, non fa suonare più la nota, nemmeno quando la richiamo con NOTE ON.


    NOTE ON con velocity zero invece ferma la nota, e ciò per me è molto comodo, visto che nel mio programma faccio durare una nota fintantochè non rilascio il tasto della tastiera.

  7. #7
    Originariamente inviato da ardito86
    Io la differenza che ho riscontrato è che NOTE OFF non so per quale arcano motivo, non fa suonare più la nota, nemmeno quando la richiamo con NOTE ON.
    Strano, a che periferica stai inviando questi messaggi?
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.