✨ChatGPT Music: How to Write Prompts for Chords and Melodies
ChatGPT Music : comment écrire des invites pour les accords et les mélodies
Vous connaissez probablement déjà l'outil ChatGPT d'OpenAI . Dans cet article, nous fournirons un examen approfondi de la façon dont vous pouvez utiliser leur chatbot IA pour générer de la musique.
Des progressions d'accords, des mélodies, des paroles et de la tablature au code MIDI au niveau de la machine, il y a des invites ici pour tout le monde. Nous partagerons des techniques rapides qui fonctionnent et d'autres qui ne fonctionnent pas. Vous obtiendrez également un aperçu général du paysage du texte en musique, afin que vous puissiez explorer des alternatives à la création de musique ChatGPT.
Table des matiĂšres
Une brĂšve histoire de l'IA text-to-music
En 2022, des services d'imagerie générative comme Dalle-2 , MidJourney et Stable Diffusion ont prouvé que l'intelligence artificielle pouvait créer des images réalistes en quelques secondes. Ensuite, OpenAI a publié ChatGPT, remettant en question nos idées sur l'intelligence humaine (et comment les machines peuvent l'imiter). En tant que musiciens, beaucoup d'entre nous ont commencé à bricoler pour voir ce qui était possible.
OpenAI a précédemment publié un outil de génération MIDI appelé MuseNet en 2019 et un générateur audio appelé Jukebox en 2020. Cependant, l'API MuseNet a été désactivée en décembre 2022, peu de temps aprÚs la sortie de ChatGPT. OpenAI n'a rien fait pour publier un nouvel outil de génération de musique depuis lors. Jukebox n'a pas d'interface utilisateur facilement accessible, il n'a donc jamais été largement adopté.
En décembre 2022, AudioCipher a publié la version 3.0. Ce plugin de musique text-to-MIDI ne fonctionne pas sur l'intelligence artificielle, mais offre l'expérience de transformer les mots en musique dans une DAW. L'avantage ici est que vous n'avez pas besoin d'une connexion Internet et que vous contrÎlez étroitement la signature de clé, l'automatisation du rythme et les paramÚtres d'accord. Vous pouvez basculer entre les paramÚtres de génération de mélodie et d'accord. Ensuite, faites glisser vers un canal MIDI et apportez des modifications à votre piano roll jusqu'à ce que vous obteniez quelque chose que vous aimez.
Fin janvier 2023, Google a publiĂ© un article dĂ©crivant un futur gĂ©nĂ©rateur de texte en musique nommĂ© MusicLM . Ils l'ont publiĂ©e en tant qu'application bĂȘta gratuite en mai 2023. Facebook-Meta a rapidement emboĂźtĂ© le pas et a publiĂ© sa propre application de synthĂšse musicale en juin 2023 appelĂ©e MusicGen . Ces applications crĂ©ent toutes deux des fichiers audio basĂ©s sur des descriptions Ă©crites. En consĂ©quence, ils peuvent aider les producteurs de musique basĂ©s sur des Ă©chantillons, mais sont moins utiles pour les personnes qui prĂ©fĂšrent travailler avec le MIDI.
MusicLM et MusicGen sont plus intrinsÚquement musicaux que ChatGPT, car ils ont été formés sur des fichiers audio étiquetés. Il est important de savoir qu'en tant que grand modÚle de langage, ChatGPT est formé aux concepts de la théorie musicale, mais n'a pas une compréhension plus approfondie de la composition musicale. Cela signifie qu'il compose de la musique à partir d'une compréhension purement intellectuelle de la musique, plutÎt qu'une compréhension innée de celle-ci.
Maintenant que vous avez une idĂ©e du terrain, jetons un coup d'Ćil Ă certaines des premiĂšres expĂ©riences avec ChatGPT et voyons comment elles se sont dĂ©veloppĂ©es depuis.
La premiÚre vague d'expériences musicales ChatGPT
La premiÚre vague de musique ChatGPT est venue des influenceurs des médias sociaux. Ils publiaient des vidéos meme de rappeurs célÚbres utilisant UberDuck pour se faire passer pour la voix. ChatGPT n'était utilisé que pour générer des paroles à ce stade. La technique était principalement pour le plaisir et la parodie - personne ne confondait la musique avec les artistes réels. Voici comment fonctionne la méthode :
Les utilisateurs proposent une invite lyrique pour ChatGPT, comme "Ă©crivez un couplet lyrique dans le style de [artiste] Ă propos de [sujet]"
Trouvez une section de la sortie des paroles que vous aimez et connectez-la Ă UberDuck
Exportez l'audio d'Uberduck et importez-le dans votre DAW
Utilisez un plugin autotune pour appliquer une mélodie. Si vous recherchez une option gratuite, essayez GSnap VST de GVST.
Depuis lors, un grand nombre de services de générateur de voix AI ont été lancés, spécifiquement pour les musiciens. Uberduck est toujours le plus populaire pour les voix de célébrités, mais d'autres applications offrent un meilleur support pour ajouter des mélodies aux voix.
Au fil du temps, les gens ont commencé à publier des expériences supplémentaires avec des invites musicales ChatGPT axées sur les accords, les mélodies et la génération MIDI.
WavTool : une DAW IA alimentée par GPT4
Nous avons dĂ©jĂ couvert en profondeur l' AI DAW WavTool , montrant comment les utilisateurs peuvent invoquer son assistant AI pour gĂ©nĂ©rer des mĂ©lodies MIDI. Cela peut ĂȘtre un raccourci pour les personnes qui ne veulent pas Ă©crire de programmes javascript et crĂ©er du MIDI Ă partir de zĂ©ro. Tout ce que vous avez Ă faire est de taper ce que vous voulez et de laisser le DAW se mettre au travail.
Vous constaterez que des invites vagues comme "créer une mélodie accrocheuse" ont tendance à donner des résultats décevants, comme une gamme de do majeur qui se répÚte deux fois. Plus vous serez précis dans vos invites, meilleurs seront vos résultats. Voici quelques composants rapides que je recommande d'utiliser (ou de ne pas utiliser) pour améliorer vos résultats :
Demandez "une combinaison de noires, croches et doubles croches" lorsque vous demandez une mélodie. Il comprend ces instructions et s'y conformera généralement.
Dites-lui quelle échelle ou signature de clé vous voulez qu'il utilise, si cela vous intéresse.
Vous pouvez lui demander des progressions d'accords spécifiques en chiffres romains.
Ăvitez de demander une "progression d'accords dans <signature de clĂ©" car cela crĂ©era gĂ©nĂ©ralement une ligne ascendante d'accords dans cette clĂ© (c'est-Ă -dire I - ii - iii - IV, etc.).
Vous pouvez essayer de demander des progressions d'accords qui correspondent au style d'un genre, comme une progression d'accords jazzy ou une progression punk rock. Attendez-vous à des résultats mitigés.
Si vous ne souhaitez pas vous inscrire à WavTool (20 $/mois), vous pouvez utiliser ChatGPT pour exécuter vos expériences gratuitement. Passons à cela ensuite.
Progressions d'accords ChatGPT
Les progressions d'accords sont l'un des endroits les plus faciles pour démarrer avec les invites musicales ChatGPT. Vous pouvez demander une progression dans une clé particuliÚre et cela fonctionnera assez bien. Au fur et à mesure que vous approfondissez, en demandant des progressions dans le style d'un compositeur ou d'un genre particulier, les fissures commencent à apparaßtre.
GPT 4.0 nécessite un compte payant, mais il représente également les derniÚres fonctionnalités de leur modÚle le plus puissant, nous avons donc utilisé GPT 4.0 pour ces expériences.
ChatGPT Music Prompt #1 : Ăcrivez une progression d'accords en [signature de clĂ©].
RĂ©sultat ( ✅ ): Nous obtenons une simple progression de quatre accords, y compris les notes de chaque accord et une brĂšve description de la raison pour laquelle il a choisi ces accords. Le format des chiffres romains (I - vi - ii - V) correspond exactement aux accords fournis.
ChatGPT Music Prompt #2 : Ăcrivez une progression d'accords complexe en [signature de clĂ©].
RĂ©sultat ( ✅ ) : Nous avons choisi une signature de clĂ© plus obscure (F# mineur) et ChatGPT n'a eu aucun problĂšme Ă la gĂ©rer. Toutes les notes et les progressions en chiffres romains sont exactes dans le contexte de la clĂ©.
ChatGPT Music Prompt #3 : Ăcrivez une progression d'accords dans le style de JS Bach.
RĂ©sultat ( ✅ ): Nous avons commencĂ© avec un compositeur classique car ChatGPT aurait largement accĂšs Ă des informations Ă©crites sur son style de composition d'accords. La progression comprenait deux caractĂ©ristiques de marque de la musique de Bach - l'utilisation des dominantes secondaires et l'utilisation du chiffre 6 reprĂ©sentant une premiĂšre inversion. Cela distingue la notation de l'utilisation contemporaine du nombre 6, oĂč elle impliquerait un 6Ăšme accord.
ChatGPT Music Prompt #4 : Ăcrivez une progression d'accords de guitare pour un rythme jazzy lofi hip hop.
RĂ©sultat ( ✅/❌ ) : nous trouvons ici certaines des premiĂšres erreurs dans la sortie de ChatGPT pour les accords.
Les trois premiers accords de cette progression ont le son caractéristique du hip hop lofi. Mais la notation en chiffres romains n'a pas de sens. Il serait plus exact de l'appeler un ii-VI en ré majeur.
Les deux derniers accords créent un sentiment non résolu qui ne bouclerait pas bien. En tant que genre basé sur des boucles, c'est un problÚme qui nécessiterait une certaine créativité de la part du musicien pour le faire fonctionner.
ChatGPT identifie Ă tort G# comme le troisiĂšme degrĂ© de mi mineur. Cela fait le mĂȘme problĂšme avec le dernier accord, appelant C # mineur le sixiĂšme degrĂ© de la gamme est C naturel. Par consĂ©quent, les deux derniers accords ne correspondent pas aux trois premiers.
ChatGPT Music Prompt #5 : Ăcrivez une progression de 8 accords en [signature de clĂ©].
RĂ©sultat ( ✅/❌) : Les rĂ©sultats ici sont techniquement en fa mineur, mais il y a quelques problĂšmes
L'accord final se rĂ©sout prĂ©maturĂ©ment Ă la tonique. Normalement, le retour Ă la tonique se produirait aprĂšs l'achĂšvement de la progression de 8 accords. Cela pourrait facilement ĂȘtre rĂ©solu en allongeant la longueur de la 7e corde pour deux mesures.
La progression passe essentiellement par le cercle des quintes (VII - III - VI - ii - v - i). Bien que cela soit assez courant, cela crée une progression saccadée à moins que vous n'utilisiez des inversions d'accords. Ces inversions ne lui sont pas indiquées.
La sortie comporte exclusivement des triades, de sorte que la progression d'accords manque de couleur.
ChatGPT Music Prompt #6 : Ăcrivez une progression de 8 accords en [signature de clĂ©] en utilisant des inversions pour une harmonie fermĂ©e.
RĂ©sultat ( ❌) : Ici, nous pouvons vraiment voir les limites de la sortie musicale ChatGPT. D'une part, il comprend la notion d'inversions et d'harmonie fermĂ©e. Cela est Ă©vident par sa rĂ©ponse Ă©crite, mais si vous jouez rĂ©ellement les accords ici, il y a quelques problĂšmes flagrants.
Le deuxiÚme accord (G-Bb-Db) a été écrit sur D naturel à la basse. Cette note n'appartient pas à la clé ou à l'accord et est à peu prÚs aussi laide que vous ne pourriez l'imaginer. C'est un terrible deuxiÚme accord pour une progression en fa mineur.
Les quatriĂšme, cinquiĂšme et sixiĂšme accords de ces progressions contiennent de grands sauts, ce qui viole les instructions de l'invite d'utiliser l'harmonie fermĂ©e. ChatGPT a mĂȘme dĂ©clarĂ© son intention d'utiliser des inversions pour crĂ©er un mouvement progressif et fluide, mais a violĂ© cette rĂšgle dans sa sortie.
Voici une capture d'écran du rouleau de piano pour mettre en évidence les problÚmes de cette progression. L'accord surligné en rose montre l'accord DG-Bb-Db qui nous a fait ramper la peau. Vous pouvez voir les grands sauts d'accords surlignés en vert, qui ont raté la cible pour une voix douce menant dans les basses.
Ceci conclut la section sur la génération de progressions d'accords avec les invites musicales ChatGPT. Comme vous pouvez le voir, il est capable de créer quelque chose , mais plus vous serez précis dans vos demandes, plus il risque de faire des erreurs en raison de son manque de formation aux mathématiques de la composition musicale.
ChatGPT Guitar Tablature
GĂ©nĂ©rer des tablatures de guitare avec ChatGPT est assez simple. Vous demandez simplement ce que vous voulez et il le recrachera au format ASCII. Malheureusement, il a tendance Ă avoir du mal Ă obtenir la signature de clĂ© et les accords, mĂȘme pour les invites les plus simples. Vous pouvez en trouver des exemples dans la vidĂ©o ci-dessus et voir comment il a eu recours Ă la demande de descriptions Ă©crites d'un solo de guitare pour finalement obtenir les rĂ©sultats souhaitĂ©s.
ChatGPT Guitar Tablature Prompt #1 : Ăcrivez une progression d'accords en tablature de guitare
RĂ©sultat ( ❌) : ChatGPT renvoie un arpĂšge en mi mineur et la mineur, mais indique ensuite qu'il s'agit d'une progression d'accords (ce n'est pas le cas) avec les accords GM, DM et CM. Ce n'est rien de tout cela, donc c'est un Ă©chec complet.
ChatGPT Guitar Tablature Prompt #2 : Créez des tablatures de guitare pour une progression d'accords ii7 VI dans FMajor.
RĂ©sultat ( ✅) : Cette fois, nous obtenons la bonne rĂ©ponse, bien que dans un format vertical maladroit. En l'instruisant sur la progression que nous voulions, il semble avoir plus de facilitĂ©. Nous obtenons un accord Gm7 sans racine, suivi d'un accord C7 (nous n'avons pas demandĂ© l'extension mais ça va) et d'un accord de Fa majeur.
ChatGPT Guitar Tablature Prompt #3 : Ăcrivez un solo de guitare metalcore en tablature.
RĂ©sultat ( ❌) : Ici, nous avons demandĂ© du metalcore, ce qui implique qu'il devrait ĂȘtre dans une gamme mineure ou diminuĂ©e. Au lieu de cela, il nous a donnĂ© une gamme majeure rudimentaire. Il a compris qu'on voulait une mĂ©lodie, mais c'est Ă peu prĂšs tout. Il a Ă©galement dit Ă tort que c'Ă©tait en mi mineur, mais qu'il contient un fa naturel (corde de sol de 10e frette), de sorte que la signature de la clĂ© est fausse.
Nous avons trouvé d'autres problÚmes avec les tablatures de guitare ChatGPT. Par exemple, dans les onglets, le caractÚre '/' indique une diapositive vers le haut et '\' pour une diapositive vers le bas. ChatGPT a tendance à utiliser le mauvais type de barre oblique et ne semble pas comprendre la signification du symbole.
Génération de paroles et d'accords ChatGPT
En tant que générateur de texte, ChatGPT peut effectuer une génération de paroles d'IA toute la journée. Lorsque vous essayez de combiner les paroles avec des tableaux d'accords, cela fonctionne, mais si vous ajoutez des mélodies, vous commencez à avoir des problÚmes. Voici quelques exemples pour illustrer ces limitations.
ChatGPT Lyrics + Chords Prompt #1 : Ăcrivez les paroles d'une chanson folklorique et ajoutez-y des tableaux d'accords.
RĂ©sultat ( ✅) : Les accords sont ajoutĂ©s au dĂ©but de chaque mot et codĂ©s par couleur pour le rendre facilement lisible. Nous devons encore Ă©crire notre propre mĂ©lodie avec cette invite.
ChatGPT Lyrics + Chords Prompt #2 : En utilisant le mĂȘme tableau, incluez une notation mĂ©lodique pour ces accords et paroles
RĂ©sultat ( ❌) : ChatGPT a crĂ©Ă© un riff de guitare en finger picking arpĂ©gĂ© pour la mĂ©lodie. Il n'y a aucun lien entre ces arpĂšges et les paroles.
MĂ©lodies ChatGPT
Le prochain sur la liste est la génération de mélodie. Contrairement à la notation d'accords, les mélodies sont un peu plus difficiles à exprimer en clair. Pour cette raison, j'ai commencé par demander à ChatGPT une liste des meilleurs formats à utiliser lors de la génération de mélodies. Voici une liste des options qu'il fournit. Vous pouvez les référencer pour tester vos propres invites musicales :
Notation standard : nommer les notes (par exemple, "CEG") ainsi que leurs durées (par exemple, "noire do, blanche mi, noire sol").
Degrés d'échelle : Nommer une mélodie par rapport à la tonalité dans laquelle elle se trouve en utilisant des degrés d'échelle (par exemple, "Dans la tonalité de do majeur : 1-3-5").
Tablature de guitare : Vous obtiendrez des mélodies telles qu'elles apparaissent sur un manche de guitare, mais le rythme sera absent. Nous avons déjà souligné ses problÚmes précédemment.
Piano Roll Notation : Décrivez la mélodie à l'aide des numéros de note MIDI, représentant les valeurs du piano roll de Digital Audio Workstation. Par exemple, un arpÚge en do majeur serait représenté par 60, 64, 67 . Nous avons utilisé ce format dans la section suivante, en utilisant ChatGPT pour écrire du code javascript et créer des fichiers MIDI. Cela fonctionne étonnamment bien avec les bonnes invites.
SolfÚge : Décrire des mélodies simples en utilisant le systÚme do-re-mi. Cela manque d'entrée rythmique et vous maintiendra fixé sur une simple gamme diatonique.
Notation alphanumérique de la hauteur : Ce systÚme utilise les lettres AG en combinaison avec les chiffres 0-9 pour représenter les hauteurs, le C4 étant souvent défini comme "do médian". Par exemple, une mélodie peut aller "C4-E4-G4-C5".
Fréquences de hauteur : nommez chaque note de musique comme une fréquence (hz) plutÎt que d'utiliser des concepts de notation standard comme les noms de note.
Pour commencer, nous sommes allés avec la notation alphanumérique + rythme.
ChatGPT Melody Prompt #1 : Ăcrivez une mĂ©lodie en <signature de clĂ©> en utilisant la notation de hauteur alphanumĂ©rique. Inclure des indicateurs de rythme.
RĂ©sultat ( ✅) : La mĂ©lodie que nous avons rĂ©cupĂ©rĂ©e est une simple mĂ©lodie pentatonique en do majeur, avec une combinaison de noires et blanches. Ce n'est pas une mĂ©lodie particuliĂšrement intĂ©ressante, mais il y a quelques variations, l'arpĂšge tournant sur le sixiĂšme degrĂ© d'Ă©chelle et revenant pas Ă pas avec le ton de passage du 2e degrĂ© d'EDC.
ChatGPT Melody Prompt #2 : Utilisez cette progression d'accords et donnez Ă chaque accord quatre temps. Ăcrivez une mĂ©lodie accrocheuse dans la mĂȘme signature de clĂ© en utilisant des noires et des croches. Assurez-vous d'indiquer la durĂ©e de chaque note de la mĂ©lodie. Si la mĂ©lodie contient des notes en dehors de l'accord, elle ne doit ĂȘtre utilisĂ©e que comme des notes de passage vers une note qui se trouve dans l'accord. Voici la progression : Dm7 - G7 - CM9 - Em7
RĂ©sultat ( ❌) : Comme nous l'avons vu prĂ©cĂ©demment, lorsque les mathĂ©matiques musicales deviennent trop complexes, ChatGPT commence Ă perdre le fil. Il comprend ce que nous voulons qu'il fasse, mais fait rapidement des erreurs.
Il appelle F un ton de passage, bien qu'il soit réglé sur l'accord Dm7.
Le mi mineur est un ton de passage, mais il ne le qualifie pas comme tel
Il fait la mĂȘme erreur avec la note G, l'appelant une tonalitĂ© de passage tout en jouant sur l'accord G7. Ensuite, la note suivante, A, n'est pas Ă©tiquetĂ©e comme un ton de passage. Cela montre qu'il ne vĂ©rifie pas correctement la mĂ©lodie par rapport aux accords, car il manque de formation pour le faire efficacement.
Utilisation de Javascript pour créer de la musique ChatGPT MIDI
La notation note-et-rythme dans les exemples ci-dessus est ennuyeuse à utiliser et pas trÚs pratique. Il est plus efficace d'utiliser un éditeur de code gratuit comme VSCode pour générer des mélodies MIDI. Nous allons explorer comment faire cela ici.
Tout d'abord, vous devrez télécharger Visual Studio Code et installer Node.JS . Les deux sont gratuits. Une fois qu'ils sont installés, vous allez créer un nouveau dossier sur votre ordinateur et utiliser le terminal de VSCode pour y accéder. Enregistrez un fichier simple, disons "testmidi.js" et dans ce fichier, vous pourrez utiliser cette technique.
ChatGPT Visual Studio MIDI Prompt #1 : Veuillez écrire du code javascript pour générer une gamme de do majeur en notation MIDI, en utilisant la bibliothÚque MIDIWriter javascript Node.
RĂ©sultat ( ✅ ): ChatGPT a eu besoin de quelques cycles de dĂ©bogage pour bien faire les choses, mais tout ce que j'avais Ă faire Ă©tait de lui dire le code d'erreur et finalement il a produit un morceau de code fonctionnel. C'est le code que nous avons partagĂ© ci-dessus.
constMidiWriter = require ( 'midi-writer-js' ) ; const fs = requiert ( 'fs' ) ; // Crée une nouvelle tracklet track = newMidiWriter.Track(); // Définit la gamme de do majeur (du do médian au do suivant) dans les numéros MIDIletCMajorScale = [60, 62, 64, 65, 67, 69, 71, 72] ; // Boucle sur les notes de la gamme et les ajoute au trackfor(let i = 0; i < CMajorScale.length; i++) { // Ajout d'un événement de note pour chaque note de la gamme, avec une durée de '4' (noire) track.addEvent(newMidiWriter.NoteEvent({hauteur : [CMajorScale[i]], durée : '4'}) ); } // Créer un writerlet writer = newMidiWriter.Writer(track); // Enregistrer la sortie MIDI dans un filelet base64String = writer.dataUri().split(',')[1] ; laissez midiData = Buffer.from(base64String, 'base64'); fs.writeFileSync('C_Major_Scale.mid', midiData);
Nous utilisons un package appelé MidiWriter.js . Collez simplement le code ci-dessus dans votre fichier testmidi.js et lorsque vous exécutez "node testmidi.js" dans votre terminal VSCode, il enregistrera automatiquement le fichier MIDI dans ce dossier. Vous pouvez utiliser ChatGPT pour élaborer et créer des mélodies avec un rythme et un caractÚre réels. Nous y reviendrons ensuite.
ChatGPT Chord + Melody MIDI Prompt #2 : à l'aide du code javascript que j'ai fourni, créez une progression d'accords ii7 - V7 - IM7, puis écrivez une mélodie par-dessus qui utilise une combinaison de noires et de croches. La mélodie doit correspondre aux accords joués afin qu'ils ne se heurtent pas. Essayez d'utiliser une mélodie fluide et naturelle et donnez également un peu de rythme à la progression d'accords.
RĂ©sultat ( ✅ ) : Waouh ! ChatGPT a crĂ©Ă© une mĂ©lodie qui va parfaitement avec la progression d'accords que nous avons fournie. Tout ce que nous avions Ă faire Ă©tait de passer Ă un langage de programmation et les rĂ©sultats s'amĂ©lioraient considĂ©rablement.
Voici le code pour que vous puissiez le tester vous-mĂȘme :
const MidiWriter = require ( 'midi-writer-js' ) ;
const fs = requiert ( 'fs' ) ;
// Créer deux nouvelles pistes let chordTrack = new MidiWriter . Piste ();
laissez melodyTrack MidiWriter Track (
laisser accords = [
{ pitch : 62 65 , , '4' }
, 77 ] , durée : '4' } , // Sol7 noire
{ hauteur : [ 67 , 71 , 74 , 77 ] , durée : '4' } , // Sol7 noire
{ hauteur : [ 60 , 64 , 67 , 71 ] , durée : '2' } , // Cmaj7 blanche
{ hauteur : [ 60 , 64 , 67 , 71 ] , durée : '2' } // Cmaj7 blanche
] ;
// Ajoute des accords aux
accords chordTrack . forEach ( accord
chordTrack . addEvent new MidiWriter NoteEvent chord ) ;
let melody = [
[ 74 ] , durée : { 72 ] '8' , pitch 74 : '4' // D noire 76 , '8' }
durée : '2' } // Si blanche
] ;
// Ajoute une mélodie à la
mélodie melodyTrack . forEach ( note
melodyTrack . addEvent new MidiWriter NoteEvent note ) ;
let writer = new MidiWriter . Auteur ([chordTrack, melodyTrack]);
laissez base64String = Ă©crivain. dataUri (). diviser ( ',' )[ 1 ] ;
laissez midiData = Buffer . de ( base64String 'base64' ) ;
fs . writeFileSync ( 'ii7_V7_IM7_Progression_With_Melody.mid' , midiData ;
Voici un visuel de ce à quoi ressemble ce fichier MIDI lorsqu'il est importé dans un DAW comme Logic Pro X. Comme vous pouvez le voir, la mélodie a une belle forme et elle a parfaitement fonctionné avec la progression d'accords.
Accord ChatGPT + MĂ©lodie Invite MIDI #3 :
RĂ©sultat ( ✅/❌ ) : Ici, nous commençons Ă nous heurter aux limites des capacitĂ©s de ChatGPT en tant qu'outil d'IA Ă usage gĂ©nĂ©ral. Les chorals de Bach Ă quatre voix exigent que les mĂ©lodies se dĂ©placent dans une combinaison de mouvements parallĂšles et contraires.
AprÚs avoir parcouru cinq autres séries d'instructions, nous avons finalement obtenu une sortie ChatGPT limitée à une seule signature de clé et exportant un fichier MIDI à quatre voix. Il y a une bonne quantité de variations rythmiques, mais cela ressemble plus à Debussy qu'à Bach. Voici une capture d'écran de ce à quoi ressemble ce MIDI final :
Voici le code pour que vous puissiez l'essayer vous-mĂȘme :
const MidiWriter = require ( 'midi-writer-js' ) ;
const fs = requiert ( 'fs' ) ;
// Créer quatre nouvelles pistes
laissez sopranoTrack altoTrack
// DĂ©finit la gamme de La mineur en trois octaves
let aMinorScale
let sopranoMelody = index
16 , durée : '16' } ,
{ index : 18 , durée : '4' } ,
{ index : 20 , durée : '8' } ,
{ index : 18 , durée : '8' } ,
// Retour au parallĂšle mouvement
{ index : 16 , durée : '4' } ,
{ index : 14 ,durée : '8' } ,
{ index : 12 , durée : '8' } ,
{ index : 10 , durée : '4' }
] ;
let altoMelody = [
{ index : 15 , durée : '4' } ,
{ index : 13 , durée : '8' } ,
{ index : 11, durée : '8' } ,
{ index : 9 , durée : '16' } ,
// Le mouvement contraire commence ici
{ index : 11 , durée : '16' } ,
{ index : 13 , durée : '4' } ,
{ index : 15 , durée : '8' } ,
{ index : 13 , durée: '8' } ,
// Retour au mouvement parallĂšle
{ index : 11 , durée : '4' } ,
{ index : 9 , durée : '8' } ,
{ index : 7 , durée : '8' } ,
{ index : 5 , durée : '4' }
] ;
let tenorMelody = [
{ index : 10 , durée : '8' } ,
{ index : 12 , durée : '8' } ,
{ index : 14 , durée : '4' } ,
{ index : 12 , durée : '16' } ,
// DĂ©but du mouvement contraire ici
{ index : 10 , durée : '16' } ,
{ index : 8 ,durée : '4' } ,
{ index : 6 , durée : '8' } ,
{ index : 4 , durée : '8' } ,
// Retour au mouvement parallĂšle
{ index : 2 , durée : '4' } ,
{ index : 0 , durée : '8' } ,
{ index : 2 , durée : '8' } ,
{ index : 4 , durée : '4' }
] ;
let bassMelody = [
{ index : 5 , durée : '8' } ,
{ index : 7 , durée : '8' } ,
{ index : 9 , durée : '4' } ,
{ index : 7 , durée : '16' } ,
// Le mouvement inverse commence ici
{ index : 5 , durée : '16' } ,
{ index : 3 , durée : '4' } ,
{ index : 1 , durée : '8' } ,
{ index : 3 , durée : '8' } ,
// Retour au mouvement parallĂšle
{ index : 1 , durée : '4' } ,
{ indice : 3 , durée : '8' } ,
{ indice : 5 , durée : '8' } ,
{ indice : 7 , durée : '4' }
] ;
// Ajoute les mélodies aux pistes
sopranoTrack . addEvent ( sopranoMelody pitch aMinorScale index note
altoTrack altoMelody durée } ) ) ) ;
bassTrack . addEvent ( bassMelody . map ( note => new MidiWriter.NoteEvent ( { pitch : [ aMinorScale [ note . index ] ] , duration : note . duration } ) ) ) ;
// Combinez toutes les pistes
laissez l'Ă©crivain sopranoTrack
// Enregistrez la sortie MIDI dans un fichier
laissez base64String writer midiData
C'est aussi loin que nous allons prendre les invites de génération de code MIDI javascript. Vous pouvez brancher n'importe lequel de ces extraits dans GPT4 comme point de départ et demander des variations supplémentaires.
Pour une plongée technique approfondie dans le potentiel musical et les limites de GPT-4, regardez cette vidéo du codeur créatif et compositeur Marc Evanstein :
Si vous souhaitez une expérience texte-MIDI plus simple pour votre flux de travail DAW, assurez-vous de consulter AudioCipher VST .
Commentaires
Enregistrer un commentaire
đ Hello,
N'hĂ©sitez pas Ă commenter ou vous exprimer si vous avez des trucs Ă dire . . .đ