Clemylia commited on
Commit
66838c8
·
verified ·
1 Parent(s): 87dc67d

Create transformer.js

Browse files
Files changed (1) hide show
  1. transformer.js +61 -0
transformer.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Définition de la classe du modèle Miamuy-midi
2
+ class MiamuyMidiModel {
3
+
4
+ // Cette méthode est requise par Hugging Face, mais ne fait rien ici
5
+ static async getInstance(progress_callback = null) {
6
+ return new MiamuyMidiModel();
7
+ }
8
+
9
+ // La méthode 'generate' qui va créer la séquence de notes
10
+ // 'prompt' sera la note de départ (ex: 'C4')
11
+ // 'options' sera un objet pour les paramètres de génération
12
+ async generate(prompt, options = {}) {
13
+ // Liste des notes (do-ré-mi-fa-sol-la-si) avec 4 octaves
14
+ const noteNames = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];
15
+
16
+ // Convertir la note de départ en une représentation numérique
17
+ const startNote = this.noteToMidi(prompt);
18
+
19
+ // Définir la longueur de la séquence
20
+ const sequenceLength = options.length || 8;
21
+
22
+ let generatedNotes = [startNote];
23
+
24
+ // Boucler pour générer le reste de la séquence
25
+ for (let i = 1; i < sequenceLength; i++) {
26
+ // Ajouter une note aléatoire dans un intervalle de 5 demi-tons
27
+ const nextNote = startNote + Math.floor(Math.random() * 11) - 5;
28
+ generatedNotes.push(nextNote);
29
+ }
30
+
31
+ // Convertir les nombres MIDI en noms de notes
32
+ const formattedNotes = generatedNotes.map(note => {
33
+ const octave = Math.floor(note / 12) - 1;
34
+ const noteIndex = note % 12;
35
+ return `${noteNames[noteIndex]}${octave}`;
36
+ });
37
+
38
+ // Le format de sortie doit correspondre à ce que Hugging Face attend
39
+ // On peut aussi inclure les notes MIDI si on le souhaite
40
+ return [{
41
+ generated_text: formattedNotes.join(' '),
42
+ midi_notes: generatedNotes
43
+ }];
44
+ }
45
+
46
+ // Fonction utilitaire pour convertir un nom de note en nombre MIDI
47
+ noteToMidi(note) {
48
+ const noteMap = {
49
+ 'C': 0, 'C#': 1, 'D': 2, 'D#': 3, 'E': 4, 'F': 5,
50
+ 'F#': 6, 'G': 7, 'G#': 8, 'A': 9, 'A#': 10, 'B': 11
51
+ };
52
+
53
+ const octave = parseInt(note.slice(-1));
54
+ const noteName = note.slice(0, -1);
55
+
56
+ return noteMap[noteName] + (octave + 1) * 12;
57
+ }
58
+ }
59
+
60
+ // Exportez la classe pour qu'elle puisse être utilisée
61
+ export default MiamuyMidiModel;