We are not going to talk about tasteless concepts like “BOM explosion” and supply chain management.
Instead, we will cover more colorful and creative domains like songs and orchestra planning.
Suppose you are planning to perform some songs you like, on a specific day (event). Naturally, you need to ask yourself some questions:
I don’t play video games often, but when I do, I find myself appreciating their soundtracks.
Some of the best game music OSTs are:
Ace Attorney
Chrono Trigger
Danganronpa
Undertale (e.g. Megalovania)
Mortal Kombat (e.g. main theme or character themes like Kitana or Raiden)
Final Fantasy (One Winged Angel goes hard)
Aside: That’s almost an exhaustive list of games I’ve played in the last decade.
We are going to plan a concert for the last 3 songs.
Imagine you’re organizing a multi-song concert next month…
Orchestra Term BOM / Supply Chain Term Meaning Song / Piece Finished Good / Product The final item to be delivered. Instrument & Musician Component / Raw Material An item required to build the product. Rehearsal Time Lead Time The time required to procure or prepare a component. Performance Date Order Due Date The date the final product is needed.
Due to the lack of easily accessible or understable (to me) music datasets, I chose to use orchestra performances’ credits (from YouTube descriptions) to define each peice and its requirements.
Undertale Megalovania LIVE for Cello Duo [4K] Undertale OST Soundtrack (By Cellomania)
Instrumentation:
Cello 1: Lukas Stasevskij
Cello 2: Jaani Helander
This means to perform Megalovania, we need 2 cellos.
But in the real world, you can’t just pick up any instrument and start playing. You (or your band members) need time to practice and rehearse, which must take time prior to the actual performance.
Let’s call this “rehearsal time” and let’s assume it is 1 week on average.
Meaning, to perform Megalovania, we need 2 cellos/cellists and start rehearsing 1 week prior to the performance’s date.
Mortal Kombat - Theme Song LIVE (Game Music Collective’s 100K SUBSCRIBERS special)
Instrumentation:
Guitar: Ossi Maristo
Violin: Emma Mali
Cello: Jaani Helander
Keyboards: Panu Rauhala
Bass: Tarmo Anttila
Oboe: Saku Mattila
Drums: Anssi Tirkkonen
Add Megalovania tree: Performance materials:
Add Mortal Kombat tree: Performance materials:
If we need to perform both songs simulatiously (different rooms?), we need to sum requirements.
FINAL FANTASY VII REMAKE OST: One Winged Angel SEPHIROTH Theme [HQ] LIVE ORCHESTRA & CHOIR
Instrumentation:
Conductor: Eero Lehtimäki
Violin: Elias Lassfolk
Violin: Emma Mali
Viola: Jussi-Matti Haavisto
Cello: Lukas Stasevskij
Double bass: Tarmo Anttila
Flute: Emilia Ilomäki
Oboe: Saku Mattila
Clarinet: Ville Komppa
Bass clarinet: Helmi Malmgren
Bassoon: Vertti Tapaninen
Horn: Henriikka Teerikangas
Horn: Ilkka Hongisto
Trumpet: Ilari Pälli
Trombone: Lauri Kilpinen
Percussions: Sami Tammilehto, Elmeri Uusikorpi, Anssi Tirkkonen
Piano: Fanny Söderström
Synthesizer: Panu Rauhala
Choir: Euga Male Voice Choir
Add One Winged Angel tree Performance materials:
Visualization of the system’s working, from AST to partial requirements to total requirements.
One-Winged Angel requires 1 choir, which normally includes 25 members.
For whatever reason, the planner made a special “decision” that on date X, there would be only 20 members present.
Meaning, we need to plan for 20 people instead of 25. That may change seating, transportation, or food arrangements.
Decisions override presumed plannings.
For complex cases, we should automate the process of traversing dependencies and calculating quantities (multiplicative) and offsets (additive).
Java.
Gephi
Gephi Lite (Web) to draw the graphes as GEXF.
Gephi Toolkit to render the animation from graphs.
Gephi GraphStore to represent and traverse the tree https://github.com/gephi/graphstore
DirectedGraph::getSuccessorsFeatures:
Google Guava https://github.com/google/guava
Graph::successors https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/graph/Graph.htmlPostgreSQL if we want to make it actually production-y. For now, we keep everything in memory/the application-level.
ltreeEvery creative project is actually a dependency graph.
Whether you’re planning a wedding, launching a product, or organizing a 40-piece orchestra to play Megalovania, you’re solving the same fundamental problem: coordinating resources with complex dependencies and different lead times.
END.