Cómo usar el último modelo de lenguaje de OpenAI para ayudar a escribir melodías para nuevas canciones
Este es el tercer y último artículo de mi serie sobre el uso de GPT-4 [1] para componer música. Mi primer artículo cubría la escritura de letras para canciones, y mi segundo artículo profundizó en la composición de acordes para acompañar las letras. En este artículo, después de una breve introducción a GPT-4, le mostraré cómo persuadir al modelo para crear melodías para canciones con acordes y letras. Terminaré con una discusión general y ofreceré algunos pasos a seguir para componer música con IA.
GPT-4 es el último modelo de lenguaje grande de OpenAI. Está disponible en la versión paga de su servicio ChatGPT, que cuesta US$20 por mes. El modelo es una mejora en su iteración anterior, GPT-3.5. Aquí hay un extracto de lo que dice OpenAI sobre el nuevo modelo en su sitio de aterrizaje GPT4.
GPT-4 es más creativo y colaborativo que nunca. Puede generar, editar e iterar con los usuarios en tareas de escritura técnica y creativa, como componer canciones, escribir guiones o aprender el estilo de escritura de un usuario. … Pasamos 6 meses haciendo que GPT-4 sea más seguro y más alineado. GPT-4 tiene un 82 % menos de probabilidades de responder a solicitudes de contenido no permitido y un 40 % más de probabilidades de producir respuestas fácticas que GPT-3.5 en nuestras evaluaciones internas – OpenAI
Bien, enumeraron «componer canciones» como uno de sus ejemplos de tareas creativas. También mencionaron que el modelo está más «alineado», que es la palabra de moda de OpenAI para hacer que los modelos de IA sigan los valores y la intención humanos. Puede leer más sobre esto en su informe técnico.
Como mencioné en mis artículos anteriores sobre GPT-4, OpenAI recopila las indicaciones y respuestas de los usuarios de forma predeterminada y puede usarlas para mejorar modelos futuros. Sin embargo, puede optar por no participar en esta recopilación de datos enviando este formulario, aquí.
Actualmente, los modelos de lenguaje grande solo se ocupan de la entrada y salida de texto. Sin embargo, OpenAI está trabajando para extender GPT-4 para usar imágenes en las indicaciones. Este modelo aún no está disponible para el público, pero está disponible en una versión beta de una aplicación llamada Be My Eyes. La aplicación ayuda a las personas ciegas o con baja visión con las tareas diarias mediante el análisis de imágenes y la lectura de una descripción de texto de la escena.
Para este artículo, exploré varias formas de hacer que el modelo componga melodías usando formatos de texto. Encontré que el mejor formato para esto es usar la notación de tablatura (o tablatura) de guitarra.
Lengüetas de guitarra
Los músicos usan tablas de guitarra para transcribir notas y acordes para instrumentos de cuerda como texto sin formato. En lugar de las notas musicales habituales en un pentagrama, las tablas de guitarra muestran qué trastes se utilizan con el tiempo para las cuerdas de un instrumento. Por ejemplo, aquí está la primera línea de “Happy Birthday to You” como una tablatura de guitarra de seis cuerdas.
El tiempo está en el eje horizontal; las cuerdas están en el eje vertical desde la más baja en la parte inferior hasta la más alta en la parte superior. Los números representan qué traste tocar en determinados momentos. Un número mayor corresponde a una nota más alta. Después de experimentar con esto, descubrí que había suficientes tabulaciones de guitarra con el comentario correspondiente en los datos de entrenamiento basados en la web para permitir que los modelos de lenguaje compongan en este formato.
Interactuando con GPT-4
Utilizando la canción de ejemplo de mis primeros dos artículos, le pedí a GPT-4 que compusiera una melodía parte por parte. Así es como fue la primera interacción.
RobG: Escribe una melodía para la canción Dogs and Cats en formato de tablatura de guitarra. Toca una nota por cada sílaba.
[G] Perros y gatos, ellos [C] vagar por las calles
[Em] amigos peludos con [D] corazones que laten
[G] Garras y patas, ellos [C] gobernar la tierra
[Em] Colas moviéndose, [D] ellos entiendenGPT-4:
Soy un modelo basado en texto de IA, por lo que no puedo crear ni reproducir un sonido. Pero puedo darte un ejemplo de cómo podrías poner estos acordes en una melodía simple usando el formato de tabulación de guitarra, cada nota para cada sílaba.Los acordes básicos provistos son G, C, Em y D. Usaré la escala G mayor como base de la melodía.
Recuerda, en formato de tabulación, las líneas representan las cuerdas de una guitarra (desde el E inferior en la parte inferior hasta el E superior en la parte superior), y los números representan qué traste tocar en esa cuerda. Aquí hay un ejemplo simple:
e|—————-0——————|—————–3——————|
B|———1—3—–3-1———1–|——-0—1-3——-3-1————|
G|——-0—0———–2-0——–|—–0—0—————2-0——–|
D|—–2———————-2——|—2——————————-|
A|———————————-|———————————–|
E|———————————-|———————————–|
G C Em D
e|—————-0——————|—————–3——————|
B|———1—3—–3-1———1–|——-0—1-3——-3-1————|
G|——-0—0———–2-0——–|—–0—0—————2-0——–|
D|—–2———————-2——|—2——————————-|
A|———————————-|———————————–|
E|———————————-|———————————–|
G C Em D
Este es solo un ejemplo muy simple y es posible que la melodía no capture completamente el espíritu de sus letras, pero espero que ayude como punto de partida. Es posible que desee ajustar el ritmo y la melodía para que se adapten mejor a su canción.
Esto es interesante. Es una frase musical de dos partes que se repite dos veces. Pero en una inspección más cercana, puede ver que hay demasiadas sílabas en las frases; tiene doce+once cuando debería ser siete+siete. Además, las líneas verticales no se alinean. Repetí el proceso para el segundo verso y limpié un poco las frases en un editor de texto para que se viera así.
e|————-0—–|——————-|
B|——-1—3—3—|——-0—1-3—–|
G|—–0—0———|—–0—0—–0—|
D|—2—————|—2—————|
A|——————-|——————-|
E|——————-|——————-|
G C Em D
e|——————-|——————-|
B|——-0-3-1-0—–|——-0—3-1—–|
G|—–1———2—|—–0—0—–2—|
D|—2—————|—2—————|
A|——————-|——————-|
E|——————-|——————-|
Am C G D
Escribí un código de Python aquí para convertir tabulaciones de guitarra en archivos MIDI, para poder reproducirlas y escuchar cómo sonaban. El código se basa en un proyecto similar de Brian Caffey [2]. Aquí está la partitura completa.
Y así es como suena la canción. Usé Band-in-a-Box de PG Music para arreglar la canción con piano, guitarra, bajo y batería. Siéntete libre de cantar. 😀
Es simple pero pegadiza, como una canción infantil. La primera nota es un poco extraña porque es una E, lo que haría que el acorde G fuera efectivamente un G6. Y esto también ocurre con cada instancia del acorde G. Creo que lo mejor de la melodía es la variación de la tercera vez con Am y G. A continuación, les mostraré cómo creé melodías para una canción de ska.
Para probar más este método, creé melodías principales para la canción «Dance with the Fear», que se desarrolló en los dos primeros artículos de esta serie. La letra y los acordes están basados en la canción “Grow” de la banda de ska The Agents, que usé con su permiso. Logré que GPT-4 creara una melodía para la nueva canción, una sección a la vez.
Creando el verso
Al igual que el método que usé anteriormente, le pedí a GPT-4 que creara una melodía para el verso y le proporcioné los acordes y la letra. Presioné el botón de regeneración varias veces y examiné los resultados antes de decidirme por este.
RobG: Escribe una tablatura de guitarra para la melodía del verso de esta canción de ska, tocando solo una nota a la vez.
[Em] Despertar a un [G] nuevo día,
[D] Sintiendo el miedo pero [A] sin dar la espalda,
[Em] Frente a lo desconocido, [G] ahí es donde vamos a empezar,
[D] Con una mente abierta y [A] un corazón sin miedo.GPT-4:
Aquí hay una tablatura de guitarra simple para la melodía del verso, tocando una nota a la vez.
e|—————–|—————–|—————–|—————–|
B|—–7-8——-8-|-8-8-7-7———|-5-5-7-7——-8-|-8-8-7-7-5–5-5–|
G|—7——-7-7—|———7–7-7–|———–7-7—|—————–|
D|-5—————|—————–|—————–|—————–|
A|—————–|—————–|—————–|—————–|
E|—————–|—————–|—————–|—————–|
e|—————–|—————–|—————–|—————–|
B|—–7-8——-8-|-8-8-7-7———|-5-5-7-7——-8-|-8-8-7-7-5–5-5–|
G|—7——-7-7—|———7–7-7–|———–7-7—|—————–|
D|-5—————|—————–|—————–|—————–|
A|—————–|—————–|—————–|—————–|
E|—————–|—————–|—————–|—————–|
Tenga en cuenta que esta pestaña es una versión simplificada de la melodía, y puede modificarla y embellecerla más como mejor le parezca para su interpretación o arreglo.
Así es como suena la melodía.
En general, es bastante bueno. Estableció un tema para la primera frase y tiene una buena resolución para la segunda frase. Pero, una vez más, creó demasiadas notas para la letra.
Creando el Pre-Coro
Un pre-estribillo es una melodía que conduce al estribillo de una canción. Tenga en cuenta que la interfaz de usuario de ChatGPT incluía el contexto de las interacciones anteriores en la sesión, por lo que podría ser un poco más breve en mi mensaje para generar la melodía para el coro previo.
Escribe una melodía para el pre-coro.
[Am] No más esconderse, [C] no mas dudas,
[G] Es hora de dejar que nuestro [D] coraje fuera.GPT-4
Claro, puedo proporcionar una melodía simple para el pre-estribillo usando la progresión de acordes provista. Aquí está la ficha:
e|——0-0-0-0—-|-0—————|—————–|-0—————|
B|—-1———-|—-3-1-1-1-1—|—-1-3-3-1-3-3-|——-3-3-1-3-3-|
G|–0————–|—————|—————-|—————-|
D|—————–|—————-|—————-|—————-|
A|—————–|—————-|—————-|—————-|
E|—————–|—————-|—————-|—————-|
Esta melodía utiliza las escalas de La menor, Do mayor, Sol mayor y Re mayor respectivamente. Como siempre, siéntete libre de modificar esto como mejor te parezca para tu desempeño.
Estoy seguro de que significaba la palabra «acordes» en lugar de «escalas» en su respuesta, ya que la melodía que generó está en sol mayor. Solo para estar seguro, pedí una aclaración.
RobG: ¿Querías usar la palabra «escalas»?
GPT-4: Mis disculpas por cualquier confusión. Quise decir que las notas de la melodía se basan en los acordes respectivos, no en las escalas.
Bien, eso aclaró las cosas. En cuanto a la melodía, tuve la sensación de que las muchas notas que escribió podrían interpretarse como notas sostenidas. En otras palabras, una cadena de cuatro corcheas podría tocarse como una media nota. Esto refleja una limitación del formato de tablatura de guitarra en el sentido de que no se expresan las longitudes de las notas. Visto a través de esta lente, la melodía es buena. Aquí está la melodía para el pre-estribillo, tal como fue escrita originalmente y después de convertir algunas de las notas repetidas en notas sueltas de mayor duración.
Bien, la segunda toma suena mejor con las notas sostenidas. Aquí están las letras y los acordes nuevamente como referencia.
[Am] No más esconderse, [C] no mas dudas,[G] Es hora de dejar que nuestro [D] coraje fuera.
Las cuatro partes
Repetí el proceso para el coro y el puente y junté las partes en una sola partitura con los acordes tocados en un piano. Aquí están las cuatro partes de la canción.
Para esta versión de la canción, limpié todas las notas repetidas para que coincidieran con el ritmo y la métrica de la letra. En general, la calidad de las melodías es buena. No hubo notas amargas y las frases encajan con los acordes subyacentes.
A continuación, puedes escuchar la canción con un cantante humano real.
Estoy muy agradecido a mi amiga y colega, Kate Li, quien cantó la melodía de este artículo. Transpuso la canción seis medios pasos hacia arriba para pasar de sol a re bemol para adaptarse a su rango vocal. Usé Band-in-a-box para completar la instrumentación con piano, guitarra, metales, bajo y batería. Aquí está la canción terminada.
Kate lo hizo muy bien cantando la pista vocal principal y agregando armonías para los coros. Aportó mucho impacto emocional al puente con la melodía creciente y proporcionó algunas buenas improvisaciones para el final. Déjame saber tu opinión sobre la canción aquí o en SoundCloud.
Tomó un poco de trabajo, pero obtuve GPT-4 para generar melodías para nuevas canciones. Es complicado trabajar con el formato de tabulación de guitarra, pero actualmente es la mejor manera de hacerlo. Cuando OpenAI lanza su versión de GPT-4 con visión, espero que haya visto páginas de partituras para ayudar a componer melodías.
Comparando las tres tareas de composición musical que me propuse hacer en esta serie, analizar y generar acordes en el segundo artículo funcionó mejor. Aunque imperfecto, el modelo de lenguaje tiene un profundo conocimiento de la teoría musical y puede crear fácilmente progresiones de acordes nuevas e innovadoras.
Analizar y crear letras para canciones, discutido en el primer artículo, también fue fácil de hacer con GPT-4, pero las letras generadas a menudo eran simples y cliché. Aunque el sistema sabe cómo rimar, se necesita algo de trabajo para dirigir el sistema para crear letras únicas, emocionantes y significativas.
El código fuente de este proyecto está disponible en GitHub.
Quiero agradecer a Kate Li por cantar la canción de este artículo. También agradezco a Pete Fayan de los Agentes por su compromiso con este proyecto. Finalmente, agradezco a Jennifer Lim por revisar el artículo y brindar sus comentarios.
Aquí están los dos primeros artículos de esta serie.
[1] Informe técnico de OpenAI, GPT-4 (2023) [2] B. Caffey, Generación de archivos MIDI a partir de tablaturas de guitarra con Python y expresiones regulares (2018)