-->

My Blog

Latest blog

Symfonia comprises of Musical Instruments such as Piano, Octapad/Electronic Drums/Launchpad and Bongos. With Symfonia, users can turn their keyboard and mouse into a Musical Instrument. With in-built tutorials, audio recording and various sounds/suites to choose from, Symfonia is the perfect place for a Novice Musician. The application runs on platforms including: Windows, Mac and Linux(iOS/Android versions still under progress).

Technologies used in the application:
  • >Python 2.7
  • >Python 3
  • >kivy
  • >pygame
  • >Tkinter(in-built)
  • >Sound pack taken from Soundsnap
Users can choose from different sound suites and also add their own sounds for a specific key or drum pad. Future Works include taking this application to a mobile platform, adding more instruments and refining the UI/UX Design. For specifically the piano Module, decresing the sound response time latency and introducing multi threading functionality to add background beats: 

The Drum module has a set of 27 different sound packs for each pad consisting of 6 to 8 pads in a single screen:-


The repository consists of 7 python ".py" files and 3 subfolder consisting of images, sound packs and instrument suits. Prerequisites to using the application:
  • User's system must have Python 2.7 or 3.6 
  • Pygame python module: can be installed from  here.
  • Kivy python module: can be installed from  here.
Download the repository from  here.


What is Reverse Polish Notation?
Most of us are familiar with different arithmetic operators and their precedence. So When we try to solve the following equation, to avoid ambiguity, we make use of brackets, precedence and associativity:

A+B*C = ?
So without the brackets, this equation solves to (B*C) first then added to A. This seems easy on paper, but the problem in early days arose when people tried to implement these functionalities using a Calculator. How did they do it? This is where Polish mathematician Jan Lukasiewicz comes in. He showed that using a Postfix notation to write the expression instead of Infix will help us create a calculator that is capable of having precedence and associativity. PostFix notation simply means writing operators in front of their operands, instead of between them, brackets were made unnecessary.
Eg: 1+2*3 would be:


In the figure above, we made use of a data structure known as Stack. And we can easily implement this using a Procedural Programming Language. This project, however, makes use of Functional Programming Paradigm. In Functional Programming every computation is treated as the evaluation of a mathematical function. This avoids changing state and mutable data. The programming language used to implement this project is OCaml.
open Stdio
let stack = Stack.create ()
exception RPNFail
let rec compute input =
match input with
| [] ->
if Stack.length stack == 1 then
Stack.pop stack
else
raise RPNFail
| hd :: tl ->
begin
try
match hd with
| "+" ->
let op2 = Stack.pop stack in
let op1 = Stack.pop stack in
Stack.push (op1 +. op2) stack;
| "-" ->
let op2 = Stack.pop stack in
let op1 = Stack.pop stack in
Stack.push (op1 -. op2) stack;
| "*" ->
let op2 = Stack.pop stack in
let op1 = Stack.pop stack in
Stack.push (op1 *. op2) stack;
| "/" ->
let op2 = Stack.pop stack in
let op1 = Stack.pop stack in
Stack.push (op1 /. op2) stack;
| "^" ->
let op2 = Stack.pop stack in
let op1 = Stack.pop stack in
Stack.push (op1 ** op2) stack;
| token ->
let fl = Pervasives.float_of_string token in
Stack.push fl stack;
with Stack.Empty
-> raise RPNFail
end
; compute tl
let () =
while true do
try let line = read_line () in
let strList = Str.split (Str.regexp " +") line in
try
printf "%f\n" (compute strList)
with RPNFail
-> printf "Invalid computation\n"
with End_of_file
-> ()
done;

You can find the entire code  here, in my Github repo.

A Little about B+ Tree:

 B+Tree is an extension of the B-Tree Search which itself is an  extension of Binary Search Tree. Rather than having a single element  in the node, B+Tree has multiple keys in a single level. Also, unlike  other trees B Tree and B+Tree follow the bottom-up approach of  progression. There is an order associated with the B+Tree which is the  maximum number of children a node can hold. Beyond which the node  splits through its middle element. Just like other Data Structures, we  can initialize,insert,delete and search the tree.

The Structure of B+Tree:
This advance Data Structure obeys the following rules: 
  1. Each leaf node is of the form :
    <<K1, D1>, <K2, D2>, ….., <Kc-1, Dc-1>, Pnext>
    where c <= b and each Di is a data pointer (i.e points to actual record in the disk whose key value is Ki or to a disk file block containing that record) and, each Ki is a key value and, Pnext points to next leaf node in the B+ tree (see diagram II for reference).
  2. Every leaf node has : K1 < K2 < …. < Kc-1, c <= b
  3. Each leaf node has at least \ceil(b/2) values.
  4. All leaf nodes are at same level.
B+Tree Operations:
  • Insertion:

Pseudo code:
  1. When insert node is overfull, check adjacent sibling.
  2. If adjacent sibling is not full, move a dictionary pair from overfull node, via parent, to nonfull adjacent sibling.
  3. If adjacent sibling is full, split overfull node, adjacent full node, and in-between pair from parent to get three nodes with floor((2m – 2)/3), floor((2m – 1)/3), floor(2m/3) pairs plus two additional pairs for insertion into parent.

  • Deletion:

Pseudo code:
  1. When combining, must combine 3 adjacent nodes and 2 in-between pairs from parent.
    1. Total # pairs involved = 2 * floor((2m-2)/3) + [floor((2m-2)/3) – 1] + 2.
    2. Equals 3 * floor((2m-2)/3) + 1.
  2. Combining yields 2 nodes and a pair that is to be inserted into the parent.
    1. m mod 3 = 1 => nodes have m – 1 pairs each.
    2. m mod 3 = 0  => one node has m – 1 pairs and the other has m – 2.
    3. m mod 3 = 2 => nodes have m – 2 pairs each.
  • Searching:



In this project, I make use of primitive Data types to create most of the B+Tree operations and functionalities. The programming language used for this program is Java.
Detailed Implementation of this program can be found here

Augmented reality is increasingly being used as an assistive tool in training and education. During these trials, researchers have found potential positives in increases in interaction. Despite this, there has also been evidence showing augmented reality can negatively affect our attention. Seeing that augmented reality can affect our perception, it is important to investigate how the medium affects our perception of distractions, as distraction has been shown in educational settings to be a barrier for learning. However, these effects on our attention can be leveraged to the benefit of the user. In this study, we assess if the platform being used in an environment with or without distractions affected the learning retention of participants viewing a virtual lecture. While there is no statistical significance between platforms, distractions, and the scores obtained by users on the quiz, the feedback from users and the number of reported distractions provides evidence for the concept of inattentional blindness and deafness playing a pivotal role in how users overcome distractions and even how they focus on information at a certain point in time.

Requirements to perform the study: 
  • A VR Headset (in our case, Microsoft Holo Lens)
  • Laptop 
  • A Closed Environment
  • Internet Connection
  • Snacks and Refreshers for participants!
Participants' Prerequisite:

  • No prior knowledge of the Lecture Topic
  • Should posses English Language Skills

Overview of the Study 
We started out by selecting a Historical Audio Lecture based on Ancient Rome. We used this audio file to create 2 different lecture formats:
  • 2D Lecture (to be played on a Laptop screen)
  • 2D Lecture(to be played on a VR headset)
The participants were asked to listen to either forms of the video lectures. At the end of the lecture, they were asked to fill out a MCQ based Questionnaire. These participants were divided into 4 groups :  screen with distractions, screen without distractions, HoloLens with distractions, and HoloLens without distractions. The Distractions were introduced intentionally by the Study team specific times so as to ensure that they do not hinder the student from actually being able to hear the answers to the specific questions(around a 10 sec timestamp of the answer). We limited our distractions to mobile ringtones, people walking in the room and people coming in through the door.  We had a total of 40 participants in all with 2 different platform groups. The first group with the Hololens and second with the Laptop Screen.

Preprocessing the VR Environment:




Initial Prototype of our Virtual Professor:


 

Final view from Hololens:

Result:
Addressing questions answered correctly out of nine, the mean value for the Monitor Control group was 6. Among the group, he standard deviation was 2 and the variance was 4. The mean value for the Monitor Distraction group was 5.5. Among the group, the standard deviation was 2.37 and the variance was 5.61. The mean value for the HoloLens Control group was 6.4. Among the group, the standard deviation was 2.27 and the variance was 5.16. The mean value for the HoloLens Distraction group was 5.7. Among the group, the standard deviation was 1.49 and the variance was 2.2.

The goal of this experiment was to test the benefits of augmented reality in overcoming environment distractions. Since classroom distractions can occur frequently in real-world scenarios, a case can be made to suggest that using augmented reality to increase inattentional blindness and deafness can provide great benefits for instructors’ control over a classroom setting, as well as students’ retention of knowledge. From this experiment, we gathered data regarding distractions on each platform. After reviewing and analyzing the data, and seeing no statistical differences surrounding platform and distraction on quiz scores, we saw evidence of inattentional blindness and deafness based on reported distractions. Our research question attempts to provide an analysis of which platform would help students to recover more efficiently or more readily from distractions. The data we collected underscores the positives of inattention and provides insight into the benefits of unconventional tools like the HoloLens and their utility in a classroom setting. After witnessing the experiences in these environments and reviewing feedback provided about each platform’s lecture, we believe certain aspects of augmented reality can be leveraged in a learning environment to the benefit of the user. Some attributes of the HoloLens can be a hindrance to the user, such as comfortability and eye strain. However, interaction capabilities of the HoloLens and similar platforms offer a wide range for user engagement in the environment, enticing increased attentiveness on the subject matter among learners using these tools. Although the data presented in this paper is preliminary, it stands to reason that with more participants, we can start to see increased trends among them. Along with this, we could see more significant differences between performance of users when using the HoloLens and being distracted or not. With more participants and test questions that have been verified for their difficulty, actionable data can be acquired to argue for the implementation for these tools to be incorporated into different modalities in various learning environments.

To view the entire paper, please click here.
Finally I would like to express my gratitudes to my teammates : Emma Drobina, Jacob Stuart and Kieth McNamara Jr.

Contact Me

Contact With Me

Search This Blog

Want to join the squad, Feel free to reach me out anytime! Here's my contact info: