1 of 12

Labs 3 – Music

Procedural Content Generation for Computer Games

Vojtěch Černý

cerny@gamedev.cuni.cz

2 of 12

Prerequisites

  • Windows / Mac / Linux
  • Python 3

3 of 12

The Task

Generate music!

4 of 12

Freeform Event

  • This is a freeform HW of this class, so try whatever approach you want!
    • Try any music style
    • Try any music mood
  • If stuck:
    • Consult slides from the lecture
    • Contact me at e-mail / Discord

  • To give some criteria, you should experiment with some stuff from the following slide

5 of 12

Try at least 3 of these

  • Procedural bass
  • Procedural drums
  • Music with multiple instruments (not counting the above)
  • Procedural harmonization (underlying chords)
  • Key change
  • Large-scale structure (verse-chorus)
  • Experiment with noise
    • generator not provided, but value noise is quite simple
  • Use random walks
  • Create different musical genres
  • Describe a mixed-initiative (human+algorithm) process to create a song

6 of 12

The challenges

  • What is good music?

7 of 12

The Repository

Start with the music-generation repo

This time, no Gradle, pure Python

Tested in Python3.9, requirements are in requirements.txt

For an example usage, see (and run) example.py

8 of 12

Points

  • Generated music – required
  • Described at least 3 things tried out – 1pt each (upto 3pts)
  • Bonus point: create an “album cover” by using http://dryad.technology/artist/ (or any art toy of your choosing)

9 of 12

Submission details

  • Send your solutions to cerny@gamedev.cuni.cz
  • Prefix the subject with “NAIL123-HW3”
  • Submit:
    • one file of Python that generates music
    • 5 generated MIDIs (don’t need to be too varied)
    • upload of an “album” to SoundCloud (so that our soundfonts don’t differ)
    • describe what you have tried, what worked or didn’t, the problems you faced
    • describe your music, what you like about it
    • how much time you spent with the project (will not be part of evaluation)
    • bonus: Art Cover
  • Deadline is 20.4.
    • If you need more time, talk/write to me before the deadline

10 of 12

Questions / Problems

  • You can always e-mail me at cerny@gamedev.cuni.cz
  • I’m also frequently online at Discord https://discord.gg/4nfAzG

11 of 12

Why are we suddenly using Python?

  • Python is a great language for rapid prototyping, and quite expressive when working with lists/arrays, both of which is useful for this task

12 of 12

Q & A

Vojtěch Černý

cerny@gamedev.cuni.cz