Homework 6: Functional Descriptions

Jim Stys, Erica Gucciardo, Keith Kraus, Necmi Celik

I pledge my honor that I have abided by the Stevens Honor System.

Section I: Summary of Assignments

Jim Stys (Team Leader) / Erica Gucciardo / Keith Kraus / Necmi Celik
Percentage of effort towards this assignment / 25 % / 25 % / 25 % / 25 %
Topic of Contribution / Brainstorming functionality, performance metrics, and interfaces of the audio detection and pitch recognition algorithms / Brainstorming functionality, performance metrics, and interfaces of the Android GUI programming / Brainstorming functionality, performance metrics, and interfaces of the LDAP authentication and server side audio processing / Brainstorming functionality, performance metrics, and interfaces of the Mobile OS portability

  1. Android Application

A)Core Code

  1. The core Android code in the android version of the app will be written in JAVA. IOS requires that the program code be in Objective-C.
  2. For this reason, an external program made by Google will be used to convert whatever existing JAVA code it is possible to Objective-C.

B)GUI Code

  1. The user interface for each component of the app is defined using a hierarchy of objects. Each object is an invisible container that organizes child views, while the child views may be input controls or other widgets that draw some part of the UI.
  2. To declare your layout, you can instantiate objects in code and start building a tree, but the easiest and most effective way to define your layout is with an XML file. XML offers a human-readable structure for the layout, similar to HTML.
  3. Since there is no way to directly carry over a GUI made for Android to iOS it must be built from scratch in the iOS IDE Xcode.
  1. J2ObjC

A)J2ObjC supports most Java language and runtime features required by client-side application developers, including exceptions, inner and anonymous classes, generic types, threads and reflection.

B)But it is still a work in progress , so there will be issues with more complex bits of code that will need to be manually translated from JAVA to Objective-C.

  1. Xcode

A)Xcode is the integrated development environment (IDE) designed for developing iOS and Mac apps. The Xcode IDE includes editors used to design and implement your app, such as a source code editor and a user interface editor.

B)This project will mostly use the UI creation portion of Xcode. There will also be some code that will need to be manually translated into Objective-C.

References

  • Server
  • Active Directory
  • Functionality
  • Authentication for users to allow for secure uploading and downloading using the application
  • Authentication for users to allow for secure storage of converted sheet music and original audio in cloud storage
  • Means of digital signature for copyright protection of user submitted audio and sheet music
  • Interfaces
  • LDAP for communication from the application to the Active Directory and vice versa
  • LDAP for communication from the cloud storage to the Active Directory and vice versa
  • Kerberos Authentication used for digital signature of submitted audio and sheet music of users
  • Performance Metrics
  • Processing power used by hour, day, week, etc. for the Active Directory
  • Number of queries done on the Active Directory per hour, day, week, etc.
  • Average speed of query per hour, day, week, etc.
  • Time taken to pass authentication through LDAP to application, cloud storage
  • References
  • Audio Processing Application – Server-Side
  • Functionality
  • Converts submitted audio into sheet music
  • Uploads both submitted audio and converted sheet music into cloud storage
  • Digitally signs the files for copyright protection
  • Interfaces
  • LDAP for authentication from the Active Directory
  • LDAP for authentication to the Cloud Storage
  • Internet data transfer of audio files from mobile application into this application
  • Internet data transfer of audio files and converted sheet music into the cloud storage
  • Performance Metrics
  • Processing Power used for audio to sheet music conversion
  • Average time taken to convert audio to sheet music
  • Processing Power used to digitally sign audio and sheet music files
  • Average time taken to digitally sign files
  • Bandwidth used importing audio files from mobile application
  • Bandwidth used exporting audio files and converted sheet music to cloud storage
  • References
  • Pitch Detection from Input Audio (mic)
  • Functionality
  • Determine fundamental frequencies from potentially polyphonic audio admitted to the system through the peripheral’s microphone
  • Perform a fast fourier transform followed by Cepstrum analysis to produce fundamental frequencies
  • Quickly lookup the translation between frequency and the corresponding musical note(s)
  • Interfaces
  • Android/iOS audio peripheral (only the embedded microphone, line-in is hardware dependent)
  • Audio stream that is handled by buffers in the KissFFT library
  • Fundamental frequency array that is processed by the Translation Table
  • GUI interface  Translated musical notes and timing data are sent to the GUI interface layer to be translated into musical notes on a staff
  • Performance Metrics
  • Speed of the FFT library used (KissFFT vs. other options)
  • Efficiency when implementing Cepstrum analysis on top of the KissFFT library
  • Sampling rate of the hardware microphone on the peripheral
  • References

  • GUI Development and Design
  • Functionality
  • Get user input and show messages/screens
  • Capture audio using mic on device
  • Send and receive information from server and display appropriate screens
  • Interfaces
  • Connection to Server
  • Interaction with User
  • Audio acquisition from Microphone
  • Performance Metrics
  • Speed and responsiveness of interface
  • Appealing and aesthetically satisfying
  • Amount of users who complete the process Versus amount of users who exit the application
  • Rating on the App store
  • References