diff --git a/README.md b/README.md index b5ecccb..3c7a9a0 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/dokumentaatio/kattavuus.png b/dokumentaatio/kattavuus.png index e71036b..0c903d9 100644 Binary files a/dokumentaatio/kattavuus.png and b/dokumentaatio/kattavuus.png differ diff --git a/dokumentaatio/testausdokumentti.md b/dokumentaatio/testausdokumentti.md index 18b5590..e56dd68 100644 --- a/dokumentaatio/testausdokumentti.md +++ b/dokumentaatio/testausdokumentti.md @@ -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) diff --git a/dokumentaatio/testi-rytmi-aste11.mp3 b/dokumentaatio/testi-rytmi-aste11.mp3 new file mode 100644 index 0000000..5a0832f Binary files /dev/null and b/dokumentaatio/testi-rytmi-aste11.mp3 differ diff --git a/dokumentaatio/viikko5.md b/dokumentaatio/viikko5.md new file mode 100644 index 0000000..0f6098e --- /dev/null +++ b/dokumentaatio/viikko5.md @@ -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. diff --git a/src/tests/midi_kasittelija_test.py b/src/tests/midi_kasittelija_test.py index 74721c0..c6933c9 100644 --- a/src/tests/midi_kasittelija_test.py +++ b/src/tests/midi_kasittelija_test.py @@ -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)