Get Started with Graph Paper

If you need some graph paper... you already know why you're here. incompetech has the best graph paper generators available, and they're all easy to use!

Get Started with Music

If you need free music for your YouTube videos where you get to keep the ad revenue...

If you need music for your film or video game...

If you need music for your presentation or commercial...

Dynamic Orchestration, AI, and Video Games

There is a lot of hoopla out there with AI generated music and virtual singers. Most folks think these will be used in studios to produce soundtracks, and they are right. For now.

Dynamic Orchestration

Right now, every playthough of a specific game has the same music. Same opening theme, same battle music, same ‘pause screen’ music. If 500,000 people are playing Baulder’s Gate – each of them are getting the same soundtrack.

Interactive Music

With Dynamic Orchestration, each playthrough will have a unique soundtrack. In an RPG, you can use music for setting and mood. There should be a music difference between “campsite music for a party of 4”, and “campsite music for a party of 4 who just picked up a vampire helper… and the night may not end well.”

Human composers are finite. We can’t cover all possibilities. A machine can. In real time.

History

We’ve had hints of dynamic orchestration for a while. Changing tempo to match the situation is common (like when everything speeds up for the last lap on Mario Kart). You can also mute or mix different layers of a piece of music to go from calm to exciting (like in an open world RPG where if you wander to where there is nothing, the music starts becoming thinner, and if you wander closer to interesting things, the music picks up). These are fairly difficult to implement now. They require working in MIDI-like sections, where instead of producing one track, you must produce thousands of individual notes and the instructions on how to put those notes together.

Why isn’t this happening now?

As of August, 2023, there are still a few hurdles.

The audio quality is pretty low right now. Eventually, we will get 48khz resolution on the audio, but now we have to settle for a fraction of that. Every company that does AI audio is working toward this, it’s a matter of time.

Virtual Orchestra

The cost of running these models is comparatively quite high. To do dynamic composition, you would need to stream a lot of audio data from servers OR find efficiencies in the models to allow them to run on smaller, home-scale computing devices.

What this means for Composers

There are still some opportunities for composers, though the workload per-game will be decreased significantly. A composer may still come up with the overall music design and provide some examples of themes for different parts of the story. We won’t be doing 12-hour soundtracks anymore.

Won’t AI also be able to do the main themes?

Yes. Yes, it will.

Ethical Considerations

Many people think the AI will be reigned in by governmental mandates and lawsuits from artists. These actions will slow adoption, but they can’t stop it. There is already enough music in the Public Domain to train some frighteningly good audio AIs. We have access to tons of folk music, music by dead composers like Mozart and Tchaikovski, and music be people who WANT to share what they’ve done like me.

Supercharged Storytelling

As Candy Crush weaponized engagement with their incredible design, Dynamic Orchestration will be a major aspect of weaponizing emotional storytelling… if you want it to. I hope every experience has a settings slider to control the poignancy of the soundtrack. Sometimes… I just don’t want that much.

Timeline

<Speculation> There are still a few challenges to get this to market. I expect someone will have a streaming service capable of doing this for under $10 per hour in under a year. Maybe another year to get an optimized model that can run on a graphics card or TPU. So… about 2027 you’ll be seeing the games show up on Steam. </Speculation>

Going Beyond

Dynamic Orchestration has a lot of other capabilities that can be realized before real-time inclusion in video games:

  • Bar and Restaurant background music: You can get an endless playlist of jazz standards that perfectly read the room and adjust dynamically to the goings-on there.
  • TV/Film Scoring: A composer will be able to guide the Dynamic Orchestration into an excellent soundtrack pretty quickly. Record it once, and incorporate it into the film!
  • Personal Soundtrack: While going on a walk, working out, or just cleaning your house, you’ll be able to have a dedicated soundtrack perfectly suiting to inspiring you! (It may also include some musical warnings if your family is coming over soon).

Text to Morse to MIDI App

Text -/> Morse -> MIDI

Text to Morse to MIDI takes text, and translates the text to Morse Code, and then outputs a MIDI file of the text.

I understand this is pretty niche, but it didn’t exist yet – so I had to make it.

The Background: I’m currently doing sound design for a Steampunk-based video game. One of the “characters” is the Navigational Computer, a Babbage-style computer that talks in Morse Code. To get her to talk, I needed to translate the dialog to Morse Code that is loaded into my audio editing software. I can then assign the notes to a Tesla Coil sample, and we’re done!

Fun Fact: If you experience the game enough, you start learning Morse Code by following along with the subtitles.

This doesn’t output theoretically perfect Morse Code. It was designed to have a semi-randomized “hand” (like having an accent, but in Morse Code).

Built with Flask, a web framework in Python.

PDF Auto-Duplexer

The number one request I’ve gotten for graph paper is to add a function that makes 2-page documents that can be easily duplex printed. I haven’t done that because it will further complicate the interface. Also, it isn’t fun to work with a 20-year-old codebase written in a dying language.

The new duplexer is written in python with a JavaScript interface. It doesn’t work well with Firefox, and I’m fine with that. It does work well with Edge, Safari, and Chrome.


# read the file, duplicate the page and write to a new pdf
pdf_writer = PdfWriter()
pdf_reader = PdfReader(file)
page = pdf_reader.pages[0] # get the first page

pdf_writer.add_page(page)
pdf_writer.add_page(page) # add the page twice

# save to in-memory file
pdf_bytes = io.BytesIO()
pdf_writer.write(pdf_bytes)
pdf_bytes.seek(0) # go to the start of the file

# create response and set custom header
response = make_response(send_file(pdf_bytes, mimetype='application/pdf', as_attachment=True, download_name=new_file_name))
return response

Chat GPT4 makes graph paper!

It does take an extra step, but it figured it out in python!

The Prompt:
Please write a python script using fpdf that will output a file “my-grid.pdf” which is a landscape a4 pdf file with a background color of dark purple, and has a border of at least 2cm. In the remaining space, figure out how many 1cm x 1cm squares would best fill the remaining space, and build a 1cm x 1cm grid with thin white lines. Do not draw partial squares.

The Code:
from fpdf import FPDF

# Constants
A4_WIDTH = 297 # Width of A4 paper in mm (landscape)
A4_HEIGHT = 210 # Height of A4 paper in mm (landscape)
BACKGROUND_COLOR = (41, 31, 88) # Dark purple
BORDER_WIDTH = 20 # 2cm border width
GRID_SIZE = 10 # 1cm x 1cm squares
GRID_COLOR = (255, 255, 255) # White

# Initialize PDF
pdf = FPDF("L", "mm", "A4")
pdf.set_auto_page_break(False)
pdf.add_page()

# Set background color
pdf.set_fill_color(*BACKGROUND_COLOR)
pdf.rect(0, 0, A4_WIDTH, A4_HEIGHT, "F")

# Calculate grid dimensions
grid_width = A4_WIDTH - 2 * BORDER_WIDTH
grid_height = A4_HEIGHT - 2 * BORDER_WIDTH
grid_columns = grid_width // GRID_SIZE
grid_rows = grid_height // GRID_SIZE

# Draw grid
pdf.set_draw_color(*GRID_COLOR)
pdf.set_line_width(0.3) # Thin lines

for row in range(grid_rows + 1):
y = BORDER_WIDTH + row * GRID_SIZE
pdf.line(BORDER_WIDTH, y, BORDER_WIDTH + grid_columns * GRID_SIZE, y)

for col in range(grid_columns + 1):
x = BORDER_WIDTH + col * GRID_SIZE
pdf.line(x, BORDER_WIDTH, x, BORDER_WIDTH + grid_rows * GRID_SIZE)

# Save PDF
pdf.output("my-grid.pdf")

And the final PDF output (after the script is run locally)

  1. my-grid

If you run into problems at any step of the way, paste your errors into ChatGPT, and it’ll help you out!

Music AI Review: Boomy

What it does: You choose a genre, get some music.

Is it good? No.
When will it get good? Probably never.



I got the $35 annual subscription, so I will review it later this year, but my expectations are low.

What went wrong: Boomy works the way humans do. It puts notes on a timeline, and then uses synths or samples (short recordings) of instruments to make a mix out of them that resembles music. In a way, it builds something like sheet music, and then uses that to generate music.

Sheet Music and a PCM Representation

These are not the same kind of data.

Most image generating AIs work with pixels as their building blocks. The sound-equivalent of this is the sample. It is a number that tells you where on a graph you are, and are usually read at 48,000 samples every second.

In terms of data, a 100×100 pixel image is roughly equivalent to 1 second of audio.
To push the analogy too far, Boomy works by cutting and pasting lots of little pictures together. The catalog of pictures is fixed, and it isn’t that big.

Boomy is clipping from a low quality picture book. That can be updated.
But. The music has very little in the sense of melodic understanding. That can be taught.
But. It also doesn’t display a grasp on overall form of the piece. That can be taught.
But. It just seems to layer the instruments on top of each other, just not caring about interactions between the bass and drums and melodies. That’s gonna require a whole new approach, it is possible.

There’s a giant list of problems that I could describe, and maybe they can fix a few issues, but this approach will never be as versatile, creative, flowing, or beautiful as an AI that uses a sample-based approach.

Killer Application: I don’t see any practical use for this service. I’ll say they have a killer domain name.

Price: Free – $120/year
Quality: No

This review was not sponsored. Obviously.

Shinies for e’rbody!

Goblin Soldier Tinker Spy

“Ya wants ta make things? Piles of things? Make things wit us Goblins! We got sticks and hammers and pokies. You get ta hit things wit udder things. If ya hit a rat, ya gets more stew! If ya hits da stew, ya get hit with rats.”

Teamwork! Steady Progress! Shinies! Work with Goblins today!

You can purchase from iTunes here!