Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/9179| Title: | Програмне забезпечення музичного плеєра (зі створення плейлисту) |
| Authors: | Рідкокаша, Анатолій Андрійович Гогулов, Ярослав Володимирович |
| Issue Date: | 17-Jun-2022 |
| Abstract: | АНОТАЦІЯ
Предметом розробки бакалаврської роботи є програмне забезпечення, яке буде використовуватись для відтворення аудіо файлів.
Основна частина документу викладена у пояснювальній записці. Наведено огляд існуючих рішень, їх детальний аналіз та порівняння. Виконано огляд технологій , на базі яких можливе створення застосунку для конвертації та програвання аудіо файлів.
Застосунок було розроблено із використанням мови програмування С# та технологій .Net, Windows Media Foundation, Windows Pгesentation Foundation, бібліотеки MF.NET, NAAUDIO та TAGLIВ. Готовий додаток відповідає поставленим до нього при розробці вимогам та містить увесь необхідний функціонал. ANNOTATION The subject of the bachelor’s thesis is software that will be used to play audio files The main part of the document set out in an explanatory note. An overview of existing solutions, their detailed analysis and comparison is given. An overview of the technologies on the basis of which it is possible to create an application for converting and playing audio files. The application was developed using the С# programming language and .Net technologies, Windows Media Foundation Windows Presentation Foundation, MF.NET, NAAUDIO and TAGLIB libraries. The finished application meets the requirement set for it during development and contains all the necessary functionality. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/9179 |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Гогулов Ярослав Володимирович.pdf Restricted Access | 25.08 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
►
МІНІ 't Н 'ТВ О ВІТИ r НЛУКИ УКРАУНИ
ЧЕРКАСІ,КИЙ Д�J>ЖЛВНИЙ ТRХНОЛ П JНИЙ УНІВЕРСИТЕТ
Фаf( ль, ,, і11фо1 нійних ,, хншюr·іU і систем
Кафедра 11potl)aмнor-u аб печення автоматизовашrх систем
Пояснювальна записка
до кваліфікаційної роботи бакалавра
з напрямку підготовки 121 "Інженерія програмного забезпечення"
(освіntьо-кваліфікаціІІннІІ рівень)
на тему: Програмне забезпечення музичного плеєра
(зі створення плейлисту)
Виконав: студент 4 курсу, групи ПЗС-1944
Спеціальності
121 "Інженерія програмного забезпечення"
(mнфр і назва напряму підготовки)
Студент_Г�о�rу�ло=в:..::Я=·=В..:.... _____
(прізвище та ініціали)
Керівник Рідкокаша А.А.
(прізвище та ініціали)
Рецензент Запорожець М.В.
(прізвище та ініціали)
Черкаси 2022
Форма Nt У-9.01
Додаток2
ЧЕРКАСЬКИЙ )\ЕРЖЛDІ ІИЙ ТЕХІ ЮЛОІ 'f ЧНИЙ УНІВЕР.С.::~И.Т:..Е:.::..Т.._ ____
(ІІАЗnn вузу)
Фа~rльтет _________ ін ю мацНtних тex11oлoriit І сис·rем
(11on11n 11АЗnв)
Кафе,1\'І)а 11 01 ам11ого забезпечення автоматизованих систем
(повна назва)
-віт,іьо-кnаліфікаційний рівень Бакалавр
(назва)
Напрям nідготовки ______~ 12=-1~«~Ін~ж~е~н~е~р~ія~п~р:.о:~rрс.=;-;а:-м:-•:-ю=-=-"r-7о_з_аб_е_з_пе_ч_е_н_н_я>>_ ______
(шифр і назва)
ЗАТВЕРДЖУЮ:
Зав. кафедри програмного забезпечення
автоматизованих систем
~ .f/!tlllJI Первунінський С.М.
(( 1, )) [Р 2. 20~.
ЗАВДАННЯ
НАВИПУСКНУБАКАЛАВРСЬКУРОБОТУСТУДЕНТУ
Гогулову Ярославу Володимировичу
(прізвище, ім'я, по батькові)
1. Тема проекту (роботи) ...:.М::.у!:::з~и2:чн~и~й~пл~еє~р~._ ___________________
Керівник проекту (роботи) ______.. .......:.Р...::ід:::..:К.:::О:.:..:К:::а:..:..:ш:.:..:а:.:.:А:..:..:н:.:.:а_;т;_;,_о._;'/ll_·й_А_н_.;др. .. .,іи~оv _в_и_ч_ __- ;------
(прізвище, ім'я, по батькові, науковий с,упінь, вчене звання)
Заmерджені наказом Черкаського державного технологічного університету від
14.02.2019 №50/01
2. Строк подання студентом проекту (роботи) 01.06.2022
3. Вихідні дані до проекту (роботи) ----=О..:..:п~ер:..:а.:..:1ц.:..:ій-"-н:.:..:а-=-с:.:..:ис-"-т-"-е:..:..::м.:..:а:.....-_М_іс_r_;о_sо.,,_іft_t_ Wi_in_d_o_w_s_7._1/8_ї:_'8._l_ll_O _
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Вступ, 1. Дослідження предметної гш~узі, І.І. Характеристика предметної гш~узі, 1.2. Огляд
існуючих анш~огів, 2. Постановка задачі. Технічне завдання, 2.1. Вступ, 2.2. Загш~ьна
характеристика системи, 2.3. Вимоги до обчислювш~ьного середовища, 2.4. Зв 'язок із зовнішнім
середовищем, 2.5. Якість системи, 2.6. Документація систе:ми, 2. 7. Вибір програмно-технічних
засобів, З. Опис розробленої системи, З.І. Опис шаблону сторінок, 3.2. Опис інтерфейсу та
функціонш~ьних можливостей, Висновки, Список використаних джерел, Додаток А, Додаток Б,
Додаток В, Додаток Г
5. Перелік графічного матеріалу (з точним зазначенням обов'язкових креслень)
Г.1. Слайд «Сфери використа11ня додатку», Г.2. Слайд «Перевитрата ресурсів», Г.3. Слайд
«Аналоги додатку. "Первь~й тестовь~й"», Г.4. Слайд «Анш~оги додатку. "Quizful"», Г.5. Слайд
«Аналоги додатку. "InTester"», Г.6. Слайд «Можливості системи», Г. 7. Слайд «Технологічний
стек ,tp0e'l(ffl ;,, r. .С т1д «Стр tкmYf'(' i~•c!• . ¾}ат,, '.>, т : 9. 'лойд ((/дgІп pdge,,, Г.lО.Слайд
Ноте page;,, т : / І . См,і~ 8111"•('.y.fi 1,i.fl /Ю~~>>, / ' 12. СлаіИ «S11rvey !11/о page,,, Г: І З. Слайд~
п,,е І page,,, r и.. Crtmiд ((,~111\'('1 ' /Ю~». 1: І 5. /f(lrtд « Т1uc11rJflKШ> ------
., ~
6. Коп 1льт1шm азш\tt t11t"м р<>11'ілІn проекту, rцо ~стос ься
ГІідrrис дата
fl(i,,tti.n Кон .1н,m11т
. Дата видачі завд8Н1UІ ____ ____! .1..~с~чі~ня~20~2~2.~:.р~о:к.:уі:.__ _______
ка лендаонн it план
№ Термін виконання етапів
з/п Назва етапів курсового проекту (роботи) Примітка
проекту (роботи)
1 Підготовча стадія 15.01.22-30.01.22 Виконано
1.1 Анапіз поставленоі· задачі 03.02.22- 10.02.22 Виконано
1.2 Підготовка завдання 11.02.22-15.02.22 Виконано
1.3 Погодження завдання 15.02.22- 16.02.22 Виконано
1.4 Затвердження завдання 16.02.22- 18.02.22 Виконано
2 Основна стадія 19.02.22-26.02.22 Виконано
2.1 Підбір матеріш~ів 26.02.22-28.02.22 Виконано
2.2 Анш~із шляхів вирішення поставленої задачі 01.03.22-15.03.22 Виконано
2.3 Оформлення первісноїредакціїроботи 16.03.22-31.03.22 Виконано
з Заключна стадія 01.04.22- 30.04.22 Виконано
З.і Оформлення пояснювальної записки до роботи 04.05.22 - 31.05.22 Виконано
3.2 Затвердження роботи 15.01.22 Виконано
з.з Рецензування роботи 01.06.22 Виконано
Студент-дипломник Гогулов Я. В.
(прізвище та ініціали)
Керівник проекту (роботи) Рідкокаша А. А.
(прізвище та ініціали)
ANOTATION
ТІ1 subject ot' tl1e ЬасІ1еІог's tl1esis is software tl1at will Ье usecl to рІау audio
tile
TJ1e 111аіп pat1 of' tl1e dосшпепt is set out іп an expJanatory note. Ал overview
of existiпg solutio11s 1 tІ1еіг detailed апаІуsі апd coшparison is giveп. An overview of
tl1e tecl111ologies 011 tl1e basis of wJ1icl1 it is possible to create an application fог
сопvе11іпg апd рІауіпg audio files.
ТІ1е аррІісаtіоп was developed using tl1e С# pгogгa1111ning language and .Net
teclшologies, Wiпdows Media Foundation Windows Pгeseпtation Foundation,
'
MF.NET, NAAUDIO апd TAGLIB libraries. ТІ1е finished application шeets the
геquіге111 пt set fог it dшіпg develop111e11t and coпtains аІІ tl1e песе sагу
fuпctioпal ity.
АНОТАЦІЯ
Предмета 1 розробки бакалаврської роботи є програмне забезпечення, яке
б , внкорнстовуватись для відтворення аудіо файлів.
Основна частина документу викладена у пояснювальній записц,.
Наведено огляд існуючих рішень, їх детальний анал із та порівняння. Виконано
огляд технологій , на базі яких можливе створення застосунку для конвертації та
програвання аудіо файлів.
Застосунок було розроблено із використанням мови програмування С# та
технологій .Net, \Viпdows Media Foundation, Windows Pгesentation Foundation,
бібліотеки MF.NET, NAAUDIO та TAGLIВ. Готовий додаток відповідає
поставленим до нього при розробці вимогам та містить увесь необхідний
функціонал.
Зміс,
СПИ ОК КОРОЧЕНЬ ТЛ УМОВІІИХ fІОЗНАЧЕНЬ ........ ...... ......................... 5
13 'ТУП ··· ···· ·· ··························· ······ ·· ····· ········· ·· ·· ·············· ·············· ········· ··· ····· ·· ···········8
І ОГЛЯД ПРЕДМЕТНОЇ ОБЛАСТІ ....................... ......... .. ......... .. .......... .. ... .. .. .. .. . 12
1.1 Досл ідження форматі о зберігання аудіоінформації .. ........................... .. .. . 12
1.1.1 \~1аvеtопп Audio Fоппаt ......... .. ................ ....... .... .. ........ .. ...... .. ....... .... .... . 12
1.1.2 f\~PEG-1 /2 Lауе1·- З .. .. ........ .... ................ .. ...... ............. .. ... ...... ....... ..... ....... 12
1.1.3 Fгее Lossless Audio Codec ........ .. .............. .. .. .................. .... .............. .... .. 14
1.1.4 Призначення та область застосування ................................... ........ .......... 15
2 ОГЛЯД ІСНУІОЧИХ PJWEHb ............................ .................. ...... ... ...... ............ . 17
2.1 АІМР ·············· ······································· ·· ·· ································ ········· ·· ·· ········· 17
2.2 «FL Studio» ........ ............................................................... .... ..... .. ................ ... 18
2.3 «foobar2000» .............................. ............. .. ................................... ... ......... ...... 19
2.4 «Wi11an1p» ..................... ........... .. .................. .......... ........ ... .. ........ ........... ......... 20
3 АНАЛІЗ ОБ'ЄКТ А ПРОЕКТУВАННЯ ...................... ...... ........ .. ...... ................. 22
3. І Формулювання та аналіз вимог ................................................................... 22
3.2 Об 'єктна структурний аналіз інформаційної системи ..... ........ .. ............... 22
3.3 Діаграма використання ................. ......... ................................. .. .... .... ............ 26
3.4 Діаграма класів .......................................... ............... .. ....... ... ......................... 27
3.5 Вимоги до інтерфейсу .......................................... ... ............ ............ ............. 28
3.6 Визначення поведінки об'єктів .. ......................... ................................ ...... .. 29
4 ПРОЕКТУВАННЯ ІІ-ІФОРМАЦІЙJ-ІОЇ СИСТЕМИ .............. ........ .................. 32
4. І Архітектурне проектуван ня .. ....... .............. ............ ....... ....... ... ... ...... .. .......... 32
4.2 Опис основних функцій додатку ....................................... ....... ........ .. ......... 33
4.3 Вибір техншюгії розробки ..... ........... .... ........................ ...... .. ... .... ........ ........ 33
4.3 .1 Огляд технологі й ,l.І,JІ }І розробки застосунку ... .. .. .. .... ............ ............... .33
4.3.2 С# та \ l isL1al StL1clio ....................................................... .. .... .. ... ................ 34
4.3.3 Wiлdo\\1s Ргсsсп\а Ііоп 1:-oш1da ti o11 ..................... ........ .. .. .......... .. .............. 35
4.3.4 'Niпdo,vs MecJi c1 1:-ошкІа tіо11 ........ .... .. ..................................... ..... .... ....... ..... 36
ЧДТУ. 22 1960-003 ПЗ
3\1 , JІ1 к·г н~ ,'ЮК)'МШ'Іа І І ~11111, Jl:1І .1
І'оз110G . 1 ·n1·,.юв.Я . І3 ,1t// / ,\~1І уз1-1ч1-1ий плеєр» Jli1 . Jl11t:1 І J І11~ 1і в
К,·рі1,11 11 к І'і:1кvка111а Л.Л. .tti;.I'--.
.., І І оs1 с 11 ю1н1ль1н1 ·3аписка І II І " І
/І ФП ІС, кафелра І І '~ЛС,
11 . КОІ І І J) .
1
·3а , 11. І ПС- І J ..\..\ l
-
4. 4 р· о зро б ка 1• нтерч,І) еиV су t<ористувача ............................................. .. ..... ......... .. 37
4. 5 в икористання застосунку ........................................... ................... .· · ··· ····· ····40
те хн1.ч н1. вимоги до системи ............. ............................. .................... .. .. . ..... ....... 40
5 ТЕСТУВАНІІ~' я ............... ...................4 1
-"( •••··••• •·· •• ••••••••••••••·•••••••••••••••·••••••••••• · · •••·•••••
вІ'хІ сновки . ... ..... .. ... . . . ' ...... . . І •• І І • • ••• І • • •••••••••• • • ••••••••• ................... .· ················ ·· ··········44
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ............ ............................ ...... ................. 46
д одаток А ................ ..... ... ............. .............. ....... .. ............ .. .. ... .. .· ············ ············ ··· ·· ·46
д одаток Б ........ .. .................................................. ........................ .......... · ······· ···········48
Додаток B. ....... .. ........ ... ...................... .............. ............ ....... ...... .... ...... ......... ... ...... ... 8S
до дат ок г ..................... ................................... ........................ ... .. ............ ........ ........ 93
ЧДТУ.22 1 960-003 113
'3ч . .1111,· 1 \ , 1111.~,1, 11 1.1 І І і 11111, .'l a 1.1
«Муз11ч н11і1 плесr >>
Пояснювх1ь11а з:1 1111ска
ЧДТУ .221960-003 ПЗ
ПИСОК СКОJ>ОЧЕІІЬ ТА УМОВНИХ ПОЗНАЧЕНЬ
WPF
Windows Presentation Founda6on
WMF
Windows Media Foundation
WAV
Wavefo,·m Audio Format
FLEC
Free Lossless Audio Codec
IDE
Integ,·ated developmeлt
eпviгoшnent
XAML
Xteпsib le Application Markup
Language
ПЗ
Програмне забезпечення
5
Ч)~Т . І 9б0·003 І П
ІJСТУП
В ;щн11й час мут,тнмедіа-технології є сферою інформшtійних технологій ,
що бурхлнво І оз1шваrться . У цьому напрямку активно працює значна к1льюсть
вел11кнх і д\ ібннх фірм, технічних університетів та студій (зокрема ІВМ , Арр І е,
Motot'Ola, Pl1ilips, Sопу, lntel та ін.). Області використання надзвичайно
різно tанітні : інте1 активні навчальні та інформаційні системи , САПР, розваги
та ін . Основними характерними рисами цих технологій є: об'єднання
багатокомпонентного інформаційного середовища (тексту, звуку, графіки ,
фото, відео) в однорідному цифровому представленні; забезпечення надійного
(відсутність спотворень при копіюванні) та довгов1чного зберігання
(гарантійний термін зберігання - десятки років) великих обсягів інформації;
простота переробки інформації (від рутинних до творчих операцій). Досягнутий
технологічний базис заснований на використанні нового стандарту оптичного
носія DVD (Digita\Veгsalite/VideoDisk), що має ємність порядку одиниць та
десятків гігабайт та замінює всі попередні: CD-ROM, Video-CD, CD-audio.
Використання DVD дозволило реалізувати концепцію однорідності цифрової
інформації. Один пристрій замінює аудіоплеєр, відеомагнітофон, CD-ROM,
дисковод, слайдер та ін. У плані подання інформації оптичний носій DVD)
наближас її до рівня віртуальної реальності. Багатокомпонентне мультимедіа
середовище доцільно розділити на три групи : аудіоряд, відеоряд, текстова
інформація. Аудіоряд може включати мову, музику, ефекти (звуки типу шуму ,
1р ому, скрипу і т.д. , що об'єднуються позначенням WA VE (хвиля). Головною
11роб.1 1 емою при використанні цієї групи мультисередовища є інформаційна
смJJісп, . JЗ11щої якості необхідна пам'ят1, близько І О Мбайт, тому стандартний
об'('м ( J) (цо 640 Мбайт) дозволяє записати не біл ьше години WA VЕ.Для
в11р1111 ення uі сї проблеми використовуют1~ся методи компресії звукової
інформ ,щії. , ·шукоnі ефекти) MIDI (Mt1sicall11stп1111eпtl)igital e l11teгface).B дано.му
в11тщку ·туки му3ичних інструментів, звукові ефекти сн1п~зуються програмно
ксров:111ш111 L'.11ектро11ними си1-пезаторам11 . Корек11ія 1 а ц11фрош1й запис MIDI-
8
w
Ч)\ ГУ .22 19(,0-003 І ІЗ
звуків '3J1.ііkнюс11,ся зз J\011омо1 ·010 му-тчннх редакторів (нрограм-ссквенсорів).
11з~1'я1і - І хвнтша МІDІ-звуку заіімас в ссреюrьому м 10 Кбайт. Відеоряд у
П1)рівнянні з аудюрядом характеризується великою кількістю елементів.
lЗнділяють статич1111й та ди11амі111111і1 відеоряди. Статичний відеоряд включає
графіку (малюнки , і11тер'єр11 , поверхні , символи у графічному режимі) та фото
(<jю1'огрзфії та скановані зображення). Динамічний відеоряд є послідовністю
статичних елементів (кадрів). Для статичних зображень один повний екрап
внмаrає наступних обсягів пам'яті: в режимі 640 х 480, 16 кольорів - 150 кбайт;
в режимі 320 х 200, 256 кольорів - 62,5 кбайт; в режимі 640 х 480, 256 кольорів
- 300 кбайт. Такі значні обсяги при реалізації аудіо- та відеорядів визначають
високі вимоги до носія інформації, відеопам'яті та швидкості передачі
інформації. При розміщенні текстової інформації на CD-ROM немає жодних
складнощів та обмежень через великий інформаційний обсяг оптичного диска.
Основні напрямки використання мультимедіа-технологій: електронні видання з
метою освіти , розваг та ін. ; у телекомунікаціях із спектром можливих
застосувань від перегляду замовленої телепередачі та вибору потрібної книги
до участі у мультимедіа-конференціях. Такі розробки отримали назву
InfonnationHigl1way; мультимедійні інформаційні системи («мультимедіа
кіоски»), що видають 1-1а запит користувача наочну інформацію. З погляду
технічних засобів на ринку предстанлею як повн1стю укомплектован 1
мультимедіа-комп'ютери, так окрем1 комплектуюч1 та підсистеми
(MultimediaUpgradeKit), що включають звукові карти , приводи компакт-дисків,
джойстики, мікрофони, акуспJІ11-1і системи. Для персональних комп'ютерів
класу ІВМ РС затверджено спеціаль11ий стандарт МРС, що визшР~ає мі11імаль11у
конфігурацію аnарапшх засобів для відтворення мультимедіа-продукті в. Дш1
оптичних дисків CD-ROM розроблено міжнародний стандарт (ISO 9660).
Аудіоінформація cyrrponoджyc людину впродовж усього її ж11 ·псnоrо
шляху - від самих nелюшок і ;10 старості. Згідно із досліже1111ям11 2021 року,
що опубліковані у журналі «ЛррІіе,і Cog11iti,,e Psychology», правш1ь110 11і,цібра11а
9
'І )\ТУ. 22 1960-003 113
фо1юuа музнка спрняс крса11m11ому ми111ленню та з;~атна rюкращувати
11рзнсз11зтність люлсіі . Це 11ілкрсслюс актуальність обраної теми, алжс у
сучзt·ннх умовах праці , колн nce більше компаній створюють відкриті простори
для колект11вної роботн, необхідно якісно усунути галас для забезпечення
сталого робочого процесу. Аудіо зап11си широко застосовуються у індустрії
розваг та мзркет11нrу : nід створення багатоканальних звукових дор1жок для
сучасних кінотеатрів та обробки адуіо для кліпів у мережі Інтернет до
оголошень, що передаються гучномовцями. Для кожної цілі використовуються
окремі інструменти і деякі з них є заскладними для простих користувачів. Із
поширенням швидкісного доступу до 1нтернету велику розповсюдженість
набули сервіси для потокового прослуховування музики, аудіокниг. Вони
використовують новітні кодеки для стиснення звукових даних. Завдяки uьому
розмір файлів зменшується, забезпечується безперервна передача інформації,
але погіршується якість звуку. Існують також формати, що кодують звук без
втрат якості, але розмір файлів збільшується у рази. Тому актуальною є
проблема розробки нових форматів кодування звуку, що будуть ефективно
стискати дані без суттєвих втрат якості. Для подальшої їх розробки, необхідно
зрозуміти як представляються звукові дані у комп 'ютері та навчитися
взаємодіяти з їх структурою. Сучасні проблеми потребують сучасних рішень. І
Ух можна реалізувати за допомогою використання новітніх технологій.
Конвертація аудіоінформації є складним завданням, для вирішення якого
необхідно не тільки розробити алгоритми кодування та декодування даних, але
й надати достатню потужність комп 'ютера для забезпечення швидкод11
процесу. Від вибору кодеюв залежить як11 х зм 111 буде зазнавати
аудіоінформація на фундаментальному рівні та , у наслщок, насюльки
спотвореною буде хвиля звуку кінцевого формату фsіілу.
Саме тому темою дипломного проєкту було обрано створення застосунку,
що надає можливість програвати аудіо файли, тобто муз111шо1·0 плеєра . Цей
застосунок також полегшує життя користувачш завю1кн додатковому
10
ЧДТУ.221960-003 ПЗ
функціоналу. Під час nи1<ористання застосу~шу, окрім програвання аудю
фаі1ліn користувачі мають змогу проводити базові функції керування аудіо:
вонн можуть видалити необхідний аудіо, або, навпаки додати його у бібліотеку,
виконати пошук аудіо або додати у список відтворення у майбутньому.
Метою даного дипломного проєкту є розробка програвача звукових
файлів, який буде широко використовуватись у суспільстві.
Предметом дослідження є систематизована обробка музичних файлів.
11
-
'І)\ І .22 19(,0-00J lf'j
1 01' ВІ)( ІІРЕ)(І\1ЕТІІОЇ OfiJIЛCTI
1, 1 \оr.1і,1жr111ш фо1нш I і11 Jбrpir ;1111111 ау1tіоі11форм~щії
Зnук - не фіз11ч11і кол11nа1111я , тобто хв11ля, що ро1гюнсюджуєп,ся чере1
пові,~)я . lloнa хщх1ктсрнзусться ам11літудою та частотою. Амгrлітуда nизначає,
наскіл 1,к11 rу111111м буде звук, а частота хв11лі в11з1шчає, наскіл ьки високим буде
вук. Людс1,ке вухо може роз11із11ат11 хвилі частотою від 30 Гц до 22000 Гц. Для
перетворення 3B)'h:)' і"З а11а;10го1юго формату хвилі до цифрового, необхідно
пщуватн цю інформацію.
Аудіо інфорt\1ація може зберігатися у різних форматах файлів та з різним
110казннh:ом сп1с11ення. Існують три основні групи форматів аудіо файлів:
нестиснені формати - такі як WA V;
формати із стисненням без втрат якості - FLAC;
формати із стисненням з втратами якості - МРЗ;
1.1.1 \~Іаvеfопп Audio Foпnat
\1/а,,еfопп Audio File Foгmat (WA V) - це формат аудю файлу. Він
вважається форматом «першого покоління» без стиснення , за винятком деяких
маніпуляцій для збереження звуку в цифровому вигляді , що призводить до
більших розмірів порівняно з такими форматами, як МРЗ і \1/МА. Цей стандарт
був розробле11ий ІВМ і Micюsoft для зберігання бітового потоку звуку на ПК.
І. І .2 MPEG-1/2 Lауег-3
МРЗ - скорочення від MPEG LауегЗ. Це один із потокових форматів
зберігання та передачі аудіосигналу у цифровій формі , розроблений Fгauпhofer
JJS та THOMSON, 11із11іше затверджений як чnстина стандартів стисненого
відео та аудіо MPEG І та MPEG2. Ця схема є 11а 11 6іш,ш складною схемою
сімейства MPEG )_,ауег І /2/3. Вона вимагає 11айбільших в11трат машинного часу
для кодування в порівнянні з двома іншими та забезпе1 1ус біл~-.ш високу якість
кодування. Використовується головним чином для nereд:111i аудіо в реальному
часі мережевими каналами і для кодування CD ALІdio.
12
Ч)\ І' .22 І 9(>0-003 J П
1Р3 1101'оковніі форма 1. І tc o1шtt1ac, mo 11срс11а•1і лю1их віІ{буш1fн,ся
1101 )КОМ 11с 3а.11сж11нх окрсм11х G11оків щ11111х - фрейміu . Для т~ого RИхі1111ий
снгнал при кодуnанні ро1611nасться щ1 рів11і за тривалістю ділянки, які
на-з11uаються кадрам11 і кол.уються окремо. І І ри дскодувш 1 11і сигнал формується
із 110с.n ідоnності декодова1111х кадрів.
В11сою1і'і рівень ком11акт1юсті МРЗ в порів11я1111і з РСМ J 6Bit Stereo
44 .1k Hz (СО Анdіо) і йому подіб1111м11 форматами при збереженні аналогічної
якості зв чання досягається за допомогою додаткового квантування за
встановленою схемою, що дозволяє мінімізувати втрати якості.
Останнє, у свою чергу, досягається врахуванням особливостей людського
слуху у тому числі ефекту маскуван11я слабкого сигналу одного діапазону
частот потужнішим сигналом сусіднього діапазону, коли він має місце, або
потужним сигналом попереднього кадру, що викликає тимчасове зниження
чутливості вуха до сигналу лоточ1юго кадру. Також враховується нездатність
більшості людей розрізняти сигнали, шо за потужністю лежать нижче певного
рівня , різного для різних частот11их діапазонів.
Подібні техніки називаються адаптивним кодуванням дозволяють
заощаджувати на менш значущих з погляду сприйняrrя людиною деталях
звучання. Ступінь стиснення, і , обс}1Г додаткового квантування, визначаються
не форматом, а самим користувачем у момент завдання параметрі в кодування .
Ширина потоку (bitгate) для кодува 1111я сигналу, аналогічного СО Attdio
( 44. І kHz l 6Bit Steгeo) варіюсться від макс111\1аль110го, 320kbs (320 кілобіт на
секунду, а також пишуть kbs, kbps ri6o kb/s), до 96kbs і нижче.
Термjн бjтрейт в загальному шшадку позн ачає загальну величину nотоку,
кількість інформації, що передасться за оди 1-нщю часу, і тому не пов'язани й з
внутрішніми тонкостями будов11 rюнжу, його сенс не залежить вщ того, чи
мkтить потік моно або стерео, riбo п'яти 1а111аль11е аудіо з текста 1 різ 1 111ми
мовами, або ще щось.
13
Ч)\ І .22 19(>0-00J І І]
)\о речі, ІІС3Н:\ЖНЮ'ІІІ на ,с, ІІЮ у формаr· і Мf'З лійс110 'Н.І ГІС FНІИХ умон
it)ЖC КО1')'В3т11сь і 11'ят11ка11аль11с яу;tіо, розгля/t усіх оипядкіо, крім c·repco, 1і
зрозуміл ttх 11р11ч1111 не включснttіt до ttього огляду. Весь огляд побулований
наІЗІ\ОЛО тз шшколо процесу кодуш1н11я CD Лudio.
Продовжусмо про бітрс11т11 . На проведених тестах спеціально запрошені
досвідчені експерти, що спеціш~ізуються на суб'сктивній оцінці якості звучання,
не змогли розрізн11ти звучання оригінального треку на CD та закодованого в
МРЗ з коефіцієнтом стиснення б: І , тобто з бітрейтом 256kbs. Правда, тести
булtt проведені на невеликій кількості матеріалу, і насправді не все настільки
добре, нерідко буває, дійсно, потрібно користуватися 320kbs. Для себе я вважав
це достатньою основою для повного переходу на кодування з бітрейтом 320kbs.
Нижчі бітрейти, незважаючи на їхню популярність, не дають можливості
забезпечити належну якість кодування, що незаслужено забезпечило МРЗ
погану славу аматорського формату. Насправді, хоч і 256kbs, і навіть 320kbs
теж не дають можливості здійснити повністю прозоре кодування, але
відмінності від CD Audio, за яким кодується тестовий МРЗ, можна порівняти з
відмінностями самого CD Audio від вихідного аналогового сигналу, з якого він
був отриманий шляхом оцифровки . Тобто втрати, звичайно, є, але несуттєві з
погляду того, кому якість CD Audio є достатньою. Фактично, їх виявлення
зазвичай є нетривіальним завданням на апаратурі класу Hi-Fi.
1. 1.3 Fгее Lossless Audio Codec
Формат FJ,AC був розроблений сп івробітниками веб-сайту ХірІ1 .огg. Його
використовували для стиснення аудіофайлів. Стисне11ня не призводить до
втрати якості , що оз 11ачає, що при вико11анн1 цього нроцесу да 111 11 е
втрачаються. Формат [~'LAC дозволяє користувачам збер і гати оригінальну
якість файлів; саме ця властивість перетворює формат в ідеаль11иі1 метод
резервного коніюваш1я яудіо, тому що фізичні носії звуку з часом можуть
зіпсуватися. Фай;ш FJ_,ЛC використовують для рсзершю1 ·0 копіювання
високоякісного звуку з ком11акт-диска, тому що яюсть фа і1 J1ін .МРЗ залишає
14
>
6зжа111 J...J\)ЩtЧ\) . :tі11с,нія ш ф.,іі НІ 11 ,\(' 11\i(f1 11◄ 1 1110 t'іСІІ\ОІІІГО Нн.1
131~1.1"1H'.1\)t'1 ~ ІlШ . М() Їf\ 1 11 1\С .10 ·1 ;НЩІ ІІ Я Н r\111J1\l ,l f f,:ІІІІ! І in 11 'rt.• R irкir ІІІ ІЇСІІ()С ri
1.ш,к11 . "\.'1,\ ~;11111 ,~ ~t'\'J' ;l"-t'llf.. l ,ll\11'1\11 f\ІKPk ii i lllflll 11\ІКІі i,.{ll)fl,Jl/ 1/Я ф.ii i. 11f
П_.-\(_' ,~ ЖС Ч:1\'1\\ \І ;)Ю1 І, J'O І Ч іJ' , ЯtІІІіі 11 а ll t: І С ІІ ІІ І \' ІІЇ . ){ І" n \fCl/(11" ro Jч iry
''1' 111111,l.11,11\'I\\ ф,Іі\ І) . 1 ·,ш: \: ІІЮІ<.'ІІІІЯ , ІН і І . ІІС 11r11 11111 ІІІtІ, , ІІІ (,)- , ІІ,· ЯК(ІЇ пrr,1r11
Я 1'\Х-1і . \J ;JІ..'l\) ф,,іі .1 11 1 t ,ЛС '"'"''fЧІСН\11~ ЮІt,<:Я , \. !Я (1\11.1 іі11 \ ІЩІ ІІ.'//1/Я і ntf•,1,1ii11
"'''-~ м1111я н рса.11,110,,у ч:1сі . ІІр11 111-,0 ,,у r1rocкr J І Л(' чіс r11 Г І, 11ж f ) пн і
('.l('~ІCH11 t : ф,,р\\ат МОВ.1СІІШІ , фор'13Т І\ОІІІСіі 11 сrа , дов і:tКОR)' fіі6; 1іп-rску l,'O, (Ck'ЇR.
а таІ\,,ж вхі.1ні 11 .1аrів11 . Форжп FLЛ ' 11і.пr11.м) r семr1. 11 1 фі ксованою крпт:ою
з .1іапазОІІ3МІІ біт rс~І ві..1 4 ДО 32 бі т ІІП СС~ІП.1 і ч:~стотою д11скрст111.:щії до 655
~50 Гu (ксть к:~на.,ів - від 1 .:io 8). І Іr11 до1шва1111і 11ов 11 х 1ю.1ів існуючі ..1еко.Jер11
не ві..1чувають ніяІ\оrо вп. 1шу зnnдякн зnх 11 ту ф:~tілі в FІ .ЛС.
1.1.4 Пршначення та об. асть застосування
Завдання днпломноrо проєкт_, - розроб11ПІ продукт для в1,.:пворення
ау.1іо фаіІ.1ів у таких фор~~атах як: шрЗ " 'av та шіdі. Проєкт буде розробпено
мовою проrрамування С#.
Проrрамннй продукт повинен в11конуват11 такі задачі:
створити зручний інтерфейс користувача·
базові функції керування проrраваче~, ;
реєстрація користувача та вхід·
вхід, як гість;
реалізація бібліотекн, для зберігання а діо файл ів;
додавання в список майбутнього вщтворення та в11дален11я ., нього
доданих аудіо фаtілів;
функція повторення аудіо файлу;
реалізація пошуку аудіо фаіїлу.
перегляд окрем11х ділянок аудіо.
'f)\ І .22 19(,0-00J 11·J
2 01 '. ВІ)\ Н 'ІІУІО'ІИХ І'ІІІІЕІІІ,
Н:1 1ю11а11<у ро·1робю1 бу.ю ;щс ·1і ;1жс110 ;1скіт,ю1 і с 11ую•1их рі111сш, лля
віА1'Нt'рс1111я 1Н) Кt'НІІХ )\:11ІІІХ . І І11ж 1 1с ІН1ІІС/\СІЮ а11алп іс11у101 1их рІІІІСІff, //ЛЯ
mю"рсмлсння їх снm,ннх 1·а слабк11х сторін.
2.1 ЛІМР
«Alt-.1P» - цей застосу,юк міст11ть безліч функ11ій , які будуть корисн,
зІЗнчзіtно 1у корнстувзчеnі , що зрі;1ка слухає музику, і завзятому меломану:
- підтримка більше ЗО фор~~атів без необхідності встановлення
дод3тков11х аудіокодеків. До них відносяться: MPEG (.mp І , .mp2,
.111р3), М4А, М4В; FLAC; ААС, АСЗ, АРЕ, А ТЗ, ААЗ; CDA, DTS,
DSF, DFF, ІТ; MIDI , МОЗ, MOD, МРС, МТМ; OFR, OGG, ОМА,
OPUS, RМІ, SЗМ , SPX, ТАК, ТТА; UMX, WAV, WMA, WV, ХМ
МКА;
- відтворення онлайн радіостанцій;
- створення кількох плейлистів та можливість їх редагування під час
вщтворення музики в одному з них;
- налаштування «локальних» та «глобальних» гарячих клав1ш, що
дозволяють управляти АІМР в активному та неактивному вікнах
ВІДПОВІДІ-Ю;
- еквалайзер із десятком готових налаштувань для найпопулярніших
музичних жа11р1в;
- глибока зміна зош1іш11ього вигляду за допомогою великої бібліотеки
обкладинок;
- редагува1111я тегіrз аудіофайлів;
планувальник. Він дозволяє вимкнути комп'ютер п1сля вщтворе1111я
останнього файлу 11 плесрі або розбудити користувачn в 11р11з11 ,111е11ий
час.
16
р
'І)\ І .22 19(,0-003 Jr J
1t я llfIOІpa,, :\ ІН.' 1\ІІ(Їа1 ·.1111на )tO ресурс ів КОІ\ ІІІ 1 ІО'І СГJа f/ОІJІІІ С'ГІО
6с~КtШІ l\ШНа . · oфi1tiii1to1\) саіі, у ~1ож11а ·1:111а11rш1<11rи ЛІМІ' ;1.11н Windows П1 8,
\їst:, , \Р) ,:, Лнtfi·oi~t(Pнc нок 2.1) . І11111і or1cpartiii11i с11с1с ІН не rrі;uримую'r1,ся .
,, ,
г 14 • 0 11 н
L
1,.,, , .. ., ,, . ІІІ ,11•
t ,-, 111"І, 1,t ► t
о , , •.. ,,,;,.
о • І І• ,tl,tt
о ,, ... ,, ........ .. . .·.
'1, ..... ,
,..,..,.,. .,,,,111JI
,,, :.,,~ '
о ,, ,. ,11,•ot,f•• І .":t
О •,. • ,.,,u,r.•, :f ІІІі1І ~,-.JJ • 1, r,,.,.~. •.:r:-fr f.І.•.f , ;.,,.,,,,, '.:: У
~
Рисунок 2.1 - Інтерфейс АІМР
2.2 «FL Studio»
FL Studio є музичною програмою, яка раніше носила назву Fгuity Loops
Studio(Pиc.2.2. І). Ця програма була розроблена бельгійською компанією під
назвою Jmage-Line. Старий образ Fгніtу Loops Stнclio від Image-Line сильно
змінився, тому що розвиток не стоїть на місці, якість програм збільшується,
сильна конкуренц1я м1ж 1ншими секвенсорами. Програма продається
англійською мовою, тому що FL StL1dio була розроблена для міжнародного
ринку, і якби вона продавалася різними мовами, то коштувала б дорожче. Це
геніальна програма, яка дійсно заслуговує на інвестицій. У порівнянні з іншими
ро1робниками музичного програмного забезпечення , програма FL Stнdio має
явну перевагу, оскільки при придбанні пакета Sig11atL1гe ВнпdІе (раніше XL
пакет) ;~одано термін безкоштовних 01ювле111,, вс~: це робить FL StLІdio цікавим
17
►
't)\I .22 19(,0-001 ІП
11ро ктом . Нані, І, яt<що ш1к 't ~ir,11a1111c Н1111(ІІ с fіун 11r1щfіат-1И ла оно (раІІіше
Х1 , 11 .1кст). 01юнлсння ;\о ос1а1 1111,ої ІІt'І сії -, а і нr сrровш~і мо;tул і ·швжли булуп~
бе· ко1J11'\)НН1ІМН . '3а )\01101\ІОІ 'ОІО 1tі(ї ІІрОІраі\ІІf 1111 і\ІОЖСІ С 11раrIюван1 1 файлами
М\1)1 , а 1':\К()Ж і -~ ссм1 1 .11 а1\111 \V л afio Ml'J форма'rа х, нанрикла/(, за
,'1.()11t)1\ЮІ\)ІО Ї Н1'с 11юв~111ої фу111щі( ю Ті 111c-SІ rctc\1 і ng - f-\m k tior1 можна створити
pc.1.ni,11 1111 kgшніх .
1:L Stщiio на 99% су 1іс11а для внкорнстаІІня інтерфейсів VST/VSTi та
1)іпхtХ інш11х nнробннкіn.
Рисунок 2.2 - Інтерфейс FL StLJdio
2.3 «fо оЬа1·2000»
«foobar2000» - безкоштовний аудшрогравач з широким с пектром
можливостей конвертаціїї та додаткових налаштувань. Розроблений польсью 1 l\1
програмістом з Nullsoft , цей застосунок отримав деяку популяр11ість у cepert
досвідчених користувачіn з,шщ1ки своїй невибагливості до ресурсін та
можливості удосконалс1111я. ) to беззаперечних переваг застосунку юж11 а
18
►
'f)\' .2211)(,(). ()()J rн
ніJlІІСС111 МОЖJ11ІНіс11) 11\ННЮІ'О 11111\(\)\ )\(ІІІІІХ ІН\ · 111у1<011у кар·r у, rrі/{Трнмку
С1\)р()1ІІІЇХ 111ю11)аМ1111х ІО)\ ІJІ ЇІІ ,а )Щ<.' 1111, 1111со1<у, rюріІІІІЯІІІЮ j І і1111 1нми
з:н:тосу11кам11 111н11 ;,кk11, 1нщу11анш, •тукоrтх фаНлів. Не ·тюr<шо1 r н rra ус і
н)ЖЛJІН()С11 1\1,t)I\) 11ро11,ава11а, 11і11 ІІС IIOJUa ІІJІСІІІІ іі IIC/{OJI і к і 11, 11 {О ускладнює
1-0~111.nсн·ну ро601 У і'3 ·~нукон11м11 J\а 1111 м11. Так ІІ І\ІН с ·3асп1рілнй інтерфейс
1-t)р11стувача. продсмонстрова1111іі та ві;\сутнісн фуІІ кції реrtагуваrrня ·шукових
ф:1 11 .n ів у рсжнмі реального часу(Р11су11ок 2.3).
Рисунок 2.3 - Інтерфейс fооЬаг2000
2.4 «\\1іnашр»
\1/inamp - це програвач для Wiпdo,>.1s, ПІК популярності якого було
досягнуто десятиліття тому. У 20 І З році розробник перестав випускати нов,
версії - виходили лише піратські доопрацювання(Р11сунок 2.4).
Для чого 11отрібен програвач?
Він ІJудово працює у зв'язці з р1з 1111 111 11 акоп11чув1"Р 1ами : дисками,
19
'f;t І .22 І ()М!-003 11 І
. .
флс111камн, ·юн111111111 мн >f\ЩН.: 11-ашн J\1tc1<:ш11 . В11 мо11<сrс rrcr,c 11cc гн музику на
J11{ З ()у111) · ЯКІ)1'\) ІНК'ЇЯ 6с HHH.TJ)t'i \111,0 '1t' f1C І ~ ЇІІЮІІJІ .
2 Я1<1Нt) 11Ї )\!\J1 І0'111111 СЯ )\О іІІІІІІf'( ІІf!ІІС rроЇІІ \J j. f\ ІО1К ІІН сп уха rн МУ'JИКУ,
:~()срсжсн I н 11 .11 ci\J111c1 ах рі 1111,х 11iюr рс1 ,, н:mprrюta; t , в «Я 11лскс . Му ткс,>, M'f С
~1\І~іс :lt'l) 11:\ кар~ і 11ам 'я 1і . ІІ .ї1с(р сам III ка(' ;tocr 1111і rrpиc rpoї.
3 \\ ii1amp нранюс 1 40 ауліо- і 11 nілсоформатами, ку/tИ вхо;ІJІТf,
рt1·1111 11рс11ня , що рідко в11кор11с·1овуют~,ся , влас пrві тільки rrродуктам певних
фір~І.
4 Пропонує тонкі налаштуван 11 я звуку: підтримує Streaming Media,
StiІТOtll1d, Blu-H.ay, стабілізацію рівня гучності.
5 Вміс 11ереноснт11 аудіофайли з iTt1nes;
6 Дбає про зручність користувача : є функції пошуку однакових аудіо
(відео), створення плейлистів, що відповідають заданим вимогам, демонстрацІІ
обкладинок альбомів з інформацією про співака або групу.
7 Ви можете самі внести потрібні редагування в інформацію про
виконавця або назву композиції, щоб не запам'ятовувати рандомні імена,
придумані тими, хто завантажував файл в інтернет або носій.
8 Плеєр може також конвертувати файли в інші формати.
9 Winaшp пропонує десятисмуговий еквалайзер з можлив1стю
індивідуального налаштування та підтримки різних плаrінів.
ЕіІе ЕІау Qptio1·1s Vlew ~еІр
Р11су11()К 2.4 - J11терфейс \Vіпашр
20
Ч;\1 .'.2219(10 OOJ II І
·' ЛІІЛ, 11 l 01,'( І( І'Л ttl'Of-:1( І ,_ ВЛІІІВІ
.'. t ,1,,,р,,~ ·.11,ш:нщя , а :н~:, . ,І) "'"'fll
lli '-'.1я :1на.,і,у 11рс,1)1с1~юї o6 ,acli ,а оr ля;tу нжс іс ІІую,,,, х ri11 1crн,, fiyлu
\'Ч1~'Г"01~:-ш,) 1 акі нт.ю, 11 ,10 Ф~ 111щіо11алу 1to:ta,кy. 1301111 шшсне 11і У таблн rtі З. І .
Таблиня З. І
B1t\,01 1t ;\о фу111щіо11алу 1,01t:-1I ку
." '(-\ В11моп1
--
І 1311мог3 для створення формн рссстр,щія кор11стувача
-..- Вимога для створення форми входу зарссстрованого користувача
-" Внмога для створення здійснення входу без авторизації, тобто як гістя
,-
4 В11мога для створення зручного і нтерфейсу програмного забезпечення
~
5 Вимоги для створення базових функцій керування програвачем
~
Вимога для створення бібліотеки в якій будуть зберігатись завантажені
6
аудіо файли
Вимога створення ві кна для додавання треків, які будуть відтворюватись
7
у майбутньому та видалення їх зі списку
8 Вимога до створення пошуку аудіо файлів
9 Вимога до створення функції повторення аудіо файлів
10 Вимого на відтворення аудіо за допомогою його вибору в бібліотеці
І І Вимога на видалення аудіо із бібліотеки
12 Вимога на редагування аудіо(назва та тип формату)
12 Вимого для в ідкривання розташування файлу
3.2 Об'єкпю стру1пур11ий аналіз інформаціііної системи
JДоб виявити вимоги замовника будую діаграму прецедентів (Рисунок
З.І).
Діаграма варнштш використання UML є ос 1 юв11ою формою вимог до
системи/г1роrрам 11оrо забезпечення для нової 11сдостатн1,о розробленої
програми . Rишщки використання визначають очікув:111у 1ювсдінку (що), а не
точний с1юсіб її ·3дііk11е 1111 я (як) . Вар іанти в 1 корнс·1ш 1 11 } 1 11ісю1 13кю і вки можуть
21
'І)\ І .22 19(10-00) f І !
1ак і ні I шrш11 1 1,рслс гаш1с1111ям ( rc,(j ro
,1і ;,11\'~юю НЩ)1. 1'111 І. Н I\JtJ..t)J)IIC1.11111Я) . 1{;110'1ОІІа 1\0111\Cflt!iЯ І\ І ОJ(СЛЮПаІІІІН В<'І рі 'ІІІТіВ
'
рІІ 1'')j'1\~1 іНІШ1 1Ю fІЯІ'іН' В ,ому , 11{() ІЮІІО itШJUi\f,lf,\ (' ІНlі\І r1роскrу11атн СНС'ІСМУ 1
1,)ч ~-11 3,1РУ кіннсво,·о кор11с1уnа,,а. І \с сфскпшш1 тех ніка щrя передач~
J1t) 13c,1iнк1t снстсмн n 1срмі11ах корнстува,,а шляхом DІІЗШ1' Іешrя всієї зовнішньої
(lOI\C,1iHK11 CHCTC J\111.
Схема варіантів в11кор11ста1111я зазв11чаіі проста. Він 11е показус подробиuі
81,падків в11кор11ста1111я:
Він лнше ПІдсумовує деякі зв 'язки між варіантами використання,
акторами та с11стемам11.
Він не показує порядок, у ЯІ<ому виконуються кроки для досягнення ujлей
кожного випадку використання .
Ця діаграма відображає, яю вимоги потрібно реалізувати стосовно
замовника.
Цеє:
- вимога до імпорту аудіо файл ів у форматі .шрЗ, .wav та .111idi;
- вимога для створення форми реєстрація користувача ;
- вимога до завантаження аудіо файлів з провідника;
- вимога до відображення завантажених файлів на головному в1кн1
програми;
- вимога для створення фу11 кцій керування програвачем;
- вимога до створення пошуку аудіо файл ів;
- вимога створення шю,а для додавання треюв, яю будуть
відтворюватись у майбут111,ому та видалення їх зі списку;
вимого для відкривання розташушшня файлу;
- вимога на редагування с1удіо(11юва та тип формату).
22
Ч)\1 . .2 2 19M)-OOJ fl І
(
(
►.1,1f\ а;д•о} t11;Nn r-rJ v,?,
r1 ti , С·11·,~н •1"1,,,1 J~r}н,ч~
1
r~ ·,.~а ,е-.,
'
··-··-... ·.. .): _.. · r-•.\
·····•.:::J ,·· ... ... ...... ........ •;, ,.. J
.. ........ . . ··················
~ , \
~ •· · · ·· ·· · · · ·. . ·· .. · ·. •. ·• · • · · .• Стоорежя 01кна для дадавсtіt1Я
тр~КІВ . ЯКІ будуть SІД!8Орюват
Заsзнт.1'!:ення а>'д10 з провдн111.3
.
6 Реда')'ВсІіНЯ Н3З8Іt та ТІІП'J
фор,Іату
Відоораження заванажен~1х ВндаnенfjЯ із бібrіотеки
фаіtлів на rоло~ому ві .
Рисунок 3.1 - Діаграма прецедентів
Для визначення, як вимоги реашзувати на практиці будую д~аграму
діяльності (Рисунок 3.2). На ній вказано узагаль11ений ялгоритм роботи
програми, від етапу запуску програми до завершення роботи і з аудіо фяйлом.
Робота із програмою починається із запуску застосунку користувачем, перед
яким з'являється основний інтерфейс. Для роботи необхід110 явторизуватись,
після чого .мож11а обрати аудіо файл та завантажити його. При виборі фяйлу для
відкриття, допустиІ\111 форматами є WA V, МР3 , MIDI. Процес редягування
аудіо заклю11асться у роботі користувача із аудіо фnі-ілом . Н я початку,
користувач мишкою виділяє потрібний аудіо файл. Далі , кор11стувач може
23
,, t),'l.:11 1\ У С11ІІ(\)К ні;\1Нор~'ння а6о 111ща "'"' нен .,.,; 1іо rІ1а іін , ·rнко11< може ·•міниги
11а ·~ну , а ііtЧ,) ч)І)l'\) , 11 kля 1a)(i11 1 1('ltltЯ ро(іо'" \ ІІроr рамоrо , 1<0rrrc І ува •r 'Jficpir ;:tf '
,1,:lІІі ,а ·\;н,рннас ·~ас1·осунок.
Віз1-.-µ11щ додаток
Авторизація
Головне вікно ПЗ
Вибір
муз.композ11ціі
Обкладинка
______ . Зміюm1
1
обкладІІІІІ-'.)' тре;.'У
Додаtання новоrо
тре;.,,
Додаtання до
майбутніх еків
Рисунок 3.2 - Діаграма діяльності
24
11· 1,К 1:н,1111 IIOJ'ЯJ\()I( І\ІІІ<ОІІ:111ня :
_ очік нання 1'ОJЧ1с1 11:1•1а( tofiтo o•riкyвarrrrя rюr<н кorнc ry ria 1 1 ·ннrуснrн,
11,t))\al'I.Ж) ;
_ 1<t)p11t'1 yвa11 0611pat' 1с10;\ вхо;~у (Рс<сrr,щія , r,і сля 1roro вх іІ( в
111ю11),1му 11і1' с, ворс111щ акау11 tоі\І або вхіл яr< rісн,) ;
_ післ я 'ЮІ 'О кор11стун~11, 'J,Шаt1н~жує ay;iio файл бачить йоrо У
бібліотсuі, де з11аходяп,ся всі завантажені файли ;
- щоб почалось відтворе 1111я nудіо файлу, потрібно натиснути клавішу
РІау або натиснути на аудіо правою клавішею і обрати пункт
«Відтворнпш;
- корнстув::~ч може заздалегідь додати аудіо файли у список відтворення
в маіїбутньому;
- також користувач може активувати функцію повторення аудю.
- після використання програмного забезпечення користувач може
виходити з програми.
Діаграма діяльності показує бізнес-процеси та процеси програмного
забезпечення як послідовність дій. Ці дії можуть виконуватися людьми,
програмними компонентами або комп'ютерами. Діаграми діяльності
використовуються для опису бізнес-процесів і варіантів використання, а також
для документування реалізації системних процесів.
Навіть найскладніші прогреси можна візуалізувати за допомогою діаграм
діяльності. Послідовні та периферійні робочі процеси зображуються потоками
керування та об'скта. Діаграми діяльності представляють діяльність, яка
складається з потоку дій.
3.3 Діаграма ВІШОJНІСТаtІІІЯ
Виходячи із фу11кціоналших вимог до додатку, що були сформульовані ,
можна виділити одного актора системи, а саме Користувачn і розробити
діаграму використанш1 дш1 1 -рафічного зображення варіа11тів внкориста11ня
додатку. Спро<:-ктовану систему можна зобразити у ш11 -т1,ці м1юж1111и
25
внкорнстштя системи
с,,о") можна 111щі .1111111 І о наrі:111 r ів ни корне га11т1 програми
( ._ _ __ .,..
6 ід до попередн~ого та
наступного аудю
РедзуваіНЯ обкладинок аудіо ~
ь о
Повторення аудіо
Додавання у список майбуrніх
RІЛ TRnl')P.H h
Рисунок 3.3 - Діаграма використання
3.4 Діаграма •~ласів
Діаграма класів застосунку (Рисунок 3.4). На ній представлена загальна
структура моделі, тобто класи та їх зміст, фу11кції, змінні , типи даних. Діаграма
класів служить графічним представле1111ям статичної структури застосунку у
об'єкт110-оріс11тованій парадигмі . Окрім влnс11е ві зуалі з,щії та документування
26
'І) \ І .22 19(10-00J ")
Р" кл.н: ін ,
rакож r~нкорнс гоr1угг1,ся /І.ЛЯ
J\()lli:11) 'J\)Н:ШІІЯ 111.ІlЯ\ОМ 11ря,юIп аСіо ІІІ<ІJ ОІІІМНО rrpocк гуrш1111я . Ртроблсна
• ):1 4:\ •Їt- 1111 1 І, S кn:н., ін , що 11со(іхі;\11і J\.'ІЯ корск rrroї роfітн ·1ас·rосу11ку, та
,'11 [11 • ,
·:1 ·J •с ві ,11юI11\'ІІІІЯ у ннх класах .
11t11'•
• , •f' '\ t ••• l (f' .,,, j,, ~ f••lf' .,, t" І t•.-~ 4
r-i f1 ('4LІ4f І''"О J,, ~· .... , ... ' st~119
J,, l.;tf!'',I.,. t 4t' Cf' ' "'"9
.а. <1 , ~•,-.~,
!•-<•r.'f\'•" -<• t-t-t-1 : tt":!t, •c...·t-.:{ , .., . ~t) 'C-d
'\ ,,. ..C 'f ... _O"' cl:.._~ff"""'f,, •~--~,~••·~н' , t-O ~ .t,<Ct "' J"tt'f"f~l"'t І"''"9C-llf 1:fc'\
; ~:~~.,&•C-.fi•.Cl.cl th-f!CtИ"C!f"' с-:: ••~ f"'!./. ..t ., е,,е
"• 'i,',.,d~- f\ '•tlttc eb,ffHt"t« ( ft'!).,gt tJ , о~
м- І м,,,....,.,
,'-
1 1 F1tlds
~ КСО~.І"І АсСС'\,І"ІІ lfl t1.;dтo1 ~t Aud1c'1Іtltt1dtt
... ., ~,ng Nlol ii, NICp/,Y ЬооІ
tit L.Ьrtl)' t11t<~) Q• rsi:t~,td ЬооІ
.-. ,...,,s,ct"lt1tr MuщD-11,t, ! Q• isPl1ying ~І
"• f)l\llt'fl"19t ""-t9t Q loc:ij:1-'l1~І,i1 ЬооІ
СІJ• рІІ}'І~t lm,gt tiill O\ltput0r.tet • W,vt0ut[Ytl'lt
- • ЬІ'І't'І Т1ІТ'tr Q• pl1)'\11t L1n~tdl11t<Sof'9)
• U~Іl'l'tS:ring~ Df:FtndfflctPiopt,ty Q" son9Nodt t,,.td\.1,~<Scng~
" ProptФf'S j " Prcptrttts
~ u~,rr~ І gtt ltt J Wlng І' tiP1uit0 І 9tt и:t І ЬооІ
І J, І,РІ1уtn9 І gr. ш І · ЬооІ
" Mtthods
О" Є "tl .l"(St1•c~.SO-,gs;_strng i.19tt t,.st<Song> d1t•ln) L
І Q AddToPІ,yt,stfSong юng) т,,t
G'I" 81--C•r•ri>;,y ,t~С1ІС.Іс.;оЬJкt ,rndt, Routtdfvtnt.\rgs t _
Ф" Sm'т;..Оч-ЧоЬjкt иndtr l\o1;ttc1E ... rntдrg, vOІd Q Cle,rPІ,yfistO T,sk
t):
О• S:n'rrpcrt_CІ,,1:rotJкt иndtr ~tdE\tntдr9s Ф ~t№x:SongO Song
t} · vc1d
1 Ф" Stntщ"Cilc оЬ1кt иndtr ~tкlE\tntдrg, \·СІd Ф, DnPІ•yb1tkEndtd(Evm~rgs t ) , 'IOld
t )
Q• Onill•yba:kStopp<'dдsync(obJK: srnder S:opptd:\tnWgs , 191) v<нd
6'., Bt11!-lt)t_(lкk.'c-ЬJtct Sff'ldtt RDuttdEvffltAtgs t ) _v oid
Ф P1u1f() ·T1st
Q• S1nOІty_Ckcl.{oЬ,tct Stncitr ~uttdt. .. tnt~rgs t}; vOІd
Q PІ~Song song) · J8'1t
Q• 8tn;:rtV_0кkfcbJкt stt1dtr Rcuttd[\'ttltдrgs t) . vold
Ф PІ•y(Song J0"9 ЬооІ tddТopl•yІ,s!J Т•$Іс
Q M1111\'/111do1' (дc,o..rn1 кcounl)
Q PІ,yf,rst(I T,sk
Q• Mt"lu'tt'nдdo'ioP!r,i st_Cl·t:Ц:ob1t<t srndt1 Rou:tdEvt
Q PІ.tyt.aiф T1sl'
G,• Mtnu~tm0t'tttSo"19.(I clt{ob1t<t stndtr ~Ql.l~tdEvt 11 ..
Ф Pl•yNeжt() : T•sk
Q• Mtnvltr'fl()ptrF 'tloc1t"Of'\_Oic~ob)кt wr:dfr Rou:t
6) Pt,yPttvІOus() . T1sk
G>, Mv-.11tt'Тl;trpor,9..(1oc1<ob,«t wrdtr iwu:to:,,niд
Ф Rt,ume:O; т,,~
0 . J.1 cn1.1ltt-nSttдrь..im1.rt_CЬct~ob,«t scnc:'tr Rou:t<!Evt
І Q S:opO~ T1ik
0 • Mtrgc1Scngl) ~ft XlngІJ r1ghl) Song[]
" • MtrgtSo~SongQ scngDm) SongtJ І . "'"'~
(і)• t..t _,,cP цtr_P •)WClc.E.-dtd;oЬ,t<t st ndtr E\ tnt.-\rgs t \ f -~i:kEnd~-·'-'_"'_iн_"_"'._'"_ ___
0 . Onf,mt6:vtn:1obJKІ sourtt El1~tdE,tt1tд,gs t ) · ~Otd
(
Ф• Rtfrt1hSong,sl1stf) : vc1d
Ф. Stcld),•_MoustOO\l. n(ob1fCІ sfl\Ctr, MO\шЗunonE"tn Song
Q• Stt,,:~1_r.401,st1Jp:o:i1кt н-,с'сr, Mo1,нtЗur.on::,.-tt'ltдr "'"
ф SttSt-elb•,O ,01d
Q• SJ dtr\t>l"мt_\'11utCl1•n9tdlob,tcl stndtr RC<.ІttdPro " Fiddi
0 Sof\gStмtPt"t!)Ao11seDo'Jb'tCl.cl.(obJtct ~tndtr. Мо tiill,. ~9eC•1t 81tm•p'rr19t
8
0. T,tSta,cn_тtrrC,..•rgtc1:oь;«t нndfl', Tt,tCh1n9td:vr "• songld,c: ; 1nt
Ііі', song№rrt иn"9
І "• son9P11n : иnng
І " ProptФts
J, 1m,9t011• f grt І Вt:m.ptm.9e
І' Son91ct1 І gtt І ,nt
)' Song№ІТ't І gtt І s:.nng
)' SongP•th І gtt І : 1111ng
" Mtthods
ф Con,p11tTO{CbJttlOЬj) . 1nt
Ф Get(o-,ttln-agt/stnng юr190tth) . B1:rrtj:''"'•9t
(і) ЖFtltCo,trlrмgtІS1trr•plm•9f '"'ISt) . \ O•d
Q Songlst11n9 song№n-t stnng song' •:h 1111 scng'd.()
(і) To8yteд11,y(llll'Nplmt9t 1n'•gc) b:. ttl]
Ф TollNgttЬ-/1tfl Іrr•/1 81tm•pirrtgt
Ф T0St11n9{) 11nt19
Рисунок 3.4 - Діаграма класі в
3.5 Вимопt до i1пr1нJн.•itry
27
ttiд,i,1, ,1,о ,1,,н:1іІну i1t1t'P1lн'ikiн ttoc 1іі\110 1\Іі111ш r,,сл : nm1 ·11і;1о к rюяви
11,11111); ~;1 с, бів 1а ~1с1(\1ін 1ю11111рс 1111 я інфорч;щії 111111 ,ш,, rrro(iJrc ,а корскrноrо
ІlifJ!ЯllЯ НЇt Ї інф~'))\І:\1\іЇ КО!)ІІСІ ) ll:1'1l'XI . f111срфс ііс IШJllfC l )' fJa'f;t , У rrсрІІІУ
( 11!
. щ1н1111t'Н б) 111 111юс111х1 ;,: ,я II ш мо;tії НІ с ricpcвmr гажсшrм
ч~·Р') ' 11
~,н~к,шнх111 с.11смсн 1а мн . )~, я ус нення І\ІОЖJ І н вос rcii 11 скорск гноr о
11:1,1.1
· 11111с1 ,111ня. с.1сх1сн111 ксрувn11 11я нсобхіl\Ію ш,rtІВ}ІІНГН rro мірі вико11а11ня
Н111' 1
1,11ср:1ні1ї . )\ля ш,рш~сн11я 110ставлс 1111х з,щаrr, нсобхіюrо створити
~,,: 11-•-1 1uнікон н1111 інтерфейс, окрсм11іі ;щя (j>y11кri-iii відтворення , перемотування,
Jlовторсння , nсрсмнкання аудіо фаііл і в. Окрім цього, не менш важливою
:1,1ачсю розробки і нтерфейсу являсться створення вікна авторизації.
3.6 Ню11ачсн11я поnеді11ю1 об'є1пів
Для визначення поведінки аудіо програвача будую діаграму взаємод1 1
(РІІС)'НОК 3.5).
КоQіІСJІ'ЕЗЧ Прg:рамне Рєстраuя та ЗавсJітажежя Відтвоrення ~
забезn.?ченя ~ аудіо фаіnу аудіо фа1іnу ПШШ!Ш
~д1:р11ває
',, . ~ ~
''
. :
~ єструється та входнть Вн~д .,.. :
.: i:i;. _ __ .•
::: '
: ' ' '
: : ''
: ' ' '
. ~ ~ '
' :
, ,
u Завантажує ~ ~
.. ,,
О ' ЗЗ(р1!ває ~
~ ', ,--...
''
'
''
Рисунок 3.5 - Ді аграмr~ вз,1 ємtщії
28
Ч)\ t·Y.221 %(Ц)()J І J ~
J\із11,ама в·~аt МОl\іЇ • І\с і\і:11 р,ша , на я к ііі rrpcJ\C ra1111cm1 н·нн мол~ я , mo
. . . t:І . • • • f/ІІЯ
с, 1,СЯ З (і) О.П І'ІІ \)\) { І< 111\ ., а 111)\110(1111 між 1111 1\111 ІІКJ ІІО 1 НІІО'ІН rtOНl/(OMJIC 1
'J\· n І1 1з '
'
(.: . ~()НІІ \)6МіІІЮЮ11,СЯ . І\сіІ 1t'JШіІІ ·1;1c1ocor1y ( ІJ,СЯ /(О rІ ~І/(ЇА ліаrрам 1
!і\11'1 Іі
~ ,,1м нз 1н:1оюАЇЇ об'поін (;1iai рам кoo1tcfY11tiї rюсліловrrості та ліяrн,rюсті) .
[і Іі\tСН • ' '
J\іа11)зма tнк.11 111ов1юс1 і о1111сус 11ослі;1ов11ісJІ, , в якій об'єкн1 ві;r,rrравляюп,
1,1,11мують 11оні ,71,омлс11ня , а Jtіаграма коонеJJації _ це аналог діаграми
, ·[і t)
, і::tt)вностсй , якнй теж показує обмін повідомленнями між об'єктами, але
11<1~л ,_
,•нснтує увагу на ролях , які об'єкти грають у взаємодії. Ці два типи діаграм
[і І'
вз:1гзл і взаємозамінні , і рішення, яку саме з них використовувати в кожному
"онкретному випадку, кожен проектувальник приймає виходячи з особистих
переваг. Наприклад, автор цих рядків вважає діаграми послідовностей більш
зрозумілим і виразнішим способом моделювання взаємодій. Ваша думка може
бутн протилежною.
Проrvамне забезпечення утворює таку послідовність:
Користувач відкриває програмне забезпечення, після чого потрапляє на
вікно з авторизацією. Для авторизації потрібно зареєструватись і потім ввійти
за допомогою створеного акаунту, або ж можна ввійти не реєструючись, тобто
як гість. Користувач потрапляє на головне вікно програми, де бачить інтерфейс
користувача. Для відтворення аудіо файлів їх спочатку необхідно додати в
бібліотеку. Для цього потрібно натиснути кнопку із зображенням стрілки вниз,
яка знаходиться у лівому верхньому куті , обрати необхідний аудіо файл та
завантажити, після цього користувач побачить повідомлення , що файл успішно
додано. Для відтворення аудіо файлу, можна скористатись кнопкою РІ ау на
нижній панелі, або натис11ут11 11а обра11ий файл правою кнопкою і натиснути
пункт «Відтворити». Для додавання аудіо у список відтворюваних у
майбутньому необхідно натиснути на обраний файл правою кнопкою та обрати
пункт «Додати до списку відтrзорених», якщо користувач хоче додати одразу
всі аудіо файли то потрібно шписнути кнопку на нижній па11ел і. Щоб видал ити
аудіо, потрібно лише нап1с11ут11 11~ к11опку «СІ еаг Playlist» Для пошуку аудю
29
Ч)\1 .221<)60-00., ff J
riocт[ll HM) Н[ІІlІІ\'. :'\ 111 1н.'р111 , .·1ін.'р:'І і рs:щк ноmуку. /~riя rt· r ymom11r11я ry• r11oc·r1
,
11 t111,і61н) й·,,р11с1а111с1, 1ю1н ш.(щ на ннжнііі нанс; Іі , а ;tшt rrcrc юrува11ня нулю
н j11111c міснс , :1к,,ж iюipiGнo ,·кор11с1н111с1, 110111 111<0 r ·rілr,к 11 ·i ; rіrюї c ropoшr .
30
'f JH . -22 PJмi -ooJ lf t
4 111'0Еt('І '~'НЛ 111Bt І ІІФОІ'М л І(Ні Іf ol СИСТЕМ ~І
4.1 Лр,іtrІ\tУІНІt' ttfНJt'ІO)Іщ1t1tJІ
.
(.'lJ') 1<1~ J)IIO .ІЮ1 І'І11а t'Xt' ~,a ~! ; І( · 1:ІІ<ІІіі 11111 JІSЩ .
с,н~)рt'НІІЯ 2•0 '< нікон 111ю1р,ш11(Л11rоритнія п1 r шrоннс вікно
1чю1р:ш11 ).
2 Рсал ізанія ком,ю11с111 ів на вік11і(к11011кн , pcr улятор r У' Іfюс·r1 ,
н1111зл.зючс меню для кшююн) аудіо, rrсрсІ\rоТування аудіо у інше
1існс).
3 Рсзліззuія 14 методів музиІJ11ого програвача.
4 Реалізація 7 методів. пісня.
5 Для методів, я1<і потребуют~, вибір музичної композиц11 після
програвання , створено вікно майбутні композиції до якого мо:жна
додати будь-яку пісню.
б Реалізація шляху імпортування музичних композицій.
7 Реалізація функція для пошуку аудіо у бібліотеці.
8 Реалізація функціх повторення вибраного аудіо.
На виході ми можемо бачити програмне забезпечення для програвання
аудіо. Спочтку користувач виконує реєстрацію та вхід, або вхід без реєстрації,
потім завантажує потрібні аудіо і вже після чого починає прослуховування
аудіо файлів.
Для відображення її логічної структури у вигляді пакетів будую діаграму
пакетів (Рисунок 4.1 ).
Муа.чн1.-, КорІСf)11:і'І
np:,rpмa,.. "' . . . - . .. . . . . .................. .................. .. додатку
31
'ІJ\І . 2219щ.(ю.\ r н
P1tc 11101< "- І ) \і;н pal\!fl ш1 кс r і ri
4.2 ()111tc щ·11он11н, Ф) нtщ\Н ,t111t:t І І<
r >,1,,1і т1к1.m:11111я J\1111 :юм11(1Ї ро(і0111 fіуло ро ipo(iJ rcrю класи , 1110 оr1ису1(УГf,
,·~ р1,;;'Ілі ·3) 1t'1І, н11у1рі11111ю с1 ру1о уру ау;(іо rrporpaвa•r.i , J(О'ІНОJrяют,, ;rсJ)(авати та
11і /11Вt)рювз111 :\)'/\іо фаііт 1 , в11ко11у11а111 рсдщ у11а1111я ау;,іо файлу. Функнїі
('111,;1\.•~1н, з ТІ)Ч11і111с о6роб1111ю1 110;\ііі , ню віюювілаюп, ·3а у11равління аулю
,-0i-1)M нз основному інтсрфсіісі , зображені у табтщі 4.1. І .
110
Таблиця 4.1
О1111с функцій додатку
Ф)111'U1Я Опис
~
ь111РІау Подає системі команду в ідтворення
ьmNext Подає системі команду перемикання на наступний аудіо файл
~
ь111Last Подає системі команду перемикання на попередній аудіо файл
ьmІ111рогt Подає системі команду для імпорту файлу із провідника
ЬtJ1Fiгst Подає системі команду додавання аудю у список
для
майбутніх відтворень
b t11Prev Подає системі команду для видалення аудю у список
майбутніх відтворень
btnLogin Подає системі команду для входу у ПЗ
btnCreateUseг Подає системі команду для створення користувача
btnLoginAsGuest Подає системі команду для входу як гість
SliderVolume Подає сигнал для збільшення або зменшення гучност1
' .
вщтворення аудю.
Seekbar Подає сигнал для перемотування аудіо.
4.3 Вибір технології розроб,~и
4.3.1 Огляд тех11ологій для розробки застосунку
. '
Сучасні технології пропонують широкий в116ір 111стру!\,1 е ІІТШ ДЛЯ
виконання поставлених цілей. Серед найбільш популяр1111х дл я розробки
клієнтських зас1осу11ків мов програмування , можн[І в1щіл нт11 С#, Java.
32
'І)\t'У . 22 1960-ООЗ f В
оС \Viнdo,vs РІюнr n 1nкож снюрсння мут,1 нмс/\Іtіних /\0/(аrкіо ,vrя Windows
11 1
stot'C, 1,' "1 'Ч юю нсрснАt\Но tnкож можна rтажа1 и можлнnість як 1tскодувати,
r:н< і К<)дум, н J\3ні У формn1· МРЗ, що 11cдoc·ryr1110 rrpн nикористатrі ЛСМ.
Кр1t11tчним НС,7\оліком nказа1101u фреймnорку є неможливість прямого
sH}\· ористання фрсі\мворку із мовою С# •
4.4 Розробка інтерфейсу кор11стувача
Програмне забезпечення включає в себе такі елементи інтерфейсу як:
_ кнопка «Увійти»;
_ кнопка «Створити користувача»;
_ кнопка «Увійти як гість»·
'
- вікно «Library»;
- рядок пошуку;
- вікно з відтворенням майбутніх аудіо;
- кнопка «Clear Playlist»
- кнопка Play;
- кнопка Next;
повзунок rучносп;
- повзунок перемотування аудю;
- Check Вох для вибору повторення аудіо.
Нижче показано вікно авторизації в програмі (Рисунок 4.2).
37
Ч)\І .221%0-003 ІП
Ф ·нюtіонзл 111ю11)анача ауліо фаііліп ·ш 1сж1111, він ;1ocryr1ш1x кодск~в . /f;rя
'1 HOJ СІІІІЯ 1a K()f'O фу111<1ю11ш1 1 )\Щ)С'ІІІО BIIKOJ)IIC І он уна І И rі ·нrоманілrі Л РІ
\\ї11 1..іо" s, 11ю лаю11, )\ос1 111 ;\о нжс пс1а11011ж· 1111 х на кш111'rотсрі корнстува1 1 а
\);'tct-iн . )\,, 1а кнх ЛРІ ніт1щ: я 11,ся ЛшІіо ( ' 0111p1·css iш1 Мат1gсг, IJirectX Mcdia
)t1jc(ts ,·а ~ 1ilтosoH ~ 1с1..Ііа 1:ot111tlatior1. З 01ш1лу на сформона 11і нимоr и ;ю
Ф: нкні1..mа.11у, J\JІ Я с1 1юрс1111я в11щс·1:в rн111с11111 ·0 ·1асн,су11ку бу ло обрано
ФJ'\.'11~ІВ1.ЧЖ . ct, 06'сктно-оріс1поnа11у !\Іову 11рограr-.1у11шrня С# , технологію
\\ЇпtіО\\'S Pгcsc11tatioн J:'otmtiatioп (\УРІ:;- ) для створення інтерфейсу користувача
та компонента графічного представлення звукових даних. Для розробки аудjо
11р1.)грзвзча було обрано АРІ Media Foш1datio11 .
4.3.2 С# та Visual Studio
Середовищем розробки для мови С# було обрано інтегроване середовище
розробки (IDE) Visual Studio 2022, створену компанією Microsoft.
С# - це строго типізована об'єктно-орієнтована мова програмування. С#
є відкритим вихідним кодом, простим , сучасним, гнучким і універсальним. У
цій статті давайте дізнаємося, що таке С#, що може робити С# і чим С#
відрізняється від С++ та інших мов програмування.
Мова програмування з інформатики - це мова, яка використовується для
написання програмних програм.
С# - це проста, сучасна й об'єктно-орієнтована мова програмування.
1'1етою С# була розробка мови програмування, яку не тільки легко вивчити, але
й підтримувати сучасну функціональність для всіх видів розробки програмного
забезпечення.
Інтегроване середовище розробки (]DE) - це багатофункціональна
програма, яка підтримує багато аспектів розробки програмного забезпечення.
Microsoft Visual Studio - це IDE, створена Micгosoft і використовується для
різних типів розробки програмного забезпече1111я , наприклад комп'ютерн11х
JJporpaм, веб-сайтів, веб-програм, веб-сервісів та мобільних додатків. Він
міс1ить інструменти завершення , ком11ітrтор11 та інші функції для полегшення
33
'f)tl . 221<)(,О -ОО.1 fl l
11\'~)Щ'С · р,, ·чч,6к 11 І1JЮ1 рам1101 о 1aCil' 111с 1 Іl'ІІІІS1 . Иоr о і II r сrфсИс 1<ористуоа 11а
rнк,,,111\':l\Щ)'{ 1М.'Я )\.ІІЯ рснро(;,т ІІJЮІ ра\ІІІОІ О ·1aric ІІІ С' ІСІІ ІІSІ J(JIS/ rc;rнr ува 11шr,
на:1:11'),1.)k"t'НІІЯ 1rt t'1ІЮ\Н.' 1111я 1<0, 1у . Vіsш1І St 11<1io ~ricr~rrr, рслакrор коl!у , який
11і .1.11,11м)т l111clliSc11sc (1шм11011с111· ·з:111с11111с1111я колу), а rакож рсфакrорннг колу.
Ін, '11ю1~;ш 1111 11а .пrt1,);\жува•1 11р,111юс і як 11ал.нuю1<ува•r на рів11і лжсрсла, і як
11:-1 .1:11,,дж) в:РJ на рівні ма111111111 . І11111і вбуl\(mа ні і, ,с,rрумсти ню110 1 1а1(rн~
П\''-)ф:111.!'І ср кол,у, конс1р) ктор для с1ворс1111я ;юдатків із графічним інтерфейсом
К('Іj)ІІСтувача, нс6-дюшї11ср, конструктор класів і дизайнер схем баз даних.
4.3.3 \1/iпdo,vs Pгcsc11tntio11 Foш1<.iatio11
Для розробки графічного інтерфейсу було використано платформу
\\l iщio"·s Pгese11tatio11 l:;-ouпdatioп. WPF є спеціальною платформою для
створення клієнтс1,ких додатків для персональних комп 'ютерів під управлінням
ОС \\li11do,\1s. Платформа розробки підтримує великий набір інструментів та
компонентів для розробки додатків, що дозволяє розробити привабливий та
доступний для користувача інтерфейс. Фреймворк графічного інтерфейсу
дозволяє створювати програму з широким набором елементів графічного
інтерфейсу, як-от мітки, текстові поля та інші добре відомі елементи. Без рамки
графічного інтерфейсу вам довелося б малювати ці елементи вручну та
обробляти всі сценарії взаємодії з користувачем, як-от текст і введення мишею.
Це багато роботи, тому зам1сть цього більшість розробників
використовуватимуть фреймворк GUI, який виконає всю основну роботу і
дозволить розробникам зосередитися на створенні чудових програм .
Існує багато фреймворків графічного інтерфейсу, але для розробників
.NET найцікавішими на даний момент є Wi11Foп11s і \VPF. \\1Pl, є 11ай1ювішим,
але Mic1·osoft все ще підтримує і підтримує Wi11Foг111s . Як ви побачите в
наступному розділі, між цими двома фреймворками є чимало в ідмінностей, але
їхня мета однакоІЗа: полегшити створення програм із чудо,тм графічним
jнтерфейсом.
34
11/t t· .22 І %0-001 1П
Одніtю ·3 НаЖJ1111\ІІХ OCOUJIIIIIOC н.· іі (' l\lll<OJ)l lt І;ІІ І ІВІ МШІН лскт:1ратнв11ої
рLн~,і , юt і 1т.-рфсіkу ХЛ~tІ .1 1 :к1101ш1m о rнt Xfvll .: 1111 можс·r с снюрюпати
н;)('НЧІ.'ІІІІіІ 1 1,,1фі ч1111іі і111t·рфсііс1 1111 кор1rс r овую•111 atio лсклараншне
\"Н'\\'l,)ІJ1сн 11 я it11'l'pфcik)\ або кщ\ KL'Jю1ia1111м11 І\ t(111ам11 (' І/, VB.NET і f'#, або
1 1 ,)с,1.ну~щ 11 те іі і11111с .
4" .4 \\ i11tf0\\1S Mc(fia l7oш1tlatio11
\\ i rнft)\VS Мс<Ііа 1:ошнІаtіо11 -мульп1мслііі1111й фрс~імворк та інтерфейс
11рL)І1)3М)'ВЗНІІЯ програм нового 11околін11я , створений корпораuією Microsoft
,1..,я ро6от11 з цифровим мультнІ\tсдіа під операційними системами сімейства
\\' itl(iO\\'S, починзючн з Yista . ІІа відміну від більш застарілих фреймворків, він
11 :1дзс розробннкзм набагато більше можливостей та інструментарій для
упр:шління потоком даних у застосунках. Характерною рисою є те що його
робота полягає у ефективній передачі даних шляхом поступового їх надсилання
у вигляді посл ідовності семплів (Media SашрІе).У WMF існує три типи
фундаментальних сутностей для обробки даних, що відповідають за створення
даних, їх обробку та подальший вивід:
- Media Source є об'єктом, що відповідає за генерацію медіа даних у
системі. Дані можуть бути зчитані із файлу системи, мережевого
потоку або пристрою (мікрофон, веб-камера). Цей об 'єкт реалізує
інтерфейс IMFMediaSource.- Media Fouпdation Transfom1s (MFTs)
виконує функції обробки медіа даних та реалізує інтерфейс
ІМFТ1·апsfопп. Кодеки у застосунках \VMr імплементуються саме як
MFTs.
Media Sink є об'єктом , що отримують медіа дані та здійснюють їх
вивід до пристрою або запис у файл . Реалізує інтерфейс
IMFMediaSink.
Окрім роботи з аудюданими , \VMF також пщтримує можли вості
кодування та декодування відеофайл ів. На в ідміну від Анdіо Co111pгessio11
Manager, цей фреймворк підтримує можли в і с1 ь ))(Узробк11 мобільних додатків на
35
'l)t l .22 19(10-001 J1 ~
Рисунок 4.2 - Вікно авториза 1tії
Головне вікно програми(Рисунок 4.3).
Fl11meMusic х
Рисунок 4.3 - Головне вікно програми
Функцїї керування аудіо, кнопка РІау, поперел,ній , наступний аудіо,
реrу.11ятор гу111юсті , перемотування аудіо (Р11су1юк 4.4 ).
37
\/){l 1 21%0-00J JJ J
Р1н.') нок 4.4 • Ф 111<1tії кср 1ш111н нуліо
1 і юн) (11ІІLКУ ма116у111іх ау, \іо(Р11су11ок 4.5).
Рнсунок 4.5- Вікно списку майбутніх аудіо
Функція повторення аудіо(Рисунок 4.6).
■ Loop Playlist
Рисунок 4.6 - Функція повторення аудіо
Кнопка очищення списку майбутніх аудіо(Рисунок 4.7).
Рисунок 4.7 - Кнопка очищення списку майбутніх аудіо
Додаткові функції вибраного аудіо файлу(Рисунок4.8).
38
'І )\ТУ . 22 І 9(,0-ОО.1 f П
··•!!)
:NAIJA
Р11сунок 4.8 - Додаткові функції вибраного аудіо файлу
~11l111ка дл я імпорту аудіо файлу в програвач(Рису11ок. 4.9).
Рисунок 4.9- Кнопка для імпорту аудіо файлу в програвач
4.5 В11кор11стання застосунку
Технічні вимоги до системи
Застосунок для програвання аудіофайлів розроблено на платформі .NET
із використанням можливостей фреймворку Windows Media FoLІпdatioп. Тож
опираючись на ці дані треба відмітити , що мінімалм1і та оптимал ьні технічні
внмоrи до системи наведені у таблиці 4.2 та таблиці 4.3.
Таблиця 4.2
Мінімальні технічні вимоги до системи
Проuесор 2-ядерний процесор з та ктовою частотою більш ніж 1.8
ГГц
Жорсткий диск HDD із 500 МБ вільного простору
Оперативна лам ' ЯТІ> 2 ГБ
Аудіокарта DігесtХ-сумісна
Операційна система 32-розрядна, Wiпdo,vs 7 та внще
39
'f аfіЛНІ(Я 4.J
О11111мя.r11,11і 1с~11і•111і ІJІІJ\ІШ II щш с11с·rс~\ІІІ
2-ядср1111й процесор 1 тактоrюю •rастотою більш ніж
2.1 ГГн
~""'І'~ТКН II ДІfСК SSD із І ГБ nільного простору
· о,;ср:пнвнз пам 'ять 4 ГБ
•--л-,-д__і_о_к_·з_р_т_а _____ 1rD~і-rе-с-:t-:~Х-с-у-м-:і-_сн_а_ _____________ _ ___j
, .
Опср::щійна систем:~ 64-розрядна, Windows 7 та вище
1
Для стабільної роботи застосунку необхідно забезпечити наявність
дрзйверів аудіо у систем~. Це спричиняє неможлив1сть використання
застосунку на комп'ютерах із ОС Wiпdows 7 або більш старими версіями ,
оскіль1'и можливість програвання аудіо у різних форматах буде працювати
лише за їх наявності.
5 ТЕСТУВАННЯ
Для проведення тестування ПЗ виконувались такі етапи:
проведено тестування вікна реєстрації та авторизації;
Для цього було створено кілька акаунтів і були проведен ~ юлька спроб
увійти у додаток. Ці спроби були успішними.
Після входу в акаунт, м 11 потрапляємо на головне в1кно програ!\ш.
Насrуnним етапом тестува11ня с:
- перевірка на завантаже11ня аудіо;
Для цього було заванп1,ке110 кіл ька аудю файлів. Всі вони усшшно
завантажились та були дода11і у біб11іотеку. Наступним етапом є :
перевірка на відпюре11ш, [Іудіо фаі1лів;
Для цього вибираю од1111 раніше з~ вантажений аудіо файл і 11атнскшо
клавішу РІау. Пkля чого відпзоре11,1я ус 11і111110 почалось. Наступним кроком с:
перевірка на додаванш, лu с11 11ску майбутнього відтворення;
40
\\ )\ І .22 l 9f,0-003 І П
)\л я н1,,,1 ,, 11а 1 11скаю на ж~кіт,ю, paнittrc /\ОJЩ ІІІІХ фа ~іл ів нраво клавішею і
11 :11·1н:1'аЮ 1'1Ю11К ' «) \о;\а 111 ;\о с 1111ск віт 1юрс11тш, rricmr І(ИХ ма 11і11уляr(ій я
сІl()С1\'Рі1·аю, 11\\) н116ра111,іі а 'J\io ус11і1111ю був ;щ;щ rrиИ . І І асту1111им ета rrом є:
.
- 1H.'J)CB1JЖ:I ІІа ПІЩ:1J1 СІІІНІ i·i ЦІ,01 '0 с1111ску ау;(іо ;
)\л я цьоІ'І.) Н:.'Іст11сю1ю ююirt<y «Clcar PlayList» бачу, що видалення
щ-х,і1111ло ус11і111но. ) \ал і я ШІІ<оrrую:
- 11с1 ев~рку на перемотуnання в інше місце аудіо файлу;
Для цього я внкорнстоnую повзунок який знаходиться на панет
керування внизу зліва. Перемотую на \ хвилину вперед і бачу, що операція
успішна. Наступним кроком є :
- перев1рка на повторення аудіо;
Для цього вмикаю функцію «Іоор Playlist» шсля чого перемотую на
кінець аудіо файлу і бачу що після закінчення треку він починає відтворення
спочатку .
Останнім етапом є:
- перевірка пошуку аудіо.
Для цього достатньо ввести першу літеру і одразу ПЗ видасть результат.
Вводжу літеру К і бачу кілька співпадінь.
Отже тестування пройшло успішно. Додаток готовий до використання.
41
►
'1)\ТУ .22 19()0-003 І П
ВИСІІОВІ(И
З 01 ·.11я;\у ІН\ ста~, су1 1ас1111х pmpoGot< у сфері ІІJЮІ рава1111я аудю та
н11в11111н1111 1·a.11y·Ji, 3ас1'осуна11т1 , ·1с мою ,~1111лом 11oro rrроскту було обрано
~1'Hl)J"CHHЯ ·~ас,·осу11ку )ЩЯ 11\ЮІ '\ХІШІ\ІІНІ ау,~іо файлів. Тема ДИІІЛОМІЮГО проєкту
с зюу:1ль1юю ;щя сьu, ·одс1111 я: не зuажаючи на поГІулярність новітніх
. .
щю11"1,шачш пулю, що в11кор11стовуюнся , ПaineMt1sic залишається програвачем
для домзшнього nикорнстшн,я. Основною мстою розробки є прагнення
3мсншипt 11opir навичок для роботи із аудіофайлами та задовольнити потреби
середнього користувача без 11еобхідность1 використання професійного
проrvзмноrо забезпечення. Для створення застосунку був проведений
ретельний аналіз області та вже існуючих рішень, серед яких: «AJMP» -
безкоштовний програвач із функціями конвертера аудіо та редактора аудіотегів,
«FL Stнdio» - повноцінна цифрова робоча станція для професіоналів, та
«foobai-2000» - безкоштовний застосунок для програвання та конвертації
аудіофайлів. Проведений аналіз дав змогу виокремити основні функціональні
вимоги до застосунку та створити на їх основі діаграм, що наочно показує
можливості користувача щодо використання програмного забезпечення. Окрім
для успішної розробки програмного забезпечення було оглянуто різноманітні
технології та вибрано найбільш відповідні до задачі. Виходячи із вимог та
доступних технологій, для створення графічної частини системи, а саме
інтерфейсу користувача і компонента графічного представлення аудіофайлу,
було обрано Wiпdows Ргеsепtаtіоп 1~ot111datio11. Реалізація відтворення аудю у
середовищі .Net стало найбільш важкою задачею, для якої було обрано
платформу Wiпdows Media Fouпdatioп у посднанні із бібліотекою MF.NET. У
ході реалізації програмного забезпечення було розроблено застосунок, що
забезпечує надійну та швидку процедуру відтворення аудіо файлів. Окрім
цього, було створено компонент для візуал іза ції аудіо файлів та надано
детальний опис системи. Останнім 11у11ктом стало складення детальних
технічних вимог до системи. РезуJІ ьтатut1 1 в11ко11ання проєкту стало створення
42
Ч){ГУ.221960-003 ПЗ
застосунку, що с 011т11мш1ьн11м рішс11ш1м для nико11а1111я поставленної задачі,
оскільки n11мш·ас мінімум pccypcin п~ рсалізус базоnі можлиnості роботи із
аудіофайлами.
І3рзховуюч11 простоту інтерфейсу, можливост1 користувацького
компоненту для відображення та невибагливість до апаратної складової, даний
застосунок мас перспективи для подальшого розвитку та може зацікавити
корнстувачів. Є можливість покращення додатку, можна збільшити кількість
інструментів для роботи та вдосконалити роботу графічного компонента.
43
►
'І)\ТУ. 2219(10-003 ГІЗ
12 Jнli\ls О. Smitli llt. Matl1cmatics оГ tl1c l)iscrctc l7ouricr Transform (DFT):
,,,it\1 Л\І(tіо ЛррІісаtіонs . \V3K Pt1І,lisl1i11g, 2018. 322 с. (дата звернення:
І g,OS.2022).
13 Л\іат Nat Інш • \Vi 11llo,vs P1·csc11tat іо11 І-'ош1<.Іаt іо11 4 Un lcashcd. Pearson
\ :till(Зtitш, 2021 . 576 с . (;щта '3Нср11с1111и : І 8.05.2022).
І 4 Mattl,c\\1 Mact)o11alli. Рго \УРІ : 4.5 і,1 Cff.: Winclows Presentation
1 :ot1t1<iзti\Ш іп ,NET 4.5. Лргсss, 2019. І 078 с. (дата звернення: 18.05.2022).
15 аітр.на lЕлск11)0н11111ї ресурс] : [Інтернет-портал] . - Електронні дані.
Рсжнм ,1,оступу: t1ttps://,v,v,v.ni111p.нa/ (дата звернення: 18.05.2022).
t 6 i111age-liпe.co111 [Електронний ресурс] : [Інтернет-портал]. - Електронні
дзні.- Режим доступу: FL Studio. URL: І1 ttps://www.image-line.com/flstudio/ (дата
звернення: t 8.05.2022).
17 fооЬаг2000 [Електронний ресурс] : [Інтернет-портал]. - Електронні
дані.- Режим доступу: l1ttps://W\\IW.foobaг2000.oгg/ (дата звернення: 19.05.2022) ·
19 01ecode.media [Електронний ресурс] : [Інтернет-портал]. - Електронні
дані.- Режим доступу: \1ttps://t\1ecode.111edia/c-shaгp/. (дата звернення:
19.05.2022) .
20. Bart J.F. De Sшet. С# 5 Uпleashed. Sams Publis\1iпg, 2020. 1728 с. (дата
звернення: 20.05.2022).
22 tutorialspoint.com [Електронний ресурс] : [Інтернет-портал] . -
Електронні дані.- Режим доступу: l1ttps://www.tutoгia l spoi11t.co111/\~1pf/i11dex.l1t111
(дата звернення: 20.05.2022).
23 pluralsigl1t.co111 [Електронний ресурс]: [Інтернет-портал]. - Електронні
даш.- Режим доступу: l1ttps://w\1/W.pluгa l sigl1t . co111/coшses/digitalalldio-
fundamentals (дата звернення: 20.05.2022).
24 mfnet.sourcefoгge.пet [Електронний ресурс] : [Інтернет-портал]. -
Електронні дані.- Режим доступу: l1ttp ://mfпet. souгcefoгge.11et/ (датn звернення :
20.05.2022).
45
ЧJ\ТУ.22 19с,о .ооз r r з
СІ111СОІ\ НІrІІ(ОІ'ИСТЛ II ИХ /(їІ(ЕР[UІ
<iocs.tнicюsoH.com /Елс1<1ро111111іі ресурс! : Іf11тернет-портал]. -
Е.nсКТ\1011111 ;,ані .- Рl'жнм )щс·1 у11у : l1Іtps://tlocs.microsoft.com/ru -
111 'tiot1н:-tk~l,:1,1)/to\Jl'-t)1'- csl,a1·p/ (;щ, а :тср11с1111я І О.05 .2022 ).
2 \\\\ '\\1 , ligt,tliпk .com tЕлс 1<1 1ю111111іі pccypcJ : Іf11тер11ет-портал] . -
1 :11сктрtшн 1 ;\ані.- Режим доступу:
1,нр://\\ "·"•.liglнliпk .com/tj\\1cЬe1'/St1·ipWav/WA VE.html (дата 1вернення
І О .05.2022).
3 soнпd1ile.sapp.oгg [Електронний ресурс] : [Інтернет-портал]. -
Електронні дані.- Режим доступу: Іittp://sot1пdfile.sapp.org/doc/WaveFormat/
(дата звернення 10.05.2022).
4 І,аЬг.со111. [Електронний ресурс]: (Інтернет-портал]. - Електронні дані.
Режим доступу: l1ttps://l1abг.co111/post/1 l 3239/ (дата звернення: 17.05.2022).
5 uk.,vikipedia.oгg/wiki Електронний ресурс] : [Інтернет-портал]. -
Електронні дані.- Режим доступу:
\1ttps://uk.,1/ikipedia.oгg/VІ1iki/%D0%A6%DO%B8%D 1% 84%D 1% 80%D0%BE%D0
6 Jо\ш \\1atkinson. Intгoduction to Digital Audio. ТауІог & Fгancis, 2021. 419
с. (дата звернення: 18.05.2022).
7 JоІш Watkiпson. Агt of Digital Audio. Focal Pгess, 2020. 768 с. (дата
звернення: 18.05.2022).
8 Ken РоhІmапп. РгіпсірІеs of Digital Audio. McGгa,v-Hill. 2021. 8 І 6 с .
(дата звернення: 18.05.2022).
9 Nika Aldricl1. Digital Audio ЕхрІаіпеd : Fог О1е Audio Епgіпееr. S,"1eetwateг
Sound lnc, 2019. 403 с. (дата звернення: 18.05.2022).
10 Nic Cyn. Windows Media Fouпdatioпs : Gettiпg Staгted ів С#: А Step-by
Step Guide to Writing Windows Medi::i 1:-онпdаtіоп Applicatioпs in С#.
Independently published, 2019. 366 с. (дата зnернен11я: 18.05.2022).
11 Anton Polinger. Developiпg Micгosoft Media Fouпdatioп Applicatioпs
(Deve)oper Reference). Microsoft Pгess, 202 1 384 с. (дата зnернення: 18.05.2022).
44
)\ОJЩ І ОІ( Л
МУЗІІЧІІИЙ ПРОГРАВАЧ
Спец11фікація
482.ЧДТУ. 221960.01
Листів 2
Розробник: Гогулов Я .В.
Керівник: Рідкокаша А. А.
Черю1с11 , 2022
( 2
nозв"че1шя Н 11іtмс11ушшш1 Примітка
~. .. -
4 Ч)\ТУ. -- 1960-1 01 І 'І<с· , 11рш ·рами
4~. ..Ч )' О. --1960-34 О І -
І11 стру1щін користувача
-
4g .Ч )Л' . ... 1960 90 О І Грнфі 1 111ий матеріал
·-
'-- -
-
- -- -
- _ ,_
- - --
--
- -
-
- --
......
-
~
-
~-·-
--- -
--
-- - --
r- --- -
- -
І
' - -
І
МУЗИЧНИЙ ПРОГРАВАЧ
Текст програми
482.ЧДТУ. 221960-12 01
Листів 39
Розробник: Гогулов Я. В.
Керівник: Рідкокаша А. А.
Черкаси,2022
482.ЧДТУ. 22 І 9б0• І 2 О І 2
Ф:,іі.11 Лct·o1111t.cs
usiпg Systc111·
usiпg Systc111.Collcctio11s.Ck11c1·ic;
usiпg Sуstсш.Сінч ;
usiпg Systcm. ccшity.(\yptog,·apliy ;
\1siпg ystcш.Tcxt ·
нsіпg Systcш.T\11·cacii11g.Тasks;
п:ннеsрасе Мнsіс_ Playe1·_Pгoject
{
[Seгia1izable]
public class Accouпt
{
INaгiables
public stгiпg UseгNaшe { get; pгivate set; }
pub1ic stгiпg Passkey { get; pгivate set; }
public stгiпg Salt { get; pгivate set; }
ІІІ <sшnшary>
ІІІ Constгuctoг fог шаkіпg пе,v account
ІІІ <Іsuшшагу>
ІІІ <раrаш na111e="useгNa111e"><lpaгa111>
ІІІ <param name="pass,\1oгd"><lpaгa111>
public Accotшt(stгiпg useгNaшe, stгiпg pass~1oгd)
{
//=----=====------ Ргераге -=------ ----------11
// Set username
this.UserName = useгNa111e;
//prepare byte апау
byte[] saltBytcs = пе,,1 \1yte[ 128];
4R
4~2. 'І)~ТУ . 22 19(10· 12 01 з
//-------------==-·---·--- - - - Salti11g = =================/ І
//Sa lt pass\\·01\t
,• ,н· saltcг = НС\\1 l~NGC1·yptuSc1·viccl'i-oviclcг() ;
//Gснсгаtс salt
sa Іtсг. Gct NопZсго l3 ytcs( sa 1t Bytcs );
sa ltc1·. Disposc();
//Sa,,e Sa\t
tl1is.Sa\t = Coпveгt.ToBase64Stгiпg(saltBytes);
//============--- -- Hasl1i11g ------- -==========//
// Ргераге \1аsІ1ег
,,ш· І1аs\1ег = пеw Rfc2898DeгiveBytes(pass~,oгd, saltBytes, І ОО);
//Get Has11
t\1is.Passkey = Conve11.ToBase64Stгiпg(J1asl1eг.GetBytes(256));
l1asl1eг.Dispose();
}
}
}
Файл MнsicPiaye1·.cs
usiпg NAudio.\Vave;
using Syste111;
using System.Collections.Geneгic;
using System.Tlll'eading.Tasks;
using System.Windows;
naшespace Music_Playeг_Pгoject
{
class MusicPlayeг
{
49
482.ЧДJУ. 221960-12 О І 4
І /----------=,-==:::~.. .c;.:...""-----~=,i..;;:..::,=-=-=-=--=--======== Variables
:нні J )cckгatioнs
--------------- --//
// \ttiio Ol\t
\ нЬlіс \\7,,,, 'Oн 11 :,, 'Ht olltplHIJ , і · с;
/IЛ\ttiit) tik 1{ 'il(k1·
рнl 1і ' щііо1; і І -l{eadc,· с\lІ(\і оПІс·
'
//Р\ а list
рнЬІ і t-eadoнly LiнkedLi st<Soпg> playList = 11ew LinkedList<Song>();
р1· і,, а1е LiнkedListNode<Soпg> soпgNode ;
//Status \laгiables
ргі,,аtе ЬооІ i sPlayiпg == false;
ргі,,аtе ЬооІ isPaused == f-a' lse·
'
public ЬооІ autoplay == tгue;
public bool loopP\aylist == fa lse;
//getteгs fог status
public bool l s Playiпg { get => i s P\ayiпg; pгivate set => i sPlayiпg = value;
public bool lsPaused { get => isPaused; pгivate set => isPallsed = value; }
//- --- ---------------- --- ----------------=== Р !а у, Ра us e,
юр Апd Resuшe
//
//РІау soпg
public аsупс Task Play(So11g soпg)
//НапdІе stoppiпg о[ soпg
if (outputDe,1ice != 1шІІ && aL1diol:ile != пuІІ )
a,\1ait Task . Rш1(() => OL1tpt1tDe,1ice.PlaybackStopped -=
(m \> lc1yba<.:kStoppedAsy11c) ;
50
4Х2 . ЧJ\ТУ . 22 1960-12 О І 5
a,vait Task. І{ ш1( () = oнtpl1t lJevicc.Stop() );
З\\1аіt Task . l{ш1(() = 0tltpt1tlJcvicc.PlaybackStoppe<.I +=
011Playl ack top1 tXi s не);
\
І
//gct soпg patl1
stгiпg soпgPatl, = soпg . SoпgPatl1 ;
//Cl1eck output de,,ice
if'(outpнtDevice == пull)
{
tгу
{
outputDevice = пеw WaveOutEveпt();
outputDe,,ice.PlaybackStopped += OпPlaybackStoppedAsyпc;
}
catcl1 (Ехсерtіоп ех)
{
MessageBox.Slюw("Theгe was ап еггог witl1 the audio output
de,1ice: " + ех, "Еггог") ;
//C11eck апd/ог assigп song file path
at1cli0File = пuІІ ;
if (a L1dioFile == 1шІІ )
audioFi le = пеw AudioFileReadeг(soпgPatl1) ;
o t1t putDe,1 ісс . І піt( aLІdioFi Іе );
U\\' c1it T,1 sk.l~ш1(() => oLІtpLІtDevice.Play());
і s Р,1ш,ссІ = Га І sс;
51
-
4~2.'1)\ 1' . 22 19(10· І 2 О І 6
\
'
/tPlay soнg ,vitl, i.Kki to playlist optio11
pнt)lk аsунс Task Play(Soнg soнg, buol шlclToplayli st)
{
/1 І lr111dlc stoppiпg of soпg
if(outputDcvicc !== 1шІ1 && audio[7ilc != 11ull)
{
a\\1ait Task.H,uп(() => otttputDevice.PlaybackStopped -=
OoP\aybackStoppedAsyпc);
a\\1ait Task.Ruп(() => otttputDevice.Stop());
a\\1ait Task.Ruп(() ==> otttputDevice.PlaybackStopped +=
OпPlaybackStoppedAsyпc );
}
//get soпg patl1
stгiпg soпgPatl1 = soпg.S011gPatl1;
if (addToplaylist)
{
playList.AddFiгst(song) ;
songNode == playList. Fiгst;
}
//Check output device
if (outputDevice == пuІІ)
{
try
{
outputDevice = пеw WaveOutEveпt() ;
outputDevice.PlayЬackStopped += O11PlaybackStoppedAsy11c;
}
catcl1 (Ехсерtіоп ех)
{
52
►
4~2.'1)\1' . 22 11J(10•12 01 7
McssagcBox . Slн)\, ("Т11с1 · , ,vas т1 спо,· \Vitl1 tl,c au(lio output
·, ,. " + ех 11 1::tтot'")·
<.i~V\Ct;, ' І
}
}
// t,cck ан(і/ш· assig11 so11g filc patl,
:1lІ(ііо1•Ї1с == Hll1J ·
it' (~НІlііоFіІс ==== нuІІ)
{
aнdioFile == пе,v AudioFileReadet'(songPatl1);
outputDevice. l піt( audioFi Іе) ;
a,,,ait Task.Rtш(() ==> outputDevice.Play());
isPaused == false·
'
isPlayiпg == tгue;
}
}
//Soпg Pausiпg
public аsупс Task Pause()
{
if (isPaused = false && isPlayiпg == tгue)
{
await Task.Ruп(() => outputDevice.PaLІse());
isPaused = tгLІе;
}
else
{
tl1гo,v пе,v Ехсерtіоп("Саппоt pause if рІауег is аІгеаdу prшsed ог
not playing");
}
}
//Song І{сsшпе
53
4R2.Ч)\ТУ . 2219(,0-12 О І 8
рнl1Ііс c1sy1'c Task І{сsшнс()
if (isPaнst'ti ==== tпic && isPlayit1g === tнic)
{
3" ·c1it T.-isk.Ruщ() => oнtpнtDevicc.Play()) ;
isPausc(t = 1alse;
}
else
{
tІ1ГО\\1 Пе\v Exceptioп("Ca1111ot Resш11e if player is поt paused ог not
p!ay111g")·
}
}
//Soпg Stop
public аsупс Task Stop()
{
if (isPlaying = true)
{
// Handle stopping of song
if (outputDevice != пuІІ && audioFile != 1шІІ)
{
await Task.Run(() => oнtputDe,1 ice.PlaybackStopped -=
OnPlaybackStoppedAsync );
await Task.Ruп(() => outputDevice.Stop());
await Task.Run(() => outputDe,1ice.PlaybackStopped +=
OnPlayЬackStoppedAsync) ;
}
}
54
4Н2. Ч)\ТУ . 22 1%0-1201 9
//------------·--------=====--=-------------------------------==-------------- F1rst'
р1~, іtНІS. \~xt Лпlі Last
~------=======-------=-------------------=------===а
//Fiгst so11g і11 playlist
public asy11c Task PlayFiгst()
{
soпgNode = playList.Fiгst;
Soпg tешр = soпgNode.Value;
a,\1ait Play(te111p);
}
//Pгevious soпg
public аsупс Task PlayPгevious()
{
if (soпgNode.Pгevious != null)
{
soпgNode = songNode.Previous;
Soпg tешр = songNode.Value;
await Play(tenip);
}
}
//Next Song
pubJic async Task PlayNext()
{
await Play(GetNextSong());
}
//Last Song
pubJic async Task PlayLast()
{
if (p]ayList.Coi111t >= О)
{
55
4~ 2. 'І)\ТУ . 22 \9(10-12 01 10
iюнgNoti~ = playlJst.1 ,asl ;
Soнg tсшр = soнgNщ\c.Valt1c;
a\\·ait РІау(tсшр );
\
І
\
І
//========------====================----- -
Utility,}'u11ctioп Metlюds
---=---- -------- ---- --------//
//Raise playback stopped Eve11t
p1i,,ate ,,oid OпPlaybackStoppedAsync( object sendeг, StoppedEventArgs
aгgs)
{
OвPlaybackE11ded(EventAгgs.E111pty);
}
protected vi11ual void OnPlaybackEnded(EventAгgs е)
{
PlaybackEnded?.Iпvoke(this, е);
}
public event EventHandler PlaybackEnded;
//Get the song to play next
public Song GetNextSong()
{
Song nextSong;
if(songNode != null)
{
56
4~2.'І)\ТУ . 22 \9б0- 1 2 01 l l
it'(st)нgNotlc.Ncxt !:-: І\\ІІ\)
{
//(kt нсхt soнg
SoнgNotk == мщgNщlc. Ncxt ;
//Лssigн нсхt soнg
нcxtSoнg == soнgNo<k.Valuc;
//Loop playlist it' at e11d
else if (loopP\aylist)
{
//get fiгst soпg of playlist
soпgNode == playList.Fiгst;
//assigп as next soпg
пextSoпg = soпgNode.Va1ue;
}
//Get next паtuгаІ soпg
else
{
//Prepare idx of пехt soпg to рІау
int songidxToPlay = (soпgNode.Va\ue.Soпgldx + І ) ;
//Check if idx is valid
if (!(songidxToPlay > Маі п \\Tiпdow.Libгaгy.Couпt-1 ))
{
//Add tlшt soпg to playlist
playList.A(ldLast(Maiп \Viпdow.Libгaгy[ soпgidxToPlay ]);
songNode = so11gNode.Next;
nextSoпg = soпgNocle.Vallle;
}
else //Loop Lx1ck to fiгst 11аtL1п1І soпg
57
4R2.'I)\ t·Y. 2219(10-12 О І 12
p\ayt .ist.Л\ltlt .ast( Маі11 \Viiнlo\v . І .i11raryl О J);
soпg \)tk - so11gNo{k.Ncxt ;
ПС\\S\щц === soпgNщk. Valt1c;
\
'
гс\LІП\ 11cxtS011g;
clsc//Defau\t to fiгst паtuп1І soпg
{
playlist.Addlast(Mai п Wiпdow.Li Ьгагу[О]);
soпgNode === playList.Fiгst;
пextSoпg = soпgNode.Value;
1·еtuгп пextSoпg;
}
}
//Add soпg to playlist
public async Task AddToPlaylist(Song soлg)
{
await Task.Run(() => playList.AddLast(song));
}
public async Task ClearPlaylist()
{
await Task.Ruп(() => playList.Cleaг()) ;
// Nowplaying
public Song NowPlaying()
{
return songNode.Value;
}
58
13
\\si11g Systcш:
\tsi11g. Systcп, .tO;
\lsi11g. Systcт.ljнq:
\tsi11g. Systcm.\\1iщio\\1s;
\\Si11g Systcm. \\1iщ_io,vs .Mcdia.1111agiпg;
11:1111cspace Music_Playeг_Pгojcct
public class Soпg : ІСошрагаЬІе
{
/Nariables
pri,1ate readonly stгiпg soпgNaшe;
p1ivate геаdопІу stгiпg soпgPatl1;
private readoпly int soпgldx;
private readoпly Bit111apl111age iшageData;
//Gets
public string SongNaшe { get => songName; }
public string SongPath { get => s011gPatl1; }
public Bitmaplmage l111ageData { get => i111ageData; }
public int Songldx { get => soпgldx; }
І/ Constructer
public Song(string soпgNaшe, stгiпg s011gPatl1, іпt soпgldx)
{
this.songName = s011gNa111e;
this.songPath = songPatl1;
this.songldx = songldx;
imageData = GetCoverl111age(s011gPatl1);
}
//Comparer
59
4R2.'l)\TY. 221%0•12 01 14
рнt,Ііс i11t (\ннра1·сТщо\}jссt o\}j}
{
if (otl1cгS011g ==== пuІІ) 1·еtшп І ;//Handle invalid object
it1otl1eгSoпg.soпgName !== пuІІ)
{
гetu111 Stгi11g.Co111paгe(so11gName, otl1eгSong.songName,
Stгi11gC0111pa1·iso11.0гdiпal);
}
else
{
tl1гow пеw AгgumentException("Eггoг ів со111рагіsо11, object шust Ье
in\lalid");
}
}
//Get File's со\Іег ішаgе
pгivate Bit111apl111age GetCove1·Image(stгing s011gPatl1)
Bit111apl111age coverlmage;
TagLib.File file = TagLib.File.Cгeate(songPatl1) ;
var firstPic = file.Tag.Pictuгes.FiгstOгDefaL1lt();
if (firstPic != null)
{
byte[] pictureData = fi1·stPic.Data.Data;
coverlmage = Tolmage(pictшeData);
}
else
{
60
4~2. 'І )\ТУ . 22 19()0• І 2 О І 15
//Sct \kt:шlt со,,с1· tmagc
coYci·lmagc = нс,v Bitmap1111agc(11c\v
Uii(~;''\1iгc~юнгccs\tkHшlt.pнg11 , UгiKiщJ.l{clativc)) ;
\
І
1ile.Disposc();
гctt1111 co,,eгl111age;
\
J
public ,юіd SetFileCoveгl111age(Bit111aplmage image)
{
{
usiпg (TagLib.File file = TagLib.File.Cгeate(SoпgPath))
{
TagLib.Id3v2.Attac11edPictuгeFгame соvег = пе,v
TagLib.IdЗ,12.Attacl1edPictuгeF1·a111e
{
Туре= TagLib.PictuгeType.FгoпtCoveг,
Desc1·iptio11 = "СоУег",
MiineType = Syste111.Net.Mi111e.MediaTypeNa111es.l111age.Jpeg,
Data = ToByteAпay(i111age),
TextEпcodiпg = TagLib.StгiпgType. UTF 16
};
file.Tag.Pictuгes = пе,v TagLib.1Pictuгe[] { соvег };
file.Save();
}
}
catch (Ехсерtіоп)
{
MessageBox.S\ю,v("Cшшot ctlit soпg tІн1І is РІауі11g11 , 11 Еггог11 ) ;
}
61
,1~2. 'І) ~І У . 22 19(10•12 01 16
І •
І1 - -- --=--====:.:=:::.:__-;·-·-·- ---"-"-"-'.... ..:-. ===-·. ·---------------- ===------------ Convcrs•ю n
,,(:11н1~іs :::.с==:-:-=-=-:::·==============================================ІІ
і'
pt1b1ic Віtтар1таgс Tolmagc(bytc[] апау)
{
tisiпg (vаг ms = ПС\\1 Мс111огуStгеа111(апау))
{
,,аг 1111age == пе"' Bitmt1plшage();
i111age. ВеgіпІпіt() ;
i111age.Cacl1eOptio11 = Bit111apCacheOption.O11Load;
i111age.Stгea111Souгce = 111s·
'
і 111age.Eпdlпit();
гetum image;
}
}
public byte[] ToByteAггay(Bit111apl111age ішаgе)
{
byte[] аггау;
JpegBit111apE11codeг епсоdег = пеw JpegBitшapEпcodeг() ;
e11codeг.Fгa111es.Add(Bit111apFгa111e.Cгeate(i111age)) ;
usiпg (МепюгуStгеа111111е111Stгеаш = пеw Меп10гуStгеа111())
{
eпcodeг.Save(шe111Stгea111);
array = 111e111Stгea111. ТоАІТау();
}
returп апау;
}
public oveпide st1·i11g ToStгiпg()
{
striпg ot1tput = So11gNш11e;
62
►
,t~2.'l)\l'Y. 22 \fJ(,0-12 01 17
1'\.'ІШП О\111)\11 ;
Фаіі.11 Logi11.xaшl
<\Vi11do,v x:Ck1ss="Music _ Playei·_PJ"Oject.Login"
xmlпs="l1ttp://scl1emas.micl'Osoft.co111/wi11fx/2006/xaml/presentation"
xmlпs:x="l1ttp://sc\1eiпas.пiicl'Osoft.com/winfx/2006/xaml"
xmlпs:d="l1ttp://sc\1emas.пiicl'Osoft.co111/expression/Ьlend/2008"
х111 lп s:шc="l1ttp:/ /sс\1е111аs.орепх111І fo г111ats.oгg/markup-
co1Пpatibi І ity/2006"
x111\пs:local="clг-11a111espace:Music_ РІауег_ Pгoject"
111c:Ig11orable="d"
ТіtІе="Логін/Увійти" Heiglit="563" \Vidt\1="400"
Backgгouпd="#FF 191919" Iпitialized="Wiпdow _Iпitialized"
ResizeMode="NoResize">
<Gгid>
<Label Сопtеnt="Логін" Boгizo11talAlig11111eпt="Left"
\TerticalAligпшent="Top" Mю·gin=" І 0,- 10,0,0" FoпtSize="36"
TextOptioпs.TextFoгшattingMode="Display" \\1idtl1="372"
HorizontalContentAI igшnent=" Сепtег"/>
<GroupBox Неаdеr="Лоrін/Увійти : " 1-:IoгizoпtalAlignment="Left"
Height=" 149" Margin=" 10,43,0,0" VегtісаІАІіgшлепt="Т ор" \\1idtl1="3 72"
Foreground="White" FontSize=" 16">
<Grid>
<Label Соntепt="Ім'я користувача:" Hoгizo11talAlig11111e11t="Left"
VerticalAlignment="Top" Магgіп="20, І 0,0,0" PoпtSize=" 16"/>
<ТехtВох x:Na111e="txtLogi11UseгNaшe"
1:forizontalAlignment="Left" Heigl1t="23" Техt\\1гпрріпg="\\Ігар" Text=""
63
4 ~2 . 'І)\І У. 22 І<J(,О - 12 01 18
\\·11 kаІЛІіg~ннсщ="Тор" \Vi1..ltl1-::" І tJ2" Margi11=" І 58, 18,0,0" rontSize=" 16"
i·:it,\111.k\,_. "1 "/,'
<Lat1cl Сонtспt=="І Іарощ,:" Hшizo11talЛlign111ent="Left"
~,:11·~і11="42 ,46 ,О,О" Vс11іса\ЛІіgтнснt="Тор" FoпtSize=" І б"/>
<Pass,voгdIЗox х: Namc="txtLoginPassword"
Jt1.1rizo11talдligпmcпt=="Left" Ve11icalA\ig11111e11t="Top" Margiп=" 158,52,0,0"
\\ttitl,="1 92" t=oпtSize==" 16" ТаЬІпdех="2"/>
<Buttoп x:Na111e="btnLogi11" Сопtеnt="Увійти"
Margi11=" 136,86 ,0,О" Ve11ica\Alig11шeпt="Top" Hoгizonta\Alignment="Left"
\\Іidtl1="74" ТаЬlпdех=="З" Click== 11 Bt11Logi11_C lick"/>
</Gгid>
</GюupBox>
<Labe\ Coпtent="Aбo" Horizonta\Alignment="Left"
Vertica\Aligпшeпt="Top" Margin="l О, 185,0,0" FontSize="Зб"
TextOptioпs.TextFoгшattingMode="Display" Widt\1="372"
Horizonta\ConteпtAligшne11t="Ce11te1·"/>
<GroupBox Неаdег="Створити користувача"
Horizonta\Alignшent="Left" Heigl1t=" 184" Maгgin=" І 0,230,0,0"
VerticalAlignшeпt="Top" \Vidtl1="372" Foгegгou11d="\V11ite" FoпtSize=" 16">
<Grid>
<Label Сопtепt="Ім'я користувача:" HoгizontalAligп111eпt="Le ft"
VerticalAlignmeпt="Top" Магgіп="25 , І 0,0,0" Fo11tSize=" 16"/>
<ГехtВох x:Na111c="txtNe,1/UseгNa111e"
HorizontalAlignment="Left" Heigl1t=1123" TextWгappiпg="'Nгap" Text=""
Vertica)Alignment="Top" Widt\1=" 192" Магgіп=" 158, 18,0,0" FoпtSizc=" 16"
TaЬindex="4"/>
<Label Сопtепt="Пароль:" HoгizontalAligп111e11t="Lef1"
Мargin="42,46,0,0" VerticalЛ\ig11111e11t="Top" FontSize=" 16"/>
64
4~2. tf)HY. 22 19(,0. 12 оІ 19
<...P~\SS\\\)І'\il\,,x x·N·,І1 11•'- "txtN
V , • " - , C\V f> ilSS\VUl't1 1"
]1(11i1t111talЛ 1Ї !J.П111спt =="Сс1\" Vс 11 іс:11 Лlі g11111c11t-="Top" Margi11 ==" 158,52,0,0"
\\1ti1\1.::: "І 9'.). " 1~•' )1,ts1·z~\ ,,;-_н І ()" ·1·а Ь1 щlсх=="5"/>
<--1- аЬсІ Сопt,с п t--"П овтор·п ь нароль:" ІІоп·z опtаІЛ 11· gnmen t-- "L е 111'1 t"
~ \:н·0,і11==" 20,82,О,О" \ ! et1 іса 1А 1і gптспt=="Т ор" Г-oпtSize=" 16"/>
<Pa's's \\тoгdl3 ох х: N a111e=="txtNe,vPasS\1/0l'd2"
HNizo11t31Лligmпeпt="LeH" VeгticalAlig11111e11t="Top" Maгgin=" 158,86,0,0"
\\'idt11==" 192" FoпtSize=" 1б " ТаЬlпdех=="б"/>
<Buttoп x:Name=="btпCгeateUseг" Сопtелt="Створити
1-ор11стувачз" Hoгizoпta1Aligпшeпt="Left" Veгtica\Alig11111e11t="Top" Width="99"
Margi11==" 126, 118,0,0" ТаЬІпdех="7" Click="BtпCгeateUseг Click"/>
</G1·id>
</GгoupBox>
<Label Сопtепt="Або" Hoгizo11ta!A\io11111e11t="Left"
о
VerticalAligпшeпt=••тop" Магgіп=" І 0,405,0,011 Fo11tSize="З6"
TextOptions.TextF01111atti11gMode="Display" Widtl1="3721
'
Horizontal CoпtentA 1і gпшепt==''Сеntег"/>
<G1·oupBox Неаdег="Увійти як гість" Hoгizo11ta!Alig11111ent="Left"
Height='170" Margiп=" 10,445,0,0" Ve1iicalAlig11111e11t="Top" Widt\1=11372"
Foreground='1\Vl1ite" FontSize=" І 611>
<Grid>
<Button x:Name="bt11Logi11AsGL1est" Сопtепt="Увійти як гість"
HorizontalAligшnent="Ceпter" Ve11ica!Alig11111eпt="Top" \\1idt11=" 160"
Мargjn="0,I 0,0,0" TabI11dex=118" Click="Bt11Logi11AsGt1est_C lick"/>
</Grid>
</GroupBox>
</Grid>
<Window .Resoшces>
<Borde1·GapMaskC011ve1ieг х: Кеу="Вогdс1-С1,1рМ яsk Соп,,егtег"/>
<Style TargetType=" {х:Туре Gгоt1рІ3ох} ">
65
4 ~ 2. 'І) \ 1У . 22 19(,0-12 О І 20
<-Scttcг РІ\)\) ,1.. "І)
~ \у- нн,k1Н111sІ1" Valш~·-" Blat:k 11/.>
, S('\t \.'І' РІ\)\)\."11 \ 1:-11 І) . І ' . .
J нJІ~ 1.:1· І l111.:k11css" VаІш: ..., "2"/>
, S'-'ttc1· Pt\)JI01y==" 1\-трІаtс">
, Scttct·. \ ! а Інс>
'-C'oпti·ol t'cmplatc Ta1·gctTypc=" {х:Турс Gr0t1pBox} ">
"-(iiii Sп.-ipsTolkviccPixcls="tп1e">
Gгitt.Colн11mDcfi11itio11s>
Colu11111Defi11itio11 Wicltl1="6"/>
<Colu11111Defi11itio11 \Vidtl1="Auto"/>
<Colu11111Defi11itio11 Widtl1="*"/>
<Colt111111Defiпitio11 Widtl1="6"/>
</Gi·id.Colu11111Defi11itio11s>
<Gгid.Ro,vDefinitioпs>
<Ro,vDefiпitioп Heigl1t="Auto"/>
<Rov.1Defiпition Heigi1t="Auto"/>
<RowDefiпitioп Heigi1t="*"/>
<Rov.1Defi11itioп Heiglit="б"/>
</Gгid.Row Definitioпs>
<Вогdег BoгdeгBгus]1="Tгa11sparent"
Border Т11kkпess=" {Te111p!ateBiпdi11g BoгdeгTliickness } "
Background=" {ТешрІаtеВіпdіпg Backgгouпd}" Gгid.ColuпшSpaп="4"
Grid.Column="0" ComerRadius="4" Gгid .Ro,v="l" G1·id .RowSpa11="З"/>
<Вогdег BoгdeгBГL1sl1="Aqua" BoгdeiТl1ickness=" І"
Grid.ColumnSpan="4" CorпcгRadius="4" Gгid.Ro,~1=" І" G1·id.Ro,vSpa11="З ">
<Boгder.OpacityMask>
<MultiBiпdiпg СопvегtегРага111еtе1="7 "
Converter=" {StaticResource BordeгGapMaskConve11eг} ">
<Віпdіпg Ele111e11tNa111e="Headeг"
Path="ActualWidth"/>
66
4~2. 'І)\ТУ. 221960- 120І 21
< ВінLІінg Pat\1-"Лctш1IWi(ltl1"
Rclati,·cSou1·cc=" {1 {c\at і,,сsош-сс Scl f'} "/-
"--Вi t1Lli11~ Patl1-"Лctш.1ll lcigl1t"
RclatiYCStнiгcc=" {t {c\:1t і,ісSщ11·сс Scl Г} "/>
</МнІtіВіщІінg>
</LЗoгticг.OpacityMnsk>
<ВогLісг ВОІ'dегВп1s\1=" {Te111plate8inding BorderBrush}"
н()rticгТІ1ickt1css=" {T e111plateBiпdiпg Boгdc1Tl1ick11ess}" CorпerRadius="З ">
<Вогdег B01·de1-Вн1sl1="Aqua" BordeгThickness=" І"
Ct1111erR a Lj i.u s-- "2"/>
</Boгdeг>
</В01·dег>
<Boгder x:Naшe="Header" Gгid.Colшnn=" І"
Ра dd1. 11g-"-"-"' , 1, 3 , О " G1 ·1·d •R o w= "О" Gп ·d .Rov.,Span="2">
<СопtепtРгеsепtег CoпteпtSouгce="Headeг"
RecogпizesAccessKey="Tгue" SпapsToDevicePixels=" {TeшplateBiпding
SnapsToDevicePixels} "/>
</Border>
<ContentPreseпteг Grid.ColuшпSpaп="2" Gгid.Coluшп=" 1"
Margin=" {TemplateBiпdiпg Padding}" Gгid.Row="2"
SnapsToDevicePixels=" {TemplateBiпdiпg SпapsToDevicePixels} "/>
</Grid>
</ControlТemplate>
</Setter.Value>
</Settcr>
</Style>
<SolidColorBrush x:Key="TextBox.Static.Boгdcг"
Color="#FFABAdBЗ "/>
<SolidColorBrusl1 х:Кеу="ТехtВох.МонsеО,,ег.ВогсІег"
Color="#FF7EB4EA "/>
67
4R2. 'l)tt·Y. 2219(10•12 01 22
<- o!i(K'oloi 1\ t\tsl, Х: Ксу-::." t ·схІ І )ох. 1:oct1 s. Во Г(Ісг"
__ ,,;. п:s69t)І :5" І'
(t11,,1• tr
<-Stylc Ті'Іt1!_ сtТурс==" { х:Турс ТсхІВох І">
<-Sctlct· Pюpct1y=="Backg1щ111ll" Valt1c=11 //П" l 919 l 9"/>
<-Scttcг Ргорс11у=="lЗ01·dс1-В1·нsІ1" Valt1c="IJlack"/>
<Scttc1· Ргорс11у="І-огсgгоtтd" Valt1e="Wl1ite"/>
<Sctteг Pгopc,1y="rзo1·tieгTl1ickncss " Value=" І "І>
<Scttcг Pгopeгty="Keyboai·dNavigatio11.TabNavigation"
\',1 !t1c="Noпe"/>
<Setteг Pгopeгty=="HoгizoпtalC011te11tAlig11111e11t" Value="Left"/>
<Setteг Pгopeгty="FocusVisualStyle" Valt1e="{ x:Null}" />
<Setteг Ргорегtу="АІІоwDгор" Value="t1·ue"/>
<Setteг Pгopeгty=="Scгo\IVie,veг.PanningMode"
\Ta\ue="Ve11icalFiгst"/>
<Setteг Pгopeгty=="Stylus.IsFlicksEпabled" Value="False"/>
<Setteг Ргорегtу=="Т e111plate">
<Setteг.Value>
<Contro!Teшplate TaгgetType==" {х :Туре TextBox} ">
<Вшdег BorderBгusl1=="Aqua" BoгdeгThickness=" І"
ComerRadius="4 ">
<Border.OpacityMask>
<MultiBi11di11g Со11vегtегРага 111еtе1="7"
Converter=" {StaticResouгce BoгdeгGapMaskCoпveгteг} ">
<Bi11di11g Ele111e11tNa111e="Headeг"
Path="ActualWidth"/>
<Віпdіпg Patl1= 11ActLІa l\Vidtl1"
RelativeSource="{ RelativeSouгce SelГ } "/>
<Вішііпg Patl1="Actt1alHeigl1t"
RelativeSource="{ RelativeSouгce Sclf J "/>
</Multi І3і1нІі11g>
68
23
4~2. 'І) \ І 'У . 221960-12 О І
/І \01·tlc1·.( )pacityMask>
Bш·(kt· х : Nатс-"lюнІс,·" BonlcrBrusl,=" {Tc111p1 '1 tcBinding
\3\)t·tici•B111sl1}" (\н,к-г1{ntіінs="4" І \oнkrТ\iickІІcss=" {Tc111platc1Jintli ng
\3t)І\ic1-Тl1ickпcss} " 1kкkgн)lll1ti=" {T cmplatc1Ji11tli11g І3ackgruL1n<.I }"
S11:ips1 . 1) ,yj('cPixcls="Tп1c">
t) ~ • •
<Scгol\Vic\vcr х:Nшпс="r AltT_C ontentf Iost"
1:\x\is:it11c="1a1sc" Ho1·i zoпta1Scгoll B.iгVisibi Ііtу="І І idden"
\'ci1ic:i1Scю1\l3aг\l isibi1ity="Hiddeп" Heig\1t="2 I" VeгticalAli gn111eлt="Bottom "/>
</Во1·dег>
</Вогdег>
<Сопtго\ТешрІаtе.Тгіggегs>
<т п.g gег Pгopeгty="IsEnabled" Value="fa І se" >
<Setter Pгoperty="Opacity" TaгgetName="border"
Value="0.56"/>
</Triggeг>
<Тгіggег Pгopeгty="IsMouseOveг" Value="tгue">
<Setter Property="Bo1·de1-Вгush" TaгgetName="bordeг"
Value=" {StaticResoшce TextBox.MouseOver.Boгder} "/>
</Triggeг>
<Tгigger Property="lsKeyboaгdFocL1 sed" Value="tгue">
<Setter Ргоре1іу="ВогdегВгus І1 " TaгgetName="boгdeг"
Va)ue=" {StaticResource TextBox.Focus.Boгdeг} "/>
</Triggeг>
</ContгolTemplate.Tгiggeгs>
</ControITemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<MuJtiТrigger>
<MultiTгigger.Coпditioпs>
69
•tR2.'l)~TY. 22 /ІН10 - 1 2 01 24
(\щLlitio11 Рюрс11y- "ls l11acti vcSckctio11І I igl1 І ig~itEnc1blecl"
' с Ol1L1 1·1 .1 011 Pt'opr1·ty="lsSclcctio11Лctivc" Valll(.:=І І,Са І se "/>
ІМ tІ lt iT1·iggcг.Co11Lli t iu11s>
<Scttcг Pi·opcгty="Sclcctio11Bн1sl1" ValL1c=" {D ynamicf{csource
{\ :J:iti~ Sy~tl.'mColoгs.l11acti,,cSclcctio11I ligl1ligl1tBгusl1Kcy}} "/>
</MultiTгiggcг>
</Style. Tгiggcгs>
</Style>
<Style Tat·getType=" {х:Туре Label} ">
<Setteг Ргорегtу="Fогеgюuпd" Value="wl1ite"/>
<Setteг Pгopeгty="Backgгoнnd" VаІне="Тгапsрагеnt11/>
<Setteг Pгopeгty="Paddi11g11 VаІне=11 5 11/>
11
<Setteг Pгopeгty="Hoгizoпta1CoпteпtAlignment" Value=11Left />
<Sette1· Pгope1·ty=11VeгticaJC011te11tAlig11111e11t" Value=11Top"/>
<Setteг Ргоре11у=11Те111рІаtе">
<Setteг.Value>
<СоntгоПешрІаtе TaгgetType=11
{ х:Туре Label}1 1>
<Вогdег BordeгBГLІs11=" {TemplateBindiпg ВогdегВгt1s\1 } 11
BorderThickness=" {TemplateBindiпg BoгdeгT\1ick11ess} 11
Background=" {TemplateBiпding Backgгouпd } 11 Paddi11g=11 {TemplateBiпdiпg
Padding}" SnapsT0DevicePixels=11tгue">
<СопtепtРгеsепtег Hoгizoпta\Alig11111e11t=11 {Te111p \ate8iпdi11g
HorizontalContentA]igшnent} 11 Recog11i zesAccessKey=11Tгue11
SnapsToDevicePixe]s=" {TemplateBiпdiпg S11apsT0De,1icePixels}"
VerticalAlignment=" {TemplateBiпdiпg Ve1·ticalC011te11tA\ig11111e11t}" />
</Border>
<Contгo1Тemp1ate.Tгiggeгs>
<Тrigger Propeгty=11 l sEш1bled 11 \Іa\ue=11 false">
70
4 R2.Ч)\І . 221%0-1201 25
Sc11c1· l'1'•' 11) 1.•: 1·1У -"І ·' orcgrourкІ "
,,~J11l, -· "{t)умтісt{бІJ\І\'СС {x· ···S t·, І1.1 с S' stc111( 'olors.Oray'f'cxШrushKcy}}" / >
/l'i-iggc1·-
<.../Coнtгo\Tcmplatc.'1 ·1 ·iggc1·s>
</СопtгоІТсшрІаtе>
</Scttc1·.Valt1c>
</Scttcг>
</Stylc>
<S\yle TaгgetType=" {х:Туре PasswordBox} ">
<Setteг Pгopei1y="PasswoгdChar" Value=" • "/>
<Setteг Pгope1·ty="Background" Value="#FFl 91919"/>
<Setter Pгope11y="BoгdeгBrusl1" Value="B]ack"/>
<Setteг Pгopeгty="Foгeground" Value="White"/>
<Setteг Prope11y="BoгdeгTl1ickness" Value=" І"/>
<Setteг Propeгty="KeyboaгdNavigation. TabNavigatioп"
Value="Noпe"/>
<Setteг Propeгty="Hoгizonta!ContentAI ignmeпt" Value="Left"/>
<Setter Propeгty="FocusVisualStyle" Value="{ x:Null} "/>
<Sette1· Prope11y="AJlowDrop" Value="tгue"/>
<Setter Property="ScгolJViewer.Pa1111i11gMode"
Value="VerticalFirst"/>
<Setter Property="Stylus.IsFlicksEnabled" ValLJe="False"/>
<Setter Property="Teшplate">
<Setter. Value>
<ControПeшplate TargetType=" {х :Туре Pass,~1oгdBox } ">
<Border BorderB1·usl1="Aqua" BoгdeгTl1ickпess=" І"
ComerRadi us="4 ">
<Border.OpacityMask>
<MultiВinding ConverterPaгa111ete1='7'
Converter=" {StaticResource BorderGapMaskCoпve11eг} ">
71
26
4R 2.'І)\І ' . 22 J!J(,0-12 01
..- Ві~нІі11g Elc11н.:11tNa111c-= "l lcжJcr"
<Ві1кіі11g Patl1="Лctt1alWidth"
\·~Sо\ІІ\~с==" {l {clativeSouгcc Scl f} "/>
~1.·1:ІІІ
<Biпdi11g Patl1="Лctt1a\Height"
. ·сSонгсс==" {l {clati,1eSoшce Sel f} "/>
Rt\:ill'
</MultiBiпdiпg>
</Boгde1·.OpacityMask>
<Вогdег х:Nате="Ьогdег" BoгderBrush=" {TemplateBiпding
вordei-Вrusl1}" ComeгRadius="4" BoгdeгThickлess=" {TemplateBinding
вorderTl1ickвess}" Backgгouпd=" {ТешрІаtеВіпdіпg Backgгound} "
snapsToDe,,icePixels="True">
<ScгollVieweг x:Na111e="PART ContentHost"
focusable=="false" HorizoпtalScгollBaгVisibility="Hidden"
VerticaІScгollBaгVisibility="H і ddeп "/>
</Bordeг>
</Boгder>
<ControlТeшplate.Tгiggeгs>
<T1·igger Ргорегtу="ІsЕпаЬІеd" Value="false">
<Setteг Рюрегtу="Орасіtу" TaгgetName="boгder"
Value=="0.56"/>
</Тrigger>
<Triggeг Pгopeгty="IsMouseOveг" Valнe="tгue">
<Setteг Рrорегtу="І3огdегВгt1sІ1" TaгgetName="boгdeг"
Value=" {StaticResource ТехtВох.Моt1sеО,1ег.Воніег} "/>
</Тriggeг>
<Тrigger Pгopeгty="l sKeyboaгdFocнsed" Value="tгue">
<Setter Рюре1·tу="ВопіегВп1sІ1 11 TaгgetNa111e="border"
Value=" {StaticResource TextBox.Foct1s.Boгcteг} "/>
<!Гrigger>
72
►
4R2,Ч)\')'У . 2219(>0-1201 27
</Co"t1·0\Tc111platc.Tгi~gc1·s>
</CoнtгolTcmplatc>
</Scttct·. Vt llнc
</Scttcг>
<Stylc.T1·iggc1·s>
<МнІtіТгіggсг>
<MнltiT1·iggeг.Coпditioпs>
<Сонdіtіоп Pгopeгty="lslпactiveSelectioлHighlightEnabled"
\ a\ue==="tt1.1e"/>
<Coнditio11 Pгopeгty="IsSelectionActive" Value="false"/>
</MнltiTгiggeг.Coпditioпs>
<Setteг Pгopeгty="Selectio11Bгusl1" Value=" {DynamicResouгce
{x:Static SystemColoгs.IпactiveSelectioпHighligl1tBrushKey}} "/>
</MultiТгiggeг>
</Style.T1·iggeгs>
</Style>
<Style x:Key="FocusVisual">
<Setteг Ргорегtу="СопtгоІ.Тешрlаtе">
<Sette1".Valt1e>
<СопtгоІТешрІаtе>
<Rectaпgle Магgіп="2" S11apsT0DevicePixels="tГL1e"
Stroke=" {DynaшicResoнгce {x :Static Syste111Coloгs.Contгo1ТextBгushKey}}"
StrokeThickness=" l" StгokeDasl1Aпay=" І 2"/>
</СопtгоІТешрІаtе>
</Setter.Value>
</Setteг>
</Style>
<SolidColoгlЗп1sl1 x:Key="Bt1ttoп.Static.Backgгou11d" Co\01="8\nck"/>
<SolidCol01·Bп1s\1 x:Key="Bt11to11.Static.Boгdeг" СоІог="ВІ<1сk"/>
73
482 ,ЧJПУ . 22 19(,0· 12 оІ 28
<-Soli<tColo1-Вн1slt х ·· Ксу--· ''13 t1ttu11. м oшн.:Ovcr. lJackgrolІП d"
=''#1+ВЕЕ6І •'ІУ'/>
(\)Іt)І · ' '
<Sl)\ itfC оІогІ ~шsli х : Kcy="Ut1ttu11.M ouscOvcr. Во гсІсг"
.-''#t -'t :зс1 1 :в t "/>
(\ )\()1 -
SolitfColtнHн,slt x:Kcy="Button.Prcsscd.Hackground"
.-''#Н:с4 и,5 \;б"/>
c ok11 -
<SolidColoгBгusl1 x:Key="Bнttoп .Pгessed.Border"
colt)l="#FI:2cб28 В"/>
<SolidColoгBгusl1 x:Key="Bнttoп . Di sabled.Backg1·ound"
Coloi="#Fl:F4F41Ч"/>
<SolidColoгBгus\1 x :Key="Buttoп .Disabled.Boгder"
Colot="#FFADB2B5"/>
<SolidCotoгBгusl1 x:Key="Button .Disabled . Foregгound"
Coloi="#FF838383 "/>
<Style ТагgеtТуре=" {х:Туре Buttoп } ">
<SetteI Pгopeгty="FocusVisualStyle" Value=" { StaticResouгce
focus Visual}" />
<Setteг Pгopeгty="Backgгouпd" Value=" { StaticResouгce
Button.Static.Backgгound} "/>
<Setteг Ргорегtу="ВогdегВГL1s1l" \Іа ІL1е=" { StaticResouгce
Buttoп.Static.Boгde1·} "/>
<Setter Ргорегtу="F oгegгoLmd" Valнe="\Vl1 ite"/>
<Setteг Ргорегtу="ВогdегТІ1ісkпеss" Va lLJe=" 1" />
<Setter Propeгty="HoгizoпtalCoпteпtAligпmeпt" Valt1e="Ce11teг"/>
<Setter Propeгty="Veгtica lConteпtA ligпmeпt" ValLJe="Centeг"/>
<Setteг Pгope11y="Paddiпg" Value=" І"/>
<Settcг Ргорегtу="Те111рІаtе">
<Setter.Value>
<Coпtгo!Te111plate TaгgetType=" {х:Туре Bt1t to11}" >
74
4~2 - 'І)\І У.22 1<Н,О- 1 2 01 29
В1..тІс,· ВонІс1·Вп1sІ1 -= "Л<1L1а" BortlcrThickness=" І"
<Bo1·Llc1·.0pacityMask>
<Mt1\tiUi11ding Co11vcrtcrParameter="7"
(\)11,-с11с1-==" {S tat ісІ{сsошсс IЗшdcгGapMaskConverter} ">
<Віпdіпg Ele111c11tName=11Header"
- "Actual\Vidt\1"/>
раІ 11-
<Віпdіпg Patl1=11Actt1alWidth 11
Relati,,eSouгce=" {R elat iveSoшce Sel f} 11;>
<Bi11di11g Patl1=11ActualHeight11
RelativeSouгce=" {RelativeSoшce Se\f} 11/>
</MultiBiпding>
</Boгder.OpacityMask>
<Вогdег x:Na111e=11boгder11 CornerRadius="4"
вorde1·Brusl1=" {ТешрІаtеВіпdіпg ВогdегВгusІ1} 11
11
вorderTl1ickness= {ТешрІаtеВіпdіпg BoгdeгTl1ickпess} 11
вackground=" {Te111plateBindi11g Backgгouпd} 11 SnapsToDevicePixels="true">
<Boгder BoгderBгush="Aqua" BoгdeгThickness=" І"
ComerRadius=11211>
<СопtепtРгеsепtег x :Naшe="contentPгeseпteг"
focusable="False11 Hoгizo11ta]Aligп111e11t=" {TemplateBindiпg
HorizontalConteпtAlig11111eпt}" Магgі11=11 {Te111plateBinding Padding} "
RecognizesAccessKey="Tп1e" SпapsT0De,1 icePixels=11 {ТешрІаtеВіпdіпg
SnapsToDevicePixels} 11 VeгticaJA]igп111eпt=" {Te111pJateBi11di11g
VerticalContentAlignшeпt} "/>
</Вогdег>
</Во1·dег>
</ВопІег>
<CoпtгolTcmplnt e. Tгiggeгs>
<Tгiggl'г Pгopcгty="l sDefat1lt ed" \ІаІuе="tн1 е">
75
г
1І Х2. 1 1 ) \ І'У . 221% 0-12 О І зо
s~•11c1· l't-opcнy-" 13oпlc1·І3rl1 s l1 " · 1 ·aгgctNamc-="bor<.lcr"
\':1lнс=" {1 )у11:1111і\.'І{сsош·сс І x:Slatic Systc111(olo1·s. l ligl1\igl1Шrl1 s ~1 Ксу}}"/,,,.
</T1·iggc1·>
<I't-iggcl' Pюpcr·ty="lsMouscOvcr" Value="true"..>
<Scttcr· Pгoper·ty="Backgrouncl" TargetName="border"
\ ' ~ 1\tc=" {S tat icl{csollГce ilt1tto11.MouscOve1·.B ackground}" />
<Sctteг Pюpeгty="BorclerBrush" TargetName="border"
\ 7altte=" {Staticl{esouгce Buttoп.MouseOveг.Boгdeг} "/>
</Т гі gge1·>
<Тгіggег Pгopeгty="IsPгessed" Value="true">
<Setteг Pгope11y="Backgгou11d" TargetName="border"
\ 'alue=" {StaticResouгce Buttoп.Pгessed.Backgгound} "/>
<Setteг Propeгty="BorderBrush" TargetName="border"
\ 1a lue=" {S taticResouгce Button.Pressed.Boгder} "/>
</Тгіggе1·>
<Triggeг Property="lsEпabled" Value="false">
<Setteг Property="Backgгouпd" TargetNa111e="border"
Va]ue=" {StaticResouгce Button.Disabled.Backgгouпd} "/>
<Sette1· Ргорегtу="Во1·dегВгusІ111 TargetNa111e="boгder"
\ 1a]ue=" {StaticResource Button .Disabled.Boгdeг} "/>
<Setteг Pгope1iy="TextEle111eпt.Foгegгouпd"
TargetNaшe="coпteпtPгeseпteг" Value=" {StaticResoL1Гce
Button.Disabled.Foгegгouпd} "/>
</Тгіggег>
</Contгo!Template.Tгiggeгs>
</Coпtl'O!Template>
</Setter. Уа! ue>
</Scttcr>
</Style>
</Wj11dow.Resoшces>
76
4Н2.'І)\ТУ . 22 !<)(,0-12 UI 31
Ф:1ііл МаІ11\,Vі1нІо,v.хашІ
'-\\?i 1нit)\V x:Class="Mt1sic _Playc1·_Pп_>jcct . Mair1 Wi n<-low"
x111\11s="l1ttp://sclю11as.111icюsofl.co111/wi11fx/2006/xaml/presentation"
:x111І11s:x="l1ttp ://scl1c1ш1s . 111icl'Osoft.com/winfx/2006/xaml"
x111l11s:d="llttp://scl1e111as.111icгosof1.com/expгession/blend/2008"
х 111 І пs :те= "11ttp :// scl1emas.opeпx111 І foпnats.org/marku р-
(\Н11J">ЗІ іЬі lity/2006"
хшІ11s: І оса l="clг-11a111espace:M usic _ Player_ Project"
шс:ІgпогаЬІе="d"
Title="Fla111eMusic" Heig\11=11470" Widtl1="800"
Backgгouпd="#FF272727" Foгegгou11d="\V\1ite"
\\7i11do\\1StartupLocation="CeпteгSc1·ee11" ResizeMode="NoResize"
Jcoп="uiгesources/default.pпg">
<Grid OpacityMask="Black ">
<Grid.Effect>
<DropSl1adowEffect Sl1ado,1/Depth="I" Opacity="0.75"/>
</Grid.Effe ct>
<Grid Hшizonta\Aligшлeпt="Left" Heigl1t="55" Maгgin="0,376,0,0"
\TeJ1jcaIAlign111ent="Top" Widt\1=11784" Backgгouпd="#FF І 91919">
<Grid. Со] umп Defiпi t іопs>
<ColumnDefiпitioп \Vidtl1="*" />
<Со]шnпDеfіпіtіоп \Vidtl1="285" />
<Со]шnпDеfіпіtіоп \~fidt\1="* 11 />
</Grid.ColumnDefiпiti опs>
<Border Grid.Coluпш=" І'' BoгdeгBгus\1="8\ack" BoгdeгT\1ickпess="2 "
ComerR.adius="24 ">
<Border G1·id.Colш1111=" І" Boгcie1'81'L1s\1="Aqua"
BorderThickness="2" CorneгRaditrs="22 " >
<Grid Widtl1=11276" І ki~l11="55" Магgіп="О,-4,0,0">
77
4 Х2.'І)\І . 22 19(10-1201 32
<(,1·itH 'оІ\1111111 >cti11itio11s,
СоІш1111Іkfі11іtіш1 \Vitltl1 =="*" />
<Colш1111lkfi11itio11 \Viclth=="*" />
<Colш1111l)cfi11itio11 Wiclt\1=="*" />
<Colu11111Dcfi11itio11 WicI01=="*" />
<Colu11111Dcfi11itio11 \Vidtl1=="*" />
</Gгid.Colu11111Defi11itio11s>
<Buttoп Na111e="bt11First" Click="BtnFirst_C lick" Height="5 l"
Mnrgiп="O О О О" Gгіd .СоІш1111="О" Backg1·ou11d="T1·ansparent"
в~1гdегВ111sl1="Тга11sра1·епt" BoгdeгTl1ickпess=" І" Style=" {D ynamicResource
~ tediaBTNSty\eEdgeLeft} ">
<StackPanel>
<Ішаgе Souгce="uiгesources/first.png" Stretch="Uпiform"
Maro-in="O -2 О O"></Imaoe>
. .::, ' ' ' ь
</StackPaпel>
</Buttoп>
<Buttoп Name="btnPrev" Click="BtnPгev _ Click" Heigl1t="5 l"
Margin="O О О О" Gгid.Column=" І" Backgrouпd="T1·anspaгe11t"
BorderBrusl1="Tгa11spaгeпt" BшderTI1ick11ess=" І" Style=" {DyпamicResoш·ce
MediaBTNStyle} ">
<StackPaпel>
<lmage Souгce="t1iгesoшces/pгev.p11g" Stгetcl1="Unifoпn"
.Мargin="O -2 О O"></lmage>
' ' '
</StackPaпel>
</Buttoп>
<Buttoп Na111e="bt11Play" Click="BtпPlny_C lick" l leiglit="5 I"
Margin="O О О О" Grid.Colu11111="2" Backgюt111d="T1·a11 spa 1·eпt"
ВorderBrusJ1=11Transpare11t" BoгderTl1ick11ess=" І" Style=" {D y11a 111i cResoшce
MediaBТNStyJc} ">
<StackPaпel>
78
4Х2 . 'І)\І У . 22 1!)(10-12 01 33
<... \ma~c Sоштс--"нін.:sошссs/рІау. р11g" Strctc~1-=="Un1-~ o r m"
. 2\ 0 , o "::--<tlmagc>
•·о
,p1'fi,,.-- . <-/Stack Pai1cl ..
</Вl1tto11>
<Bt1ttot1 №ш1c="bt11Ncxt" Click="Пt11Next_ Click" ffeight=="S I"
. _,,0 о О О" Gгі(t.Со1шн11="З" B!1ckgгour1d='T1·ar1sparent"
,111-
~ІіJІ'~ - 1,==="Тга11sрагс11t" Вог(ісгТІ1ісkпеss=" \" Style=" {DynamicResource
j('l·J3J11S
,,ri }1 11 1
~,,,1,.~ oтNStyle >
<StackPaпel>
<Image Soшce="uiгesouгces/пext.png" St1·etch=="Uniform"
. _,,0 -2 О О"></Ішаgе>
~Іас~, 11- ' ' '
</StackPaпel>
</Buttoп>
<Buttoп Na111e="bt11Last" Click="BtпLast Click" He1·g І1 t= "51 "
. =="0 О О О" Gгid.Colu11111="4" Backgгound="Tгaпsparent"
мargin
d rвrusl1="Traпspaгeпt" BoгdeгTI1ick11ess=" І" Style=" {DynamicResouгce
воr е
MediaBTNStyleEdgeRigl1t} ">
<StackPaпel>
<Image Souгce='\1iгesouгces/last.pпg" Stгetch="Unifoгш"
Margin=="0,-2,0,0"></Iшage>
</StackPaпel>
</Buttoп>
</Grid>
</Border>
</Border>
<Slider x:Name="seekbaг" Hoгizo11talAlig11111e11t="Left"
Margin=116,l8,0,0" Widtl1="235" Style=" {DупатісІ~еsошсе SlideгStyle}"
Height="18" VerticalAlignшent="Top"
PreviewMouseDown="Seekbar Mot1seD()\,1п"
Pre v·i ewMouseUp="Seekbar MouseUp"/>
79
4~2. ' І) ~ І 'У . 221f J(,0· 12 О І 33
<t ,al)cl Namc- "1\)IS011gTi111c" Co11tcr1t="O:OO"
\tt'1-j1,,,111al ЛІіg~ннснt --.: "І ,сН" Мш·gін-" І 0 ,0,О ,О" Vc rtica lЛ І ignment="Top"
1-., ,1\,:~ m )t111,i-="\Vl1itc"/>
<Lal)c\ Nшнc="lblSoнglїmcTotal" Content="0:00"
1 -
І 11JI 1· zo11talЛligнmeнt="Lcft" Mai·gi11="206 О О О" VerticalAlignment="Top"
, ' ' '
. -cgi·oшкi="\V1,ite"/>
\-01
<СІ,есkВох x:Name="cbLoopPlaylist" Content="Loop Playlist"
foi1tSize=" 14" Gгid.Co1umп="6" Hoгizoпta1Alignment="Left"
магgін=" 130,20,0, 18" Foгegюuпd="Wl,ite"
ci,ecked="CbLoopPlayl ist_C l1eckedCl,anged 11
uнc11ecked="CbLoopPlaylist_C l1eckedCI1anged"/>
</Gгid>
<Gгid HoгizoпtalAlignment="Left" Height="40"
Vei1icalAligшпeпt="Top" Widtl1="784" Backgюund="#FFI 91919">
<Gгid.ColuшnDefiпitions>
<Colu11111Defiпition Widtl1="*" />
<ColuшnDefinition Widtl1="40" />
</Gгid.ColumnDefinitions>
<TextBlock Text=" {Віпdіпg UseгName, StгiпgFom1at='\Velco111e,
{О}'}" Магgіп=" І 0 ,0,0 ,О" Heigl1t="20" FontSize=" 18"/>
<BLІttoп Name="bt11I111po1i" Click="Btпlшpoгt_C lick" Maгgin="O О О
О" Grid.Co1uпш="2" Backgгouпd="Tгaпsparent" Boгdeг8гL1sh="Tп1nspaгent"
BorderT11ickпess=" 1" Style=" {DyпamicResouгce MediaBTNStyle} ">
<StackPaпel>
<1mage Souгce="uiгesouгces/impoгt.pпg" Stгetcl1="Unifoгm"
Height="25" Widt\1="25 "/>
</StackPaпel>
</Bt1ttoп>
</Gгid>
<Gгі(і>
80
34
4Н2.Ч)\ТУ. 22 \(J(,0-12 01
<-t J11if\HШO1·itt Colш11i,s="S" Мш-gіІІ ="5 ,О">
<-l.-1·a111c,vo1·kE lc111c11t х:Nшнс-"с І"/>
</U11i І'-н111G1· іtІ >
<-ТаЬСонtгоІ x :Nш11c="111c11t1" l lo 1· izo11talЛlig1нncnt="Left"
11cigl1t=="326" Vc11ic.1IЛlig11111c11t="Top" Widtl1="627" Margin=" І 0,45,0,0"
., QІ\.)tlllti="#IT3123CЗC" lЗoгdeгТ11ick11css=" І" BoгderBrush=" Black"
на\,"~
• , 1,i\)tlll(i="\\111ite" Paddiпg="0">
)·()1\::;-
<ТаЬ ІtсІП Неаdег="LіЬгш·у" Heigl1t="20" Widtl1=" {Binding
tJc111c11tNa111e=c І , Patl1=Actua\Widtl1}" Padding="0,0,0,0">
<Gгid Магgіп="О,0,0,0" Widtl,="625">
<Patl1 Fill="#FF l 9 l 919" Maгgin="0 ,-1 ,0,0" Stroke="Black"
Data=="FI М 0,0 L 625,0 625,20 І 5,20 0,0" StгokeTl1ickness=" 1" >
<Path.Effect>
<DгopSl1adowEffect Diгection="225" BlurRadius="З"
</Patl1.Effect>
</Path>
<Label Content="Пoшyк:" Foгegгouпd="White" Margin="435,-
5,0,0" VerticalAlignment="Top" Hoгizonta!Aligп111eпt="Left"/>
<TextBox x:Na111e="t xtSeaгcl1" BoгdeгBгush="Black"
foreground="White" Backgгound="#FFЗEЗCЗC" Магgіп="480,-І ,О,О" WidtЬ=" 130"
Height="20" VerticalAlignшent="Top" Hoгizo11ta lA li g11111e11t="Left"
TextChanged="TxtSeai·c11_ Тех tCl1aпged ">
</TextBox>
<ListView x:Name="LibгaгyLi stV iew"
HorirontalAJignment="Left" Heigl1t="286" Veгti ca lAligпшeпt='Top" Width="625"
Мargin="J ,22,0,0" Backgrouпd="Tгaпspaгeпt" BoгdeгBгL1sl1="Black"
ВorderThickness="O" Foregюu11d="\Vl1ite">
<lte111sC011tгol . lt emsPn11el>
<Ite111sra11e1Тe111pl[11 C>
81
4Н2. 1 1)~ І 'У . 22 1< J(,0-12 О І 36
<-U11іІ(1ПН( ігіtІ ( ' о\ш1111~;-="(,"
\t<11-jzoнt:tl Л ligпmcнt="St 1-ctc\1" \Yit!tl1 ·-=11(10011 У c1·t ісаІ Л І ig1нr1cnt="Top"/>
</ltc111sPa11c\Tc111platc>
</ttc111sC011tгol. ltc111s Ра11сІ>
<List V ic,v. ltc111Tc111platc>
<DataTc111p\ate>
<CoпteпtC011tl'01
Mt1uscDoob1cClick="SoпgStackPaпel_Mot1seDoubleClick">
<Stack РапеІ О1·іепtаtіоп="УегtісаІ"
\lertica\Aligпшeпt="Stгetcl1" Hoгizoпta!Aligшпeпt="Stгetcl1" Widtl1="95"
Heigl1t=" 125">
<Image Souгce=" {Віпdіпg ImageData}"
\\Іidtl1="90" Heigl1t="90" НогіzопtаІАІ іgпmепt="Сепtег" Ye1iica!Alignment="Top"
Stretcl1="U11i fогш ">
</Image>
<TextВlock Text=" {Віпdіпg SoпgName}"
Width="90" Heigl1t="З0" Hoгizoпta!Aligпment="Centeг"
VerticaIAligпmeлt="Bottoш" FoпtSize=" 11" TextWгappiпg="Wгap\1/itl1Ove1·f1ow"
TextTrimming= "Cl1aгacte1·El І і psi s" />
<St-ackPanel.CoпtextMeпu>
<CoпtextMenu Backgгouпd="#FF І 919 І 9"
ВorderBrush="Black" Foгegгouпd="\~1J1ite">
<Menulteш Неаdег="Відтворити"
· Click="MenultemJ>laySoпg_C lick" >
<Meпuitem .lcoп>
<fm age Souгce="uiгesouгces/pl:1y.p11g"/>
</МепuІtе111.Ісоп>
</Menultem>
<Me11t1ltem Неаdег="Додат11 до сп1ІСІ<у
ВідтворенНJІ" Click="Me1шlte111Л,l(IТ0Playlist_C lick">
82
4~ 2. 'І ) (Т . 22 1960-12 О І 36
<-М c11t1 І tc111. lco11>
-- І111а g, Soшcc-''L1ir·csoLІГCCSla<.kl . png"/>
.- ;м Cl1tІ ltc111 . Ісоп>
/Мс1н1Іtс111->
<Mc11t1ltc111 І Іс,кІсr=" І'с;щ 1 увати пі сню"
CliiJ=="M<.'tН11tcm 'сtЛІЬшнЛгt_ C'lick">
<Mc1шltc111 . lcon>
<І 1паgс Solll'ce="uiresources/add.png"/>
</Menulte111.Icon>
</Meпulterп>
<Meпulterп Неаdег="Відкрийте
розташування файлу" C\ick=="Me11нlte1110pe11Fil eLocatio11_C lick">
</Me11ulte111>
<Me11ulte111 Неаdег="Видалити пісню"
CІick="Me11ulte111DeleteSoпg_ Click">
</Me11ulte111>
</CoпtextMeнu>
</StackPaпel .ContextMeпu>
</StackPanel>
</СопtепtСопtгоІ>
</DataTe111plate>
</ListView.Ite111Te111plate>
</ListView>
</Grid>
</ТаЬІtеш>
<ТаЬІtеш Неаdег="Списки відтворення" Heigl1t=="20"
Width=" {Binding EleшentNa111e=cl , Patl1=Actual\\lidtl1}" >
<Grid Backgгouпd="#FFЗEЗCЗC">
<Label Сопtепt="Буде додшю" Foгegгoш1d="Wl1ite"
Horizo11t<1IAlig11111e11t="Ceпteг" Veгtica\Alig11111e111="Ce11t e,г"/>
83
37
<-. l 'a\)ltciн 1k a(\c1· -" І І а.11,1111, 11а 1111я " l lcigl1 t-="20" Wiclth=" f Biпcl ing
1 . 1 ~,111~1,tNaтc-c 11P at1,-=Лctшil\Vk\tl, } ">
<--Ci1·iLt Backgгot1щ\="f/П·'J ЕЗСЗС">
<СаЬсІ Сопtс11t=" Бу;\с J\о;щ1ю" r:oregгour1cl="White"
1! t ,гi1oot:1 l Л ligнmcпt=''Ccпtcг" У сгt і са І Л Іі g11111e11t="Ccnter"/>
</Gгid>
</Tablteш>
</ТаЬСопtгоl>
</Gгid>
<Slideг x:Na111e="SlideгVolu111e" HorizontalAlignment="Left"
\'ertica1Aligпшeпt="Top" Магgіп="535 ,395 ,О,Q'' Width=" 1О О " Maxi111um=" І ОО"
I.,argeC\1aпge="5" S111al\C\1aпge=" І" Yalue="50"
\TaJueC\1a11ged="SlideгY 0Iu111e_ Уа І ueChaпged"/>
<Patl1 Stгoke="Black" Fill="#FF l91919" Data="Fl М 1,0 L 145,0
145,325 35,325 35,150 l ,J ОО І ,О" Maгgin="0,45 ,0,Q'' HorizontalAligшnent="Right"
VerticalAlignment="Top">
<Patl1.Effect>
<DгopSl1adowEffect SI1ado,,.,Depth="O.OI" BluгRadius="2"/>
</Path.Effect>
</Path>
<StackPaпel Огіепtаtіоп="Уегtі саІ " VeгticalAlignmeпt="Top"
HorizontalAlignment="Right" \Vidth="95" Heigl1t=" 125" Maгgin="0 ,60,25 ,0">
<lmage x:Na111c="No,,., Playi11glmage" Widtl1="90" Heigl1t="90"
Мargin="0,0,0,0" HorizoпtalA lig11111eпt="Ceпteг" Veгtica lAlig111пeпt="Top"
Stretch="Uni fo1·m" >
</lmage>
84
4R2.ЧJt І . 221( J(,0-12 О І 38
.... тс~\Н\осk х :Nшнс-="№)\ РІа i11gTcxt" \Vklt11="<J0'' l lcight="ЗU"
11(,11· 7 t)Ht:'11Лtigiннcllt-"Ccнtc1·" VcгticalЛ1i1111111c11t -="Botto1n" 1:ontSizc=" 11 ''
о
,·c:,t\\ г:'ІрРінg="\\іп~р \Vit t1Ovc1·flo\.v" TcxtT1·it ntni ng=" l1aracterEIІ і psis"/,,,.
<. . iSt.ick Р.шсІ>
<.Jj~tBox x:Na111c="lstUpcomiпg"
scгol1Vic\\·cг.Hoгizoпta1Scгol\BaгVisibility="Disabled" Height=" 183"
м:1i·gi11="0, 185,4 О" Ve11ica\Aligп111ent="Top" Backgгound="#FFЗEЗCЗC"
вoi·dc1·1 3 гus 11- -"В1 ас k" Г· oгegгouпd="W\1ite" Focusable="False"
нoгizo11talAlig11111eпt="Rigl1t" Widtl1=" І 05">
<ListBox .lte111CoпtaiпeгStyle>
<Style TaгgetType=" {х :Туре ListBoxltem}" >
<Setteг Pгope11y="Focusable" Value="False"/>
</Style>
</ListBox .Ite111ContaiпeгStyle>
<ListBox.Ite111Te111plate>
<DataTe111plate>
<TextВ1ock Text=" {Biпding Patl1=Coпtent,
RelativeSouгce= {RelativeSoшce FindAncestoг, АпсеstогТуре= {х :Туре
ListBoxlteш}}}" TextTгiш111ing="ChaгacteгEllipsis">
</TextBlock>
</DataTe111plate>
</ListBox.JteшTeшplate>
</ListBox>
<Label Сопtепt="МАЙБУТНІ" Ve1·ticalAlig11111e11t="Top"
HorizontalAlignment="Rig\1t" Магgіп="О ,240,70,0" Foгegгouпd="\Vhite"
RenderTransfom1Oгigi11="0.5,0.5" FoпtSize="20">
<1-аЬеІ . Rепdе1-Тгапsfо1111>
<RotateTгa11sfo1111 Angle="90"/>
</Lal1el. Rепdе1-Тпшsfо1111>
</1.аЬеІ>
85
Buta n • І І
Nв1mР.:::~~м
Іе РІ Іі "
Horiz nt ІАІі
._ idth n І " І"Іш:к v1rnu1~,.,a
РІ уІ1
86
►
~1 у-111 Lf 1111 іі 11 JJOГl1 Л НА 'І
І 11стr) ІШЇЯ І\Щ:ЧІСТ) В,111,1
4Ю.ЧДТУ. 2_1960·-! 01
Л11с1і115
Гоt улоu Я . В .
Кrрів1111к : \' Ї ,'(КОКН ІJІ :,} Л . Л.
Черкас,, , 2022
4H2.'l)t І . 22 l 'J(10-J4 О І 2
<.<. 1 "НРІІІІІіі 11.11с( р)) ян.п яс (о(Їоrо rrpor pa~11tc 'Jaбc·нre 1 rc11mr для
1'\'\''l'.1 ':\,Ш) н.н111я ay;tio фаі!лів . Ві11 11,щас юж. 11111 іс 11, rrror~a riarн аул іо файли у
рі·шю; ф,,рм :нах 1а1<11х як . тр.\ ,\V.I V, . ті,Іі ·1;1 i,rrrri . J (сН ·Jнстосуrrок також
\1\\1t'І111УС Ж111'1Я І(\)f)ІІС1JН ,\ІІЇІІ '!.111)\ЯІ<ІІ JtO}{,\I KOBOMY фу111щіо 11 алу. f J ід час
п1 1 "''f'ІІ(П111ня ·~ас1·щ·у111<у1 окрі~, 111ю, paвarrmr ;1уліо файл ін, корис·rува•1 і мають
-~, Іl' І:' 1чю1ю,111т11 ба-юні фунюtії ксрува1111я ay;iio: 1ю11и можуть видалити
ІІ\.',16\і,1111111 ау,11,іо, або, 11ав11аю1 ;\одати iioro у бібліотеку, виконати пошук аудіо
:16\.) ,"tl),JаТІІ у список відтворення у щ1йбут11ьому.
Пр01-vзмнс забезпечення включає в себе такі елементи інтерфейсу як:
• Кнопка «Увійти»;
• Кнопка «Створити 1<ористувача»;
• Кнопка «Увійти як гість»;
• Вікно «LіЬгагу»;
• Рядок пошуку;
• Вікно з відтворенням майбутніх аудіо;
• Кнопка «Cleai· Playlist»
• Кнопка РІау;
• Кнопка Next;
• Повзунок гучності;
• Повзунок перемотування аудіо;
• Check Вох для вибору повторення аудіо.
Нижче показано вікно авторизації в проrрамі(Рис. В. І).
88
4R2 .Ч) tтУ . 221< JM)-34 п 1 3
Рис.В. І - Вікно авторизації
Головне вікно програми(Рис. В.2).
FlameMusic х
89
4R2.'l)\t· . 22 19(10-34 01 4
Рнс . В . 2 І ·0;101111с 11ік110 11rю1 ра~, и
ф нкнії 1'l'P) нання а\1 ·\і
. 1,
.;i 1 1<110111«1 . .. ., ·
РІну, 11011срс;\11111 , m1c·r yr111ш1 аудю,
1x:1) ,1я1•t)J І ч1юс111 нсрсмtн у11а1111я ауі\Їо(Р11с . В.З) .
~~--f- . ,. ., _.,,..
Рнс . В.З -Функції кcpynшrmr аудіо
Віюю спнску ,айбутніх ayдio(Pric. В.4) .
Рис. В.4- Вікно списку майбутн іх аудіо
Функція повторення аудіо(Рис. В.5) .
■ Loop Playlist
Рис. В.5 - Функція повторення аудіо
Кнопка очищення списку майбутніх аудіо(Рис. В.б).
Рис. 8.6 - Кнопка очищення списку майбутніх аудіо
Додаткові функції вибраного аудіо файлу(Рис.В.7).
90
4H2.tl)~TY. 22 1tJ(,0-34 01 5
··,w
:NAIJA І
Рис. В.7 - Додаткові функції вибраного аудіо файлу
Кнопка для імпорту аудіо файлу в проrравач(Рис. 8.8).
Рис. В.8- Кнопка для імпорту аудіо файлу в програвач
91
J\н1н11 п І
МУЗИЧНИЙ ПРОГРАВАЧ
Графічні матеріали
482.ЧДТУ. 221960-90 01
Листів 10
Розробник:
Гоrулов Я. В .
Керівник: Рідкокаша А. А.
►
482.Ч ДТ . 22 І 9GО-90 О І 2
Сфери виkористаuня додатку
Музична ЇН)j),fСїГрія Особисте викориєтанИЯІ
• •
Рис. Г. І - Слайд «Сфера використання додатку»
АНАЛОГИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
АІМР
..
93
4Н .Ч )tт . 21% 0-90 О І 3
( · .н аіІ ;\ (( Л11шю1 ·111111оr ·рнм11оr·о ·3абе·нrечення»
АНАЛОГИ ПРОГРАМНОГО З.АБЕЗГІЕЧЕННЯ
Spotify
•
Рис. Г.3 - Слайд «Аналоги програмного забезпечення»
94
...
4~2. 'І) \Т . 22 1%0-1)() 01 4
AJlAЛOГlrl 11РОІ РАМІ lOI о ЗЛБЕЗПЕЧЕІ-Jl-ІЯ
• Dopaшine
•
Рис. Г.4 - Слайд «Аналоги програмного забезпечення»
95
< . Ч ) tТ . І ЧО-90 01 5
1
С1 Р І Т РЛ 111 J ' PЛM lfO J 0
ЗЛБЕ 1І ЕЧ Е І ІНЯ
ро 1Jl ~сню <М 311Ч ІІ і І<'О JІО 'JИІ\ і ї»
ро · )l Ї .П н:ню < 11ал а 11п . вання»
ро · і л м ню «11лс 1 1 л і сn>
вікнс ло ап у <йвторн · а ція/л огі11 »
ві кн о атк «м зични й програвач»
ро і 1 меню «лодати до вибраного» .
•
Рис . Г.5- Слайд «Структура програмного забезпечення»
ПОСТАНОВКА ЗАДАЧІ
- створення техн1чноrо завдання
- реалізація функціоналу програмного
забезпечення
- тестування
•
96
►
4IO.t І) \ І . 22 19(,0-90 О І 6
1'11с . 1' J, ('лаіІ;t «ІІос rа1101ш1 їаJ(,І'Ііп
UlrlБIP llPOI РАМНИХ ЗАСОБІВ
- снстсма контролю версій Git
- JetB1·ai11s Rider 202 l С#
• •
Рис. Г.7 - Слайд «Вибір програмних засобів»
4Х2 . Ч J ~ТУ . 22 19(,0-90 О І 7
ОГЛЯД СИСТЕМИ
• Плейлісти
•
Рис. Г.8- Слайд «Огляд системи. Плейлісти»
98
hь,
4R . 1 1 )\Т . . ; 19(10-90 01
()1 'JlЯJ ( С'И< 1ТЕМИ
Налаштування
•
Рис. Г.8- Слайд «Огляд системи. Налаштування»
ОГЛЯД СИСТЕМИ
r----- ---- - - -- · - -
, І lo91n х
Вікно додатку
«Ло гін І Авторизація»
99
h,
9
R .Ч J \ І . 19(,0-90 О І
r,,,, ,. о ( ' , ·~ , ри1а1•ії»
'- · .('\ .11,Н, «о, 'НІ }\ С ІІС І ми . В1 к1ю а АТО '
ОГЛЯД 111101 ' РЛ МНОГО ЗАБЕЗПЕЧЕННЯ
Сам музичний програвач
• •
Рис . Г.8- Слайд «Огляд системи. Бібліотека»
100
►
482 .Ч)tТУ. 221960-90 UI 10
висновки~
- Реалізоване програмне зnбезпечення музичного плеєра на
С#
- Створено проствп і зрозумілнп графічний інтерфейс
снстемв
- Створенвй мехnнізм авторнзації .
•
•
Ри с. Г. 8- Слайд «Вис н о вки »
101
...,