04/04/22 In Class Demonstration

For today’s lab session, we each gave a presentation in which we shared the current progress of our designs and some of the trials and tribulations we have encountered.

It is always reassuring to hear of the work of others and know that you’re not alone in your endeavors and that everyone struggles with something.

Jade’s presentation on her piano design was really insightful as to the playability and functionality of her device. Tolu’s project was very inspirational as he had taken the time to fully understand his code which is something I am personally struggling with. Emily’s project was interesting as she has taken her design from the previous year and decided to improve on her previous work with the power of self reflection which will surely render her work much better, due to the lessons learned from last year.

Questions and feedback are crucial when designing a project like this as things you might overlook can be pointed out to you by others, giving you the chance to reconcile before you have to submit them.

28/03/22 Lab & Seminar Blog Post

During this mornings session, we watched and gave feedback on a great presentation by Dr. Rebecca Stewart, based around electronic music interfaces, primarily using unconventional materials like fabrics or textiles. It was very helpful to see and witness how one can experiment with somewhat traditionally sourced materials.

This is a screenshot of one of the projects featured within the presentation, by Afroditi Psarra

In the lab session, we revised last weeks topics and began working towards our final projects independently. I personally tried to resolve some software issues I am having with MAX/MSP but they are persisting which is causing me great frustration. I am at this stage considering switching to Pure-Data instead, before I am too far into this project and I cannot change program as I have committed too much time into one software.

21/03/22 Lab and Seminar Blog

In this morning’s session, Tolu gave a great presentation on some projects that inspire his project and gave a great insight into his thought process into how he decided his final project.

For the lab session, we began with a recap of last week which we then followed by an informative session around remote access of the DMU computers which in turn gives us access to software such as SolidWorks which is a material design/3d printing and construction software that will be crucial for us to

A Screenshot of a half sphere created within SolidWorks

The second phase of the lab was spent checking fitting within the enclosure and trying to work out creative ways in which I can get the most out of my circuit and make it a unique, interesting project.

14/03/22 Mechanical Labs Tour

In today’s session, we had a guided tour around the engineering facilities on the ground floor of the Queen’s building. I found this greatly helpful as I am in need of tools and potential parts that I cannot facilitate on my own, such as 3D printers, CNC machines, etc..

In my own project, I have ordered an enclosure I intend to use for building my project however, if I had known I could custom make an enclosure then I would have. Since I already have bought my premade enclosure, I can use the facilities to machine the holes in the enclosure whilst making a half sphere shape that will increase the playability of my device. Rather than the box sitting on a flat plane and needing to be picked up, Raising it up on a free moving sphere that can support the project to stay flat yet allows to easy adjust the orientation, increasing the functionality of my project as an interface to create sounds.

Here is something that has been printed by someone else that is similar to what I would like to make, except only 1/2 of the sphere would be necessary.

14/03/22 Seminar Presentations

In todays seminar session, Jade and I presented some projects that inspire us in our own work. Jade gave a very in-depth presentation upon 3 projects, each with a unique take on a similar concept but executed to different level of complexity. Jade explained the code portion of the projects in a much greater detail than my own presentation and it is clear to me that I need to expand my understanding of the coding and how that controls the different parameters.

For my own project, I was less in-depth with specific design components but had an overarching theme of trying to do more with the same design of circuit, by changing just the software.

Here is a demonstrational video I used within my presentation, demonstrating the use of an mpu6050 Gyroscope and 3 axis accelerometer with a GUI toy plane representing the X,Y, & Z data.

07/03/22 Lab Session (Online)

We started today’s session with a really good informational presentation by Harris, a fellow Student. He guided us through all of his documentation and his final project which he produced last year for a similar module. It was very insightful to hear of the struggles he faced and how he managed to navigate them.

We then started drafting timelines for the entire project. This really helped to visualize where we are at with the current project and will prove useful with time management in the coming weeks.

As you can see the timeline is quite cluttered as there are lots of tasks to undertake. This is something that I will continually update as time goes on and jobs pop up.

AME MATD3039 14/02/22 Lab (Online)

For this session, we revised Creative Commons Licensing which is crucial to the software we will be utilising. A Creative Commons license is used by authors that intend for the general public to have access to their work, to edit it and potentially expand upon it. This can include a non-commercial license so it is for non-profit, individuals, or educational purposes.

The Attribution-ShareAlike 3.0 Unported (cc BY-SA 3.0) license version allows users to share, copy and republish work in any format. It allows users the freedom to adapt the work provided, including any commercial uses that may be relevant. It is required that the original work is referenced properly and that it is not disguised as your own, independent work.

We then installed the Fritzing software and went about following the tutorial to create our very first circuit which features an Arduino Uno board, a LED and a resistor (220Ohm). We used the inspector fucntion to alter the resistance of the resistor and colour of the LED.

https://fritzing.org/learning/tutorials/building-circuit

We then followed a more advanced tutorial featuring a 9V battery, a capacitor, a general IC (74C14), a photoresitor and a breadboard to create to following circuit.

Handmade Electronic Music by Nicolas Collins, Chapter 32 – “My First Oscillator”

The above circuit would assumably control the output of the device using the photoresistor, which is essentially the same design as my coursework from a previous module that functioned like a light theremin.

Fritzing is quite an intuative software that allows you to create circuits very quickly and has a very similar interface to TinkerCAD which I have worked with previously. You can implement the code that you would upload to the Arduino which helps with error checking and even goes much further with the schematic section which allows greater routing variety. Fritzing is very similar to TinkerCAD, with the exception that it cannot perform simulations. However, Fritzing provides a much greater variety of components that are not included in TinkerCAD.

AME MATD3039 Lab Session 07/02/22

We began this session as usual by revising our blog posts from last week and the content we covered.

We then setup a circuit that features a 100 Ohm resistor and a piezo disc as a speaker that produces one single stable, monophonic frequency sine tone. The code for this version is featured below.

//A sketch to demonstrate the tone() function
//Specify digital pin on the Arduino that the positive lead of
//piezo buzzer is attached.
const int piezoPin = 8;
void setup() {
}//close setup
void loop() {
/*Tone needs 2 arguments, but can take three
1) Pin#
2) Frequency - this is in hertz (cycles per second) which
determines the pitch of the noise made
3) Duration - how long teh tone plays
*/
tone(piezoPin, 250, 500);
//tone(piezoPin, 1000, 500);
//delay(1000);
}
No description available.

We then created a version of the code that rapidly increases the pitch and then a version that can ascend and then descend when it hits its threshold pitch.

We then utilized a piece of code that recreates the Mario theme tune through limited beeps which was interesting, so far most of the end products have been very unmusical but now we have a musical output which is encouraging. Below is a small snippet of the code which is quite lengthy due to the many pitches, etc required.

Tone tone1;
void setup() {
// put your setup code here, to run once:
tone1.begin(8); // Playback on Pin 11, change to whatever you may
//need
}
void loop() {
// put your main code here, to run repeatedly:
tone1.play(660,100);
delay(75);tone1.play(660,100);
delay(150);tone1.play(660,100);
delay(150);tone1.play(510,100);
delay(50);tone1.play(660,100);
delay(150);tone1.play(770,100);
delay(275);tone1.play(380,100);
delay(287);tone1.play(510,100);
delay(225);tone1.play(380,100);
delay(200);tone1.play(320,100);
delay(250);tone1.play(440,100);
delay(150);tone1.play(480,80);
delay(165);tone1.play(450,100);
delay(75);tone1.play(430,100);
delay(150);tone1.play(380,100);
delay(100);tone1.play(660,80);
delay(100);tone1.play(760,50);
delay(75);tone1.play(860,100);
delay(150);tone1.play(700,80);
delay(75);tone1.play(760,50);
delay(175);tone1.play(660,80);

We then implemented a new circuit with a speaker output jack and a potentiometer which controlled the frequency of the output signal.

No description available.

Lab Session – 31/01/22 –

In this session, we discussed our previous blog posts and revised the content from last week. We were then set on the task of finding a few audio libraries for Arduino and below is the research I found.

DFPlayerMini: included within the IDE software libraries page and is a reliable, responsive driver for DFPlayer Mini sound module for Arduino, and functions with SD card readers you can buy from DF and third parties.

ESP8266Audio: Arduino library for parsing and decoding MOD, WAV, MP3, FLAC, MIDI, AAC, and RTTL files and playing them on an I2S DAC

MD_YM2413: the YM2413 can only play one user-defined instrument at a time, with an additional 15 read-only hard-coded instrument profiles available

Mozzi: Expands on the current beeps that the Arduino is capable of, implementing much more complex sounds to be available for playback. You can use Mozzi to generate algorithmic music for an installation or performance.

Musician: This library implements a virtual musician. You can easily ask him to play a melody, based on the MELO music notation from the Melody Library.

Teensy: Audio Library is a toolkit for building streaming audio projects, featuring Polyphonic Playback, Recording, Synthesis, Analysis, Effects, Filtering, Mixing, Multiple Simultaneous Inputs & Outputs, and Flexible Internal Signal Routing.

#include <MozziGuts.h>
#include <Oscil.h>
#include <tables/sin2048_int8.h>

#define CONTROL_RATE 128
Oscil <2048, AUDIO_RATE> aSin(SIN2048_DATA);
Oscil <2048, CONTROL_RATE> kVib(SIN2048_DATA);

float centre_freq = 440.0;
float depth = 0.25;

void setup(){
	kVib.setFreq(6.5f);
	startMozzi(CONTROL_RATE);
}

void updateControl(){
	float vibrato = depth * kVib.next();
	aSin.setFreq(centre_freq+vibrato);
}

int updateAudio(){
	return aSin.next();
}

void loop(){
	audioHook();
}

So to summarise this Mozzi library tutorial, any Mozzi classes/modules or tables need to be called using the #include <_____>, for example : #include <MozziGuts.h> is the main library, whilst #include <Oscil.h> is used to call the oscillator. #include <tables/sin2048_int8.h> is the Wavetable that corresponds to the sinewave we are using in the example.

Next, we create an instance for the oscillator using Oscil to which we will then alter.

Oscil <table_size, update_rate> name(table_data);

So we input our values into the format above to create something that looks like this below. Note that the table size value typically needs to be a power of two for compatibility. The oscillator uses an audio generator

Oscil <2048, AUDIO_RATE> aSin(SIN2048_DATA);

Week 17 – Lab Session Blog

We began the session by revising what we learned last week and looking over our previous Arduino code, line by line.

Screenshot of last weeks code

Next, we recreated a circuit from the worksheet which features a 10K Ohm resistor, a pushbutton, an LED, a breadboard and some jumper wires with our Arduino boards. When the button is pressed the LED lights up

Photograph of the circuit.

We then altered the code to create a version where the button controls the LED in a different capacity. It is interesting that we can leave the circuit the same but we can change the function of the hardware by changing only the code.

Updated Code

We then updated the code further to remove a small bug so that the light stays on when turned on and turns off when pressed again. There is a noise generated by the push of the button which we can counteract within the code to make it much more reliable in its function.

We then created a new more basic circuit and code that allows our LED to fade on and off intermittently.

A short video of the LED fading on and off with the circuit in the background.

This session has been an important coding revision and it is very important to understand what your code is doing, line by line. Otherwise you cannot diagnose errors and you won’t have any deeper understanding of what your code is achieving.