[SOLVED] Java javascript assembly theory Skip navigation

$25

File Name: Java_javascript_assembly_theory_Skip_navigation.zip
File Size: 442.74 KB

5/5 - (1 vote)

Skip navigation

ComputerOrganisation & ProgramExecution
ANU College of Engineering & Computer Science

COMP2300
Lectures
Labs
Deliverables
Resources

1. Deliverables Sequencer
Sequencer
TABLE OF CONTENTS
Outline
Background
Part 1 (50%)
Daft Punk Around the World (Bassline)
Daft Punk Around the World (Vocal line)
Deep Purple Smoke on the Water (Guitar riff)
Part 1 Marks
Part 2 (50%)
Submission
Process
Checklist
FAQ
Part 1
Is the setup code (init and BSP_AUDIO_OUT_Play_Sample) the same as in assignment 1?
How close to the exact frequencies & timings does my sequence have to be?
Is there a requirement on the dynamic range this time around?
If I generate the right sequence of notes, then I get 100% for Part 1, right?
Part 2
Im not musicaldoes that mean I cant get a good mark for Part 2?
Can I play a song for Part 2?
How can I play my favourite song?
Can I use the FPU (or some other peripheral on the discoboard we havent covered in class)?
Outline
Due date: 11:59 PM, Friday 3rd of May, 2019 (Friday of week 8)
Mark weighting: 12 marks
Submission: submit your assignment through GitLab (full instructions below)
Policies: for late policies, plagiarism policies, etc. see the policies page
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, and they have been very influential in recent music history.Consider, for example, the classic Roland TR-808 drum sequencera piece of electronic hardware designed for sequencing drum patterns which inspired a whole Kanye album:

1/12

Kanye West Topic
42
Say You Will

www.youtube.com JavaScript
Ikutaro Kakehashi, the founder of Roland and a hugely influential designer of early music technology, died in 2017, so consider this assignment a small tribute to his work.
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 (50%)
In Part 1, you must program your discoboard to play a specific sequence of notesand you have 3 options this time, pick 1:
Daft Punk Around the World (Bassline)
Daft Punk Around the World (Vocal line)
Deep Purple Smoke on the Water (Guitar riff)
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.
The note sequence is provided for each song, but in case youre not the musical type (and thats fine!) we have also included a table of frequencies and durations for each song, including the gaps (silence) between notes, represented by a in the pitch column.These pitch tables contain the timing and frequencies we will be marking part 1 on.

As you are provided 3 options for part 1, it is not a sufficient or acceptable submission to implement a different song from part 1 (or a mixture of them in sequence) as your part 2 with no other changes made
Daft Punk Around the World (Bassline)

Warner Music Germany
115
DAFT PUNK AROUND THE WORLD (Official Music Video)

www.youtube.com JavaScript
Note: the bassline starts at around 0:23
Once started, your program must play the sequence:
in the key of G major1 (so the note sequence is A-A-A-A-C-C-C-C-D-E-E-E-E-F#-E-D-C-B-A-G-A)
at a tempo of 120 beats per minute (this timing is shown in the table below)
using an audible square wave sound (you can re-use your code from Assignment 1, but make sure to note it in the SoO)
so that it loops foreveri.e. that when the sequence finishes playing, it starts again from the beginning (with no interruption to the timing)
Pitch Table:
pitch (Hz)
duration (s)
110
0.25

0.25
110
0.25

0.25
110
0.25

0.25
110
0.25

0.25
130.81
0.25

0.25
130.81
0.25

0.25
130.81
0.25

0.25
130.81
0.25
146.83
0.25
164.81
0.25

0.25
164.81
0.25

0.25
164.81
0.25

0.25
164.81
0.25

0.25
185
0.125

0.125
164.81
0.125

0.125
146.83
0.125

0.125
130.81
0.125

0.125
123.47
0.125

0.125
110
0.125

0.125
98
0.25
110
0.25
Daft Punk Around the World (Vocal line)

Costa Ntino
12
Daft Punk Around The World

www.youtube.com JavaScript
Note: this tune is based on the sound signature of the lyrics (throughout), and also the note progression which starts at around 6:30
Once started, your program must play the sequence:
in the key of G major1 (so the note sequence is G-F#-G-G-A-G-F#-G-B-G)
at a tempo of 120 beats per minute (this timing is shown in the table below)
using an audible square wave sound (you can re-use your code from Assignment 1, but make sure to note it in the SoO)
so that it loops foreveri.e. that when the sequence finishes playing, it starts again from the beginning (with no interruption to the timing)
Pitch Table:
pitch (Hz)
duration (s)
196
0.25
185
0.25
196
0.25
196
0.25
220
0.5
196
0.5
185
0.5
196
0.5
246.94
0.5
196
0.25

0.25
196
0.25
185
0.25
196
0.25
196
0.25
220
0.25

0.25
196
0.25

0.25
185
0.25

0.25
196
0.25

0.25
246.94
0.5
196
0.25

0.25
Deep Purple Smoke on the Water (Guitar riff)

NoMadU55555
90
Deep Purple Smoke On The Water 1972 (High Quality)

www.youtube.com JavaScript
Once started, your program must play the sequence:
in the key of G minor1 (so the note sequence is D-F-G-D-F-G#-G-D-F-G-F-D)
at a tempo of 120 beats per minute (this timing is shown in the table below)
using an audible square wave sound (you can re-use your code from Assignment 1, but make sure to note it in the SoO)
so that it loops foreveri.e. that when the sequence finishes playing, it starts again from the beginning (with no interruption to the timing)
Pitch Table:
pitch (Hz)
duration (s)
293.66
0.25

0.25
349.23
0.25

0.25
392
0.5

0.25
293.66
0.25

0.25
349.23
0.25

0.25
415.30
0.25
392
0.5

0.5
293.66
0.25

0.25
349.23
0.25

0.25
392
0.5

0.25
349.23
0.25

0.25
293.66
1.00

0.75*
Note*: a rest of 0.5s is also acceptable / correct
Part 1 Marks
Marks will be awarded for:
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)
For questions around frequency accuracy, please read this section
Note: there has been an update to the init function that affects the sample plotter, please see this piazza post for information.
Part 2 (50%)
In Part 2, you get to choose which song you play on your sequencer. Your program must generate a musical signal which plays indefinitely (either by looping or by coming up with a continuous stream of new notes).
Here are a few ideas, in increasing order of difficulty:
create a basic generic sequencer to play a different sequence of notes (e.g. a cool bassline that plays a sequence of notes then loops back to the beginning)Note: you cannot play any of the songs from part-1 with no changes, please see the box here
create a sequencer to play one of the melodies from Part 1 (or some other melody), that can change some aspect of the playback (e.g. tempo, loudness, pitch, timbre) continuously over time
create a sequencer that can play multiple notes simultaneously to create harmony
create a sequencer that uses an amplitude envelope to change the shape of your notes
try and create non-pitched (e.g. percussive) sounds to build a drum machine
Marks for Part 2 will be awarded for a design document describing what youre doing and how you implemented it in ARM assembly language. This means that its ok if you dont do something super-complex, what really matters is how you explain what youve done (although its worth reading the FAQ as well). Using images/diagrams in this document to help explain what youve done is encouraged*. Your design document must be in pdf format (no more than 2 pages) with the filename design-document.pdf in top-level folder on the part-2 branch.
*Note: any diagrams you submit must be of sufficient quality for academic writing i.e no photos of the screen or hand drawn diagrams, with high quality screenshots as the minimum acceptable standard.
Please note that your design document should talk about the sequencer you have created and not about the song you have played. If you have chosen a specific song to showcase the capabilities of your sequencer then talk about those capabilities and how they are demonstrated.For more tips on how to write a design document, check out this page.
Submission
Process
Heres the process for working on & submitting your assignment:
1.fork the assignment 2 template repository
2.clone2 & work on your fork of the major project repo
3.regularly commit & push your changes to the GitLab server (ensuring the code for each section is in their respective branches)
4.the last commits on the part-1 and part-2 branches on the GitLab server (not on your local machine!) before the submission deadline will count as your submission
Checklist
1.the code in my part-1 branch generates one sequence of notes of the songs described in Part 1
2.the code in my part-2 branch generates a different sequence as described in Part 2 and Ive committed my design-document.pdf to the repo under the base folder of the part-2 branch as well
3.my statement-of-originality.yml files for both Part 1 and Part 2 include all the necessary references/acknowledgements, and everything not mentioned in there is my own work
4.both branches of my completed project have been pushed to the GitLab server
5.both branches pass the Gitlab CI test (the pipeline does not fail)
FAQ
Part 1
Is the setup code (init and BSP_AUDIO_OUT_Play_Sample) the same as in assignment 1?
Yes.
How close to the exact frequencies & timings does my sequence have to be?
As close as you can get! You can probably make it fairly close without too much effort, but to get that last bit of precision might require some extra work.
Having said that, assignment 2 isnt primarily about the base square waveform (thats what assignment 1 was about). In this assignment the most important thing is the way you trigger the sequencegetting the start & stop times of the various notes right, making sure it loops seamlessly (i.e. that you can tap your foot along to the sequence, even across the loop boundary).

You wont lose marks if youve rounded the frequencies to whats achievable in a whole number of samples (so you dont have to do multi-cycle period averaging this time around) but if youre off by more than that you will still lose marks.
Similarly for the timings; if a human, looking at their watch, would agree that the timings are correct, then thats ok. If the timing is way off, however, then thats a problem.
However you manage it, make sure your assembly code is still well-organised & understandable (comments can help a lot).
Is there a requirement on the dynamic range this time around?
No, although if you look above it says that the waveform must be audiblei.e. that a person with normal hearing can hear it comfortably using headphones. If you use a similar amplitude to what you used for your square wave in assignment 1 then youll be fine.
If I generate the right sequence of notes, then I get 100% for Part 1, right?
No, thats not how it works. As described above, code structure & readability are part of the marking criteria as well.
Part 2
Im not musicaldoes that mean I cant get a good mark for Part 2?
Nothere are heaps of things you can do which dont require musical knowledge. As always, start thinking about this stuff early, experiment and see what sounds good to your ears, and ask for help early if you get stuck.
The most important thing for Part 2 is that you clearly explain in your design document what (if anything) is special about the sequence youre generating (use pictures!) and how you designed your assembly program (sequencer) to generate this sequence.
Can I play a song for Part 2?
Yes. Hooray!
How can I play my favourite song?
Note: The sequence you generate in part 2 doesnt have to be a songthere are lots of ways to make interesting patterns in frequency & time
A note has three basic dimensions: the pitch, the loudness and the duration. If you want to play a part of your favourite song, you need to find out the pitch, loudness and duration of each note in the sequence and get your program to generate those notes, one after the other (potentially with gaps in between).
Here are a few tips:
by playing successive notes with slightly different loudness, you can create accents
its ok to have periods of silence between notes
the relationship between frequency and the notes on the piano keyboard isnt linear, although the relationship between the piano keys and MIDI note numbers is linear, and you can use this handy conversion widget (or write an asm function which does the same thing in your program)
Midi note number 69 = 440.00Hz (2 decimal places)
Can I use the FPU (or some other peripheral on the discoboard we havent covered in class)?
Your program can use any part of the discoboardas long as it still meets the requirements for part 2 and generates the signal you describe in your design document. However, if you decide to use any features we havent yet covered (or dont cover at all) in the course (e.g. the floating-point unit, the timers, the accelerometer, etc.) then youre on your own to make it work.
If youre up for a challenge then doing that can be a great learning experience, but you need to know what youre getting yourself in forand you need to give yourself plenty of time (in case things dont work out as planned).
1.note that this isnt the same key & tempo as the recordingits been specifically chosen to make the note durations nice, round numbers23
2.make sure you clone your own fork (i.e. the one with your uni ID in the url) to your local machine, not the template (because obviously you arent able to change the template for everyoneGitLab wont let you)
Updated:23 Apr 2019
Responsible Officer:Head of School
Page Contact:Uwe Zimmer
Contact ANU
Copyright
Disclaimer
Privacy
Freedom of Information
+61 2 6125 5111The Australian National University, CanberraCRICOS Provider : 00120CABN : 52 234 063 906

Reviews

There are no reviews yet.

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

Shopping Cart
[SOLVED] Java javascript assembly theory Skip navigation
$25