{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt_dir = \"/home/christian/code/christian/sunoBench/prompts\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Genre\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# these are the tag names from msd\n",
    "tag_names = (\n",
    "    'rock',\n",
    "    'pop',\n",
    "    'indie',\n",
    "    'alternative',\n",
    "    'electronic',\n",
    "    'hip-hop',\n",
    "    'metal',\n",
    "    'jazz',\n",
    "    'punk',\n",
    "    'folk',\n",
    "    'alternative rock',\n",
    "    'indie rock',\n",
    "    'dance',\n",
    "    'hard rock',\n",
    "    '00s',\n",
    "    'soul',\n",
    "    'hardcore',\n",
    "    '80s',\n",
    "    'country',\n",
    "    'classic rock',\n",
    "    'punk rock',\n",
    "    'blues',\n",
    "    'chillout',\n",
    "    'experimental',\n",
    "    'heavy metal',\n",
    "    'death metal',\n",
    "    '90s',\n",
    "    'reggae',\n",
    "    'progressive rock',\n",
    "    'ambient',\n",
    "    'acoustic',\n",
    "    'beautiful',\n",
    "    'british',\n",
    "    'rnb',\n",
    "    'funk',\n",
    "    'metalcore',\n",
    "    'mellow',\n",
    "    'world',\n",
    "    'guitar',\n",
    "    'trance',\n",
    "    'indie pop',\n",
    "    'christian',\n",
    "    'house',\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# style tags\n",
    "genre_tags = [\n",
    "    \"rock\",\n",
    "    \"pop\",\n",
    "    \"jazz\",\n",
    "    \"blues\",\n",
    "    \"hip-hop\",\n",
    "    \"heavy metal\",\n",
    "    \"electronic\",\n",
    "    \"acoustic\",\n",
    "    \"ambient\",\n",
    "    \"funk\"\n",
    "]\n",
    "\n",
    "vocal_tags = [\n",
    "    \"male vocalist\",\n",
    "    \"female vocalist\",\n",
    "]\n",
    "\n",
    "instrument_tags = [\n",
    "    \"guitar\",\n",
    "    \"piano\",\n",
    "    \"drums\",\n",
    "    \"bass\",\n",
    "    \"saxophone\",\n",
    "    \"trumpet\",\n",
    "    \"violin\",\n",
    "    \"flute\",\n",
    "    \"banjo\",\n",
    "    \"harmonica\",\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# song lyrics, 10 different songs\n",
    "text_1 = \"\"\"\n",
    "[Verse 1]\n",
    "Monday morning stares at me\n",
    "Another meeting, can't you see\n",
    "Tuesday's packed from nine to five\n",
    "Wednesday wondering how I'll survive\n",
    "\n",
    "[Chorus]\n",
    "My calendar keeps filling up\n",
    "Like coffee in an endless cup\n",
    "Red dots blinking everywhere\n",
    "Double-booked without a care\n",
    "\n",
    "[Verse 2]\n",
    "Thursday's got me running late\n",
    "Friday's schedule won't abate\n",
    "Weekend plans start creeping in\n",
    "Making my head start to spin\n",
    "\n",
    "[Chorus]\n",
    "My calendar keeps filling up\n",
    "Like coffee in an endless cup\n",
    "Red dots blinking everywhere\n",
    "Double-booked without a care\n",
    "\n",
    "[Bridge]\n",
    "Need to find some breathing room\n",
    "Between the Zooms and afternoon\n",
    "Maybe someday I'll be free\n",
    "From this digital potpourri\n",
    "\n",
    "[Chorus]\n",
    "My calendar keeps filling up\n",
    "Like coffee in an endless cup\n",
    "Red dots blinking everywhere\n",
    "Double-booked without a care\n",
    "\n",
    "[Outro]\n",
    "Time keeps ticking, day by day\n",
    "While my calendar has its way\n",
    "But someday soon I'll take control\n",
    "And clear some space to free my soul\n",
    "\"\"\"\n",
    "\n",
    "text_2 = \"\"\"\n",
    "[Verse 1]\n",
    "Wings spread wide against the sky\n",
    "Catching thermals as they fly\n",
    "Cardinals flash their crimson bright\n",
    "While ravens dance in fading light\n",
    "\n",
    "[Chorus]\n",
    "They're singing songs we'll never know\n",
    "From treetop high to ground below\n",
    "Nature's choir in perfect tune\n",
    "From dawn until the rising moon\n",
    "\n",
    "[Verse 2]\n",
    "Sparrows hop along the street\n",
    "Pigeons march on steady feet\n",
    "Hawks circle with watchful eyes\n",
    "While swallows paint the evening skies\n",
    "\n",
    "[Bridge]\n",
    "Freedom found on feathered wings\n",
    "Listen as each spirit sings\n",
    "Wild and tame, they share the air\n",
    "Finding beauty everywhere\n",
    "\n",
    "[Outro]\n",
    "As daylight fades to starlit night\n",
    "The last notes fade from their flight\n",
    "But tomorrow they'll return again\n",
    "To start their song, just like then\n",
    "\"\"\"\n",
    "\n",
    "text_3 = \"\"\"\n",
    "[Verse 1]\n",
    "Boots on trail at break of dawn\n",
    "Mist and shadows carry on\n",
    "Each step higher than before\n",
    "Nature's secrets to explore\n",
    "\n",
    "[Chorus]\n",
    "Up the mountain we will climb\n",
    "Leave the world of clocks and time\n",
    "Rocky paths beneath our feet\n",
    "Make this journey so complete\n",
    "\n",
    "[Verse 2]\n",
    "Alpine meadows bloom with pride\n",
    "Mountain streams flow by our side\n",
    "Thin air makes us catch our breath\n",
    "Views that make us forget the rest\n",
    "\n",
    "[Bridge]\n",
    "Summit calling from above\n",
    "Testing limits, showing love\n",
    "For these peaks that touch the sky\n",
    "Where the eagles dare to fly\n",
    "\n",
    "[Outro]\n",
    "As we make our way back down\n",
    "carrying memories we found\n",
    "These mountains now part of me\n",
    "Till next time we climb them free\n",
    "\"\"\"\n",
    "\n",
    "text_4 = \"\"\"\n",
    "[Verse 1]\n",
    "Morning brew, dark and deep\n",
    "Waking dreams from restless sleep\n",
    "Steam rising, rich aroma flows\n",
    "First sip and suddenly I know\n",
    "\n",
    "[Chorus]\n",
    "Coffee running through my veins\n",
    "Clearing out the morning haze\n",
    "Bitter sweet and piping hot\n",
    "Giving all the strength I've got\n",
    "\n",
    "[Verse 2]\n",
    "Espresso shots and lattes tall\n",
    "Cappuccino calls my soul\n",
    "French press waiting on the counter\n",
    "Each cup making minutes brighter\n",
    "\n",
    "[Bridge]\n",
    "Some like it black as midnight sky\n",
    "Others sweet with cream piled high\n",
    "However you take your daily grind\n",
    "It brings your senses back to life\n",
    "\n",
    "[Outro]\n",
    "As my final drop runs dry\n",
    "Time to brew another try\n",
    "This dance we do throughout the day\n",
    "Keeps the sleepy thoughts away\n",
    "\"\"\"\n",
    "\n",
    "text_5 = \"[Instrumental]\"\n",
    "\n",
    "texts = [text_1, text_2, text_3, text_4, text_5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# hard to sing lyrics\n",
    "text_1 = \"\"\"\n",
    "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n",
    "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n",
    "\"\"\"\n",
    "\n",
    "text_2 = \"\"\"\n",
    "Auks or alcids are birds of the family Alcidae in the order Charadriiformes.[1] The alcid family includes the murres, guillemots, auklets, puffins, and murrelets. The family contains 25 extant or recently extinct species that are divided into 11 genera. Auks are found throughout the Northern Hemisphere.[1][2]\n",
    "Apart from the extinct great auk, all auks can fly, and are excellent swimmers and divers (appearing to \"fly\" in water), but their walking appears clumsy.\n",
    "\"\"\"\n",
    "\n",
    "text_3 = \"\"\"\n",
    "Scripts.com\n",
    "Bee Movie\n",
    "By Jerry Seinfeld\n",
    "\n",
    "NARRATOR:\n",
    "(Black screen with text; The sound of buzzing bees can be heard)\n",
    "According to all known laws\n",
    "of aviation,\n",
    " :\n",
    "there is no way a bee\n",
    "should be able to fly.\n",
    " :\n",
    "Its wings are too small to get\n",
    "its fat little body off the ground.\n",
    " :\n",
    "The bee, of course, flies anyway\n",
    " :\n",
    "because bees don't care\n",
    "what humans think is impossible.\n",
    "BARRY BENSON:\n",
    "(Barry is picking out a shirt)\n",
    "Yellow, black. Yellow, black.\n",
    "Yellow, black. Yellow, black.\n",
    " :\n",
    "Ooh, black and yellow!\n",
    "Let's shake it up a little.\n",
    "JANET BENSON:\n",
    "Barry! Breakfast is ready!\n",
    "BARRY:\n",
    "Coming!\n",
    " :\n",
    "Hang on a second.\n",
    "(Barry uses his antenna like a phone)\n",
    " :\n",
    "Hello?\n",
    "ADAM FLAYMAN:\n",
    "\n",
    "(Through phone)\n",
    "- Barry?\n",
    "BARRY:\n",
    "- Adam?\n",
    "ADAM:\n",
    "- Can you believe this is happening?\n",
    "BARRY:\n",
    "- I can't. I'll pick you up.\n",
    "(Barry flies down the stairs)\n",
    " :\n",
    "MARTIN BENSON:\n",
    "Looking sharp.\n",
    "JANET:\n",
    "Use the stairs. Your father\n",
    "paid good money for those.\n",
    "BARRY:\n",
    "Sorry. I'm excited.\n",
    "MARTIN:\n",
    "Here's the graduate.\n",
    "We're very proud of you, son.\n",
    " :\n",
    "A perfect report card, all B's.\n",
    "JANET:\n",
    "Very proud.\n",
    "(Rubs Barry's hair)\n",
    "BARRY=\n",
    "Ma! I got a thing going here.\n",
    "JANET:\n",
    "- You got lint on your fuzz.\n",
    "BARRY:\n",
    "- Ow! That's me!\n",
    "\"\"\"\n",
    "\n",
    "text_4 = \"\"\"\n",
    "One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen Twenty\n",
    "Twenty-One Twenty-Two Twenty-Three Twenty-Four Twenty-Five Twenty-Six Twenty-Seven Twenty-Eight Twenty-Nine Thirty\n",
    "Thirty-One Thirty-Two Thirty-Three Thirty-Four Thirty-Five Thirty-Six Thirty-Seven Thirty-Eight Thirty-Nine Forty\n",
    "\"\"\"\n",
    "\n",
    "text_5 = \"\"\"\n",
    "UNROLL THE TADPOLE OSFrog UNCLOG THE FROG OSFrog UNLOAD THE TOAD OSFrog UNINHIBIT THE RIBBIT OSFrog UNSTICK THE LICK OSFrog UNIMPRISON THE AMPHIBIAN OSFrog UNMUTE THE NEWT OSFrog UNBENCH THE KENCH OSFrog PERMIT THE KERMIT OSFrog DEFOG THE POLLIWOG OSFrog\n",
    "\"\"\"\n",
    "\n",
    "text_6 = \"\"\"\n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT\n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT \n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT \n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT \n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT \n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT \n",
    "CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT CAT \n",
    "\"\"\"\n",
    "\n",
    "hard_to_sing_texts = [text_1, text_2, text_3, text_4, text_5, text_6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "170\n"
     ]
    }
   ],
   "source": [
    "# construct a csv file with prompts for the model\n",
    "import uuid\n",
    "\n",
    "prompts = {\n",
    "    \"id\": [],\n",
    "    \"tags\": [],\n",
    "    \"text\": [],\n",
    "    \"task\": [],\n",
    "}\n",
    "\n",
    "# first do genre tags\n",
    "for tag in genre_tags:\n",
    "    for text in texts:\n",
    "        prompt_id = str(uuid.uuid4())\n",
    "        prompts[\"tags\"].append(tag)\n",
    "        prompts[\"text\"].append(text)  # Use text instead of text_1\n",
    "        prompts[\"id\"].append(prompt_id)\n",
    "        prompts[\"task\"].append(\"genre\")\n",
    "\n",
    "    # then do hard to sing\n",
    "    for hard_to_sing_text in hard_to_sing_texts:\n",
    "        prompt_id = str(uuid.uuid4())\n",
    "        prompts[\"tags\"].append(tag)\n",
    "        prompts[\"text\"].append(hard_to_sing_text)  # Use text instead of text_1\n",
    "        prompts[\"id\"].append(prompt_id)\n",
    "        prompts[\"task\"].append(\"hard_to_sing\")\n",
    "\n",
    "# then do instrument tags\n",
    "for tag in instrument_tags:\n",
    "    for text in texts:\n",
    "        prompt_id = str(uuid.uuid4())\n",
    "        prompts[\"tags\"].append(tag)\n",
    "        prompts[\"text\"].append(text)  # Use text instead of text_1\n",
    "        prompts[\"id\"].append(prompt_id)\n",
    "        prompts[\"task\"].append(\"instrument\")\n",
    "\n",
    "# then do vocal tags\n",
    "for tag in vocal_tags:\n",
    "    for text in texts:\n",
    "        prompt_id = str(uuid.uuid4())\n",
    "        prompts[\"tags\"].append(tag)\n",
    "        prompts[\"text\"].append(text)  # Use text instead of text_1\n",
    "        prompts[\"id\"].append(prompt_id)\n",
    "        prompts[\"task\"].append(\"vocal\")\n",
    "\n",
    "\n",
    "# put id as first column\n",
    "output_path = os.path.join(prompt_dir, \"suno_bench_prompts_v1.csv\")\n",
    "df = pd.DataFrame(prompts)\n",
    "df.to_csv(output_path, index=False)\n",
    "print(len(df))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>tags</th>\n",
       "      <th>text</th>\n",
       "      <th>task</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3fca2291-f9c6-4cf1-ae48-e04b4de6e1de</td>\n",
       "      <td>rock</td>\n",
       "      <td>\\n[Verse 1]\\nMonday morning stares at me\\nAnot...</td>\n",
       "      <td>genre</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>67d96ed1-02eb-4a3a-80f1-0b34aaa7dbaf</td>\n",
       "      <td>rock</td>\n",
       "      <td>\\n[Verse 1]\\nWings spread wide against the sky...</td>\n",
       "      <td>genre</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>b5a979eb-8124-456f-b278-dfe117243ffe</td>\n",
       "      <td>rock</td>\n",
       "      <td>\\n[Verse 1]\\nBoots on trail at break of dawn\\n...</td>\n",
       "      <td>genre</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>cd984788-5d4f-4c76-a273-1ba3ae253015</td>\n",
       "      <td>rock</td>\n",
       "      <td>\\n[Verse 1]\\nMorning brew, dark and deep\\nWaki...</td>\n",
       "      <td>genre</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>32b2f7a3-f723-462a-8579-0d20572a6531</td>\n",
       "      <td>rock</td>\n",
       "      <td>[Instrumental]</td>\n",
       "      <td>genre</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>8f548daf-4289-44bf-962b-9e77df95a0e3</td>\n",
       "      <td>female vocalist</td>\n",
       "      <td>\\n[Verse 1]\\nMonday morning stares at me\\nAnot...</td>\n",
       "      <td>vocal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>166</th>\n",
       "      <td>9297b330-57d4-45fc-9334-3c63dc47a45a</td>\n",
       "      <td>female vocalist</td>\n",
       "      <td>\\n[Verse 1]\\nWings spread wide against the sky...</td>\n",
       "      <td>vocal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>6798c1e3-7c67-418e-b90d-2df13963a33a</td>\n",
       "      <td>female vocalist</td>\n",
       "      <td>\\n[Verse 1]\\nBoots on trail at break of dawn\\n...</td>\n",
       "      <td>vocal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>168</th>\n",
       "      <td>fa095fb9-3bdf-4468-8b45-c1968c407461</td>\n",
       "      <td>female vocalist</td>\n",
       "      <td>\\n[Verse 1]\\nMorning brew, dark and deep\\nWaki...</td>\n",
       "      <td>vocal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>169</th>\n",
       "      <td>0c6d812c-7b19-44f4-95e2-5f15087335a9</td>\n",
       "      <td>female vocalist</td>\n",
       "      <td>[Instrumental]</td>\n",
       "      <td>vocal</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>170 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                       id             tags  \\\n",
       "0    3fca2291-f9c6-4cf1-ae48-e04b4de6e1de             rock   \n",
       "1    67d96ed1-02eb-4a3a-80f1-0b34aaa7dbaf             rock   \n",
       "2    b5a979eb-8124-456f-b278-dfe117243ffe             rock   \n",
       "3    cd984788-5d4f-4c76-a273-1ba3ae253015             rock   \n",
       "4    32b2f7a3-f723-462a-8579-0d20572a6531             rock   \n",
       "..                                    ...              ...   \n",
       "165  8f548daf-4289-44bf-962b-9e77df95a0e3  female vocalist   \n",
       "166  9297b330-57d4-45fc-9334-3c63dc47a45a  female vocalist   \n",
       "167  6798c1e3-7c67-418e-b90d-2df13963a33a  female vocalist   \n",
       "168  fa095fb9-3bdf-4468-8b45-c1968c407461  female vocalist   \n",
       "169  0c6d812c-7b19-44f4-95e2-5f15087335a9  female vocalist   \n",
       "\n",
       "                                                  text   task  \n",
       "0    \\n[Verse 1]\\nMonday morning stares at me\\nAnot...  genre  \n",
       "1    \\n[Verse 1]\\nWings spread wide against the sky...  genre  \n",
       "2    \\n[Verse 1]\\nBoots on trail at break of dawn\\n...  genre  \n",
       "3    \\n[Verse 1]\\nMorning brew, dark and deep\\nWaki...  genre  \n",
       "4                                       [Instrumental]  genre  \n",
       "..                                                 ...    ...  \n",
       "165  \\n[Verse 1]\\nMonday morning stares at me\\nAnot...  vocal  \n",
       "166  \\n[Verse 1]\\nWings spread wide against the sky...  vocal  \n",
       "167  \\n[Verse 1]\\nBoots on trail at break of dawn\\n...  vocal  \n",
       "168  \\n[Verse 1]\\nMorning brew, dark and deep\\nWaki...  vocal  \n",
       "169                                     [Instrumental]  vocal  \n",
       "\n",
       "[170 rows x 4 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. Singing\n",
    "Use hard to sing lyrics in different genres. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "tags = [\"Pop\", \"Jazz\", \"House, Techno, Downbeat\", \"Film, epic, orchestra\", \"Gregorian Chant, Hymns, Christian, ethereal\", \"Metal\"]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "36\n"
     ]
    }
   ],
   "source": [
    "# construct a csv file with prompts for the model\n",
    "import uuid\n",
    "\n",
    "prompts = {\n",
    "    \"id\": [],\n",
    "    \"tags\": [],\n",
    "    \"text\": [],\n",
    "}\n",
    "for tag in tags:\n",
    "    for text in texts:\n",
    "        prompt_id = str(uuid.uuid4())\n",
    "        prompts[\"tags\"].append(tag)\n",
    "        prompts[\"text\"].append(text)  # Use text instead of text_1\n",
    "        prompts[\"id\"].append(prompt_id)\n",
    "\n",
    "# put id as first column\n",
    "df = pd.DataFrame(prompts)\n",
    "output_path = os.path.join(prompt_dir, \"02_singing_prompts.csv\")\n",
    "df.to_csv(output_path, index=False)\n",
    "print(len(df))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "suno_env",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
