{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "625\n",
      "tensor([  15,   91,    3,   91,   64,   68,   65,   13,   87,   90,   15,   41,\n",
      "          65,   67,   53,   68,   83,   30,   71,    4,   18,   55,   95,   42,\n",
      "          60,   91,   14,   16,   73,   69,   46,   44,   49,   77,   65,   20,\n",
      "          76,   44,   34,   67,    8,   80,   32,   88,    1,   36,   71,   91,\n",
      "          70,   47,   45,   63,   10,    6,   81,   13,   64,   31,   52,   41,\n",
      "           9,   50,   77,   62,   55,   20,   67,   29,   46,   74,   28,   47,\n",
      "           9,    8,   98,   92,   35,   55,   43,   76,   19,   25,   86,   15,\n",
      "          59,   47,   57,   13,   27,   57,   50,   13,    2,   57,   52,   25,\n",
      "          53,   14,   20,   42,   24,    3,   44,   18,   67,   79,    8,   44,\n",
      "          88,   71,   71,   16,   17,   10,   80,   48,   72,   50,   95,   89,\n",
      "          76,   95,   73,   54,   69, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000])\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import random\n",
    "\n",
    "semantic_n_tokens = 750\n",
    "semantic_pad_token = 4000\n",
    "semantic_rate_hz = 25\n",
    "\n",
    "semantic_codes = torch.randint(0, 100, (semantic_n_tokens,))\n",
    "\n",
    "dice_roll_2 = 0.67\n",
    "if dice_roll_2 <= 0.33:# 33% chance pad with random amount at the end\n",
    "    n = random.randint(1, semantic_n_tokens - 1)\n",
    "elif dice_roll_2 <= 0.66: # 33% chance to pad exactly 15s at the end (15s chunk)\n",
    "    n = semantic_rate_hz * 15\n",
    "else: # 33% chance to pad exactly 25s at the end (5s chunk)\n",
    "    n = semantic_rate_hz * 25\n",
    "\n",
    "print(n)\n",
    "semantic_codes[-n:] = semantic_pad_token\n",
    "\n",
    "print(semantic_codes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6652893338666702\n",
      "tensor([4000, 4000, 4000, 4000, 4000,   14,   12,   36, 4000, 4000,   74, 4000,\n",
      "          60, 4000, 4000, 4000, 4000,   94,   20, 4000, 4000, 4000,   88, 4000,\n",
      "           3, 4000, 4000,   51, 4000,   15, 4000, 4000,    5, 4000, 4000,   82,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000,   83, 4000, 4000, 4000, 4000,   53,\n",
      "          43,   10, 4000,   43, 4000, 4000, 4000, 4000,   55, 4000, 4000,    6,\n",
      "        4000,    9, 4000,   30, 4000, 4000, 4000,    7,   31,   79, 4000,   60,\n",
      "          84, 4000, 4000, 4000,    0, 4000, 4000,   31, 4000, 4000, 4000, 4000,\n",
      "        4000,   44, 4000, 4000, 4000, 4000, 4000, 4000, 4000,    8, 4000, 4000,\n",
      "        4000, 4000, 4000,   86, 4000,   59, 4000,    3, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000,   44, 4000, 4000,   69, 4000, 4000,   81,\n",
      "        4000, 4000,   54, 4000, 4000, 4000, 4000,   74, 4000,   37, 4000,   58,\n",
      "        4000,   21,   71, 4000, 4000,   23, 4000, 4000, 4000, 4000,    6,   31,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000,   63,   52,    5, 4000,   22,\n",
      "          14, 4000, 4000, 4000, 4000, 4000, 4000, 4000,   89, 4000,   61, 4000,\n",
      "        4000, 4000, 4000, 4000,   54, 4000,   80,   78, 4000, 4000,   15,   76,\n",
      "        4000,   14, 4000, 4000, 4000,   17,    9,   65, 4000, 4000, 4000,   72,\n",
      "        4000,   88, 4000,   69, 4000,   54,   17, 4000, 4000, 4000,   15, 4000,\n",
      "        4000,   28, 4000, 4000,   63,   12, 4000, 4000, 4000, 4000, 4000,   73,\n",
      "          67, 4000, 4000, 4000,   82, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000,    4, 4000, 4000,   20,   64, 4000, 4000, 4000, 4000,\n",
      "          56, 4000, 4000, 4000,   86, 4000,   25, 4000, 4000, 4000,   97, 4000,\n",
      "        4000, 4000, 4000,   93, 4000, 4000, 4000, 4000,   22, 4000,   30, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000, 4000, 4000,   72, 4000,   49,   53,   32,\n",
      "        4000, 4000, 4000,   38, 4000, 4000,   89,    9, 4000,   68, 4000, 4000,\n",
      "        4000,   76, 4000, 4000, 4000, 4000, 4000, 4000,   78, 4000, 4000, 4000,\n",
      "        4000, 4000,   25,   90, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "          17, 4000, 4000,   71, 4000,   57, 4000,   35, 4000, 4000, 4000, 4000,\n",
      "          95,   54, 4000,   79, 4000,   63, 4000,    1,   74, 4000,   73,   66,\n",
      "          70,   36, 4000, 4000, 4000, 4000,   62, 4000,   53, 4000, 4000, 4000,\n",
      "        4000,   40, 4000, 4000,   51, 4000, 4000, 4000, 4000,   17,    5, 4000,\n",
      "          67, 4000, 4000,   53, 4000, 4000, 4000,   60,   12, 4000, 4000, 4000,\n",
      "          53,   82, 4000,   97,   22, 4000,   89, 4000, 4000, 4000,   19, 4000,\n",
      "          85,   54, 4000, 4000, 4000,   79, 4000, 4000,   18, 4000, 4000, 4000,\n",
      "        4000,   19, 4000, 4000, 4000,   74, 4000,   96, 4000, 4000, 4000,   50,\n",
      "        4000, 4000,   29,   16, 4000,   68, 4000, 4000,   43,   62,   99, 4000,\n",
      "        4000,    1,   69, 4000, 4000, 4000,   67, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000, 4000,   97, 4000,   69, 4000, 4000, 4000,   62, 4000,   11, 4000,\n",
      "          24,   99, 4000, 4000, 4000, 4000, 4000, 4000,   65, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000,   91,   46, 4000, 4000,   70, 4000,   11, 4000, 4000,\n",
      "          59, 4000, 4000, 4000, 4000,   45, 4000, 4000, 4000, 4000,   53, 4000,\n",
      "        4000, 4000, 4000, 4000,   80,   69,   41, 4000,    7,   98, 4000, 4000,\n",
      "        4000, 4000,   14, 4000, 4000,   12, 4000,   41, 4000,   96, 4000, 4000,\n",
      "          58, 4000, 4000,   42, 4000,   79, 4000, 4000, 4000, 4000,   65, 4000,\n",
      "          34, 4000,   72, 4000,   55, 4000, 4000, 4000,   86,    9, 4000, 4000,\n",
      "        4000, 4000, 4000,   99,   58,   47, 4000,   55, 4000,   58, 4000, 4000,\n",
      "          18, 4000, 4000,   12,   46,   53, 4000, 4000,    7, 4000, 4000, 4000,\n",
      "          27, 4000, 4000,   68,   84, 4000, 4000, 4000,   87, 4000, 4000, 4000,\n",
      "        4000,   39, 4000,   85, 4000,   56,   29,   98,   65, 4000, 4000, 4000,\n",
      "        4000, 4000, 4000, 4000, 4000,   32, 4000, 4000,   13, 4000, 4000, 4000,\n",
      "        4000,   82, 4000,   87,   33,   44,   98, 4000, 4000,   22,   18, 4000,\n",
      "        4000, 4000,    9, 4000, 4000,   74, 4000,   14, 4000, 4000, 4000,   17,\n",
      "        4000,    3, 4000, 4000, 4000, 4000, 4000, 4000,   13, 4000,   37,   20,\n",
      "        4000,   22, 4000, 4000,   96, 4000, 4000,   24,   89, 4000,   58, 4000,\n",
      "        4000, 4000, 4000,   30,   32, 4000, 4000, 4000,   24, 4000, 4000,   22,\n",
      "        4000, 4000, 4000, 4000,    1, 4000, 4000,    3, 4000,   58, 4000, 4000,\n",
      "        4000, 4000, 4000,    4, 4000, 4000, 4000, 4000, 4000, 4000,   11,   66,\n",
      "          34, 4000, 4000, 4000,   83,   52, 4000, 4000,   39, 4000,   15,   19,\n",
      "        4000, 4000, 4000,   19,   91, 4000,   77, 4000,   55,    5,    8, 4000,\n",
      "        4000, 4000,   30, 4000, 4000, 4000, 4000, 4000, 4000,    9, 4000,   14,\n",
      "        4000,   60, 4000, 4000, 4000,   22,   11,   90, 4000, 4000,   49,   60,\n",
      "          85, 4000,   57,   82,   57, 4000, 4000, 4000, 4000, 4000, 4000, 4000,\n",
      "        4000,   48, 4000,   77,   82, 4000, 4000, 4000, 4000,   44, 4000, 4000,\n",
      "        4000, 4000, 4000,   86, 4000,   15])\n"
     ]
    }
   ],
   "source": [
    "semantic_codes = torch.randint(0, 100, (semantic_n_tokens,))\n",
    "\n",
    "# Sample random masking probability between 0 and 1\n",
    "p_mask = random.random()\n",
    "mask = torch.bernoulli(torch.full((semantic_n_tokens,), 1-p_mask))\n",
    "semantic_codes[mask == 0] = semantic_pad_token\n",
    "print(semantic_codes)"
   ]
  },
  {
   "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
}
