NOTICE: By continued use of this site you understand and agree to the binding Servicevilkår and Privatlivspolitik.
Install steps: Install a userscript manager, select Install, then open a website matched by the script.
The following figures come from the original source and are separate from activity on this site.
Original script: 🎸 Songsterr Ultimate (Premium Unlocked)
Source version: 6.8.7
Last source check:
Last successful check:
Requests received by this site are not proof that a user completed installation.
Clicking Install records a request on this site; it does not confirm installation. Not working after install? View troubleshooting and issues
A userscript that unlocks all Songsterr Plus features and seamlessly integrates high-quality Guitar Pro 7 (.gp), MIDI (.mid), and Video controls into Songsterr's redesigned player bar.
MAKE SURE TO ENABLE "Allow user scripts" IN MANAGE EXTENSION — You do NOT need to go in private mode anymore, it may break some features!
.idrtTa_controls), replacing the locked native export button (#c-export) with matching rounded tiles (50px × 44px)server-plus-access-snapshot check from downgrading logged-in accounts to free while maintaining full Plus capabilities for guest sessionswindow.__store__ and guards Redux state.layer slice integrity, blocking paywall dispatches and preventing Preact TypeErrors, crashed render loops, and stranded transparent overlay backdropstargetWindow.__store__) for favorites and custom playlists in "My Tabs", plus clean guest topbar navigation ("Sign In" header preserved)J), displaying notes, scales, and finger positions...) menu to identify chords and variations across measuresmultirest), improved stem directions, and fingerstyle arrangement flags🎸 Songsterr Ultimate (Premium Unlocked).user.js and save (Ctrl+S / Cmd+S)
(or install directly via GreasyFork)Greasy Fork updates the hosted copy only after a new version is published there.
The local working file is not uploaded automatically. Run npm run test:greasyfork
to compare the local and published versions and check both update endpoints.
This project wouldn't be possible without the brilliant work of these contributors:
opacity: 0 and absolute positioning instead of display: none to avoid browser power-saving audio interruptionsThe script is structured in 9 main sections that work together to unlock Songsterr:
We attack the problem from four angles simultaneously:
/auth/profile, /api/bt-request/quota, /api/credits/*, /api/autocomplete-bar/limits, and personal data endpoints to patch Plus permissions while preserving user account data and persisting guest dataJSON.parse to patch state during initial bootstrapping and safely remove server-plus-access-snapshot, preserving authentic user IDs for logged-in accountswindow.__store__ to block paywall dispatches/thunks, enforce state.layer structural integrity, and synchronize guest favorites/playlists in memoryconst MAGIC_ID = getStableMagicId();
const MAGIC_PROFILE = {
id: MAGIC_ID,
plan: 'plus',
hasPlus: true,
subscription: { plan: { id: 'plus' } },
...
};
localStorage.existingProfile.id), the script preserves the real user ID and enriches the profile with Plus features rather than replacing it. This prevents account desynchronization and keeps favorites, playlists, and contributions intact.We replace the global fetch with a protected hook using Object.defineProperty (writable: false, configurable: false):
| Route | Action |
|---|---|
/auth/profile |
Enriches existing user profile with Plus subscription, or returns MAGIC_PROFILE for guests |
/api/meta/\d+ |
Intercepts song metadata to set allowedByLicense: true, preventing bookmark paywall freeze |
| `/api/(favorites\ | playlists)` |
| `/api/(contributions\ | transcriptions)` |
/api/bt-request/quota |
Unlocks backing track and solo quotas across all instrument families |
/api/credits/balance & /auth/credits/migration-request |
Disables balance restrictions and credit migration popups |
/api/autocomplete-bar/limits |
Unlocks unlimited search query limits (availableCount: 999999) |
| `/api/(onboarding\ | part-switching-markers\ |
Stealth & Compatibility features:
fetchHooked.toString() returns the native function's source, defeating integrity checks.GM_xmlhttpRequest and modern GM.xmlHttpRequest (with native fetch fallback) for smooth execution across Chrome, Firefox, Zen Browser, and Safari.To prevent rapid crash or reload loops:
const RELOAD_GUARD_KEY = "songsterr_ultimate_recent_loads";
// Detects rapid successive page reloads (>= 4 loads within 15 seconds)
// and temporarily disables the script to preserve browser stability.
Songsterr uses server-side rendering and reads authorization data during early initialization:
// In-Memory JSON.parse Hook
targetWindow.JSON.parse = function(text) {
// Patches initial state during deserialization without breaking streamed HTML
};
purchasedFeatures, binding them to getActiveUserId() and granting permanent access.#server-plus-access-snapshot from the DOM to prevent hydration entitlement mismatch while preserving authenticated accounts.window.__store__):
dispatch and dispatchThunk to block disruptive actions (bonus/resetFeatures, credits/accountDisabled, diffPlayer/setConstraints).clearPlayerConstraints) on every dispatch and state retrieval.state.favorites.songsRaw) and playlists (state.playlists.playlists) with kind: "full".ConstraintsModal Elimination: Songsterr restricts synchronized YouTube audio to a 10-measure sample unless video.showDelayedCross is truthy, triggering ConstraintsModal ("Actualice a Plus para Audio Original sin pausas de sincronización"). The script initializes showVideoDelayedCross in localStorage at document-start, forces state.video.showDelayedCross: true, continuously purges state.player.constraints to null (calling services.video.setConstraints(null)), and strictly intercepts layer/show dispatches for constraints_modal and balance_spend_confirm.server-plus-access-snapshot.profileId === state.user.profile.id. If mismatched, Songsterr downgrades the account to plan: "free" and removes Plus privileges. getActiveUserId(fallbackHintId) safely preserves and caches the real user ID from the snapshot and server state without depending on brittle boolean flags, ensuring neither logged-in accounts nor guest sessions are ever downgraded.chat_paywall, pain_text_topbar, stats_on_plus_popups, re_pitch).multitrack, no_banner, and sets allowedByLicense: true, isAllowDownload: true.fretboard_v2 (interactive fretboard), detect_chords (harmonic chord analyzer), fingerstyle_arr, multirest (multi-measure rest grouping), tab_stem_direction, default_curs_preview, and regen_in_player.state.layer): Songsterr expects state.layer to strictly adhere to { kept: {}, layer: null }. The script enforces this structural invariant across memory snapshots and runtime dispatches, dismissing blocked paywalls (extensions_modal, upgrade_to_pro_modal, forbidden, constraints_modal, balance_spend_confirm, plus_*) cleanly via origDispatch("layer/hide") without throwing unhandled Preact TypeErrors or freezing backdrop overlays.This layer continuously ensures Plus controls remain usable:
control-speed, control-pitchshift, control-loop, control-solo, control-mute, control-metronome, control-export, control-print, control-transpose, control-detect-chords, Print--plus).synth audio source, opens the mixer panel if closed, and replays the click.button#control-export or [id='c-export'] button via capture-phase listener and immediately routes it to GP7 download.Songsterr is a single-page React app with dynamic route changes:
history.pushState, history.replaceState, and popstate events._isPageTransitioning = true during transitions to prevent corrupted downloads.sgdLog(level, prefix, ...args).localStorage.songsterr_debug_logging = "true".#state (with API fallback on https://www.songsterr.com/api/meta/:songId).safeXhr using primary (dqsljvtekg760.cloudfront.net) and fallback (d3d3l6a6rcgkaf.cloudfront.net) CDNs.alphaTab.exporter.Gp7Exporter or alphaTab.midi.MidiFileGenerator.Key conversions:
| Concept | Songsterr → alphaTab |
|---|---|
| Duration | Fraction [num, den] → Duration enum + dots |
| String index | 0 = highest string → 1 = lowest string |
| Bend points | Hundredths of semitone → Quarter-tones (×2) |
| Instrument ID | Internal ID → GM program (0-127) |
| Percussion | MIDI note → alphaTab articulation index |
Songsterr's 2026 player bar uses a modern card drawer (aside#controls / .idrtTa_controls):
#c-export button container (display: none !important, zero width/padding/margins/pointer-events) and inserts #sgd-wrapper directly into the native player bar alongside native playback tiles..idrtTa_itemButton 50px × 44px rounded tiles (border-radius: 10px, no border, no shadow).var(--controls-button-surface, #ececec) (light mode) / #2c2c2c (dark mode) with var(--controls-button-surface-hover).transform: scale(0.96).span._8e144G_icon.sgd-control-icon.div._8e144G_nameButton.sgd-control-label) matching native typography (font-weight: 600).<= 650px) to guarantee zero horizontal overflow.aside#controls (height: auto !important; max-height: 320px; padding-bottom: 14px) when the panel handle is opened so all controls rows are cleanly visible without cutoff.#yt-toggle-btn) — toggles between Video and Audio-only mode (purple #7952b3 active indicator).#download-gp-btn) — triggers full Guitar Pro 7 score export.#download-midi-btn) — generates standard multi-track MIDI.runAfterPageLoad): Visual modifications wait for document.readyState === "complete" and two animation frames to prevent React/Preact hydration stalls.fretboard_v2): Open the tab editor (shortcut E or "Edit" button), then press J or toggle "Fretboard" in the editor's ... More menu. Displays a full interactive guitar/bass fretboard above the controls, tracking notes, scales, and fingerings in real time.detect_chords): Click ... (More) in the main player controls and select "Detect Chords" to run automatic harmonic analysis on tab measures._chosen) immediately upon clicking, maintaining state without page reloads./favorites) and playlists panel (/playlists).__store__): Immediately synchronizes favorites and playlists directly into Songsterr's internal Preact/Redux store (state.favorites.songsRaw = getGuestFavorites(), kind = "full"), avoiding stale cache or reload requirements.#menu-account to link to /signin ("Sign In") for guest sessions, preventing misleading "Songsterr User" profile badges and unwanted login prompts./api/meta/{songId} enrichment) and automatically repairs placeholder or incomplete entries in local storage.GET, POST, PUT, DELETE) to /api/favorites and /api/playlists are persisted in localStorage (songsterr_guest_favorites, songsterr_guest_playlists) across browser sessions.opacity: 0 and absolute positioning while preserving audio playback.localStorage.songsterr_yt_audio_only.MutationObserver.synth audio source and executes the requested action without manual intervention.The script includes a configurable debug logging system:
F12 to open your browser's DevTools.js
localStorage.setItem("songsterr_debug_logging", "true");
F5) to view real-time operation logs prefixed with [SGD].js
localStorage.removeItem("songsterr_debug_logging");
This project is for educational and cybersecurity research purposes only. It demonstrates advanced browser extension techniques including client-side state spoofing, network interception, and DOM manipulation.
If you use Songsterr regularly, please consider supporting the developers with an official subscription. This script is intended for learning, testing, and personal use scenarios.
pointer-events: auto !important, filter: none !important, and -webkit-user-select: auto !important on #showroom:has(#tablature, [data-testid="tablature"]) and #showroom_header:has(#tablature, [data-testid="tablature"])..idrtTa_controls) alongside native buttons, replacing the locked native export button (#c-export)..idrtTa_itemButton 50px × 44px rounded tiles, HSL surface variables, modern SVG vector icons) with seamless padding and zero overflow.targetWindow.__store__) to immediately sync guest favorites and playlists (kind: "full"), ensuring instant updates in "My Tabs" (/favorites) and /playlists without requiring a page reload.#menu-account to "Sign In" pointing to /signin for guest sessions, eliminating confusing "Songsterr User" badges and avoiding unwanted login prompts.aside#controls expansion height and padding to ensure complete visibility when opening the controls drawer handle.controlsTopPanelRow), ensuring the bottom bar remains clean and responsive across desktop and mobile viewports.layer is null) caused by corrupted modal state.tundefined) in favorite lists.J).... More player menu.Made with ❤️ for the guitar community, with special thanks to パプリカ and Metaphysics0 for their brilliant contributions!
Bedømmelse: 0