Demo Creations

AI that brings your music and words to life. Manifest your mood with IIM-IndusVale

(Tap on the image to play the audio)

Hello darkness, my old friend, I've come to talk with you again

Hidden record player, crackling vinyl blues, shadows sway in time, bathed in hazy hues

Stardust in her eyes, whispers secrets to the fireflies, a symphony of silence beneath the indigo skies

The fog comes on little cat feet. It sits looking over city street and harbor

Hello darkness, my old friend, I've come to talk with you again

Stardust in her eyes, whispers secrets to the fireflies, a symphony of silence beneath the indigo skies

I'm Into Music (IIM) by IndusVale

An AI system with the soul purpose of manifesting how you feel. Select your choice of music and give your words, and let our AI do the work for you. A system that will change the way we view art and merchandise forever; An artist’s work is no longer just to see or hear but also to wear. Try for yourself!

Sweet Child O' Mine by Guns N Roses
Lovely by Billie Eilish & Khalid
Memories by Maroon 5
Blinding Lights by Weeknd
Night Changes by One Direction
Peaches by Justin Beiber
Enchanted by Taylor Swift
Fog comes on little cat feet
Sitting on the dock of the bay
Hello darkness, my old friend
Hidden record player
Stardust in her eyes
OR
Eg. Astronaut floating in the space
Created with Sketch. IIM – IndusVale ${record.queryTitle} \n`; } const tableBody = document.querySelector("tbody"); tableBody.innerHTML += str; }); } // addAudios(); // ------------------------- const tableBody = document.querySelector("tbody"); const audios = tableBody.querySelectorAll("audio"); audios.forEach(audio => audio.addEventListener("ended", () => { audio.currentTime = 0; audio.play() })) const audioColumns = document.querySelectorAll("table tbody td"); audioColumns.forEach((column, index)=>{ column.addEventListener("click", (e)=>{ e.stopPropagation() audioColumns.forEach((col) => { col.classList.remove("selected"); }); column.classList.add("selected"); }) }) const audioInput = document.getElementById('audio-file'); const inputBtn = document.querySelector("#uploadAudio"); inputBtn.addEventListener("click", () => { const file = audioInput.files[0]; if (!file) { audioInput.click(); } }) audioInput.addEventListener('change', (event) => { const target = event.target if (target.files && target.files[0]) { /*Maximum allowed size in bytes 5MB Example Change first operand(multiplier) for your needs*/ const maxAllowedSize = 5 * 1024 * 1024; if (target.files[0].size > maxAllowedSize) { // Here you can ask your users to load correct file alert("Max 1MB file allowed") inputBtn.innerHTML = "UPLOAD SOUND" target.value = '' } const file = audioInput.files[0]; inputBtn.innerHTML = file.name; inputBtn.title = file.name; } }) const playBtns = document.querySelectorAll("table .play-btn"); playBtns.forEach((btn, index) => { btn.addEventListener("click", (e) => { e.stopPropagation(); const audio = btn.closest("td").querySelector("audio"); if (btn.dataset.role == "pause") { btn.dataset.role = "play" audio.pause() } else { btn.dataset.role = "pause" audio.play(); let audios = document.querySelectorAll("audio"); audios.forEach((a, i) => { if (a !== audio) { a.pause() } }) } }) }) //-------------------------- const musicSearchInput = document.querySelector("table thead input"); musicSearchInput.addEventListener("input",(event)=>{ const sounds = document.querySelectorAll("table tbody tr"); const filter = event.target.value.toLowerCase(); if(filter == ""){ sounds.forEach((sound)=>{ sound.style.display = "block"; }) }else{ sounds.forEach((sound)=>{ // sound.style const splitText = sound.textContent.trim().split("\n"); const musicName = splitText[splitText.length - 1].trim().toLowerCase(); if(musicName.includes(filter)){ sound.style.display="block"; }else{ sound.style.display="none"; } }) } }) const imageAudios = document.querySelectorAll(".sample-images img"); // const audios = document.querySelectorAll("audio"); audios.forEach(audio => audio.addEventListener("ended", ()=> {audio.currentTime = 0; audio.play()})) imageAudios.forEach((img, index) => { img.addEventListener("click", (e)=> { const audio = img.closest(".sample-img").querySelector("audio"); console.log(audio) console.log(audio.play()) if(img.dataset.role=="pause"){ img.dataset.role="play" audio.pause() }else{ img.dataset.role="pause" audio.play(); let audios = document.querySelectorAll("audio"); audios.forEach((a,i) =>{ if(i !==index){ a.pause() } }) } }) }) function resetForm(){ const imageGeneratorInput = document.querySelector(".image-generator-input"); const audioFile = document.querySelector("#audio-file"); const prompt = document.querySelector("#prompt"); const outputImg = document.querySelector(".output-img"); const inputBtn = document.querySelector("#uploadAudio"); audioFile.value = null; prompt.value = "" imageGeneratorInput.style.display = "flex"; outputImg.innerHTML = ""; outputImg.style.display = "none"; inputBtn.innerHTML = "UPLOAD SOUND" audioColumns.forEach((col) => { col.classList.remove("selected"); }); } function downloadImage(url) { fetch(url, { mode : 'no-cors', }) .then(response => response.blob()) .then(blob => { let blobUrl = window.URL.createObjectURL(blob); let a = document.createElement('a'); a.download = url.replace(/^.*[\\\/]/, ''); a.href = blobUrl; document.body.appendChild(a); a.click(); a.remove(); }) } async function audioToBase64(input) { try { let blob; if (typeof input === 'string') { // Case 1: input is a URL const response = await fetch(input); blob = await response.blob(); } else if (input instanceof File) { // Case 2: input is a File object from HTML input element blob = input; } else { throw new Error('Invalid input type. Expected URL or File object.'); } return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => { const base64data = btoa(reader.result); resolve(base64data); }; reader.onerror = () => { reject(reader.error); }; reader.readAsBinaryString(blob); }); } catch (err) { console.error('Error converting audio to base64: ', err); throw err; } } const generateBtn = document.querySelector("#generate"); generateBtn.addEventListener("click", async ()=>{ const prompt = document.querySelector("#prompt"); const selectedAudio = document.querySelector("td.selected audio source"); const audioFile = document.querySelector("#audio-file"); if(!prompt.value && (!audioFile.files[0] || !selectedAudio)){ alert("Audio or Prompt is missing"); return } const data = {}; data.customerId = data.prompt = prompt.value; let encodedAudio; if (selectedAudio){ encodedAudio = await audioToBase64(selectedAudio.src).then((base64data)=>{ data.audio = base64data }) } else{ const file = audioFile.files[0]; // Assume only one file is selected encodedAudio = await audioToBase64(file).then((base64data)=>{ data.audio = base64data }) } const loader = document.querySelector(".loading"); const imageGeneratorInput = document.querySelector(".image-generator-input"); const outputImg = document.querySelector(".output-img"); loader.style.display = "block"; imageGeneratorInput.style.display = "none"; // fetch("//k957ylga0e.execute-api.ap-south-1.amazonaws.com/proxy",{ fetch("//p4mu6snbddyarstuhshno67jaq0qkaub.lambda-url.ap-south-1.on.aws/",{ method: 'POST', body: JSON.stringify(data) }) .then((response) => response.json()) .then((data) => { console.log("data", data, typeof data) loader.style.display = "none"; let result = data; if(result.image_url){ outputImg.innerHTML = `

Your Result is here

${data.prefix} ${prompt.value}
Download
` outputImg.style.display = "flex"; } else if(result.message == "Insufficient Coins"){ imageGeneratorInput.style.display = "flex"; alert(result.message,"!"); resetForm(); } else{ imageGeneratorInput.style.display = "flex"; alert("Something went wrong!"); resetForm(); } }).catch(err => { console.log(err) loader.style.display = "none"; imageGeneratorInput.style.display = "flex"; resetForm(); alert("Something went wrong!"); }) })