1
0
Fork 0

Viikon 5 dokumentaatio

This commit is contained in:
Vili Sinervä 2022-10-08 18:30:22 +03:00
parent 88a86b3641
commit 5b48bd9d53
6 changed files with 23 additions and 6 deletions

View file

@ -17,3 +17,5 @@
[Viikko 3](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/viikko3.md)
[Viikko 4](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/viikko4.md)
[Viikko 5](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/viikko5.md)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Before After
Before After

View file

@ -3,7 +3,7 @@
## Koodin testaus
### Testien toteutus
Automaattinen yksikkötestaus on toteutettu pytest-kirjastolla ja testikattavuuden raportoinnin hoitaa coverage-kirjasto.
Automaattinen yksikkötestaus on toteutettu pytest-kirjastolla ja testikattavuuden raportoinnin hoitaa coverage-kirjasto. Aiheen kannalta keskeistä subjektiivista testausta olen toteuttanut generoimalla melodioita ohjelman avulla.
### Ohjeet
Ennen testien suorittamista tulee pytest- ja coverage-kirjastot olla asennettuna käytössä olevassa ympäristössä. Testit saa suoritettua kommennolla
@ -16,11 +16,15 @@ projektin juurikansiosta. Testikattavuusraportin voi luoda juurikansiosta komenn
Tämän jälkeen raportti löytyy tiedostosta `htmlcov/index.html`.
![Testikattavuusraportti. Kokonaiskattavuus 93%](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/kattavuus.png?raw=true)
![Testikattavuusraportti. Kokonaiskattavuus 99%](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/kattavuus.png?raw=true)
## Subjektiivinen testaus
Generoin koodin nykyisellä versiolla 4:nnen asteen Markovin ketjulla lyhyen melodian. Vertailukohtana generoin täysin sattumanvaraisen melodian. Mielestäni ero on huomattava, varsinkin kun otetaan huomioon Markovin ketjujen yksinkertaisuus.
Viikko 4: Generoin koodin nykyisellä versiolla 4:nnen asteen Markovin ketjulla lyhyen melodian. Vertailukohtana generoin täysin sattumanvaraisen melodian. Mielestäni ero on huomattava, varsinkin kun otetaan huomioon Markovin ketjujen yksinkertaisuus.
[Markovin ketju](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/testi1-aste4.mp3)
Viikko 5: Toteutin tällä viikolla manuaalisen rytmin määrittämisen. Generoin 80 lyhyen melodian yksinkertaisella kahden tahdin välein toistuvalla rytmillä. Yllätin siitä kuinka paljon yksinkertainenkin rytmi "elävöitti" generoitua melodiaa.
[Viikko 4](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/testi1-aste4.mp3)
[Viikko 5](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/testi-rytmi-aste11.mp3)
[Sattuma](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/testi-sattuma.mp3)

Binary file not shown.

11
dokumentaatio/viikko5.md Normal file
View file

@ -0,0 +1,11 @@
# Viikkoraportti 5
Toteutin tällä viikolla toisen kurssilaisen projektin vertaisarvioinnin ja toteutin vertaisarvioinnissa saamiani ehdotuksia. Kirjoitin ohjeita niin ohjelmaan, opetusdataan ja tuotettuihin melodioihin liittyen. Lisäksi selvitin käyttämäni datan lisenssit niin, että pystyin lisäämään MIDI-tiedostot suoraan repositorioon. Generoin kattavan .pylintrc-konfiguraatiotiedoston ja paransin MIDI-käsittelijän testausta. Tämän myötä huomasin ja korjasin ohjelmointi virheen kyseisessä moduulissa. Lisäksi paransin syötteiden validointia.
Varsinainen toiminnallisuus edistyi tällä viikolla sen verran, että ohjelmalle voi määrittää mielivaltaisen rytmin, jota toistetaan tarvittava määrä. Esimerkiksi merkkijono "1/4|1/4|1/2" johtaa siihen, että lopullisessa tiedostossa on aina kaksi neljäsosanuottia ja niiden jälkeen puolinuotti.
Seuraavalla viikolla jatkan erilaisten rytmingenerointi järjestelmien testaamista ja toteuttamista.
Tässä vielä esimerkkinä tämän viikon ohjelmistolla generoitu [melodia.](https://github.com/ArcticCoder/markov-music-generator/blob/main/dokumentaatio/testi-rytmi-aste11.mp3)
Aikaa käytin tällä viikolla noin 12h.

View file

@ -8,8 +8,8 @@ class TestMidiKasittelija(unittest.TestCase):
if os.path.exists(testi_polku):
os.remove(testi_polku)
nuotit = [60, 62, 64, None]
kirjoita_midi(testi_polku, nuotit)
nuotit = [60, 62, 64, 66, 68, None]
kirjoita_midi(testi_polku, nuotit, tempo=120, rytmi="1/4|1")
luetut_nuotit = lue_midi(testi_polku)[0]
self.assertEqual(nuotit[:-1], luetut_nuotit)