Цветелина обнови решението на 19.12.2022 01:25 (преди около 2 години)
+"""
+[Title/Звание]
+Библиотека за мелодии на виртуално пиано.
+
+[Description/Обрисовка]
+Уеб сайт, предоставящ възможност за
+ - Изпълнение на единични последователни ноти на виртуално пиано
+ - Записване на мелодии от изпълнените ноти или от подаден списък с ноти под формата на текст
+ - Изпълнение на съществуващи мелодии
+Обикновеният потребител ще има достъп до собствена библиотека от мелодии, както и до глобална такава, в която записите се качват от специални потребители, имащи права да споделят мелодии с всички останали.
+
+[Functionalities/Надарености]
+1. Видове потребители и правата им:
+ 1.1. Уеб сайтът поддържа два типа потребители – обикновен и специален потребител.
+ 1.2. Двата типа имат достъп до собствена библиотека, в която могат да качват мелодии, които да са достъпни само за тях самите.
+ 1.3. Двата типа имат достъп до глобална библиотека.
+ 1.4. Специалният потребител има право да качва мелодии в глобалната библиотека, които да са достъпни за всички останали.
+
+2. Регистрация:
+ 2.1. По време на регистрация човек може да избере като какъв тип потребител иска да се регистрира.
+ 2.2. И в двата случая, регистрацията става включва въвеждане на информация като потребителско име, имейл, парола и други.
+ 2.3. Ако потребителят избере да се регистрира като специален потребител, се въвежда допълнителна информация, необходима за оторизация.
+ 2.4. Създаването на профил на обикновен потребител става автоматично след въвеждане на нужната информация.
+ 2.5. Създаването на профил на специален потребител става след одобрение от админ, като админът може да не одобри заявката.
+
+3. Вход: Входът в сайта за всички потребители се случва с въвеждане на коректно потребителско име и съответстваща парола.
+
+4. Виртуално пиано: След вход в сайта се визуализира уеб страница с виртуално пиано със следната основна функционалност: при натискане на клавиш се изпълнява съответната нота.
+
+5. Записване на мелодия от гледна точка на потребителя:
+ 5.1. На страницата с виртуалното пиано ще има бутон за записване на мелодия, който дава избор между два начина за записване на мелодия:
+ 5.1.1. Чрез натискане на клавиши – потребителят натиска клавишите, до натискане на бутон за прекратяване на въвеждането.
+ 5.1.2. Чрез въвеждане на текст, репрезентиращ ноти – в специално поле ще може да се въведат ноти чрез ABC нотацията или Do-Re-Mi нотацията, както и с използване на числа за означаване на октавата, и думите “flat”, “sharp”. Правилата за правилно въвеждане ще се показват заедно с полето. Отново ще има бутон за прекратяване на въвеждането.
+ 5.2. След прекратяване на въвеждането потребителят трябва да попълни името на мелодията и ключови думи за нея.
+ 5.3. Ако потребителят е специален, той ще може да избере къде да добави мелодията – в собствената си библиотека, в глобалната библиотека или в двете.
+
+6. Записване на мелодия от гледна точка на програмата: Всеки натиснат клавиш е свързан с аудио файл, съдържащ неговото звучене. Всяка въведена с текст нота ще се свързва с аудио файл за съответстващия й клавиш. Крайната мелодия се записва чрез конкатенация на аудио файлове.
+
+7. Библиотека от мелодии: На страницата с виртуалното пиано ще има бутони за достъп до собствената и до глобалната библиотека. При избор на дадена мелодия вътре в библиотека се възпроизвежда аудио файл.
+
+8. Потребителите ще могат да търсят мелодии по ключови думи, когато са в собствената си или в глобалната библиотека. Ще е като филтриране, след което мелодиите могат да се изпълняват, както в т. 7.
+
+[Milestones/Възлови точки]
+- Създаване на админ
+- Форма за регистрация
+- Валидация на парола при регистрация
+- Хеширане на пароли преди запазването им в база от данни
+- Одобряване/Отхвърляне на специален потребител от админ при регистрация
+- Форма за вход – търсене дали съществува потребителското име и дали е въведена правилната парола за него
+- Визуализация на виртуално пиано
+- Възпроизвеждане на аудио файл
+- Свързване на натискане на клавиш с възпроизвеждане на конкретен аудио файл
+- Форма за въвеждане на ноти чрез текст
+- Валидация на въведения текст
+- Конкатениране на аудио файлове
+- Свързване на аудио файл с ключови думи
+- Филтриране по ключови думи
+
+[Estimate in man-hours/Времеоценка в човекочасове]
+70 – 90 часа
+
+[Usage of technologies/Потребление на технологии]
+- Framework Django.
+- Модул за възпроизвеждане на аудио файлове – Например playsound за файлове с разширение .wav.
+- Модул за конкатениране на аудио файлове – Например wave, ако файловете са с разширение .wav.
+"""
Проектът е готин, но:
- Всичко, свързано с потребителите ще ти дойде наготово от Django. Описала си кеширане на пароли, страници за логин/лагаут - всичко това го имаш преди да си започнала.
- Слагайки логините настрана, всичко остнало е виртуално пиано, което реално ще имплементираш на front-end, т.е. няма да има нищо общо с Python.
- Python частта е просто Django с потребители и модел за записване на мелодии - това е по-лесно от това, което презентирах на лекциите за Django.
Освен това, написала си разни модули за възпроизвеждане на звук. Пианото и звука ще бъдат в браузъра и нямат общо с Python. Не можеш да генерираш звук на back-end-а, който да пращаш на front-end-а в реално време. Дори да го направиш, ще има забавяне и въобще не е удачен похват.
Ако имплементираш същата идея в Десктоп приложение - супер. Ако ще го правиш с Django, идеята не е подходяща.
Как е например същата идея, но като Десктоп приложение с Tkinter. Базите от данни да са реализирани например с модул MySQLdb, работата с аудио файлове както вече е описано?
Ако е десктоп приложение, смятам, че е с удачна сложност, да.