[Solved] comp2300 Assignment 2 Part 1

$25

File Name: comp2300_Assignment_2_Part_1.zip
File Size: 263.76 KB

SKU: [Solved] comp2300 Assignment 2 Part 1 Category: Tag:
5/5 - (1 vote)

In assignment 2 you need to program your discoboard to schedule/trigger a sequence of notes, each with a different pitch/duration/loudness. As in assignment 1, the focus is on controlling the behaviour of your discoboard with assembly code rather than doing a bunch of music theory.

This assignment will again have two parts: in Part 1, you need to play a specific sequence of notes with specific timing. In Part 2, you can generate a new sequence of your own creation to demonstrate the capabilities of your sequencer.

Background

Sequencers are tools for scheduled execution, playing the right note at the right time, and they have been instrumental in electronic music history. Drum sequencers, like the classic Roland TR-909 drum sequencera piece of electronic hardware designed for sequencing drum patternsled to the development of electronic dance music, such as Daft Punks Revolution 909 from their classic album Homework (1997).

Sequencers arent limited to making drum soundsthe pattern they generate might be a sequence of musical notes, like in a bassline or melody line. In fact, this core concept is not even unique to musicthe same ideas are found in scheduling, robotics, cyberphysical systems, and a bunch of other domains. The key idea is that sequencing is a way of controlling a device to perform certain actions at certain times.

Part 1

In Part 1, you must program your discoboard to play a specific sequence of notesand you have 2 options this time, pick 1:

All options are considered of equal difficulty and will be marked to the same standard (see the marking section for part 1)ie. you will not gain or lose marks for picking one option over another.

We have provided a list of note names, frequencies, and durations for each song (including the gaps/silence in between the notes). These pitch tables contain the timing and frequencies we will use to mark part-1.

We have also included a list of the notes (as letter names), just in case you would like to sing/play them yourself, but please use the frequency/duration tables for producing your solution.

No matter which song you pick, your sequencer must:

  • use an audible square wave sound (you can re-use your code from Assignment 1, but make sure to note it in the SoO) (the duty cycle is not important)
  • loop foreveri.e. such that when the sequence finishes playing, it starts again from the beginning (with no interruption to the timing)

Setting up and playing audio is the exact same as assignment 1.

In the Hall of the Mountain King Peer Gynt

Weve also done these in an online sequencing software for your preview-ing pleasure.

Note Frequency Duration
B2 123.47 Hz 0.22 s
C#3 138.59 Hz 0.22 s
D3 146.83 Hz 0.22 s
E3 164.81 Hz 0.22 s
F#3 184.99 Hz 0.22 s
D3 146.83 Hz 0.22 s
F#3 184.99 Hz 0.44 s
F3 174.61 Hz 0.22 s
C#3 138.59 Hz 0.22 s
F3 174.61 Hz 0.44 s
E3 164.81 Hz 0.22 s
C3 130.81 Hz 0.22 s
E3 164.81 Hz 0.44 s
B2 123.47 Hz 0.22 s
C#3 138.59 Hz 0.22 s
D3 146.83 Hz 0.22 s
E3 164.81 Hz 0.22 s
F#3 184.99 Hz 0.22 s
D3 146.83 Hz 0.22 s
F#3 184.99 Hz 0.22 s
B3 246.94 Hz 0.22 s
A3 220 Hz 0.22 s
F#3 184.99 Hz 0.22 s
D3 146.83 Hz 0.22 s
F#3 184.99 Hz 0.22 s
A3 220 Hz 0.44 s
silence 0 Hz 0.44 s

If you feel like going the extra mile, for street cred.

Song of Storms Legend of Zelda

Weve also done these in an online sequencing software for your preview-ing pleasure.

Note Frequency Duration
D4 293.66 Hz 0.15 s
F4 349.23 Hz 0.15 s
D5 587.33 Hz 0.6 s
D4 293.66 Hz 0.15 s
F4 349.23 Hz 0.15 s
D5 587.33 Hz 0.6 s
E5 659.25 Hz 0.45 s
F5 698.46 Hz 0.15 s
E5 659.25 Hz 0.15 s
F5 698.46 Hz 0.15 s
E5 659.25 Hz 0.15 s
C5 523.35 Hz 0.15 s
A4 440 Hz 0.45 s
silence 0 Hz 0.15 s
A4 440 Hz 0.3 s
D4 293.66 Hz 0.3 s
F4 349.23 Hz 0.15 s
G4 392.00 Hz 0.15 s
A4 440 Hz 0.75 s
silence 0 Hz 0.15 s
A4 440 Hz 0.3 s
D4 293.66 Hz 0.3 s
F4 349.23 Hz 0.15 s
G4 392.00 Hz 0.15 s
E4 329.63 Hz 0.9 s

Part 1 Marks

Marks will be awarded for:

  • generating notes with a square wave (duty cycle does not matter)
  • playing the notes with the correct pitches (frequency)
  • playing the notes at the correct tempo (timing)
  • code structure, readability & modularity (including comments & use of functions)
  • how modular your sequencer isthat is how easy is it to change what sequence / song is played (to have the possibility of full marks for this part you will need to use a data structure, such as an array, to store the songs data).

For questions around frequency accuracy, please read this section.

Part 2

In Part 2, your task is to make a more advanced sequencer. Your program must generate a musical signal which plays indefinitely (either by looping a finite sequence or by coming up with a continuous stream of new notes). You may extend the sequences from part 1, but the sequence must demonstrate the more advanced features of your sequencer.

Keep in mind that your job here is to make a cool sequencer, not a cool song, or a cool synth. As written above, a sequencers focus is scheduled execution of musical patterns, so you need to create a program than can schedule execution of more complex, or multiple, musical patterns, or do so with more utility than the very simple sequencer you create for part-1.

Here are a few ideas, in roughly increasing order of difficulty:

  • Create a sequencer that sequences more aspects of music than just pitch and duration. E.g., it could continuously change another aspect of music such as dynamics (loudness/softness) or timbre (type of waveform) on a note-by-note basis.
  • Create a sequencer that plays songs that are stored in a more interesting format (or a subset of the format), e.g., ASCII text see ABC notation, or MIDI bytes.
  • Create a sequencer that can play multiple notes simultaneously to create harmony (also called polyphony in synth lingo). This could also be used to play multiple instrument tracks of the same song at the same time (e.g., keyboard and bass).
  • create a sequencer that uses an amplitude envelope to change the shape of your notes, with envelope parameters that change during playback.
  • create a polyphonic drum machine that sequences non-pitched (e.g., percussive) sounds with sequenceable envelopes and synthesis parameters.

Marks for Part 2 will be awarded for a design document describing what youre doing and how you implemented it in ARM assembly language. You need to explain the what, how and why (design, implementation, and analysis) of what you have done. Although its ok if you dont do something super-complex, we do take the sophistication of your sequencer into account. Using images/diagrams is encouraged. Your design document must be in pdf format (2 pages content + appendix + references) with the filename design-document.pdf in top-level folder on the part-2 branch.

Rate this product

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[Solved] comp2300 Assignment 2 Part 1
$25