Differenze tra le versioni di "Conoscere con le funzioni esterne di PortMidi le porte Midi disponibili nel sistema"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
La libreria '''PortMidi''' è una libreria per la gestione in tempo reale dei dati Midi in entrata ed in uscita. Essa fa parte di un assortimento di API e librerie create per la musica e per altri media.
 
La libreria '''PortMidi''' è una libreria per la gestione in tempo reale dei dati Midi in entrata ed in uscita. Essa fa parte di un assortimento di API e librerie create per la musica e per altri media.
  
E' possibile con alcune funzioni esterne della libreria ''PortMidi'' conoscere i dispositivi e le porte presenti ed attivi in quel momento. Per poter ottenere ciò, è necessario aver installato nel proprio sistema la libreria condivisa: ''libportmidi.so.0.0.0''
+
E' possibile con alcune funzioni esterne della libreria ''PortMidi'' conoscere i dispositivi e le porte presenti ed attivi in quel momento. Per poter ottenere ciò, è necessario aver installato nel proprio sistema la libreria condivisa: "''libportmidi.so.0.0.3'' ".
  
  
Riga 15: Riga 15:
 
   
 
   
 
   
 
   
  Library "libportmidi:0.0.0"
+
  Library "libportmidi:0.0.3"
 
   
 
   
 
  <FONT color=gray>' ''PmError Pm_Initialize( void )''
 
  <FONT color=gray>' ''PmError Pm_Initialize( void )''
Riga 46: Riga 46:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim num_disp, i, d As Integer
 
   Dim num_disp, i, d As Integer
Riga 52: Riga 52:
 
   Dim predef As String
 
   Dim predef As String
 
    
 
    
    i = Pm_Initialize()
+
  i = Pm_Initialize()
    If i <> 0 Then Error.Raise("Impossibile inizializzare la libreria Libportmidi: " & Pm_GetErrorText(i))
+
  If i <> 0 Then Error.Raise("Impossibile inizializzare la libreria Libportmidi: " & Pm_GetErrorText(i))
 
      
 
      
    num_disp = Pm_CountDevices()     
+
  num_disp = Pm_CountDevices()     
    If num_disp = 0 Then
+
  If num_disp = 0 Then
      Print "Nessuna porta Midi presente MIDI !"
+
    Print "Nessuna porta Midi presente MIDI !"
      Return
+
    Return
    Else
+
  Else
      Print "\nNum. "; num_disp; " Porte MIDI rilevate:\n"
+
    Print "\nNum. "; num_disp; " Porte MIDI rilevate:\n"
 +
  Endif
 +
   
 +
  For i = 0 To num_disp - 1
 +
    info = Pm_GetDeviceInfo(i)
 +
    If IsNull(info) Then Error.Raise("Errore alla funzione 'Pm_GetDeviceInfo()' !")
 +
    predef = Null
 +
    If info.outputI Then
 +
      d = Pm_GetDefaultOutputDeviceID()
 +
      If d = i Then predef = "(predefinita)"
 +
      Print i; ":  "; String@(info.interf); " "; String@(info.name); " Uscita "; predef  <FONT color=gray>' ''Porta in "scrittura" (dispositivo esterno che scrive su di essa).''</font>
 
     Endif
 
     Endif
      
+
     info = Pm_GetDeviceInfo(i)
+
    If IsNull(info) Then Error.Raise("Errore alla funzione 'Pm_GetDeviceInfo()' !")
    For i = 0 To num_disp - 1
+
     If info.inputI Then
     
+
      d = Pm_GetDefaultInputDeviceID()
      info = Pm_GetDeviceInfo(i)
+
      If d = i Then predef = "(predefinita)"
      If IsNull(info) Then Error.Raise("Errore alla funzione 'Pm_GetDeviceInfo()' !")
+
      Print i; ":  "; String@(info.interf); " "; String@(info.name); " Entrata "; predef  <FONT color=gray>' ''Porta in "lettura" (dispositivo esterno che legge da essa).''</font>
      
+
    Endif
      predef = Null
+
  Next
 
      If info.outputI Then
 
        d = Pm_GetDefaultOutputDeviceID()
 
        If d = i Then predef = "(predefinita)"
 
        Print i; ":  "; String@(info.interf); " "; String@(info.name); " Uscita "; predef  <FONT color=gray>' ''Porta in "scrittura" (dispositivo esterno che scrive su di essa).''</font>
 
      Endif
 
 
   
 
   
      info = Pm_GetDeviceInfo(i)
 
      If IsNull(info) Then Error.Raise("Errore alla funzione 'Pm_GetDeviceInfo()' !")
 
   
 
      If info.inputI Then
 
        d = Pm_GetDefaultInputDeviceID()
 
        If d = i Then predef = "(predefinita)"
 
        Print i; ":  "; String@(info.interf); " "; String@(info.name); " Entrata "; predef  <FONT color=gray>' ''Porta in "lettura" (dispositivo esterno che legge da essa).''</font>
 
      Endif
 
 
    Next
 
   
 
 
     Pm_Terminate()
 
     Pm_Terminate()
 
   
 
   
  '''End'''
+
  End
 
 
  
  

Versione delle 12:48, 13 gen 2024

La libreria PortMidi è una libreria per la gestione in tempo reale dei dati Midi in entrata ed in uscita. Essa fa parte di un assortimento di API e librerie create per la musica e per altri media.

E' possibile con alcune funzioni esterne della libreria PortMidi conoscere i dispositivi e le porte presenti ed attivi in quel momento. Per poter ottenere ciò, è necessario aver installato nel proprio sistema la libreria condivisa: "libportmidi.so.0.0.3 ".


Di seguito viene mostrato un esempio per conoscere con le funzioni esterne della libreria PortMidi le porte Midi disponibili nel sistema:

Public Struct PmDeviceInfo
  structVersion As Integer
  interf As Pointer
  name As Pointer
  inputI As Integer
  outputI As Integer
  opened As Integer
End Struct


Library "libportmidi:0.0.3"

' PmError Pm_Initialize( void )
' Library initialisation function.
Private Extern Pm_Initialize() As Integer

' const char *Pm_GetErrorText( PmError errnum )
' Translate portmidi error number into human readable message.
Private Extern Pm_GetErrorText(errnum As Integer) As String

' int Pm_CountDevices (void)
' Get devices count, ids range from 0 to Pm_CountDevices()-1.
Private Extern Pm_CountDevices() As Integer

' const PmDeviceInfo* Pm_GetDeviceInfo( PmDeviceID id )
' Returns a pointer to a PmDeviceInfo structure referring to the device specified by id.
Private Extern Pm_GetDeviceInfo(id As Integer) As PmDeviceInfo

' PmDeviceID Pm_GetDefaultOutputDeviceID( void )
' Return the default device ID or pmNoDevice if there are no devices.
Private Extern Pm_GetDefaultOutputDeviceID() As Integer

' PmDeviceID Pm_GetDefaultInputDeviceID( void )
' Return the default device ID or pmNoDevice if there are no devices.
Private Extern Pm_GetDefaultInputDeviceID() As Integer

' PmError Pm_Terminate( void )
' Library termination function.
Private Extern Pm_Terminate() As Integer


Public Sub Main()

 Dim num_disp, i, d As Integer
 Dim info As PmDeviceInfo
 Dim predef As String
 
 i = Pm_Initialize()
 If i <> 0 Then Error.Raise("Impossibile inizializzare la libreria Libportmidi: " & Pm_GetErrorText(i))
   
 num_disp = Pm_CountDevices()    
 If num_disp = 0 Then
   Print "Nessuna porta Midi presente MIDI !"
   Return
 Else
   Print "\nNum. "; num_disp; " Porte MIDI rilevate:\n"
 Endif
   
 For i = 0 To num_disp - 1
   info = Pm_GetDeviceInfo(i)
   If IsNull(info) Then Error.Raise("Errore alla funzione 'Pm_GetDeviceInfo()' !")
   predef = Null
   If info.outputI Then
     d = Pm_GetDefaultOutputDeviceID()
     If d = i Then predef = "(predefinita)"
     Print i; ":  "; String@(info.interf); " "; String@(info.name); " Uscita "; predef   ' Porta in "scrittura" (dispositivo esterno che scrive su di essa).
   Endif
   info = Pm_GetDeviceInfo(i)
   If IsNull(info) Then Error.Raise("Errore alla funzione 'Pm_GetDeviceInfo()' !")
   If info.inputI Then
     d = Pm_GetDefaultInputDeviceID()
     If d = i Then predef = "(predefinita)"
     Print i; ":  "; String@(info.interf); " "; String@(info.name); " Entrata "; predef   ' Porta in "lettura" (dispositivo esterno che legge da essa).
   Endif
 Next

   Pm_Terminate()

End


Riferimenti