Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

ENG 06 Final Project

Music Player Project

Project Description

Implement a MATLAB computer program that makes use of downloaded songs or audio files. There are two components in this project: core and reach. The core component, which must be completed by all  teams, uses at least 10 downloaded audio files and plays them (music player capabilities). The reach      component, which is a project of your choosing, must use MATLAB to create at least 3 music player       capabilities, i.e. play/pause, switch between songs, adjust playback speed, mix songs, etc.

Project Restrictions

1. MATLAB toolboxes: Only MATLAB toolboxes included in the student license may be used. In particular, the MATLAB Audio Toolbox may not be used.

2. Graphical User Interface programming: All GUI implementations must be programmed using App Designer. You are not allowed to implement the project using Guide, submissions programmed with Guide will receive zero points without exception.

3. Collaboration Policy: Once teams are formed you are only allowed to talk and collaborate with            members within your team. Team members are expected to equally participate, and collaboratively        work towards the completion of the project. Other than contacting the teaching assistants for                   clarification, you may not seek the assistance of other persons to complete your team's project. Of          course, general discussions about how to implement GUI, OOP and other programming constructs could be discussed with other students, but your team must be totally responsible for the implementation of

code used in your project.

Grading Criteria

The projects are open ended. As long as your program can perform the assigned tasks, there will be no correct or incorrect approaches. Certainly, there will be more acceptable and attractive solutions, and that will be judged in comparison with competing solutions submitted by your classmates. The final      project will be graded in six parts:

1. Project proposal: 10% of grade

Each team submits a 2-3 page via Canvas a project proposal describing the project, a general description of how you will implement the main components of your and a clear description of the Reach/Special     features that your team proposes. Essentially, the scope of the project should be challenging enough to merit full credit and doable within the timeline. An Appendix should contain a breakdown of                     programming tasks, and who will be responsible for what, along with a timeline that will meet the           submission deadline (we suggest you make use of a Gantt chart). The expectation is that each team         member must take responsibility for a specific aspect of the project and grading for each member will be adjusted according to how the project tasks were delegated and who was responsible for what         aspects of the project. The more specific you can be in defining the programming tasks, what functions should exist, and what each function should accomplish, the better.

2. Core component: 40% of grade.

The objective is to play music from audio files and display options for playing and mixing the music using App Designer. At least 10 audio files should be read and played, and at least 3 music capabilities that       transform the audio as it is played. There should be a display allowing the user to choose the song to be played. If audio files contain words/lyrics, they must be safe for work.”

Step 1: Music Player: Acquire audio files so as to get at least 10 songs. Remember, these songs should all be different and be of different lengths. Then, play the audio files.

Read the audio files (.mp3 for lossy format, or .wav for lossless formats) and store the content into a single MATLAB table.

Using a live script in MATLAB, create a single Comma Separated Value (CSV) file for all the data in the MATLAB table.

Next, create several different music playback capabilities. The team should create at least 3 music capabilities that transform the audio as it is played. Here are some examples:

•    Switch between songs.

•    Adjust playback speed

•    Mix together multiple songs.

•    Play a song backwards.

•    Shuffle button to play songs in random order .

The product for this part is the following: raw audio files, the MLX file used to process the audio files, playing the music, and the CSV file.

Step 2: App Designer: create an app that will take the audio files and display the music files options that can be played. The required functionalities for the app are the following:

•    Display all songs in the playlist window.

•    Button or dropdown to choose the song to be played.

•    Button to play/pause the music.

•    Buttons to go to the next/previous songs.

•    A slide bar for volume control

For each music mixing transformation (at least 3), create well-labeled buttons, knobs, sliding bar and/or blank fields for input values.

Note that you can reuse the code from step 1 for this part.

The product for this part is the following: MLAPP file containing the designed app.

3. Reach Component: 35% of grade.

The main Objective of Reach Component is to create visuals to accompany the music as it plays and      share what’s playing using ThingSpeak. Use ThingSpeak as a medium of information exchange between the members of the team. The team should create at least 1 public ThingSpeak channel. The core           component should perform the following tasks:

•    Create dynamic visuals of the audio files in some way. Some options are: display the current       frequency of the song, 2D gif of a song based on song data, use song statistical information such as its mean or standard deviation, etc.

•    Share the currently playing song to the ThingSpeak channel.

•    View songs that were played by other teammates on the ThingSpeak channel.

Additional functionalities are required. Some examples are: automatic music upload, communication with additional databases (search option to find a song from the database of 20+ songs), interaction  with external sources such as a friend or posting to social media (generating a shareable link), a song counter that displays the number of times a song was played, etc.

Also, you should propose further enhancements, which should have been described in your proposal.   Your completion of the Reach Component and the creativity of your proposal will be considered during the grading process. The product for this part is the following: MLAPP file containing the designed app, information on the public ThingSpeak channel.

4. YouTube Video: 15% of grade.

YouTube has several examples of ENG6 videos (search ENG6). The format of the video is entirely up to your team as long as the following criteria are met:

•    Include the word “ENG6” on the title of your video and use appropriate keywords and hashtags in the video description.

•   The maximum length of the video is 10 minutes.

•    Each team member must be seen in the video to present their work and contributions.

•    A clear and easy to follow demonstration that shows the correct functionality of your program (show your program actually working in the video – not screen shots of before and after).

•    Use visual aides to help explain your steps (whiteboard, markers, poster, etc.). The video does not have to be fancy, just effective in relaying the most important information.

5. Team Evaluations:

Each member must provide a brief personal summary of her/his involvement and contributions. Each team member is required to submit evaluations of her/his teammates’ contribution, one for each of   Core and Reach. For example, if your team has members A, B, C, your evaluation can be similar to the following for a single member.

Team Member A: was in charge of writing the code to execute the equalizer filters. For the Reach, A was in charge of adding 2 different analysis plots that could show power spectral density plot and frequency content of audio file. Team Members B, C agree that A performed these tasks for the project.

Dice Game Project

Questions: contact Said Mansoor Wahab ([email protected]) or Aditya Krishnan (adikrishnan@ucdavis.edu)

Project Description

Implement a MATLAB computer program of dice game of your team’s choice.  For example, possible      candidates areFarkle. OrLeft Center Right. An example of a computer dice game implementation is       Yahtzee. (it is clear what is expected of the players, however with respect to the visual and auditory       aspects, it is not a good example). The dice game must involve one or more players. A player should be  able to make strategic decisions to win the game. The program should roll the dice upon request, apply the rules and score the game. It is up to the team to make decisions about what programming elements will engage the users. Special attention should be paid to:

1.    Clarity on how to play the game.

2.    How the persons should interact with the program.

3.   The visual, auditory cues and special effects (e.g. animations, a sound clip when the dice are rolled).

4.   The users should be able to play the game with each other over the internet. All projects should have the following elements:

1.   A graphical user interface

2.   An animation.

3.   A sound effect.

4.    Make use of user-defined OOP class in at least one programming element.

5.    One or more tables.

6.   The capability to play the game online.

7.    Clearly indicate in your code and your video where these elements are implemented. In your  YouTube video, please point out how you implemented some features (especially in the Core and the Reach) inside your code. What functions did you use? Did you use any data structures such as structs etc? What was challenging about implementing a certain feature and why?

Project Restrictions

1. MATLAB toolboxes: Only MATLAB toolboxes included in the student license may be used.

2. Graphical User Interface programming: All GUI implementations must be programmed using App Designer. You are not allowed to implement the project using Guide, submissions programmed with Guide will receive zero points without exception.

3. Collaboration Policy: Once teams are formed you are only allowed to talk and collaborate with    members within your team. Team members are expected to equally participate, and collaboratively work towards the completion of the project. Other than contacting the teaching assistants for           clarification, you may not seek the assistance of other persons to complete your team's project. Of course, general discussions about how to implement GUI, OOP and other programming constructs could be discussed with other students, but your team must be totally responsible for the implementation of   code used in your project.

Grading Criteria

The projects are open ended. As long as your program can perform the assigned tasks, there will be no correct or incorrect approaches. Certainly, there will be more acceptable and attractive solutions, and  that will be judged in comparison with competing solutions submitted by your classmates. The final      project will be graded in six parts:

1. Project proposal: 10% of grade

Each team submits a 2-3 page via Canvas a project proposal describing the project, a general description of how you will implement the main components of your and a clear description of the Reach/Special     features that your team proposes. Essentially, the scope of the project should be challenging enough to merit full credit and doable within the timeline. An Appendix should contain a breakdown of                     programming tasks, and who will be responsible for what, along with a timeline that will meet the           submission deadline (we suggest you make use of a Gantt chart). The expectation is that each team         member must take responsibility for a specific aspect of the project and grading for each member will    be adjusted according to how the project tasks were delegated and who was responsible for what           aspects of the project. The more specific you can be in defining the programming tasks, what functions   should exist, and what each function should accomplish, the better.

2. Core component: 40% of grade.

Complete the basic project as outlined in the project description. For example: Show whose turn it is to play, an image background such as a green table, an image showing the dice roll outcome, the scores,   etc.

Features of the GUI:

•    Roll dice button

•    Display scores edit fields

•   The GUI interface must include a table keeping a record of the rolls for each player throughout the game.

•    Anything else you need or want to add depending on the game you have chosen.

 

Figure 2.1. Example of a design view: Yahtzee dice game

3. Reach Component: 35% of grade.

Implement the project enhancements described in your proposal. Your completion of the Core and the creativity of your proposal will be considered during the grading process.

•    Animations

o Rolling dice

o Scoring system

o Others

•    Sound

o Rolling dice

o Scoring system

o Others

•    Online Play (ThingSpeak)

o The implementation of the dice game should involve the players at different locations using a keyboard or a mouse to play their turn.

o Use ThingSpeak functions described in the link ThingSpeakBasics” below.

Useful resources:

•   Controlling Random Number Generation

•   Play Audio

•   ThingSpeak

•   ThingSpeakBasics

4. YouTube Video: 15% of grade.

YouTube has several examples of ENG6 videos (search ENG6). The format of the video is entirely up to your team as long as the following criteria are met:

•    Include the word “ENG6” on the title of your video and use appropriate keywords and hashtags in the video description.

•   The maximum length of the video is 10 minutes.

•    Each team member must be seen in the video to present their work and contributions.

•    A clear and easy to follow demonstration that shows the correct functionality of your program (show your program actually working in the video – not screen shots of before and after).

•    Use visual aides to help explain your steps (whiteboard, markers, poster, etc.). The video does not have to be fancy, just effective in relaying the most important information.

5. Team Evaluations:

Each member must provide a brief personal summary of her/his involvement and contributions. Each team member is required to submit evaluations of her/his teammates’ contribution, one for each of  Core and Reach. For example, if your team has members A, B, C, your evaluation can be similar to the following for a single member.

Team Member A was in charge of writing the code to execute to simulate a dice roll when a button was clicked. For the Reach, A was in charge of adding 5 different sound effects that could play when the user opens up a new game. Team Members B, C agree that A performed these tasks for the project.

Vessel Traffic System Project

Questions: contact Gabriel Hernandez ([email protected])

Project Description

Implement a MATLAB computer program that simulates a Vessel Traffic System (VTS) that monitors    virtual ships that periodically send their positions. There are two components in this project: core and reach. The core component, which must be completed by all teams, implements the Vessel Traffic       System using a locally generated database with the information of the ships and their position. The     reach component, must implement at least 3 virtual ships that share their information and position     periodically through ThingSpeak. Additional functionalities, decided by each team, should be                implemented.

Project Restrictions

1. MATLAB toolboxes: Only MATLAB toolboxes included in the student license may be used.

2. Graphical User Interface programming: All GUI implementations must be programmed using App Designer. You are not allowed to implement the project using Guide, submissions programmed with Guide will receive zero points without exception.

3. Collaboration Policy: Once teams are formed you are only allowed to talk and collaborate with            members within your team. Team members are expected to equally participate, and collaboratively        work towards the completion of the project. Other than contacting the teaching assistants for                   clarification, you may not seek the assistance of other persons to complete your team's project. Of          course, general discussions about how to implement GUI, OOP and other programming constructs could be discussed with other students, but your team must be totally responsible for the implementation of

code used in your project.

Grading Criteria

The projects are open ended. As long as your program can perform the assigned tasks, there will be no correct or incorrect approaches. Certainly, there will be more acceptable and attractive solutions, and  that will be judged in comparison with competing solutions submitted by your classmates. The final      project will be graded in six parts:

1. Project proposal: 10% of grade

Each team submits a 2-3 page via Canvas a project proposal describing the project, a general description of how you will implement the main components of your and a clear description of the Reach/Special     features that your team proposes. Essentially, the scope of the project should be challenging enough to merit full credit and doable within the timeline. An Appendix should contain a breakdown of                     programming tasks, and who will be responsible for what, along with a timeline that will meet the           submission deadline (we suggest you make use of a Gantt chart). The expectation is that each team member must take responsibility for a specific aspect of the project and grading for each member will  be adjusted according to how the project tasks were delegated and who was responsible for what         aspects of the project. The more specific you can be in defining the programming tasks, what functions should exist, and what each function should accomplish, the better.

2. Core component: 40% of grade.

The objective is to use App Designer to recreate a Vessel Traffic System (VTS) with similar functionalities asMarine Traffic. The computer program that you design should show a map with traffic information  from ships. For the core component the functionalities required for the VTS are the following:

•    Display a fixed section of a map.

•    Generate a local database (MATLAB table) of at least 3 ships that must include the following properties: MMSI, time, latitude, longitude, speed over ground, vessel name, vessel type,     length, width. The database should have at least 20 entries for each ship.

•    Plot the generated database to simulate the real-time operation of the system. I.e., ship position should be displayed in chronological order and their information kept even if a transmission is     not made for an amount of time.

•    Configure speed alarm. E.g., if a ship is at a certain speed, an alarm should be activated.

 

Fig. 3.1. Sample interface for VTS application using App Designer.

 

Fig. 3.2. Real marine traffic information from local port processed using Matlab.

3. Reach Component: 35% of grade.

The main objective of the Reach component is to use ThinkSpeak as a medium of information exchange  with the VTS implemented in the Core component. For this purpose, an additional computer program      will be created. This program is going to generate information for at least 3 virtual ships and upload it      periodically to ThingSpeak. The shared information would be similar to the locally generated database    from the Core component but will allow the VTS to work in a more realistic fashion, i.e., virtual real time.

The team should create at least 1 public ThingSpeak channel. The core component should perform the following tasks:

•    Configure each ship to report the following information: MMSI, time, latitude, longitude, speed over ground, vessel name, vessel type, length, width.

•    Generate at least 3 ships that update their information and position periodically to ThingSpeak. Also include custom report intervals for every ship.

•    Operate each ship with the following customizable information: start position, stop position, speed, start/stop transmission.

 

Fig. 3.3. Sample interface for Vessel application using App Designer. As additional features, the following are presented as means of examples:

•    Configure position alarm. E.g., if a ship enters a defined boundary an alarm should be activated.

•    Configure an alarm that will activate when a specific number of ships are in the same area.

•    Add a mechanism to select which ships to show and which to hide depending on the available information.

•    Filter ships by some parameter, e.g., size, flag, etc.

•    Include a functionality to show the historic location information of a particular ship or a set of ships.

•    Add more ships with additional properties.

•    Process incoming alarm from VTS and act, e.g., reply, change course or speed.

•    Configure variable speed.

•    Enable a round trip for circuit voyage, e.g. A →B →C →A.

4. YouTube Video: 15% of grade.

YouTube has several examples of ENG6 videos (search ENG6). The format of the video is entirely up to your team as long as the following criteria are met:

•    Include the word “ENG6” on the title of your video and use appropriate keywords and hashtags in the video description.

•   The maximum length of the video is 10 minutes.

•    Each team member must be seen in the video to present their work and contributions.

•    A clear and easy to follow demonstration that shows the correct functionality of your program (show your program actually working in the video – not screen shots of before and after).

•    Use visual aides to help explain your steps (whiteboard, markers, poster, etc.). The video does not have to be fancy, just effective in relaying the most important information.

5. Team Evaluations:

Each member must provide a brief personal summary of her/his involvement and contributions. Each team member is required to submit evaluations of her/his teammates’ contribution, one for each of   Core and Reach. For example, if your team has members A, B, C, your evaluation can be similar to the following for a single member.

Team Member A: was in charge of writing the code to load the ships and plot the map. For the Reach, A was in charge of adding 2 different analysis plots and custom alarm. Team Members B, C agree that A    performed these tasks for the project.