15 Feb of this year my Concertina was deliverd on my doorstep.
It is a Wren 2 Anglo C/G Concertina by McNeela. A affordable good instrument.
Features
30 button Anglo Concertina in the key of C/G
Fully chromatic
Measures 6.3″ across the flats (16cm)
8 fold bellows
Steel reeds
Loud, crisp tone
Durable black buttons
Wheatstone/Lachenal layout
Excellent response
Easy to play
Lightweight concertina – easy to handle for all ages
Traditional size – unlike other bulky beginner concertinas
Softer, more comfortable, adjustable hand-straps – suitable for both children and adults
Finished with improved stylish gloss exposed-grain wood
Comes with a complimentary Concertina Padded Hard Case
The word concertina refers to a family of hand-held bellows-driven free reed instruments constructed according to various systems, which differ in terms of keyboard layout, and whether individual buttons (keys) produce the same (unisonoric) or different (bisonoric) notes with changes in the direction of air pressure. It is weird playing two notes with the same button, but i gives you a broader tonal range. Some notes are double, one on the pull action and one on the push action. When playing for a while it is possible to switch between those two to be able to play faster. Because you can use the same pull or push as you already where playing, or the button is close by the one you already play.
A little diagram i drew myself using inkscape to learn the buttons i needed. (Blanks also have notes)
So i had a little problem with the pull motion of the right hand A’ B’. I didn’t want to send my Concertina back (Still has garantee, i know) But sending it back to Ireland will take a while and has postal costs. (I’ve fixed my Accordeon also, so why not try to fix it myself?) (… aaand i was curious of the insides )
I had to look at the inner workings for a minute, and finding the right reed. The middle picture above shows a white plastic strip, one of them was stuck. Moving it a little and carefully bending it, got it free and moveable again.
On with the lessons from Caitlin Nic Gabhann again! https://www.youtube.com/watch?v=Z3tPzc6kKM0
2023 Repair:
One of the reeds fell off! It was not glued properly. A 5 minute fix!
Put the box flat on the table to switch off. When you put it on one side, it will controll your lights brightness. 20,40,60,80 and 100%, just by rotating and putting it down on its sides.
3D printed case
Schematics (without the wireless charging part)
Wireless part
Node-Red Controll part (source below)
Nice to have’s : Arduino-sleep mode, wakeup with a movement sensor.
Arduino Code
#include <Wire.h>
//#include <SPI.h>
#include <PubSubClient.h>
//#include <string.h>
//#include <stdio.h>
#include <ESP8266WiFi.h>
// Wifi settings
const char* ssid = "xxxxxx";
const char* password = "xxxxxxxxxx";
const char* mqtt_server = "10.1.0.17";
// I2C address of the MPU-6050 - 0x68 or 0x69 if AD0 is pulled HIGH
const int MPU = 0x68;
int16_t AcX, AcY, AcZ, GyX, GyY, GyZ;
float gForceX, gForceY, gForceZ, rotX, rotY, rotZ;
// Wifi MAC address
byte mac[]= { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
WiFiClient espClient;
IPAddress ip;
PubSubClient mqttClient(espClient);
// IP address of your MQTT server
const char* server = "10.1.0.17";
//const char* outTopic = "test/";
//const char* server = "iot.eclipse.org";
void dataReceiver(){
Wire.beginTransmission(MPU);
Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU,14,true); // request a total of 14 registers
AcX = Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY = Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ = Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
GyX = Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY = Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ = Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
processData();
}
void processData(){
gForceX = AcX / 16384.0;
gForceY = AcY / 16384.0;
gForceZ = AcZ / 16384.0;
rotX = GyX / 131.0;
rotY = GyY / 131.0;
rotZ = GyZ / 131.0;
}
void debugFunction(int16_t AcX, int16_t AcY, int16_t AcZ, int16_t GyX, int16_t GyY, int16_t GyZ){
// Print the MPU values to the serial monitor
Serial.print("Accelerometer: ");
Serial.print("X="); Serial.print(gForceX);
Serial.print("|Y="); Serial.print(gForceY);
Serial.print("|Z="); Serial.println(gForceZ);
Serial.print("Gyroscope:");
Serial.print("X="); Serial.print(rotX);
Serial.print("|Y="); Serial.print(rotY);
Serial.print("|Z="); Serial.println(rotZ);
}
void reconnect() {
// Loop until we're reconnected
while (!mqttClient.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (mqttClient.connect("arduinoClient")){
Serial.println("connected");
}
else {
Serial.print("failed, rc=");
Serial.print(mqttClient.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(1000);
}
}
}
void setup(){
Serial.begin(9600);
setup_wifi();
Wire.begin(0,2);
Wire.beginTransmission(MPU);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0); // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);
mqttClient.setServer(server, 1883);
// Ethernet.begin(mac);
// ip = Ethernet.localIP();
Serial.println(ip);
Serial.println(server);
//delay(1500);
}
char* init(float val){
char buff[100];
for (int i = 0; i < 100; i++) {
dtostrf(val, 4, 2, buff); //4 is mininum width, 6 is precision
}
return buff;
}
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void dataAcc(){
char mpu6050X[100]= "";
strcat(mpu6050X,init(gForceX));
char mpu6050Y[100]= "";
strcat(mpu6050Y,init(gForceY));
char mpu6050Z[100]= "";
strcat(mpu6050Z,init(gForceZ));
// accelerometer - "topic, mpu6050"
mqttClient.publish("AcX/", mpu6050X);
mqttClient.publish("AcY/", mpu6050Y);
mqttClient.publish("AcZ/", mpu6050Z);
// mqttClient.publish(outTopic, "text to send via mqtt");
}
void dataGy(){
char mpu6050X[100]= "";
strcat(mpu6050X,init(rotX));
char mpu6050Y[100]= "";
strcat(mpu6050Y,init(rotY));
char mpu6050Z[100]= "";
strcat(mpu6050Z,init(rotZ));
// gyroscope - "topic, mpu6050"
mqttClient.publish("GyX/", mpu6050X);
mqttClient.publish("GyY/", mpu6050Y);
mqttClient.publish("GyZ/", mpu6050Z);
// mqttClient.publish(outTopic, "text to send via mqtt");
}
void loop(){
dataReceiver();
debugFunction(AcX,AcY,AcZ,GyX,GyY,GyZ);
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
dataAcc();
dataGy();
delay(2000);
}
Coline sometimes plays games with her sisters online using my streaming server. (Due to Covid)
Some games are difficult because you have to point to a location on the table. So i came up with a laser pointer solution.
With my 3D printed towerStreaming using OBS and a Nikon camera
The idea is: Send a url to the players with a streaming camera, you see the game on your screen but you can click on a location on the screen to move a laser pointer to that location.
Below is a proof of concept using the Lasercut worldmap on the wall and a website with a worldmap.
Laser pointer module
Cork worldmapImage on website
Code to place on the ESP:
This will connect to the MQTT broker and listens for messages on the servo/pan and tilt topic.
We are movieholic’s. Watching everything. Sometimes we thing “why the F did we watch that” other times it’s a pretty unknown jewel.
We loved “De kijk van Koolhoven” a dutch tv serie about movies, by our dutch director Martin van Koolhoven. He explained why he liked certain movies. Tarantino did simular but couldn’t find much about that
We started watching the top 250 IMDB movies a few years ago. Comming a long way, and has been a treat.
Below a list of top movies i could thing of in serveral genre’s. Nowhere complete, and probably forgot better ones
Action
3 days of the condor
Snowpiercer
Maze runner
Inferno
Bourne series
Enter the Dragon
Fugitive
John Wick
Animation
Akira
Ghost in the shell
9
5cm per second
Tintin (2011)
Beowulf
Coco
Song of the sea
Comedy
guest house paradiso
Life of brian
“100-year old man who climbed out of the window”
Blues brothers
“Dont look now we’re being shot at”
Groundhog day
The man who sues god
Mash attacks
Modern times
Great Dictator
Airplane
Crime
12 Angry men
The sting
The Mule
Oceans series
“No Country for Old Men”
Drama
Roma
A beautiful mind
Bicycle thieves
Cast away
Cinema Paradiso
Green book
Kite runner
Man on the moon
Seven samurai
American Sniper
Wadjda
Dutch
Amsterdamed
De Lift
The Johnsons
“Schippers van de Kameleon”
Michiel de Ruijter
Fantasy
The BFG
Hobbit
Lotr
Labyrinth
“The Imaginarium of Doctor Parnassus”
Time bandits
City of lost children
Film Noir
Double indemnity
Touch of evil
Sin City
M
Horror
Alien
Saw
The Platform
Underwater
Them
The Thing
Troll hunter?
Braindead
IT-Related
Antitrust
Hackers
Tron
Matrix
Source code
Swordfish
Takedown
War games
Mindfuck
Looper
Memento
Oldboy
Vertigo
The Prestige
Primer
Time lapse
Pre-1940
The general
Metropolis
Modern times
Gold Rush
M
SciFy
Bladerunner
Metropolis (silent)
Attraction
Inception
Interstellar
Martian
Terminator
Avatar
Arrival (2016)
Incredible shrinking man
Them (1954)
Fun to watch
4Latas
War
Live is beautiful
Great escape
Dunkirk
The pianist
T-34
Oorlogswinter
Schindler’s list
Das boot
Downfall
Inglourious basterds
The imitation game
Ballad of a Soldier (1959)
Escape from Sobibor (1987)
painted bird (2019)
Weird
Funky Forrest
Existence
Delicatessen
Meet the feebles
“Requiem for a dream”
Swiss army man
Tenet
A clockwork orange
“Curious case of Benjamin Button”
The Lobster
Zardoz
Western
Revenant
Brimstone
Hang m high
Good bad and the Ugly
Magnificent Seven (1960)
Woman Power
Jackie Brown
Hidden figures
Color Purple
Moana / Brave
Roma
Alien
The Piano
Girl with the Dragon Tattoo
A League of Their Own
9 to 5
Kill bill
List for Maryse
Zwartboek
Red sea ding resort
The pianist
Schindler’s list
Zwartboek
Son of Saul
Boy in the striped pyjama’s
Waltz With Bashir
La vita è bella
Indian movies
Taare Zameen Par (2007) – Like stars on earth (is a tearjerker)
Generated a world map where we’ve been … biggest red part .. seen the least of it 🙂 Vacation or work A small part of the US, and a small corner from the westcoast of Canada.
I’m using Kodi for a long time now, but never was really satisfied with the results of automatically scraping metadata.
Movie names had to be just right, and changing some metadata was hard.
A while ago i made a NFO generator for own movies, digitized 8mm material, mobile movies etc.
So for movies/tv shows i started using Tinymediamanager for metadata management. You have more controll over your NFO files. Don’t forget to add media sources to Kodi, selecting the ‘local NFO scraper’ option.
I’m using TVDB scraper in TMM, and trakt to mark seen. But that way i’m missing IMDB top 250.
Fix:
Scrape metadata for selected movies
Choose IMDB as the Metadata scraper
Remember to DESELECT ALL metadata options with the exceptions of Rating , to keep your existing metadata.
TinyMediaManager Scraper page
UPDATE: Problems with premiered date/release date showing up as movie date in kodi? Here is my fix.
find . -type f -name '*.nfo' -print -exec sed -i -e '/<premiered>/d' {} \;