1 of 13

Labs 3 – Music

Procedural Content Generation for Computer Games

Vojtěch Černý

cerny@gamedev.cuni.cz

2 of 13

Prerequisites

  • Windows / Mac / Linux
  • Python 3

3 of 13

The Task

4 of 13

The Task

Make your own (kind of) music

5 of 13

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

6 of 13

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

7 of 13

The challenges

  • What is good music?

8 of 13

The Repository

Start with the music-generation repo

This time, no Gradle, pure Python

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

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

9 of 13

Points

  • Generated music – required
  • Described at least 3 things tried out – 1pt each (upto 3pts)
  • Bonus point: create an “album cover” procedurally (try to find a procedural art toy)

  • Best creations may be featured in radio

http://radio.woitee.cz:8000/procedural

  • (If you don‘t want to, let me know)

10 of 13

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 2.5.
    • If you need more time, talk/write to me before the deadline

11 of 13

Questions / Problems

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

12 of 13

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

13 of 13

Q & A

Vojtěch Černý

cerny@gamedev.cuni.cz