Ottenere la frequenza corrispondente ad una nota Midi e viceversa

Da Gambas-it.org - Wikipedia.

Ottenere la frequenza corrispondente ad una nota Midi

Come è noto, nel Midi le note sono numerate da 0 a 127.

Per ottenere la frequenza corrispondente ad una nota Midi e viceversa, sono possibili almeno tre modalità.


Uso delle sole funzioni di Gambas

Il calcolo della frequenza può essere effettuato mediante almeno due modalità.

In entrambe le possibilità poniamo il caso di voler trovare la frequenza sonora, alla quale corrisponde la nota Midi num. 69 (LA).

1a modalità

Public Sub Main()

 Dim frequenza As Float
 Dim nota_Midi As Byte
 
' Otteniamo per esempio il numero della nota Midi corrispondente al La (hz 440) corrispondente numero 69:
  nota_Midi = 69
 
' La frequenza di riferimento è quella del Do centrale (hz 261,63):
  frequenza = 261.63 * (2 ^ (1 / 12)) ^ (nota_Midi - 60)

  Print "Frequenza =  hz";; frequenza 

End


2a modalità

Paragrafo in costruzione !


Uso dell'API di Libaubio

La libreria Libaubio consente, fra l'altro, di convertire una nota Midi nella corrispondente frequenza sonora.

Per poter fruire in Gambas delle risorse della libreria Libaubio, è necessario installare nel sistema e richiamare in Gambas la libreria dinamica condivisa: "libaubio:4.0.0"


Mostriamo un esempio pratico:

Library "libaubio:4.0.0"
 
' smpl_t aubio_miditofreq (smpl_t midi)
' Convert midi value (0-128) to frequency (Hz).
Private Extern aubio_miditofreq(midi As Single) As Single


Public Sub Main()
 
 Dim freq, mid As Single
  
   mid = 69
 
   freq = aubio_miditofreq(mid)
   Print "\n\nNota Midi     "; mid; "\nFrequenza: hz "; freq
  
End


Ottenere la nota Midi corrispondente ad una frequenza sonora

Per ottenere la nota Midi corrispondente ad una la frequenza sonora, sono possibili almeno tre modalità.


Uso delle sole funzioni di Gambas

Il calcolo del numero della nota Midi mediante le sole risorse di Gambas può essere effettuato mediante almeno due modalità.

1a modalità

Paragrafo in costruzione !

2a modalità

Uso dell'API di Libaubio

Mostriamo un esempio pratico:

Library "libaubio:4.0.0"
 
' smpl_t aubio_miditofreq (smpl_t midi)
' Convert midi value (0-128) to frequency (Hz).
Private Extern aubio_miditofreq(midi As Single) As Single


Public Sub Main()
 
 Dim freq, mid As Single
  
   freq = 440.0
 
   mid = aubio_freqtomidi(freq)
   Print "Frequenza: hz "; freq; "\nNota Midi     "; mid
  
End



Riferimenti