{"_id":"musicgpt","_rev":"6-0eeb50add2fcba14841e8782f1f9c000","name":"musicgpt","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.0":{"name":"musicgpt","version":"0.1.0","keywords":["musicgpt","typescript","api","client"],"author":{"name":"Sakar"},"license":"MIT","_id":"musicgpt@0.1.0","maintainers":[{"name":"sakarlalals","email":"sakar@lalals.com"}],"dist":{"shasum":"3a613f536e2fd79480dd32d0fc4f28a795fd6a77","tarball":"https://registry.npmjs.org/musicgpt/-/musicgpt-0.1.0.tgz","fileCount":17,"integrity":"sha512-EiPTJ2vAkeJaR/DVNrr2SPBu50lQzmpEEMu/krAtfzpmABaZRdxc2TSestUEYWOOrzvh0H9o1R4rpFU2fj9d4Q==","signatures":[{"sig":"MEUCIHMKfKjGyxnc4UtgpbVFKrAwsQVXE7Ouf+hLZL5N920oAiEAoDhk2Eqkv8AStHNhT5gjgnAfXiSorRKR2gOKQcWSZI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29857},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1d1bdf79d046d9101735a49e5ba530222e37c879","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"sakarlalals","email":"sakar@lalals.com"},"_npmVersion":"10.9.0","description":"Official TypeScript client for MusicGPT API","directories":{},"_nodeVersion":"20.14.0","dependencies":{"axios":"^1.9.0","dotenv":"^16.5.0","formdata":"^0.10.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.18"},"_npmOperationalInternal":{"tmp":"tmp/musicgpt_0.1.0_1747550856174_0.24602406723469517","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"musicgpt","version":"1.0.0","keywords":["music","ai","api","audio","voice"],"author":{"name":"MusicGPT"},"license":"ISC","_id":"musicgpt@1.0.0","maintainers":[{"name":"sakarlalals","email":"sakar@lalals.com"}],"dist":{"shasum":"c3c24512c04bc96393b0f5f89776e87666673c7e","tarball":"https://registry.npmjs.org/musicgpt/-/musicgpt-1.0.0.tgz","fileCount":21,"integrity":"sha512-DOhbskgh1+p9CVYlSXtBCj6Ms684FkuItaA16rCaNoHQz/y/GyU+T3ra+fR4FSNzipWpIyF0lpiHfWcVsNlhUQ==","signatures":[{"sig":"MEUCIFyrLC6nvhKw05liovX+NDNkaBRKqwaos2Sov5g0MaDiAiEArv3up6ngOIpJiphCeccJwI581vFm59+0VlMk0BK+DRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58305},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4bee11a0348a238cee7713835baad5dd44072def","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write src/**/*.ts","test:all":"npm run test && npm run test:integration","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --config jest.integration.config.js","test:integration:watch":"jest --config jest.integration.config.js --watch","test:integration:coverage":"jest --config jest.integration.config.js --coverage"},"_npmUser":{"name":"sakarlalals","email":"sakar@lalals.com"},"_npmVersion":"10.8.2","description":"Official TypeScript client for MusicGPT API","directories":{},"_nodeVersion":"20.19.2","dependencies":{"axios":"^1.9.0","dotenv":"^16.5.0","form-data":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.57.1","ts-jest":"^29.0.0","prettier":"^3.0.0","jest-junit":"^16.0.0","typescript":"^5.8.3","@types/jest":"^29.0.0","@types/node":"^22.15.18","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/musicgpt_1.0.0_1750049922717_0.6031560824526117","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"musicgpt","version":"1.0.1","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"MusicGPT"},"license":"ISC","keywords":["music","ai","api","audio","voice"],"description":"Official TypeScript client for MusicGPT API","scripts":{"test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --config jest.integration.config.js","test:integration:watch":"jest --config jest.integration.config.js --watch","test:integration:coverage":"jest --config jest.integration.config.js --coverage","test:all":"npm run test && npm run test:integration","build":"tsc","start":"node dist/index.js","dev":"tsc --watch","lint":"eslint src/**/*.ts --fix","format":"prettier --write src/**/*.ts"},"dependencies":{"axios":"^1.9.0","dotenv":"^16.5.0","form-data":"^4.0.0"},"devDependencies":{"@types/jest":"^29.0.0","@types/node":"^22.15.18","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","eslint":"^8.57.1","jest":"^29.0.0","jest-junit":"^16.0.0","prettier":"^3.0.0","ts-jest":"^29.0.0","typescript":"^5.8.3"},"_id":"musicgpt@1.0.1","gitHead":"5eb478466ea7c615396eb62f913a1fd386903261","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-0DnoFO087beE/i9I/MBXWyyHwBGE0Op+wOhmduicEWyUHfcHkugSw4ixAoW+NoPBzhBGoWee0I2ZKw5VFEXQ4Q==","shasum":"b90fa16fee85210f59f0d58dabca8eccf5ddb396","tarball":"https://registry.npmjs.org/musicgpt/-/musicgpt-1.0.1.tgz","fileCount":21,"unpackedSize":59780,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRO7wTQuc0xCxZPbbmQChq0njQ9lVj8u57l9zH+pIzKwIgQx9ScpPben5VwetJbjvwAWZM17pV9y2y3cHxzrF4mcw="}]},"_npmUser":{"name":"sakarlalals","email":"sakar@lalals.com"},"directories":{},"maintainers":[{"name":"sakarlalals","email":"sakar@lalals.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/musicgpt_1.0.1_1750059456120_0.8316209960045005"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-16T04:58:42.717Z","modified":"2025-06-16T07:37:36.466Z","0.0.0":"2025-05-16T13:22:55.018Z","0.0.1":"2025-05-16T13:30:05.223Z","0.1.0":"2025-05-18T06:47:36.371Z","1.0.0":"2025-06-16T04:58:42.914Z","1.0.1":"2025-06-16T07:37:36.284Z"},"author":{"name":"MusicGPT"},"license":"ISC","keywords":["music","ai","api","audio","voice"],"description":"Official TypeScript client for MusicGPT API","maintainers":[{"name":"sakarlalals","email":"sakar@lalals.com"}],"readme":"# MusicGPT SDK\n\n[![npm version](https://badge.fury.io/js/musicgpt.svg)](https://badge.fury.io/js/musicgpt)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)\n[![License: ISC](https://img.shields.io/badge/License-ISC-yellow.svg)](https://opensource.org/licenses/ISC)\n\nOfficial TypeScript package for the MusicGPT API - AI-powered music generation, voice conversion, and audio processing.\n\n## MusicGPT public Api\n\nhttps://musicgpt.com/api\n\n## 📚 Documentation\n\nhttps://docs.musicgpt.com/\n\n## 🎵 Features\n\n- **AI Music Generation** - Create original music from text prompts\n- **Voice Conversion** - Transform voices with AI technology\n- **Audio Processing** - Denoise, enhance, and modify audio files\n- **Voice Cloning** - Create covers with different voices\n- **Audio Transcription** - Convert speech to text\n- **Music Analysis** - Extract key, BPM, and stems from audio\n- **TypeScript Support** - Full type safety and IntelliSense\n- **Async/Await** - Modern Promise-based API\n\n## 📦 Installation\n\n```bash\nnpm install musicgpt\n# or\nyarn add musicgpt\n```\n\n## 🚀 Quick Start\n\n```typescript\nimport { MusicGPTClient, MusicGPTConversionType } from 'musicgpt';\n\nconst client = new MusicGPTClient('your-api-key');\n\n// Generate music from text\nconst music = await client.music_ai({\n  prompt: 'A cheerful pop song about summer',\n  music_style: 'pop',\n  make_instrumental: false,\n});\n\n// Wait for completion\nconst result = await client.waitForCompletion(music.task_id, MusicGPTConversionType.MUSIC_AI);\n\nconsole.log('Music generated!', result);\n```\n\n## 🔧 API Reference\n\n### Client Initialization\n\n```typescript\nconst client = new MusicGPTClient(apiKey, logLevel);\n```\n\n**Parameters:**\n\n- `apiKey` (string): Your MusicGPT API key\n- `logLevel` (optional): 'DEBUG' | 'INFO' | 'ERROR' (default: 'DEBUG')\n\n### Core Methods\n\n#### 🎵 Music Generation\n\n```typescript\nconst response = await client.music_ai({\n  prompt: 'A relaxing jazz melody',\n  music_style: 'jazz',\n  lyrics: 'Optional lyrics here',\n  make_instrumental: false,\n  webhook_url: 'https://your-webhook.com/callback',\n});\n```\n\n#### 🎤 Voice Conversion\n\n```typescript\nconst response = await client.voice_changer({\n  voice_id: 'voice-id-here',\n  audio_url: 'https://example.com/audio.mp3',\n  pitch: 0,\n  remove_background: true,\n});\n```\n\n#### 🎧 Audio Cover Generation\n\n```typescript\nconst response = await client.cover({\n  voice_id: 'voice-id-here',\n  audio_url: 'https://example.com/song.mp3',\n  pitch: 2,\n});\n```\n\n#### 🗣️ Text to Speech\n\n```typescript\nconst response = await client.text_to_speech({\n  text: 'Hello, this is a test message',\n  voice_id: 'optional-voice-id',\n  language: 'en',\n  gender: 'f',\n});\n```\n\n#### 🔍 Voice Search\n\n```typescript\n// Get all voices\nconst voices = await client.getAllVoices(0, 20);\n\n// Search for specific voices\nconst femaleVoices = await client.searchVoices('female', 0, 10);\n```\n\n#### ⏳ Wait for Completion\n\n```typescript\nconst result = await client.waitForCompletion(\n  taskId,\n  conversionType,\n  3000, // Poll interval (ms)\n  300000, // Timeout (ms)\n  1 // Verbose level (0-2)\n);\n```\n\n### Audio Processing\n\n#### 🔊 Denoise Audio\n\n```typescript\nconst response = await client.denoise({\n  audio_url: 'https://example.com/noisy-audio.mp3',\n});\n```\n\n#### 📝 Audio Transcription\n\n```typescript\nconst response = await client.audio_transcription({\n  audio_url: 'https://example.com/speech.mp3',\n  language: 'en',\n  translate: false,\n  word_timestamps: true,\n});\n```\n\n#### 🔄 File Format Conversion\n\n```typescript\nconst response = await client.file_conversion({\n  audio_url: 'https://example.com/audio.wav',\n  target_sampling_rate: 44100,\n  target_format: 'mp3',\n  target_bit_depth: 16,\n});\n```\n\n#### 🎵 Music Analysis\n\n```typescript\n// Extract key and BPM\nconst keyBpm = await client.extract_key_bmp({\n  audio_url: 'https://example.com/song.mp3',\n});\n\n// Extract stems (vocals, instruments, etc.)\nconst stems = await client.extraction({\n  audio_url: 'https://example.com/song.mp3',\n  stems: ['vocals', 'instrumental', 'drums'],\n});\n```\n\n#### ✂️ Audio Cutter\n\n```typescript\nconst response = await client.audio_cutter({\n  audio_url: 'https://example.com/audio.mp3',\n  start_time: 10.5,\n  end_time: 30.0,\n  output_extension: 'mp3',\n});\n```\n\n#### 🎛️ Audio Mastering\n\n```typescript\nconst response = await client.audio_mastering({\n  audio_url: 'https://example.com/audio.mp3',\n  reference_audio_url: 'https://example.com/reference.mp3', // Required\n  output_extension: 'wav',\n});\n```\n\n#### ⚡ Audio Speed Changer\n\n```typescript\nconst response = await client.audio_speed_changer({\n  audio_url: 'https://example.com/audio.mp3',\n  speed_change_factor: 1.25, // 0.25 to 4.0\n  audio_extension: 'mp3',\n});\n```\n\n#### 🎹 Audio to MIDI\n\n```typescript\nconst response = await client.audio_to_midi({\n  audio_url: 'https://example.com/audio.mp3',\n  sonify_midi: true,\n  save_note_events: false,\n});\n```\n\n## 📈 Rate Limiting\n\nThe API has rate limits. The SDK automatically handles:\n\n- Rate limit errors with appropriate exceptions\n- Exponential backoff (when implemented)\n- Request queuing (planned feature)\n\n## ⚠️ Error Handling\n\nThe SDK provides detailed error information with proper JSON formatting:\n\n```typescript\ntry {\n  const result = await client.music_ai({\n    prompt: 'Generate music',\n  });\n} catch (error) {\n  console.error('API Error:', error.message);\n  // Error messages include detailed JSON responses for debugging\n}\n```\n\n**Common Error Types:**\n\n- `INTERNAL_SERVER_ERROR` - Server-side issues\n- `422 Unprocessable Entity` - Invalid parameters\n- `404 Not Found` - Endpoint not available\n- Rate limiting errors\n\n## 📋 Supported Audio Formats\n\n- **Input**: MP3, WAV, FLAC, OGG, AAC, WEBM\n- **Output**: MP3, WAV, FLAC, OGG, AAC, WEBM\n- **Sampling Rates**: 8kHz to 192kHz\n- **Bit Depths**: 16-bit, 24-bit\n\n---\n\nMade with ❤️ by the MusicGPT team\n","readmeFilename":"README.md"}