4th April – Presentations

Lecture

In the lecture today we discussed ways in which you can document the process if our projects so that we know the aspects of development that have occurred throughout our projects. We discussed there categories:

  • Visual (videos, pictures and diagrams)
  • Written (Blog posts, publications and lab notes)
  • Code repo (GitHub blog posts)
  • Quantitative and qualitative data (Excel spreadsheets)

Lab

Today we all completed a 10 minute presentation of how far we have come with our projects so far and explained any aspects that we still needed to complete. We all then graded each other on four different aspects of our presentations which included:

  • Clarity
  • Complexity
  • Aesthetics
  • functionality

Those of us that have managed to get sound to work with our projects have shown how they can be used. Below I have included the slides for my presentation so that you can see the progress that I have made with my Arduino project. In the presentation slides there is also a video of my project so far and the issues that I have been faced with.

Although I am having an issue with the fact that the code is struggling to work with my project, after meeting with my peers today I see where the issue is and how I can change my code so that it works successfully.

It is also interesting to see how far we have all come with our projects individually as we have all been given the same brief but chosen to approach it differently.

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.

Week 24 – 14th March (presentations)

Lecture

Today we presented our presentations about Arduino projects that have helped give us ideas towards our own. This was a timed presentation that was 15 – 20 minutes and everyone in the class gave feedback on how the presentation was completed as well as the criteria that they had completed their project up to. It was interesting to gain feedback from those in the class as we completed these presentations on our own and needed ways in which we could improve them. It was also captivating to see how other people had done their presentations and the ideas that they had for their own projects as we all have very different ideas about the projects that we wish to complete.

This is one of the instruments that I looked at during my presentation and it is the instrument that has had the most influence on my final piece in total.

https://create.arduino.cc/projecthub/Barqunics/paper-piano-with-arduino-e27da7?ref=tag&ref_id=piano&offset=1

Lab

We took a tour of the mechanical workshop to see what machines they had available and the kinds of projects that they were producing. It was interesting to see a completely different department compared to the one that we are usually situated.

This is an image of a laser cutter that is similar to the one that is in the mechanical workshop – the secret to clean laser cutting: Designing a better laser nozzle using 3D-printing – Nervous System blog (n-e-r-v-o-u-s.com)
  1. What is the mechanical workshop?

The mechanical workshop is a room that has multiple different pieces of equipment inside it that can be used to make various different projects that include making physical things.

2. Who are the contact persons?

3. When can you go?

The timetable is on the back of the door of the workshop room.

4. Where is it located?

In Queens at the back of the building near the very end.

5. Why you should go?

You should go to develop any project that you have decided to create to add originality and a creative fare to it.

6. How are you planning to use the mechanical workshop concerning your project?

I may decided to use the mechanical workshop in my project as I’d like to create a mini piano that look realistic. This would mean that I could laser cut pieces of the piano such as the keys. However, I don’t know have access to one of these machines so visiting the mechanical workshop would be necessary.

Conclusion

In conclusion it was interesting to see the various pieces of equipment that they had available to use as I wasn’t aware that the department existed. They had various models of planes and cars which was interesting to see as there are many different options that you can make. It has allowed to to see that I can create a much more interesting instrument that I first thought and I think that it will look more professional in total.

7th March – Timelines for project

Lecture –

In the lecture we covered the content of the write-up to our project. Here is the layout for my project:

  • Introduction – explaining all the initial ideas and aims of my work)
  • Context – project ideas and examples of other work)
  • Prototype – my idea and diagram of circuit)
  • Results – video of my project and and discussion
  • Conclusion – summary of the project and and conclusions made

Lab

Above is a timeline that I have made for my project outlining my main goals with milestones and all other dates that I have to have achieved certain tasks by.

It’s important to use a timeline chart for a project as to allows you to stick to goals and have a better understanding of when you need to achieve certain goals by to accomplish your task.

21st Feb (ONLINE)

What is a timeline?

A timeline is a display of a list of events in chronological order.

What are the different types of timelines?

  • Text timelines, labeled as text
  • Number timelines, the labels are numbers, commonly line graphs
  • Interactive, clickable, zoomable
  • Video timelines
https://cacoo.com/templates/project-timeline-template

What is a Gantt chart?

Gantt chart is a type of bar chart that illustrates a project schedule, named after its popularizer, Henry Gantt (1861–1919), who designed such a chart around the years 1910–1915. Modern Gantt charts also show the dependency relationships between activities and the current schedule status.

GanttPRO — 

  • multi-platform
  • 14 day free trial but then paid
  • web based
  • Gantt chart

Smartsheet

  • multi-platform
  • 30 day free trial but then paid
  • web based
  • Gantt chart

TimeGraphics –

  • multiplatform
  • Free
  • Web based
  • Timeline

Milestones and goals:

Goals refer to the results an organization intends to achieve in a given time period.

Milestones are the critical and measurable accomplishments that need to be made so as to progress towards a goal. 

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.

MATD3039 – Digital Oscillators (7th February 2022)

Lecture

In the lecture we spoke about the different ways that you can use an Arduino board to expand simple projects into more complex ones. We looked at different sensors and in particular I looked at a force sensitive resistor.

The link for this image of a FSR – Force-Sensing-Resistor.jpg (1847×1114) (elprocus.com)

Lab

We began the lab by using code for the Arduino that allowed for a sine tone to be created using a small speaker. The circuit that was used is included below and this is followed by the code that allowed us to create a sine tone with breaks in between.

//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 the tone plays
*/
tone(piezoPin, 450);
delay(500);
noTone(piezoPin);
delay(500);
}

The Arduino board and breadboard that were included in my circuit.

We went through many other commands that you can add to the code in order to create more advanced melodies. We made our own code that ascend up to a specific note and then decrease to another. The code included below is just that.

//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 the tone plays
*/
for (int i=31; i<10000; i++) {
tone(piezoPin, i, 1000);
delay(10);
}

for (int i=10000; i>700; i--) {
tone(piezoPin, i, 10000);
delay(10);

}
}

Digital Oscillator

Above is the circuit that I created for the digital oscillator.

Code for digital oscillator

//CODE DigitalOSC
const int ledPin = 13; //variable to represent LED Pin
const int periodKnob = A0; //variable for knob pin (A0 = analog in pin 0)
int delayTime; //variable for the delay time
void setup() {
pinMode(ledPin, OUTPUT); //configure pin 13 as a digital output
}
void loop() {
//set delay time equal to the current value read on analog pin 0
delayTime = analogRead(periodKnob);
//map the analog read range from 0-1023 to 10000-1
//delayTime = map(delayTime, 0, 1023, 10000, 1);
digitalWrite(ledPin, HIGH); //set pin 13 to 5 volts
delayMicroseconds(delayTime); //pause program
digitalWrite(ledPin, LOW); //set pin 13 to 0 volts
delayMicroseconds(delayTime); //pause program
}
//

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);

Advanced Musical Electronics – 24th Jan Jade Holland

Lecture

Today we began by looking at the different types of sensors and actuators in the lecture.

A sensor – is a device that detects and responds to some type of input from the physical environment. The specific input could be light, heat, motion, moisture, pressure, or any one of a great number of other environmental phenomena. 

Lab

In the lab we used an Arduino to connect a push button and an LED together which would allow the button when pressed to switch on the LED, this then progressed into allowing the led to fade in and out.

Code

Below is the code used from the lab that allowed for the button to switch on the LED and keep it switched on until the button was pressed again.

const int LED = 13; // the pin for the LED
const int BUTTON = 7; // the input pin where the
// pushbutton is connected
int val = 0; // val will be used to store the state
// of the input pin
int state = 0; // 0 = LED off while 1 = LED on
void setup() {
pinMode(LED, OUTPUT); // tell Arduino LED is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
}
void loop(){
val = digitalRead(BUTTON); // read input value and store it
// check if the input is HIGH (button pressed)
// and change the state
if (val == HIGH) {
state = 1 - state;
}
if (state == 1) {
digitalWrite(LED, HIGH); // turn LED ON
} else {
digitalWrite(LED, LOW);
}
}

Arduino button switching on/off the LED

Below is a website that I have included that walks through a similar tutorial like the one completed today in the lab.

Arduino LED – Complete Tutorial – The Robotics Back-End (roboticsbackend.com)

There were several versions of the same code but all of them had different improvements as it was found that as the Arduino runs quicker than the time it takes for a human to press the button, it would sometimes flicker. Altering the code allowed for the Arduino to have time to process so now no flickering would occur with the LED.

Controlling light with pulse-width modulation

We then coded the Arduino board to allow an LED light to fade the light from high to low using this code below.

// Fade an LED in and out, like on a sleeping Apple computer
const int LED = 9; // the pin for the LED
int i = 0; // We'll use this to count up and down
void setup() {
pinMode(LED, OUTPUT); // tell Arduino LED is an output
}
void loop(){
for (i = 0; i < 255; i++) { // loop from 0 to 254 (fade in)

analogWrite(LED, i); // set the LED brightness

delay(10); // Wait 10ms because analogWrite // is instantaneous and we would // not see any change }

for (i = 255; i > 0; i--) { // loop from 255 to 1 (fade out)
analogWrite(LED, i); // set the LED brightness
delay(10); // Wait 10ms
}
}