Своя музыка без стриминга и интернета: зачем я сделал свой плеер для iPhone
Мне нужен был нормальный офлайн-плеер для своей музыки — в итоге я сделал его сам.
Я работаю музыкантом на круизных лайнерах и большую часть года провожу в море. С интернетом на лайнере всё непросто: он дорогой, часто медленный и не всегда стабильный. Поэтому полностью зависеть от стриминга мне никогда не хотелось.
Подписки я тоже не очень люблю. У меня есть собственная музыкальная коллекция, и мне хочется просто загрузить её на телефон и знать, что она доступна в любой момент — независимо от интернета, региона или очередного сервиса.
Несколько месяцев назад я начал искать хороший локальный плеер для iPhone. Вариантов оказалось много, но почти в каждом находилось что-то, с чем мне не хотелось мириться: где-то устаревший интерфейс, где-то перегруженная библиотека, где-то слабые настройки звука или просто неудобный экран воспроизведения. В итоге я решил попробовать сделать свой. Так появился Wavecore.
Каким я хотел его сделать
Мне не нужен был ещё один сервис с рекомендациями, подборками и обязательным аккаунтом. Я хотел обычный плеер для своей музыки, только современный и аккуратный.
Идея была простой: импортировал файлы или папку, получил нормальную музыкальную библиотеку и дальше просто слушаешь. Без постоянного интернета и без привязки к стриминговому каталогу.
При этом мне не хотелось, чтобы приложение выглядело как файловый менеджер. Музыка должна оставаться музыкой: альбомы, исполнители, обложки, поиск, привычная навигация.
Сейчас Wavecore умеет импортировать отдельные файлы и целые папки, работать с CUE, аудиокнигами, редактировать теги и собирать всё это в локальную библиотеку внутри приложения.
Отдельно много времени ушло на экран плеера. Мне хотелось оставить крупную обложку, waveform и удобное управление, но не перегружать экран десятком кнопок.
Есть эквалайзер и аудиоэффекты, а недавно я добавил виджеты с управлением воспроизведением и переключением треков прямо с Home Screen.
Для iPad интерфейс тоже сделан отдельно, а не просто растянут с iPhone. Это одна из тех мелочей, которые редко звучат как большая функция, но сильно влияют на ощущение от приложения.
Как я вообще его разрабатывал
Я профессиональный музыкант, а iOS-разработкой раньше всерьёз не занимался. Поэтому при создании Wavecore активно использовал ИИ-инструменты для программирования. Да, по нынешним меркам это вполне можно назвать вайбкодингом.
Но довольно быстро выяснилось, что магии тут немного. ИИ может за короткое время написать довольно много кода, но он не решает за тебя, каким должен быть сам продукт. Он не знает, что будет удобно в плеере, как должна вести себя библиотека или почему одна деталь интерфейса раздражает, а другая работает как надо.
Обычно всё выглядело довольно просто: сделал функцию, проверил на iPhone, нашёл проблему, переделал. Иногда одна маленькая правка ломала что-то совсем в другом месте. Со временем я начал разбивать большие задачи на небольшие и внимательнее следить за тем, что именно меняется.
Одна из проблем ИИ — он умеет очень уверенно ошибаться.. Код может выглядеть аккуратно, Xcode может его спокойно собрать, а потом выясняется, что в каком-то сценарии всё работает неправильно. Поэтому всё важное я всё равно проверяю на реальном устройстве.
В итоге для меня ИИ оказался не кнопкой «сделать приложение», а инструментом, который позволил вообще взяться за такой проект. Без него я, скорее всего, даже не начал бы.
Код — только часть работы
До начала проекта мне казалось, что главное — заставить приложение работать. Довольно быстро выяснилось, что помимо самого кода есть ещё куча всего: интерфейс, разные размеры iPhone, отдельная версия для iPad, импорт файлов, состояние плеера после перезапуска, покупки, StoreKit, локализация, виджеты и метаданные. А потом ещё App Store Connect, скриншоты, описание, анкета о конфиденциальности и сам Review.
После релиза появились реальные пользователи, и они довольно быстро начали находить сценарии, о которых я сам за всё время разработки ни разу не подумал.
Для кого Wavecore
Я не пытаюсь заменить Spotify или Apple Music. Wavecore скорее для тех, кто хранит собственную коллекцию: FLAC, ALAC, MP3, старые альбомы, редкие записи, купленную музыку, рабочие материалы или что-то, чего просто нет в нужном сервисе.
Мне нравится, что музыка действительно лежит у тебя и остаётся доступной независимо от стриминга или подключения к сети.
Отсюда и простая идея Wavecore: Your music. Your library.
Что дальше
Wavecore уже доступен в App Store, но я продолжаю его развивать. Сейчас больше всего идей связано со звуком, библиотекой и персонализацией самого плеера.
Если вы тоже храните музыку локально на iPhone или iPad, напишите в комментариях, чего вам не хватает в существующих плеерах и какими функциями вы действительно пользуетесь каждый день.