Overview
The NeoBAE for Android app helps musicians and audio enthusiasts browse, load, and manage MIDI files, soundbanks, and patch libraries stored in nested folders on local and removable storage. Our approach is inspired by the community ethos and transparency of the NeoBAE project, focusing on open, verifiable tooling and respectful handling of user data.
What data we collect
- No personal data, at all: We do not collect names, emails, contacts, or location. We don't even collect device information. The app itself may locally collect device information for debugging, but no data is ever sent to our servers.
- Local-only indexing: When you browse libraries, the app scans file paths and metadata locally to build an in-app index. This index never leaves your device.
- Crash logs (optional and manual): If enabled, crash reports may include device model, OS version, and stack traces. Crash reports may also contain information about the currently loaded song and bank, but otherwise will not expose your private files.
There are no automatic diagnostics within the application, but you are welcome to post crash logs to our Github issues page.
Storage permissions and how we use them
Scoped access first: The app uses Storage Access Framework (SAF) when possible.
Limitations of SAF: We attempted to implement SAF for reading user libraries, but it proved insufficient for our needs. SAF does not reliably expose nested subfolders, nor does it recognize non-standard audio formats such as MIDI files or soundbanks (.sf2, .dls, etc.). As a result, essential assets could not be discovered or loaded through SAF alone, breaking core functionality.
MANAGE_EXTERNAL_STORAGE (All files access): For power users with complex libraries (e.g., nested soundbanks, custom patch formats, and non-standard MIME types), we request MANAGE_EXTERNAL_STORAGE to enable full-library traversal and reliable loading. This permission is used strictly to:
- Enumerate nested folders: Discover MIDI, soundbank, and preset files across user-defined directories.
- Read non-media formats: Access assets not recognized by
READ_MEDIA_AUDIO(e.g.,.sf2,.dls,.xmf, patch banks). - Search Indexing: To rapidly index your supported media into the search tab.
No hidden sharing: Files discovered with this permission are processed locally. We do not upload, transmit, or sell your content. We don't even request the NETWORK permission.
WRITE permissions: We do not use WRITE_EXTERNAL_STORAGE. Exports are performed via the system file picker (ACTION_CREATE_DOCUMENT) and temporary staging in the app’s cache directory.
What is Indexed
The indexer scans your selected folder and subfolders for supported song files (.mid, .kar, .midi, .rmi, .rmf, .xmf, .mxmf).
The indexer stores the following information in its sqlite3 database for each file it finds:
- Path (eg. /sdcard/Download)
- Filename (eg. song1.mid)
- Extension (eg. mid)
- Parent Path (eg. /sdcard)
- File Size(eg. 4096 bytes) - This is to help determine if we should refresh this file in the index when we see it again
- File Last Modified Time (eg 1765992753) - This is to help determine if we should refresh this file in the index when we see it again
Open source and transparency
The project is open source. You can review how permissions are requested and used, and build the app yourself. Source code: https://github.com/zefie/NeoBAE, specifically at https://github.com/zefie/NeoBAE/tree/main/neobae/src/NeoBAEDroid.
Our commitment to transparency is aligned with the open community tradition showcased by NeoBAE and zefidi, allowing users and reviewers to verify functionality and privacy claims.
Data sharing
- No advertising partners: We do not share data with advertisers. We have no ads in our app.
- No third-party analytics by default: There are no automatic diagnostics or "phoning home". All diagnostics are in your local logcat.
- Legal compliance: We do not automatically collect data, but any data you voluntarily submit to us may be disclosed if required by law (e.g., court order), but we aim to minimize retained data.
Your choices and controls
- Permission toggles: You can grant or revoke “All files access” in Android settings at any time. The application won't function without it though.
- Safe file writing: Uses SAF to choose a specific location for your exported audio file.
- Data removal: Clear cache and app data in settings to remove local indexes and temporary files.
Security
We protect local indexes and preferences using Android’s sandbox model. Temporary export files are stored in the app’s cache and are periodically cleaned. We do not request unnecessary permissions and we scope access to the minimum needed for core functionality.
Children’s privacy
Our app is intended for general audiences and does not target children. We do not knowingly collect personal information from children.
Changes to this policy
We may update this policy to reflect improvements or platform changes. Material changes will be noted in-app and on the project repository.
Contact
Questions or requests? Contact us at zefie@zefie.net or open an issue at https://github.com/zefie/NeoBAE/issues.