Basswin App Features and User Tips
Basswin App features overview and practical user tips for faster setup and use
Enable offline caching: set the cache limit to 512 MB, pre-download up to 50 tracks while on Wi‑Fi; this reduces cellular data use by up to 70% when streaming 320 kbps files.
Secure the account by activating two-factor authentication via TOTP apps; keep SMS as a fallback only. Enable biometric login for faster access; set session timeout to 7 days on shared devices, 30 days on private devices.
Optimize playback: apply an equalizer with +3 dB at 60 Hz, -2 dB at 250 Hz, +2 dB at 3 kHz, Q=1.0; set crossfade to 3 seconds; enable gapless mode for albums; set loudness normalization target to -14 LUFS to maintain consistent perceived volume.
Preserve battery by switching mobile streaming quality to 96 kbps for commutes; set an adaptive bitrate ceiling at 192 kbps for cellular connections; enable low-power mode to pause background visualizers and animations.
Manage storage by auto-deleting downloads older than 30 days; enable selective sync for playlists that exceed 5 GB; export critical playlists weekly in M3U or JSON format for archival purposes.
How to create and secure your account with two-factor authentication
Enable two-factor authentication (2FA) using a time-based authenticator and, when possible, a hardware security key immediately after account creation.
Step 1 – Register: Use a unique email address that is not reused elsewhere. Complete email verification immediately; do not proceed until you receive and confirm the verification link.
Step 2 – Create a master password: Choose a passphrase of at least 12 characters with mixed character classes or a 20+ character random passphrase. Never reuse a password from any other service. Store it in a reputable password manager and enable its lock with a strong master passphrase.
Step 3 – Add contact recovery: Add a recovery email distinct from the primary login address and a phone number only if required. Mark recovery contacts as verified. Avoid using VoIP numbers when possible.
Step 4 – Configure TOTP: In the security settings select time-based one-time passwords (TOTP). Install an authenticator program on a trusted device, scan the QR code, then verify by entering a current 6-digit code. Record the setup secret in a secure vault (encrypted backup) as an emergency fallback.
Step 5 – Use hardware second factor: Register a FIDO2/WebAuthn or U2F hardware key (examples: YubiKey). Set the hardware token as the primary 2FA method for logins and high-risk actions when the option is available.
Step 6 – Store backup codes securely: Download or generate backup codes, print at least one copy and store in a locked physical location (safe). Keep another encrypted copy inside your password manager. Do not store backup codes in plain text notes or unencrypted cloud storage.
Step 7 – Avoid SMS-only 2FA: Treat SMS as a fallback only. SIM-swap and interception attacks target SMS; prefer TOTP or hardware keys. If SMS is required, register the number with your carrier’s extra security (PIN or passphrase) and monitor for unsolicited SIM-change alerts.
Step 8 – Device hygiene and session control: Enable device-level biometrics or PIN for quicker, secure access. Regularly review active sessions and linked devices in the security panel and revoke any unfamiliar entries. Sign out from public or shared devices and clear remembered sessions.
Step 9 – Monitoring and maintenance: Turn on login notifications and set alerts for new-device sign-ins and password changes. Check your password against a breach database (e.g., Have I Been Pwned) and rotate credentials immediately if exposed. Re-issue 2FA credentials after major OS or browser updates on primary devices.
Step 10 – Lost access or compromise procedure: Use stored backup codes or the alternate recovery email to regain access. If neither is available, prepare photo ID and account metadata before contacting support to speed verification. After recovery, reset the master password, re-register TOTP, replace hardware tokens, and review account activity for unauthorized changes.
Follow these steps to minimize attack surface: prioritize TOTP and hardware tokens, secure backups offline, keep credentials unique, and monitor session activity.
Setting up personalized push notifications by genre, artist, and release date
Create three dedicated notification channels – Genre, Artist, Release-date – and enforce caps: max 3 alerts per channel per day, per-artist max 2 per week, and a global cap of 5 pushes/day. Set quiet hours 22:00–07:00 local time and enable batching with a 15-minute window to avoid duplicate bursts.
Enable delivery at the device level: iOS – Settings > Notifications > [this mobile client] > Allow Notifications; choose Banner style and Sounds; Android – Settings > Apps & notifications > [this mobile client] > Notifications > turn on. Inside the client, grant permission for Background Refresh and Local Timezone updates.
Genre channel setup: pick up to 10 primary genres and up to 20 subgenres. Use boolean filters: include primary only or include primary + subgenres. Add a popularity filter (e.g., minimum weekly plays > 5,000) and a release-age cutoff (only releases within the last 60 days) to reduce noise. For collectors, enable a “deep-dive” flag per genre to include back-catalog reissues.
Artist channel setup: add artists by exact name and, when available, by canonical ID (Spotify/Apple/ISNI). Turn on fuzzy matching for common diacritics and alternative spellings, but exclude generic terms (e.g., names shorter than 3 characters) to avoid false positives. Choose release types to track: Single, EP, Album, Live, Remix. Set per-artist priority levels (High/Normal/Low); High artists bypass batching but still respect daily caps.
Release-date rules: configure relative windows – Pre-release at T-minus 7 days, Release-day at 09:00 local time, Follow-up at T+3 days. For pre-orders set an earlier alert (T-minus 30 days). Use timezone-aware scheduling and choose local-time firing or UTC-based firing per preference. Filter by release type and minimum metadata quality (presence of ISRC and label field).
Duplicate and frequency control: deduplicate by ISRC/track ID; suppress repeats for 24 hours after first delivery. Batch multiple releases from the same artist into a single summary note if they occur within a 30-minute window. Provide a per-channel “snooze” option for 1 day, 7 days, or 30 days.
Notification payload composition: include title line (Artist – Track), small subtitle (Release type • Release date), and concise body (why it fired: genre match, artist follow, pre-release). Attach a primary action link (Open), a secondary action (Save/Remind), and a compact artwork thumbnail (≤ 50 KB). For critical alerts, mark priority high and enable sound; for summaries use silent delivered notifications.
Filtering examples to paste into custom rules: 1) Genre: genre:‘Electronic’ AND subgenre:‘Techno’ AND plays>5000 AND release_date>=2025-01-01. 2) Artist: artist_id:12345 OR artist_name:“Søren Kraft” fuzzy:true EXCLUDE remix:true. 3) Release window: release_date BETWEEN today AND today+7 OR pre_order_date BETWEEN today AND today+30.
Testing and metrics: run a 7-day test with 3 genres and 5 artists, sample size 100 notifications. Track open rate and click-through rate; target CTR ≥10%. If CTR <5% after 7 days, reduce non-priority volume by 40% and tighten popularity thresholds. Use a test badge on every message to differentiate trial sends.
Maintenance checklist: review artist matches weekly, prune genres quarterly, verify timezone accuracy after travel, export customized rules as JSON for backup, and enable automatic suppression of remixes or duplicates by default. Adjust daily caps based on CTR trends and personal tolerance for interruptions.
Configuring audio quality & buffering for low-throughput connections
Codec selection, bitrate targets
Recommendation: use Opus with variable bitrate (VBR), set target 24–40 kbps mono for speech, 48–96 kbps stereo for music-like content; cap peak bitrate at 128 kbps only when sustained throughput exceeds 200 kbps. For extreme constraints below 64 kbps, switch to narrowband Opus at 12–16 kbps mono or to low-complexity CELT mode at similar rates. Prefer VBR over CBR to let the encoder reduce bitrate during silence, reduce perceived artifacts by keeping complexity at 5 of 10 for CPU-limited devices.
Buffering, jitter mitigation, loss recovery
Set a jitter buffer with minimum 100 ms, nominal 300 ms, maximum 1000 ms; use adaptive resizing based on measured packet delay variation (PDV) with step changes of 50–100 ms. For streaming playback, allocate 1.5–3.0 seconds of media buffer when throughput fluctuates more than 20% within 10 seconds. For interactive use where latency matters, target end-to-end latency below 150 ms, with jitter buffer limited to 60–120 ms plus 20–40 ms safety margin.
Enable packet-loss concealment (PLC) and forward error correction (FEC). Configure FEC for up to 10% extra overhead with selective application during packet-loss spikes above 3%. When measured packet loss exceeds 5% for more than 10 seconds, reduce audio bitrate by 25% while increasing jitter buffer by 50% to stabilize playback.
Network detection, switching logic, segment sizing
Continuously measure available throughput using small probe packets every 5 seconds; use moving average over 15 seconds for decision making. If throughput drops below 150 kbps, switch to speech-optimized profile with mono 24 kHz sample rate, VBR target 32 kbps. If throughput falls under 64 kbps, switch to narrowband mono 8–16 kbps. For HTTP-based streaming, use 1–2 second segment duration to reduce rebuffer time during profile switches; use 2–4 second segments only when throughput is stable above 200 kbps.
Implement exponential reconnect/backoff for session recovery: initial retry 1 s, then 2 s, 4 s, 8 s, capped at 32 s. Persist last-good codec profile plus last throughput sample to allow immediate fallback on reconnect. Limit concurrent background downloads to one stream per session to avoid contention on low-throughput links.
Managing offline downloads and storage limits on Android and iOS
Set a hard per-device offline quota immediately – 10 GB for smartphones, 25 GB for tablets – and enable automatic removal of files not opened for 30 days.
Quick capacity calculations
- Audio: 96 kbps ≈ 42 MB/hour; 160 kbps ≈ 70 MB/hour; 320 kbps ≈ 140 MB/hour. With a 10 GB quota you can store ≈240 hours at 96 kbps, ≈143 hours at 160 kbps, ≈71 hours at 320 kbps.
- Video: 480p ≈ 400 MB/hour; 720p ≈ 1.2 GB/hour; 1080p ≈ 2.5 GB/hour. A 25 GB tablet quota holds ≈20 hours at 720p.
- Per-playlist limits: cap offline items to 200 tracks or 2 GB per playlist to avoid runaway use.
Android – concrete steps and settings
- Set in-software download quality: choose Low/Normal/High with the above bitrate guidance. Lower quality reduces storage linearly.
- Enable Wi‑Fi-only downloads: turn off cellular downloads to avoid unexpected syncs. In-app option typically labeled “Download only on Wi‑Fi” or similar.
- Move content to external SD card (if supported): Settings > Apps > [application name] > Storage > Change > SD card. If that option is missing, use the application’s internal storage menu (Storage > Download location).
- Use adoptable storage for full integration: Settings > Storage > Select SD card > Menu > Format as internal – WARNING: this erases the card and encrypts it to the device; only recommended if you accept tying the card to the phone.
- Clear cache and stale downloads: Settings > Apps > [application name] > Storage > Clear cache; inside the software use Storage > Remove downloaded files older than X days (set X = 30).
- Automated purge rules to apply: keep “never-played” files auto-delete after 14 days; “not-played” after 30 days; max downloads per device = 10 GB.
- SD card spec: use UHS‑I / Class 10 / A1 or A2 cards for reliable playback; recommend 64–256 GB for mixed audio/video libraries.
iOS – concrete steps and settings
- Because external storage is not supported, prioritize bitrate and retention rules: set default audio to 160 kbps or 96 kbps for constrained devices.
- Limit automatic downloads and offline sync: in-software setting “Download over Wi‑Fi only” and “Auto-download new releases” – disable auto-download or set a maximum item count (e.g., 50).
- Use iPhone Storage to monitor and reclaim space: Settings > General > iPhone Storage > find the software > Offload App (retains documents) or Delete App (removes content). Prefer Offload to free executable space while keeping downloads in cloud).
- In-application cleanup: Storage > Clear downloads > Remove files not opened for 30 days; schedule a weekly reminder to run cleanup if automatic rules are not available.
- When storage is low, reduce peak bitrate for video to 480p to save multiple GB per hour.
Policies and automated rules to implement
- Per-device quota: 10 GB phones / 25 GB tablets by default; notify members when used >85% and block new downloads at 95%.
- Retention policy: delete tracks not opened in 30–60 days; delete episodes after playback completion unless marked keep.
- Per-playlist caps: maximum 200 items or 2 GB per playlist; priority download only for starred items.
- Scheduled purges: run automatic cleanup weekly during overnight charging periods to avoid interrupting playback.
Transfer, backup and advanced maintenance
- Android export: connect via USB, choose File Transfer, copy the downloads folder or use the application’s export function. If files are in Android/data access-restricted folders, use the in-app export or backing tool provided by the software.
- iOS backup: use Finder/iTunes or the application’s built‑in export to transfer offline files to a Mac/PC; if no export exists, rely on cloud re-download and keep master copies on desktop.
- Low-level maintenance: run a monthly audit – check device storage, sort downloads by size, delete top 10 largest unused files (typically videos) to reclaim space quickly.
- Monitoring: implement an in-app storage meter showing total offline bytes, quota percent, and projected days remaining at current download rate.
Practical default configuration (recommended)
- Default quality: audio 160 kbps, video 720p (only on tablets).
- Auto-purge: remove files not opened for 30 days; remove played episodes 7 days after playback.
- Quota enforcement: warn at 85%, prevent new downloads at 95% until user frees space.
- Connectivity: downloads set to Wi‑Fi only; allow manual override for specific items.
Apply these limits and schedules, document them in the software’s storage panel, and enforce via automatic warnings and purge routines to maintain predictable offline capacity across Android and iOS devices.
Playlist toolkit: smart folders, collaborative lists, quick edits
Create a smart folder with a 3-rule chain and a 200-track cap: Rule A – Genre contains “Chill”; Rule B – BPM between 60 and 90; Rule C – Date added within 30 days. Set auto-refresh to 12 hours and enable duplicate filtering by title+artist to keep the folder compact and fresh.
Smart-folder recipes
Mood rotation: Genre contains “Ambient” OR “Downtempo”; BPM 40–80; max 150 tracks; sort by last played ascending so least-played tracks surface. Commute mix: Tag contains “Commute”; duration between 20–40 minutes; auto-fill to exact duration using “fill to length” (set to 30 min). Party starter: Energy tag ≥7 OR BPM 120–140; exclude explicit=true; shuffle-on-add = ON; set a 3-second crossfade. Use rule precedence (AND before OR) and test with a 50-track sample before applying globally.
Collaborative lists and rapid edits
Limit active collaborators to 8 for tight curation. Use a naming convention: “Collab – YYYYMMDD – Theme”. Require submitters to add source link + preview timestamp for each suggestion. Set per-contributor upload limit to 40 tracks and an approval flag; merged edits follow timestamp order with an undo stack of 25 actions. When resolving conflicts, lock a track during edit for 10 minutes to avoid overwrite.
For batch changes, select a block (Shift+click), use inline edit to change genre/tempo/labels, then run a dry preview showing affected count before commit. Always snapshot the list (automatic backup every 24 hours) before a mass replace. Use replace-in-selection for consistent tagging (example: change “Indie” → “Indie Pop” across 120 entries). For metadata corrections, enable automatic BPM detection and apply only if confidence ≥90%.
Speed shortcuts to adopt: multi-select with Shift, quick-move with Ctrl/Cmd+→ (move to next folder), Ctrl/Cmd+Z for undo (25 steps), and Alt+E to open batch edit panel. For mobile editors, limit quick edits to metadata only; bulk audio trims or crossfades should be done on desktop to avoid sync lag.
Troubleshooting sync errors, account conflicts: step-by-step fixes
Immediately verify network access to port 443; allow TLS traffic then retry sync.
Quick diagnostics
Check status code returned by the sync operation; capture last 3 log lines from the local log file before proceeding.
Confirm local clock within 2 minutes of an NTP server; run `ntpstat` or `timedatectl status` on Linux, `adb shell date` on Android devices, or check Settings → General → Date & Time on iOS devices.
Validate credentials: open the account settings page, confirm OAuth token expiry timestamp; if token age > 90 days, plan a refresh.
Common error codes and targeted fixes
Token-related 401 / TOKEN_EXPIRED: revoke session token via the web portal; re-authenticate with the primary account ID; confirm new token appears in Settings → Account → Tokens with a future expiry.
Conflict 409 / CONFLICT_ENTRY: locate conflicting object IDs from the sync payload; decide preserve-local or preserve-remote; apply a merge rule then re-run sync with the `–force-merge` flag.
Network 503 / SERVICE_UNAVAILABLE: run `curl -v https://api.example.example/health` from the device; if HTTP 503 persists for more than 5 minutes, switch to an alternate network then retry.
Stepwise forced resync (safe sequence)
1) Export a local backup: open export tool or run `sqlite3 local.db .dump > backup.sql`.
2) Pause automatic sync: Settings → Sync → Disable auto-sync.
3) Clear local cache only: Android: Settings → Applications → select the application → Storage → Clear cache; iOS: Settings → the application → Offload App then reinstall.
4) Revoke stale tokens via the web session admin panel; ensure the targeted account ID appears in the active sessions list before revoking.
5) Re-authenticate on device; allow full sync to complete; verify item counts match remote totals within the sync summary screen.
Resolving duplicate account records
Identify duplicates with a database query: `SELECT account_id, email, COUNT(*) c FROM accounts GROUP BY email HAVING c>1;`.
Pick canonical account_id; for the duplicates run: `UPDATE references SET account_id =
If records diverge, export both records to JSON, perform a field-level merge using a script that preserves the most recent modified_at timestamps per field; import merged JSON as the canonical record.
When local database appears corrupted
Stop the application process; copy the database file to a safe location for analysis: `cp local.db /tmp/local.db.bak`.
Run integrity check: `PRAGMA integrity_check;` in sqlite3; if result != “ok”, rebuild from backup or run `sqlite3 local.db .dump | sqlite3 rebuilt.db` then replace file after validation.
How to force token refresh without re-entering credentials
Use the refresh endpoint with the refresh token: `POST /oauth/token` with `grant_type=refresh_token` and the refresh_token value; validate `expires_in` value in the response; store new access_token in secure store.
Contacting support: logs to collect
Provide the following packet with the support request: device model, OS version, application build number, account_id, timestamp of failure (UTC ISO8601), last 50 lines of sync log, HTTP request/response pairs including headers, sample payload with object IDs exhibiting conflict.
Error code | Symptom | Immediate fix | Deeper fix |
---|---|---|---|
E101 / TOKEN_EXPIRED | 401 on every API call after 30s of auth | Revoke token; perform sign-in flow | Inspect token issuance logs; rotate client secret if refresh fails |
CONFLICT-409 | Sync stops with “conflict” on object_id | Run merge script with prefer_latest flag; retry sync | Adjust merge policy server-side; add deterministic conflict resolution |
E203 / DB_CORRUPT | Partial sync then crash; sqlite integrity_check fails | Restore from latest local backup; run db rebuild | Enable WAL mode; add periodic integrity checks during idle periods |
NET-502 | Intermittent sync failures; timeouts | Switch to reliable network; test with `curl` | Investigate proxy/firewall rules; allow persistent TLS connections |
Q&A: