Вчера и сегодня размышлял над архитектурой и технологиями для создания ПМО (песенной мастерской онлайн). А они зависят от того, какие структуры данных мы хотим хранить и что с ними делать. А это зависит от того, что мы вообще на сайте хотим делать. Ведь вроде кажется, что песня - это просто текст, у нее есть название и автор. Ну еще ноты можно добавить. Вот и вся структура. Но если вспомнить, что авторов может быть несколько (поэт и музыкант - самый простой случай соавторства), то окажется, что одним значением «Автор» не обойдешься. Дальше - больше. Мне же не хранилище готовых песен нужно, а инструмент для процесса их создания и улучшения. Значит, надо очень внимательно изначально понять, какие действия пользователь будет делать.
Ну, например:
Порой нужно просто записать удачную строку или ее фрагмент, еще без привязки к конкретной песне. Значит, нужно иметь возможность хранить отдельные строки в своего рода архиве (копилке, хранилище, загашнике, далеком и долгом ящике).
Строки внутри песни иногда хочется поменять местами и посмотреть, что получится. Значит, текст нужно точно хранить не целиком, а в виде списка строк. Тут возникает проблема: если аккорды привязываются к строке, то если ее куда-то передвинули - придется как-то дополнительно выяснить, нужно ли при этом и музыкальную составляющую передвигать? Как правило, нет, потому что автор хочет посмотреть, как строка будет выглядеть в другом месте. Но если мелодия и гармония еще не устоялись, то в поисках самого удачного варианта мне как автору интересно попробовать разные сочетания и последовательности слов и аккордов.
А дальше, если вспомнить, что песня состоит из таких частей как куплет, припев, бридж и прочие вступления, то получается, что строки вообще надо привязывать не напрямую к песне, а к этим «разделам песни». К тому же иногда хочется и их подвигать местами, чтобы посмотреть, с какого куплета лучше начать, каким закончить, и как будет смотреться бридж между разными вариантами припева.
Нужно иметь возможность быстро набросать структуру песни и потом ее наполнять, а иногда наоборот - просто писать, а потом уже структурировать.
Кроме того, если песня пишется не просто изнутри - «что чувствую, то и пою, как получилось, так и вот вам нате», а продумывается с точки зрения фактов, драматургии, восприятия слушателем, уместности лексики и прочих таких «литературных» вещей, то совершенно необходимо тут же держать хранилище заметок, где автор пишет как раз такие соображения. Они не входят в текст песни, разумеется, но их жизненно важно фиксировать. Потому что когда автор «в потоке», то мысли и идеи (особенно удачные) несутся прямо в этом потоке - и очень быстро несутся. И все они могут изменить песню к лучшему. Но как правило, 99% этого потока забывается (даже ярчайшие идеи), потом ходишь и мучительно вспоминаешь: «ну ведь такая идея была». Заново переживаешь ощущение, которым одарила тебя эта идея, и совершенно не можешь вспомнить ее смысловое содержание. Это как забыть имя давно знакомого человека или персонажа - «вертится на языке», но никак на него не садится. Только у знакомого можно переспросить имя (или у его знакомого, если уж очень стыдно), про персонажа можно снова прочитать, а незаписанную идею чаще всего не вернуть. Еще хуже, когда мысль пришла тебе в совершенно идеальной форме (этим обычно она и вызывает такие яркие эмоции), а вспоминаешь ты ее уже в виде обрывков, обрубков, фрагментов - не идея, а инвалид. Помаешься-помаешься с ней такой, да и бросишь.
Итак, нам нужно хранить постороннюю информацию. Например, если песня основана на фактах (банальный пример - поздравительная песня, в которой описаны жизнь и подвиги чествуемого индивида), то просто свалить эти факты в кучу и кое-как зарифмовать - этого мало. Песня намного лучше запомнится (в том числе и исполнителю), если автор из «руды» банальных вещей составит историю, берущую за душу.
И это я еще не коснулся музыкальной составляющей. Кто как, а я в некоторых случаях аккорды не просто пишу над строками песен, а именно над тем местом в тексте, когда аккорд должен начаться. Хорошо бы и это еще учитывать, а при распечатке прямо так и печатать. Иногда сразу придумывается какой-нибудь проигрыш прямо вместе с мелодией - ее бы записать. Значит, нужно прикреплять короткие аудиофайлы или как-то записывать ноты, если удается их подобрать.
И еще множество моментов. Например, если над песней работают два автора, то надо бы как-то сделать так, чтобы их варианты не затирали друг друга, а сохранялись для последующего обсуждения.
Впрочем, на первом этапе (за данный месяц) я не успею реализовать все, что тут написано (а у меня в планах и пожеланиях написано еще больше!), но ключевые моменты надо заложить уже сейчас, чтобы потом не было мучительно больно переделывать все заново :)
А у вас есть какие-нибудь мысли о том, как облегчить процесс написания песни? Я имею в виду не автоаранжировщики и подбор рифм, а именно организационные моменты - хранение набросков, возможность поиграться со структурой песни и все такое.