All posts by fash

ARDUINO CONCERTINA – POC 2

See also

Potmeter needs some tweaking

New code

#include <Keypad.h>
int buzzer=9;
int lastsensorread;
int prevkey;
int push=450;
int pull=550;

const byte ROWS = 8; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'},
  {'A','B','C'},
  {'D','E','F'},
  {'G','H','I'},
  {'J','K','L'}
};
byte rowPins[ROWS] = {5, 6, 7, 8, 10, 11, 12, 13}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {2, 3, 4 }; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
  pinMode(buzzer,OUTPUT);

}
  
void loop(){
  char key = keypad.getKey();
//  if (key == NO_KEY){
 //   key = prevkey;
   //   }
      
  
 // if (key != NO_KEY){
    int freq = 0;
    int sensorValue = analogRead(A0);
    //sensorValue = ((sensorValue+4)/5)*5;



    
    if (sensorValue > push && sensorValue < pull   ) {
    // Serial.println("No pull or push");
    noTone(buzzer);
    }
    else if (key == NO_KEY){
      switch (keypad.getState()){
            case RELEASED:
             noTone(buzzer);
      }
    }
    else 
    {
    if (key == '1' && sensorValue < push ) { tone(buzzer,415); }; // G push
    if (key == '1' && sensorValue > pull ) { tone(buzzer,466); }; // A pull
    if (key == '2' && sensorValue < push ) { tone(buzzer,392); }; // G push
    if (key == '2' && sensorValue > pull ) { tone(buzzer,440); }; // A pull
    if (key == '3' && sensorValue < push ) { tone(buzzer,587); }; // G push
    if (key == '3' && sensorValue > pull ) { tone(buzzer,659); }; // A pull
    
    if (key == '4' && sensorValue < push ) { tone(buzzer,440); };
    if (key == '4' && sensorValue > pull ) { tone(buzzer,392); };
    if (key == '5' && sensorValue < push ) { tone(buzzer,329); };
    if (key == '5' && sensorValue > pull ) { tone(buzzer,349); };
    if (key == '6' && sensorValue < push ) { tone(buzzer,493); };
    if (key == '6' && sensorValue > pull ) { tone(buzzer,523); };
      //8l f/e
    if (key == '8' && sensorValue < push ) { tone(buzzer,261); };
    if (key == '8' && sensorValue > pull ) { tone(buzzer,587); };

    if (key == 'A' && sensorValue < push ) { tone(buzzer,783); };
    if (key == 'A' && sensorValue > pull ) { tone(buzzer,739); };
    if (key == 'B' && sensorValue < push ) { tone(buzzer,523); };
    if (key == 'B' && sensorValue > pull ) { tone(buzzer,493); };

    if (key == 'D' && sensorValue < push ) { tone(buzzer,987); };
    if (key == 'D' && sensorValue > pull ) { tone(buzzer,880); };
    if (key == 'E' && sensorValue < push ) { tone(buzzer,659); };
    if (key == 'E' && sensorValue > pull ) { tone(buzzer,587); };

    if (key == 'H' && sensorValue < push ) { tone(buzzer,783); };
    if (key == 'H' && sensorValue > pull ) { tone(buzzer,698); };
    //tone(buzzer,freq);
    }
    Serial.println(sensorValue);
    Serial.println(key);
    Serial.println(freq);
 //   lastsensorread = sensorValue;
    prevkey = key;
      
 // }
}

Wanted to make a mini Sid Player, and failed

UPDATE: https://www.henriaanstoot.nl/2024/05/30/c64-mobile-sid-player-using-raspberry/

I’ve got an old Speaker Phat, and a Raspberry Zero

An audio add-on board for Raspberry ( same size as the Zero )
Connections

My initial idea was to have the “High Voltage Sid Collection” (Downloaded the 55000 pack)
On a mini device, battery operated and with a little keypad.

On the keypad i can select the Sidtune to play, or pressing
A and a number the Sids from a certain artist.

The display gives you information about the tune being played.
( The display has an I2C hat to convert 8bits to I2C )

See pinout phat above.
I’ve got three choices for I2C connection (green/blue to the Phat)

  • Direct connect and use different addresses
  • Use a I2C hub and different addresses
  • Define a secondary I2C on the raspberry

So I made the first test setup …

Underrun occurred .. So back to the drawingboard.
I probably need a better Audio Hat.
First to try .. Zero fast enough for sidplay2?
Maybe audio over hdmi works??

A Harp in the house again. JOY!

First I have to replace 4 strings.

Apparently F4 B4 F3 and D1

I’ve replaced strings before so that’s no problem. Starting all over again.

Our Folk Band Harp player wants to due some duets. So lets get playin’

http://pinnerstringquartet.com/

UPDATE: 20230119
Replaced the 4 strings yesterday, not fully tuned yet.
Gave the string some time to rest.
Looking at the harp this morning. G4 was broken .. d*mn

UPDATE: 20230126
Replaced also the G4, all done.
Tuning this kind of Harp. (Salvi Lever harp)
You have to put all levers down, and tune them from lowest note to highest.
The A B and E strings have to be tuned flat!
So by using the levers you can play in all kinds of different keys.

StringCDEFGAB
TunerCDD#/EbFGG#/AbA#/Bb

Very nice overview of the keys (harp-school.com)

Computer cards i’ve owned / used

Only cards worth mentioning.
I will add more information to this page

Graphics:

Hercules ???? – Did a lot of machinecode on this one. (Which?)
CGA/EGA Card ??? – Machinecode hacking
VGA .. first card also machine code hacking
Matrox
Some cards i knew a lot about, i did some manipulations using assembly that were very interesting, but only worked on that specific brand.

16 Bit ISA VGA card that is compatibe with 8bits slots for my XT.
see https://www.henriaanstoot.nl/2022/11/16/hercules-to-vga/

Sound:

I’ve bought a lot of Crystal Soundcards, there were breeze to install and use under linux, way back when it was hard to get supported hardware.



Firewire card (for Studio equipment):

Our old trusty mixer

Videocapture:

Video blaster – Which i used to record video (Like ‘Sepp en fash vervelen zich nooit’) and my DIY controllable webcam.

Video Blaster


Pinnacle PCTV- Brooktree Bt848

I used the firewire connection to get the footage of my Canon Video Camera

Firewire cable
Not my card but comparable


Hauppauge WinTV PVR 350


Basetech BR116 (Current) – RCA

Not really a “card”


Camlink 4K (Current) – hdmi

Other:

Stallion RS-232 card for connecting multiple serial terminals.
(Icecrew chat server on Lan Parties)

insmod istallion board0=brumby,0x350,0xcc000
/usr/lib/stallion/stlload -i 2681.sys


Wyse Multiport Serial Card

Ramvantage 16bits ISA memory expansion

PC Hardware diagnostics card

Could not find any information on this card

Catweasel

The Catweasel is a family of enhanced floppy-disk controllers from German company Individual Computers. These controllers are designed to allow more recent computers, such as PCs, to access a wide variety of older or non-native disk formats using standard floppy drives.

You could connect joysticks and there is a socket for a SID chip on the card.

Arduino Concertina – POC

As mentioned in post below

Update: https://www.henriaanstoot.nl/2023/01/17/arduino-concertina-poc-2/

So i’ve bought some needed parts and made a proof of concept.

First to try : 3×4 matrix .. later the full 30 keys version
First part Bella Ciao

Arduino Code
Needs https://playground.arduino.cc/Code/Keypad/ keypad library
Not all buttons are configured with frequencies … yet

#include <Keypad.h>
int buzzer=9;
int lastsensorread;
int prevkey;
int push=400;
int pull=600;

const byte ROWS = 8; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'},
  {'A','B','C'},
  {'D','E','F'},
  {'G','H','I'},
  {'J','K','L'}
};
byte rowPins[ROWS] = {5, 6, 7, 8, 10, 11, 12, 13}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {2, 3, 4 }; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
  pinMode(buzzer,OUTPUT);

}
  
void loop(){
  char key = keypad.getKey();
//  if (key == NO_KEY){
 //   key = prevkey;
   //   }
      
  
 // if (key != NO_KEY){
    int freq = 0;
    int sensorValue = analogRead(A0);
    //sensorValue = ((sensorValue+4)/5)*5;



    
    if (sensorValue > push && sensorValue < pull   ) {
    // Serial.println("No pull or push");
    noTone(buzzer);
    }
    else 
    {
    if (key == '1' && sensorValue < push ) { tone(buzzer,415); }; // G push
    if (key == '1' && sensorValue > pull ) { tone(buzzer,466); }; // A pull
    if (key == '2' && sensorValue < push ) { tone(buzzer,392); }; // G push
    if (key == '2' && sensorValue > pull ) { tone(buzzer,440); }; // A pull
    if (key == '3' && sensorValue < push ) { tone(buzzer,587); }; // G push
    if (key == '3' && sensorValue > pull ) { tone(buzzer,659); }; // A pull
    
    if (key == '4' && sensorValue < push ) { tone(buzzer,440); };
    if (key == '4' && sensorValue > pull ) { tone(buzzer,392); };
    if (key == '5' && sensorValue < push ) { tone(buzzer,329); };
    if (key == '5' && sensorValue > pull ) { tone(buzzer,349); };
    if (key == '6' && sensorValue < push ) { tone(buzzer,493); };
    if (key == '6' && sensorValue > pull ) { tone(buzzer,523); };
      //8l f/e
    if (key == '8' && sensorValue < push ) { tone(buzzer,261); };
    if (key == '8' && sensorValue > pull ) { tone(buzzer,587); };

    if (key == 'A' && sensorValue < push ) { tone(buzzer,783); };
    if (key == 'A' && sensorValue > pull ) { tone(buzzer,739); };
    if (key == 'B' && sensorValue < push ) { tone(buzzer,523); };
    if (key == 'B' && sensorValue > pull ) { tone(buzzer,493); };

    if (key == 'D' && sensorValue < push ) { tone(buzzer,987); };
    if (key == 'D' && sensorValue > pull ) { tone(buzzer,880); };
    if (key == 'E' && sensorValue < push ) { tone(buzzer,659); };
    if (key == 'E' && sensorValue > pull ) { tone(buzzer,587); };
    
    //tone(buzzer,freq);
    }
    Serial.println(sensorValue);
    Serial.println(key);
    Serial.println(freq);
 //   lastsensorread = sensorValue;
    prevkey = key;
      
 // }
}

Lets make a test holder from pieces of wood, when i’ve got the sizes correct, i’ll 3D print something

Rendering images from dos till now

I like creating Art, painting, drawing, sculpting but also computer generated. Most of the things i create are for adults. So i can’t post my best work.

Below are some of the programs i’ve used, these are NOT the generic drawing programs like Gimp, Photoshop or alike.
Ony programs that generate (photorealistic) graphics.
I tried to start with the oldest ending with Blender. There is an overlap and sometimes i’m not sure when I used these programs.

BMRT

Blue Moon Rendering Tools, or BMRT, was one of the most famous RenderMan-compliant photorealistic rendering systems.

Could not find examples?

3DS4

3D Studio, not to be confused with the later “3d Studio Max” product, is a DOS-based tool from Autodesk for creating 3d models and animations.

Vivid

This is the Vivid raytracer. It will only run in a dos environment.
http://paulbourke.net/dataformats/vivid/

Povray

The Persistence of Vision Ray Tracer, most commonly acronymed as POV-Ray, is a cross-platform ray-tracing program that generates images from a text-based scene description.

Example povray source
megapov -geometry 1600×1200 +L /usr/share/povray/include/ +L /data/povray/megapov-1.2.1/include/ +L /data/povray/povray-3.7.0.RC3/include/ ./mine.pov

#include "colors.inc"
#include "metals.inc"
#include "woods.inc"

global_settings { ambient_light rgb<0,0,0> }

#declare Jump_Start  = 0.5;
#declare Jump_Height = 7;
#if (clock < Jump_Start )
 #declare Camera_Y = 1;
#else
 #declare Camera_Y = 1
   + Jump_Height*
     0.5*(1-cos(4*pi*(clock-Jump_Start)));
#end

camera {
 angle 38
 location <0.3,Camera_Y,-3>
 right x*image_width/image_height
 look_at <0,1,0>
 rotate<0,-360*(clock+0.01),0>
} 

plane { 
  y, 0  
  pigment { checker color LightGray color White } // checkered floor
}

// deze later spotlight maken
//light_source { <10, 10, -10> color White }
//light_source { <-10, 5, -15> color White }

light_source
{ <100, 200, -150>/50, 1
  fade_distance 6 fade_power 2
  area_light x*3, y*3, 12, 12 circular orient adaptive 0
}


light_source {
  <3,7,-4>     // position
  color White
  spotlight    // specifies spotlight
  radius 15    // cone opening from its axis in degrees. Light start to dim outside of this.
  falloff 20   // outside of this, there is no light.
  tightness 1  // over-all coherence of the light beam
  point_at <0, 2, 0>
}

box 
 { <0,-200,0>, <143,1100,33>
	scale 0.001
      texture {T_Wood4}  
translate <0.42,-1,0.65>
	rotate <-20,0,0>
 }

#declare plank1 = box 
 { <0,0,0>, <143,2200,33>
	scale 0.001
      texture {T_Wood4}  
 }

#declare size1 = union {
object { plank1 }
#declare xpos = 153;
#declare xpos1 = -10;
#declare ypos = 90;
#declare zpos = 16;
#declare xfinal = 1000;
#declare yfinal = 2200;
#declare zfinal = 1000;
#while (ypos <= yfinal)
    #torus { 10,5 rotate<90,0,0> translate<xpos,ypos,zpos>  texture {T_Chrome_4E} scale 0.001 }
    #torus { 10,5 rotate<90,0,0> translate<xpos1,ypos,zpos>  texture {T_Chrome_4E} scale 0.001 }
  #declare ypos = ypos + 200;
#end
}

union {
object { size1 
	rotate <0,0,-20>
}
object { size1 
	rotate <0,180,20>
	translate <1,0,0.033>
}
	rotate <10,0,0>
}

Bryce

Bryce or Bryce3D, is a 3D modeling, rendering and animation program specialising in fractal landscapes.

More about the webcam controls https://www.henriaanstoot.nl/1998/10/23/made-a-webinterface-for-my-diy-webcam/


Poser

Poser (Pro) is a 3D computer graphics program optimized for the 3D modeling of human figures.

Blender

Blender is a free and open-source 3D computer graphics software tool set used for creating animated films, visual effects, art, 3D-printed models, motion graphics, interactive 3D applications, virtual reality, and, formerly, video games. Blender’s features include 3D modelling, UV mapping, texturing, digital drawing, raster graphics editing, rigging and skinning, fluid and smoke simulation, particle simulation, soft body simulation, sculpting, animation, match moving, rendering, motion graphics, video editing, and compositing. (Dutch developers started it in 1994)
https://en.wikipedia.org/wiki/Blender_(software)

Below here not really for art but graphical generators .

Others: Zbrush, Xara3D, Sketchup, OpenScad
Terrain Maker, Terragen

Planning the cocktail bar, same month i did the whole house in Sketchup
Used an android app before to figure out the picture sizes, sketchup works also

I made the double chanter in blender in this post
https://www.henriaanstoot.nl/2021/07/02/3d-printed-double-chanter-proof-of-concept/

Below my openscad version

difference(){
    difference(){
difference(){
    union(){
cylinder($fn = 180, $fa = 12, $fs = 2, h = 100, d1 = 16, d2 = 16, center = false);

translate([-12.5,0,0]){

cylinder($fn = 180, $fa = 12, $fs = 2, h = 70, d1 = 25, d2 = 25, center = false);
}
translate([12.5,0,0]){
cylinder($fn = 180, $fa = 12, $fs = 2, h = 70, d1 = 25, d2 = 25, center = false);
}
}




translate([-12.5,0,0]){
cylinder($fn = 180, $fa = 12, $fs = 2, h = 70, d1 = 17, d2 = 17, center = false);
}

translate([12.5,0,0]){
cylinder($fn = 180, $fa = 12, $fs = 2, h = 70, d1 = 17, d2 = 17, center = false);
}
}
translate([-12.5,0,65])
rotate([0,90,0])
cylinder($fn = 180, $fa = 12, $fs = 2, h = 20, d1 = 10, d2 = 10, center = false);
}
translate([0,0,70])
cylinder($fn = 180, $fa = 12, $fs = 2, h = 50, d1 = 12, d2 = 12, center = false);



}
translate([0,0,69]){
difference(){
union(){
translate([0,0,0])
cylinder($fn = 180, $fa = 12, $fs = 2, h = 5, d1 = 16, d2 = 16, center = false);
translate([-12.5,0,0])
cylinder($fn = 180, $fa = 12, $fs = 2, h = 5, d1 = 25, d2 = 25, center = false);
translate([12.5,0,0])
cylinder($fn = 180, $fa = 12, $fs = 2, h = 5, d1 = 25, d2 = 25, center = false);
}
translate([0,0,0])
cylinder($fn = 180, $fa = 12, $fs = 2, h = 5, d1 = 12, d2 = 12, center = false);
}
}
SUperb example of generated boxes for 3D printing using dimension variables.

NSFW Galleries:

Restricted Content
To view this protected content, enter the password below:

DLSR Camera versus Mobile Phone

Not talking about the quality but how much we are using the camera’s.

Reason for taking pictures:

  • Capture memorable events – DLSR
  • Simple snapshots to remember stuff – Mobile
  • HQ photos – shoots etcetera – you want to use DOF, a mobile can´t do this
  • Images for web/mattermost/whatsapp – mobile phone is sufficient

But we always take our phone with us … sometimes we forget to bring the Nikon to memorable events.

A simple count of pictures on my fileserver.

# Below creates a CSV file
for f in $(seq 2000 2022) ; do echo -n $f, ; find  */$f -type f 2>/dev/null | wc -l  ;done 

Notes:

2010 – We bought a new nikon
2019 – Busy planning buying a new house
2020,2021 – Covid
< 2010 – Mobile pictures are potato quality

I had my first android phone in 2009.
Phones before 2010 didn´t have good exif information, so the picture count is a little off in the graph above.

Things in movies that bug me

Will add more

I love movies, but somethings bug the hell out of me.

I often see movie mistakes, but when those mistakes are not too obvious, i can live with it.

Glasses being flat

They could have used glasses which are a little curved, so it isn’t too obviously flat.

But a better solution is :

Dustin Hoffman had to wear contact lenses so that he could see correctly through the thick glasses he had to wear.

The Wilhelm scream

I know it’s a running gag, but it’s not funny anymore.
https://en.wikipedia.org/wiki/Wilhelm_scream

People not really tied up, or pinned down

I hate seeing people tied up badly in movies, so easy to escape. Sometimes the actor has to hold the rope in place to keep it from falling off.
Rope, zipties and chains. (I will add some examples)
In some older movies you can see straining on wrists or neck. So it was really secure and tight! (real)

Bad example i know, but first one i found
Update 20230808 .. Oh no! I can’t escape!
Hover foot

American unrealistic events

Not talking about sci-fi or adventure movies.
Over the top movies. That’s why i like murder mysteries from Iceland, Scandinavia more than American.
There are many movies, in which the main character is the average joe, but he can fall off buildings, hit by cars, and run all day without getting tired. And escapes after that in the most improbable way.

Same category as Wilhelm Scream, the squeaky gate/door

We’ve been using the same sound in our student place 25 years ago.
I even recorded new and better examples for people to use.

Xfiles, sparatacus blood & sand, Supernatural, Shawshank Redemption, Reign of Fire, Final Destination, Quantum Leap, Fringe, etc etc

UPDATE: 20230716 The sound ..

My recording

One of my recordings (Scotland 2022)

Not consulting an expert

Movies about science, computers or even general laws of physics are more believable when asking an expert for advice to portray something.

Lights in diving masks/space helmets

When doing this the diver can’t see sh*t

Spaceships are alway the same orientation, on the same plane, when they meet.

There is no up / down whatever in space. Directors are always thinking of one plane.
Therefore you need to have at least 4 to be “surrounded” in space. 🙂

Not finishing drinks

Maybe i’m cheap. I won’t leave a glass untouched.

Hanging up on phone calls without saying anything like goodbye

Just rude.

People driving looking for minutes at the passenger, not looking at the road

Even worse, moving the steering wheel left right left .. even on a straight road.

Every 555 number has been used 100’s of times

All persons have a number in the range 555-0100 till 555-9999

Rain only being in the place of the actor.

The houses up the street are dry and in the sun

Generic stuff

  • Daylight when needed is in full swing in 2 minutes.
  • Hero’s are still looking at the end-battle scene when officials arrive
  • Bomb are always in the last 10 seconds defused.
  • Hero has to fight lots of people before ending up at the boss, who is stronger than all his minions!
  • People destroying their phone to avoid tracking.
    Take out simcard and destroy, take out battery and destroy then stamp on the phone and throw in the sea.
    Take out the battery if possible, dunk in water else
  • Bombs falling using the wrong sound.
    People on the ground would hear the pitch increasing as it falls, not decreasing, due to the Doppler effect.
  • Swallowing pills without something to drink
oppo_0

Fast search ‘n sorting on my fileserver

When i’m looking for certain files on my fileserver i sometimes have to fallback to locate.

Most of the times i use the methods mentioned in :
https://www.henriaanstoot.nl/2022/08/04/finding-files-on-my-fileserver/

The script below helps me to copy located files to a temporary directory.
(Which is excluded in al kinds of other find tools)

It will remove the slashes in a path, but keeps the rest.

  • You can pipe to this script
  • All files in 1 directory, but NO overwrite of files (keeps path). This allows for easy browsing with a picture viewer.
  • Want to know original path, look at the filename .. think of where the slashes should go

Example:

Lets find all jpg’s which linux in its name

# this will list all found files
locate -i linux | grep -i jpg$ 

output example (see below) (With slashes and spaces)
/tank/WorkDirectory/TMP/UITZOEKEN/cds uitzoeken/div/141/31/cd3/done/gfx/linux-from-scratch.jpg

cplocatescript

#!/bin/bash
mkdir -p /mnt/private/TEMP/$$
cat - | while read line ; do cp "$line" /mnt/private/TEMP/$$/$(echo "$line" | tr -cd 'A-Za-z0-9._-' ; echo "" ) ;done

When running combined command:

locate -i linux | grep -i jpg$ | cplocatescript

It will create a directory like below

ls /mnt/private/28723/
fileserverHenri__newsort__WorkDirectory2018_ltstufffromlaptopsnew_uitzuitzoekenWERKDIRECTORY-DEC-2010cd6wwwhtdocsworklinux-project14l.jpg
fileserverHenri__newsort__WorkDirectory2018_ltstufffromlaptopsnew_uitzuitzoekenWERKDIRECTORY-DEC-2010cd6wwwhtdocsworklinux-project14s.jpg
tankWorkDirectoryTMPUITZOEKENcds-uitzoekendiv14131cd3donegfxlinux-from-scratch.jpg
tankWorkDirectoryTMPUITZOEKENcds-uitzoekendiv17166dataUNISONBACKUP_TO_HOMEUNISON_DONELINUX_FROM_SCRATCH.JPG
tankWorkDirectoryTMPUITZOEKENcds-uitzoekendiv982datalinux-presentatiespresentatie.hp.nllinux_cd_deel3Imagescdromtitel.jpg
etc ...
etc ...
etc ...