Diapason midi

Bonjour,
Je sais la question a déjà été posé il y-a longtemps, mais depuis les choses ont bien évolué.
Existe-il une fonction LilyPond pour changer le diapason de sortie des fichier midi, 440hz en 415hz ou 442hz par exemple.
Amidicalement

La fonction \transposition ( et non \transpose) le permet Voir 1.1.2 Modification de plusieurs hauteurs.
La musique ne change pas mais le fichier midi est transposé.
Marc.L.
Pour un changement de tempérament il n'y a rien....

\version "2.24.2"

\score {
  \midi { }
  \fixed c' {
    c d e f
    \transposition #(ly:make-pitch 0 0 -1/10)
    c d e f
    \transposition #(ly:make-pitch 0 0 -2/10)
    c d e f
    \transposition #(ly:make-pitch 0 0 -3/10)
    c d e f
  }
}
1 « J'aime »

D'ailleurs, on peut faire en sorte de prendre une fréquence plutôt qu'un intervalle exprimé en tons :

\version "2.24.2"

diapason =
#(define-music-function (freq) (number?)
   (let* ((freq-factor (/ freq 440))
          (tone-factor (expt 2 1/6))
          (diff (/ (log freq-factor) (log tone-factor)))
          (simple-diff (rationalize (inexact->exact diff) 1/144)))
     #{ \transposition #(ly:make-pitch 0 0 simple-diff) #}))

\score {
  \midi { }
  \fixed c' {
    c d e f
    \diapason 415
    c d e f
  }
}
1 « J'aime »

Whaou MERCI !

Le 03/12/23 à 18:25, Jean Abou Samra via LilyPond a écrit :

[jeanas] Jean Abou Samra https://lilypond.community/u/jeanas jeanas
Décembre 3

D'ailleurs, on peut faire en sorte de prendre une fréquence plutôt
qu'un intervalle exprimé en tons :

|\version "2.24.2" diapason = #(define-music-function (freq) (number?)
(let* ((freq-factor (/ freq 440)) (tone-factor (expt 2 1/6)) (diff (/
(log freq-factor) (log tone-factor))) (simple-diff (rationalize
(inexact->exact diff) 1/144))) #{ \transposition #(ly:make-pitch 0 0
simple-diff) #})) \score { \midi { } \fixed c' { c d e f \diapason 415
c d e f } }|

Impressionnant, il ne reste plus qu'à avoir le pythagoricien, le
mésotonique et Valotti...

Du boulot en perspective.

Marc L

Le 03/12/2023 20:59, MarcL via LilyPond répondait à Jean Abou Samra :

[...]

D'ailleurs, on peut faire en sorte de prendre une fréquence plutôt
qu'un intervalle exprimé en tons :

|\version "2.24.2" diapason = #(define-music-function (freq) (number?)
(let* ((freq-factor (/ freq 440)) (tone-factor (expt 2 1/6)) (diff (/
(log freq-factor) (log tone-factor))) (simple-diff (rationalize
(inexact->exact diff) 1/144))) #{ \transposition #(ly:make-pitch 0 0
simple-diff) #})) \score { \midi { } \fixed c' { c d e f \diapason 415
c d e f } }|

Ça fait longtemps que je ne me suis plus intéressé au MIDI (qu'il s'agisse
du protocole entre deux machines physiques, ou bien du format de fichier
MIDI, qui sont deux choses différentes).

Du coup, est-ce que tu sais ce que fait exactement cette instruction
\transposition ?

|Impressionnant, il ne reste plus qu'à avoir le pythagoricien, le
mésotonique et Valotti...|

Sauf que pour avoir un tempérament inégal il faudrait un \transposition
différent pour chaque note de la gamme, et je doute que cela existe. Mais
peut-être que je me trompe.

Il y a quelques années je m'étais penché sur les tempéraments plus poivrés que le tempérament égal, notamment avec Scala
Cette page d'accueil est bien fournie et parle entre autres de plusieurs manières dont un fichier MIDI peut supporter les informations relatives à la microtonalité. On peut aussi "convertir" des fichiers MIDI pour les faire correspondre à un tempérament

Je me dit que ça mérite d’être monté sur le LSR
par exemple :

%=================================================================
diapason =
#(define-music-function (freq) (number?)
   (let* ((freq-factor (/ freq 440))
          (tone-factor (expt 2 1/6))
          (diff (/ (log freq-factor) (log tone-factor)))
          (simple-diff (rationalize (inexact->exact diff) 1/144)))
     #{ \transposition #(ly:make-pitch 0 0 simple-diff) #}))

%=================================================================
frequence = #415 %hz
freqText = #(number->string frequence)
%-----------------------------------
music=\relative c'{
  \clef "G"
  \time 3/4
  \mark \markup { "Diapason"  \freqText  "hz" }
  c2. c16 ees g c4. ees,16 g  a b c bes c bes a g f g a b c c, e g c e g c8
  \fine
}


\book {
  %\bookOutputName  "titre"
  \bookOutputSuffix \freqText
  \score {
    \new Staff \with {
      \diapason \frequence
      midiInstrument = #"recorder"
    }
    { \music }
    \layout { }
    \midi {   }
  }
}
%=================================================================

Le 03/12/2023 23:29, Raphael Hardy via LilyPond a écrit :

Il y a quelques années je m'étais penché sur les tempéraments plus poivrés que le tempérament égal, notamment avec Scala
Cette page d'accueil est bien fournie et parle entre autres de plusieurs manières dont un fichier MIDI peut supporter les informations relatives à la microtonalité. On peut aussi "convertir" des fichiers MIDI pour les faire correspondre à un tempérament

Merci pour cette page ! Déjà elle m'a rappelé la commande MIDI « Pitch
bend » qui permet de modifier la hauteur de toutes les notes d'un coup,
mais je n'ai pas encore compris comment il est possible de changer le
tempérament, c'est-à-dire d'ajuster les intervalles entre deux notes.
Il est possible que ce soit dépendant du modèle de synthétiseur.

Je pourrais le coder (mais je le ferai si ça sert vraiment à quelqu'un).

Le 09/12/2023 21:42, Jean Abou Samra via LilyPond a écrit :

Je pourrais le coder (mais je le ferai si ça sert vraiment à quelqu'un).

Si cela existait je m'amuserais probablement à jouer avec.

Mais en réalité j'ai l'impression que le programme Scala que nous a fait
connaître Raphaël Hardy rend moins indispensable une implémentation dans
LilyPond. Il suffit de l'utiliser sur un MIDI généré normalement.

Rappel du lien : Scala

Je viens d'ajouter ce snippet à la LSR : https://lsr.di.unimi.it/LSR/Item?id=1179 (l'image n'y est pas encore, je pense qu'il faut juste attendre un peu).

Et je me suis rendu compte qu'il y avait déjà un snippet pour les tempéraments en MIDI : Custom tuning and MIDI rendering

ha bien merci,
j'avais vu le snippet pour les tempéraments en MIDI, je trouvait ça compliqué.
ET c'est pour garder un instrument bien tempéré :slight_smile:
dans les transpositions. Ce qui ne se fait pas au piano à l'orgue, aux instruments frettés. Mais se fait quand on est bon musicien au violon, cuivre, bref tous les instruments dont la hauteur des notes ne sont pas fixes.

Pour info j'ai mis sur le LSR : slur sur les doigtés de trille
https://lsr.di.unimi.it/LSR/Item?u=1&id=1178

Bonjour !
La fonction crée une erreur en version 2.25.12 ...
RESOLU en v2.25.15

pas chez moi
testé à l'instant 442 et 415 hz

Y'a un truc mal installé sur ton système ?
Bon courage,
Bonne soirée

https://lsr.di.unimi.it/LSR/Snippet?id=1179
fonctionne très bien en 2.25.12

Il doit s'agir du même problème sous Windows...