Cancer: J’accuse/ Jag anklagar

06/03/2026

Det här är början till en artikelserie vars längd är okänd och vars slut och vilken form det tar likaså är okänt. Eftersom vi i Norden har en snabbt åldrande befolkning med samma problem utgår jag från att frågeställningarna nedan kan vara intressanta för en bredare publik. Det jag ämnar behandla är min sjukdomshistoria under de 2-3 senaste åren, vad jag har upplevt och de problem jag har stött på. Notera att jag är fysiker till utbildningen inte läkare. Det jag anklagar vårt medicinska system för är en total enögdhet och brist på intresse gällande alternativa behandlingsformer då patienten är villig att riskera rivet på alternativ.

Ett universitets centralsjukhus borde vara intresserat av att i detalj följa med alternativ även då behandlingsformen inte överensstämmer med standardprocesser inom medicin. Jag har som patient rätt att vägra att ta emot den behandling jag erbjuds men jag har tydligen inte rätt att få ett recept utskrivet för välbeprövade mediciner med få biverkningar som jag avser att använda utanför den klassiska användningen utan jag är tvungen att själv hitta kanaler för att få tillgång till ifrågavarande mediciner med alla de risker detta medför (jag kan få placebo, annan styrka än avsett eller något helt annat okänt).

Varför får jag inte tex. utan problem ett recept på Ivermectin som är mycket välbeprövat och biverkningarna små och välkända? Det finns intressanta rapporter gällande Ivermectin och Fenbendazol som både via djurförsök och direkt användning på människor visar positiva effekter på cancer via förståeliga protokoll och mekanismer. Varför måste jag använda djurmedicin Fenbendazol i stället för motsvarande ämne Mebendazol som har testats på människor. Jag vet att Fenbendazol/Mebendazol kan ge leverskador vid överdosering eller felaktig långtidsanvändning. Fenbendazol can matchas mot ett antal adjuvanter som jag inte heller får tag i den naturliga vägen via läkarrecept utan måste söka över nätet då det naturliga alternativet vore att diskutera frågan med onkologen. Varför?

Problemet med alternativ behandling skall dock vägas mot att fem års överlevnadssannolikheten för standardbehandlingen ligger på 30-50% d.v.s. jag uppfattar den som i princip värdelös speciellt då man väger den mot det lidande den förorsakar. Standardbehandlingen skulle inom ca. en månad garantera en något under två veckors sjukhusvistelse med långt gående kroniska biverkningar gällande ätande, matsmältning och halsbränna som skulle kräva behandling livet ut, detta för en patient d.v.s. jag som egentligen idag känner mig frisk som en nötkärna. Jag vet att det jag vill pröva på kan uppfattas som livsfarligt men jag uppfattar likaså prognosen 30-50% överlevnad som dålig.

De första symptomen

För något under två år sedan började jag få problem med ögonen. Det vänstra ögonlocket hölls inte uppe ordentligt. Så småningom dök det upp problem med dubbelseende som så småningom diagnosticerades till sjukdomen Myasthenia Gravis som betecknas som en obotbar autoimmun sjukdom. Som en sidokommentar konstaterar jag att jag uppfattar beteckningen autoimmun sjukdom som ett allmänt begrepp som egentligen betyder att läkarna säger att vi inte vet orsaken, vi vet inte hur vi skall behandla och det enda vi egentligen kan göra är att behandla symptomen.

Myasthenia Gravis är en sjukdom där kroppens immunsystem angriper receptorer som förmedlar nervsignaler till musklerna via ämnet acetylcolin. Då mängden receptorer minskar kommer signalen till musklerna att försvagas vilket i mitt fall betydde att ögonlocken inte ville hållas uppe samt dubbelseende eftersom musklerna som riktar ögonen är extremt aktiva trots att de är mycket små. Ett annat symptom är vissa problem med att svälja igen av samma orsak d.v.s. ifrågavarande muskler blir snabbt trötta. Ett allvarligare potentiellt problem med myasthenian är att andningen kan blockeras vilket naturligtvis kan vara livsfarligt.

Efter en lång tids väntande, egentligen alltför lång tid, då jag trodde att det var fråga om allergisymptom gick jag till en ögonläkare. Jag fick genast en remiss till HUS (Helsingfors Universitets sjukhus) med en preliminär diagnos Myasthenia Gravis. Då man kommer in i HUS system, röret (putki) som det kallas på finska, går det fort. Undersökningar gällande muskelstyrka etc. gjordes snabbt och också en röntgentomografi samt magnettomografi av överkroppen. Orsaken till detta är att det speciellt hos yngre personer finns en koppling till förändringar eller cancer i Thymuskörteln. Lösningen är då ofta att ta bort hela körteln vilket avlägsnar problemen men samtidigt i viss mån skadar immunsystemet.

Undersökningarna ledde till en fastställd diagnos Myasthenia Gravis för vilken det finns medicin som i viss mån minskar på problemen genom att bromsa upp hastigheten med vilken acetylcol bryts ner d.v.s. en nervsignal blir på en något längre stund vilket i praktiken syns som att musklerna orkar lite bättre. Undersökningarna visade att det inte fanns något problem med thymuskörteln men man hittade via röntgentomografin indikationer på förändringar i nedre delen av matstrrupen.

Spåret mot cancer

De misstänkta förändringarna i matstrupen ledde till en serie undersökningar börjande med gastroskopi där det togs provbitar från förändringarna. Som i princip helt symptomfri var jag ganska skeptiskt inställd till gastroskopin eftersom jag uppfattade den som extreemt obehaglig. Då läkaren som ville ha resultaten visste att jag aldrig hade varit med om gastroskopi tidigare och var rädd för undersökningen meddelade man mig att detta skulle ske under något som skulle vara ”halvnarkos” d.v.s. en följeslagara måste vara på plats och bilkörning efter ingreppet och allt intellektuellt arbete under samma dygn efter ingreppet skulle vara uteslutet.

Gastroskopin var precis så obehaglig jag hade föreställt mig. Någon speciell ”halvnarkos” fick jag inte utan man sprayade något bedövande ämne i halsen utan att överhuvudtaget diskutera det alternativ man hade angivit. Min hustru hade kommit med mig till HUS för att hjälpa mig tillbaka hem. Detta visade sig vara helt onödigt. Var orsaken månne den att jag inte visade tecken på panik? Hela processen tog ungefär 15-20 minuter under vilken ett antal provbitar togs.

Fortsättningen var en ytterligare röntgentomografi med kontrastmedel i princip likadan som den föregående. Inga problem med detta, jag har inte klaustrofobi. Det gjordes också en magnettomografi av samma område. Magnettomografin var för mig intressant eftersom maskinen var extremt bullersam. Röret jag rullades in i var sannolikt något mindre i diameter än röntgenapparatens diameter. Orsaken till bullret var sannolikt switchande av extremt starka strömmar till de behövliga magnetfälten vilket gar upphov till starka ljud. Själva detekteringen av signalerna från kroppen görs sannolikt på motsvarande sätt som vid röntgen med rörliga sensorer som roteras runt kroppen. Klassiskt har man använt s.k. SQUID sensorer (Superconducting Quantum Interferense device). Finland har har åtminstone tidigare legat i framkanten gällande SQUID sensorer som man forskat mycket i på från 1970-talet framåt, dåvarande THS (Tekniska Högskolan i Helsingfors) samt sannolikt på VTT (Statens Tekniska Forskningsanstalt).

Vad kan jag göra

Det började i detta skede vara klart att det var fråga om cancer. Det finns då olika vägar att gå framåt. Jag uppfattar mig relativt väl påläst efter att ha följt med min mors kamp mot cancer. Man hittade melanom i foten på henne som följdes av en relativt radikal borttagning av primärsvulsten, av lymfkärl i benet samt strålbehandling högre upp. Processen började i augusti. PET scan visade inga synliga metastaser. Nångång i oktober-november blev det plötsligt intag på sjukhus p.g.a. svåra blödningar i levern. Min personliga uppfattning är att det var en följd av missriktad strålbehandling som missade de lymfkörtlar man försökte bestråla och träffade levern i stället. Förklaringen var, utan några som helst undersökningar, att orsaken var att levern var full av metastaser och därav blödningarna. Några månader senare var min mor död.

Dagens cancerbehandling bygger på teorier från sannolikt tidigt 1960-tal där man utgår från att cancern förorsakas av slumpmässiga mutationer i cellers arvsmassa. Upptäckten av DNA-dubbelspiralen vände allt focus mot genetiska orsaker till cancer. Där är vi fortfarande. Slumpmässiga mutationer ger upphov till en lång rad cancerformer med egna namn. Den intressanta frågan gällande genetiska orsaker är naturligtvis varför vi kan se en våldsamt ökande kancerförekomst. Naturliga genetiska förändringar slår över hundratals eller tusentals generationer inte på något tiotal år. Om orsaken till cancern skall sökas i genetiska felkopieringar är det självklart att behandlingen man sätter in går ut på att döda cancercellerna utgående från tanken att cancern då är ”botad”. För att nå målet att döda alla cancerceller har man tre metoder man har ärvt från medeltidens medicin. De metoder man använder har naturligtvis förändrats och förfinats men de är:

  • Skär
  • Förgifta
  • Bränn

Skär betyder att vi kirurgiskt avlägsnar hela tumören och hoppas att den inte har spridits samt att vi inte sprider cancerceller under själva ingreppet. Om det finns andra orsaker till cancern som har givit upphov till dem så bryr man sig inte om dem utan man tror att cancern är botad. Om de ursprungliga orsakerna till cancern finns kvar så är naturligtvis sannolikheten för att cancern kommer tillbaka stor.

Förgifta betyder som namnet anger att man söker en medicin som dödar cancern. Hittills har man inte hittat bra mediciner som skulle nå endast cancern utan att förgifta resten av kroppen. Under 1700-1800 talen använde man bl.a. kvicksilver (mycket giftig) som som medicin med vilken man försökte bota ett antal då obotliga sjukdomar bl.a. syfilis. Idag använder man cellgifter som cancern tar upp och påverkas av något bättre än friska celler. Behandlingen anpassas så att man maximalt påverkar cancern utan att patienten alltför ofta dör. Nackdelen är att hela kroppen påverkas och effekten kan vara allt från extremt obehaglig till dödlig. Om patienten dör så bokförs detta som ett cancerdödsfall inte som felmedicinering.

Bränn. Under medeltiden brände man ofta av många orsaker som t.o.m. i vissa fall var helt vettiga eftersom andra alternativ inte fanns. I krig fanns många skadade där man måste amputera ben. händer och armar. Man använde bl.a. het olja för att snabbt stoppa blodflödet. Jag har också ett minne av att jag skulle ha stött på lokal bränning av lokaliserade infektioner. Det fanns patienter som faktiskt överlevde behandlingen. Dagens metod att bränna är bestrålning där man bestrålare cancersvulsten från olika håll och på detta sätt ser till att sajälva svulsten får den största dosen medan omgivningens friska vävnader får en betydligt lägre dos. Tanken är igen att man dödar cancern innan de friska vävnaderna tar alltför mycket stryk. Det finns idag ett intressant grundproblem med bestrålning som behandlas något mera ingående nedan. Bestrålning av svulsten verkar enligt mätningar producera både mera socker och glutamin i cancern och i närområdet runt omkring. Båda ämnena är ämnen cancern behöver för sin överlevnad. Man försöker alltså samtidigt bränna cancern till döds som man matar cancern med ett överskott av socker och glutamin vilket naturligtvis inte verkar speciellt vettigt ur en självlärd fysikers synvinkel (/sark).

Är cancerns underliggand orsak slumpen eller är det livsstilen

År 1931 fick Otto Heinrich Warburg nobelpriset i fysiologi. Warburg förde fram hypotesen att cancer uppstår som en följd av skadad energiproduktion i en cell. Energi produceras normalt i cellernas mitokondrier. Om mitokondrierna skadas kommer cellen att lida brist på energi vilket gör att olika sannolikt extremt gamla gener aktiveras för att cellen skall överleva. Cellen går över från förbränning av socker (glukos) eller fett (ketoner) till att producera energi genom jäsning av socker. Jäsning är en extremt mycket sämre process för energiproduktion än normal förbränning av glukos. Resultatet är att sockerbehovet för den skadade cellen ökar ca. 15 gånger vilket man kan använda för att detektera cancer i såkallade PET scan. Jäsning av socker i cellen producerar mjölksyra som gör cellen surare, förorsakar trötthet hos patienten tänk maratonlöpare med den utmattade kroppen fylld av mjölksyra, samt sannolikt aktiverar inaktiva gener som stöder cellens överlevnad bl.a. okontrollerad celldelning, generering av histaminer som skyddar cellen från yttre angrepp etc.

Vid ett PET scan injiceras en liten mängd radioaktivt socker intravenöst som snabbt sprids till hela kroppen. Efter en vänteperiod på ca. två timmar förs man till en maskin som påminner om en röntgentomograf. Maskinen har en eller flera sensorer som läser av kroppen och detekterar strålningsnivån. Platser med sannolik cancer är de omsåden som strålar mest eftersom ifrågavarande cellers sockerhunger är enorm. Jag mätte på skoj min strålningsnivå med min geigermätare då jag kom hem, nivån var hög 🙂 ! Strålningen är sådan att patienten inte rekommenderas hålla ett barn i famnen under ett antal timmar efter PET scannet. Halveringstiden för det radioaktiva ämnet torde vara ca. två timmar men man vill ha ett antal halveringar innan man kan ha kontakt med ett barn.

Ovanstående inledning visar vägen till en idag relativt välkänd alternativ väg att gå gällande cancer. Alternativet är naturligtvis att försöka korrigera de underliggande orsakerna till cancern. Mitokondrierna skadas av kroniska inflammationer som i många fall i sin tur är fororsakade av ett extremt intag av socker och kolhydrater (kolhydrater är kedjor av sockermolekyler). Det finns sannolikt ett självklart samband mellan ökningen av Typ II diabetes i västvärlden och en samtidig ökning av cancer i alla former.

Den självklara vägen att gå är då naturligtvis att göra levnadsförhållandena så besvärliga som möjligt för cancern. Dra ner på tillgången till socker! Här reagerar många med att säga att hjärnan ju behöver stora mängder socker som bränsle, vad händer om hjärnan inte får socker. Svaret är att kroppen själv ”i en nödsituation” kan tillverka socker ur bl.a. proteiner. Då sockerbristen har fortgått i ca. 24 timmar, ibland något längre, kommer kroppen att börja ta energi ur kroppens fettceller och börja producera ketoner. Ketonerna är ett perfekt bränsle för alla kroppens celler inklusive hjärnan .

Då kroppen är i ketos d.v.s. bränner fett blir man alert, hjärnan fungerar bra och hunger och trötthet försvinner. Människan, som jägare, var i forntiden kapabel att nedlägga i princip vilket annat djur som helst på jorden genom att förfölja det tills bytet föll ihop av utmattning. En grupp jägare i ketos kan utan problem följa bytet i flera dagar utan behov av att äta. Det har gjorts många experiment baserade på detta där en långdistanslöpare går in i loppet i ketos och på detta sätt unviker situationen där kroppens sockerförråd tar slut med extrem utmattning som följd. Fettförråden räcker, för en person med normal vikt, sannolikt i veckor vilket ger möjlighet till fördelar speciellt i uthållighetsgrenar. Ketosen var sannolikt naturens naturliga sätt att hjälpa människan i situationer där det var brist på mat. Skärpt tänkande kombinerat med uthållighet skapar en god jägare.

Problemet med ketos och cancer är att detta ofta inte är tillräckligt för att ta kål på cancern. Det visar sig att cancern förutom glukos också kan jäsa glutamin och närbesläktade substanser. Problemet med glutamin är att kroppen producerar glutamin själv och ämnet normalt behövs av bl.a. immunsystemet. Vi kan inte blockera glutaminet för någon längre period utan vi måste försöka kombinera en extremt låg sockernivå med en samtidig temporärt låg glutaminnivå. För detta finns det receptbelagda preparat som jag inte kommer åt. Vilken är orsaken till att jag inte under medicinsk uppsikt får använda ifrågavarande preparat?

Man vet att en tumör skyddar sig mot immunsystemet genom att producera histaminer. Varför har jag inte från början ordinerats en liten daglig dos Typ I antihistamin (t.ex. Histec). Det finns artiklar som tydligt antyder att antihistamin kan öka överlevnadstiden för en cancerpatient.

Man vet att medicinen Naltrexone som normalt används för att behandla tex. narkotikaberoende även verkar ha bromsande effekt på cancerns tillväxt. Dosen som behövs är ca. 1/10 av dosen för att behandla opiumberoende. Medicinen kräver recept vilket jag inte har fått. Lösningen är naturligtvis att använda källor på nätet. Jag blir tvungen att packa om 50 mg tabletter till 5 mg kapslar. Jag har en tillräckligt känslig våg d.v.s. inget problem. Varför får jag inte denna medicin via cancervården om jag ber om den speciellt på dosen är extremt låg?

Jag konstaterade ovan att ett problem med den ketogena kosten är att den inte är tillräcklig för att döda kancern genom svält. För att få cancern att minska/självdö krävs ett antal varv där jag samtidigt ser till att jag är i ketos och blockerar kroppens glutaminproduktion temporärt. Det finns en intressant medicin 6-Diazo-5-oxo-L-norleucine (DON). Vad är osaken till att jag inte får tillgång till den här medicinen? Jag vet att medicinen är giftig då en person inte är i ketos. Intressanta experiment tyder på att den är mycket effektiv med få biverkningar då den tas i djup ketos. Inget intresse från etablissemangets sida för att utnyttja en frivillig försökskanin. Varför?

Den sista referensen efter den här inledande artikeln är intressant. Min personliga gissning är att Myastheniabesvären är en direkt följd av att immunförsvaret i närområdet jobbar mot en bevisad cancerväxt. Myasthenian är helt enkelt en bieffekt av immunförsvaret i funktion.

Jag har i detta skede kört två hela cycler med kotogen kost inklucide två fasteperioder den första 48 timmar vattenfasta och den andra 72 timmar fasta. En intressant följd har varit att Myasthenian har förbättrats så mycket att jag under flera dagar i den senare perioden inte har tagit Myasthenia medicin över huvudtaget. Myastheniamedicin behövs inte och medicinen Mestinon ger t.o.m. i liten dos irriterande mikrokramper bl.a. i fingrarna. Jag tolkar förbättringen gällande Myasthenian som att det jag för tillfället gör sannolikt påverkar cancern i den önskade riktningen.

Det blir ett antal fortsättningar på den här artikeln. Som en avslutning en länk till en video av doktor Thomas Seyfried.

Några referenser

Low-Dose Naltrexone as an Adjuvant in Combined Anticancer Therapy https://pmc.ncbi.nlm.nih.gov/articles/PMC10968813/

Low dose Naltrexone in the oncology setting https://www.pccarx.com/Blog/low-dose-naltrexone-in-the-oncology-setting

Glutamine antagonist DON https://www.hopkinsmedicine.org/news/newsroom/news-releases/2019/11/glutamine-blocking-drug-slows-tumor-growth-and-strengthens-anti-tumor-response


Nature: Glutamine: a new strategy for targeted metabolic therapy in the tumor microenvironment https://www.nature.com/articles/s41420-025-02767-4


The Association Between Myasthenia Gravis and Higher Extrathymic Cancer Risk https://onlinelibrary.wiley.com/doi/10.1002/brb3.70143

Orwells 1984 inom klimat och mat

21/03/2025

Vi lever i tiden som beskrevs i Orwells bok ”1984”. Nu har det Orwell varnade för genomförts så att rött har blivit grönt, svart har blivit vitt, krig har blivit fred och journalisterna i våra media från att ha varit nyhetsförmedlare med stolthet säger sig vara påverkare.


I svenskfinlands främsta språkrör Hufvudstadsbladet (Hbl) ser man hur hjärntvätten fungerar både gällande klimat och kost. Båda har under lång tid kombinerats till ett enda problem. Problemet man på slutändan tror sig lösa är egentligen användningen av jordens resurser ”till följd av en katastrofal överbefolkning” … som igen i dagens utvecklade samhällen är ett Orwellskt ickeproblem då en stor del av världen inte har problem med överbefolkning utan med kraschande födelsetal som på några generationer kan ödelägga stora områden.

I snart fyrtio år har man vilsefört mänskorna att vädret självklart alltid har varit stabilt innan mänskan i oförstånd förorsakade kaos och död. Solen borde självklart alltid lysa på dagen och regnet alltid falla på natten hur detta skulle kunna fixas spelar ingen roll. Vinden borde förstå att alltid blåsa med jämn hastighet för att pålitligt generera elektricitet. Det är för mig svårt att förstå varför man bygger kraftverk ute i naturen, kraftverk som producerar något tusental döda fåglar och fladdermöss per kraftverk och år och kräver ofantliga arealer jämfört med kompakta i stort sett utsläppsfria kärnkraftverk?


Antalet vindkraftverk, fågelvispar, är idag globalt av storleksordningen 460 000 beräknat utgående från en total maxeffekt på 1 202 000 MW då vi vet att medeleffekten per turbin är ca. 2.6 MW. Om vi antar att dagens uppskattning av antalet dödade fåglar per år från ett stort kraftverk stämmer så torde vindkraften varje år ta livet av ungefär 460 miljoner fåglar. Utöver fågeldöden har man uppskattat att de 30 000 vindkraftverken i Tyskland årligen dödar ca. 1200 ton insekter vilket motsvarar 40 miljoner insekter per vindkraftverk och år. Globalt kan detta betyda att ungefär 18400 miljarder insekter dödas. Att detta inte skulle påverka många olika djur och växtpopulationer negativt verkar mycket osannolikt.

Det är ett otroligt intellektuellt konststycke vi ser då våra gröna fantaster med en tunga talar för att skydda naturen och med den andra samtidigt talar för att industrialisera den. För en naturälskare är detta mycket svårt att förstå … kanske orsaken är att den natur våra gröna idag tänker på och relaterar till är storstädernas betonghelvete?


Extremväder

Statistiken visar att antalet döda till följd av extremväder kontinuerligt har minskat under det senaste århundradet, skogsarealen som brinner under ett år har kontinuerligt minskat. Antalet döda till följd av extremväder har minskat till en femtiondel räknat per miljon människor sedan 1920-talet. Det våra ”påverkare” rapporterar är att vi står inför en extremväderskatastrof medan verkligheten är den motsatta. Vad är orsaken till att denna lätt kontrollerbara positiva ”nyhet” aldrig förs fram?


Fig. 1 Antalet döda till följd av extremväder sedan år 1900. Notera att de första årtiondena är mycket osäkra eftersom många naturkatastrofer gick under radarn …


Bränder
Av någon outgrundlig (/sark) anledning hör vi varje sommar, då det börjar bli varmare, om de återkommande ökande svåra skogsbränderna som sägs bero på klimatförändringen. Då man försiktigt gräver i statistiken [2] så hittar man en motsvarighet till dödligheten i extremväder under det senaste århundradet. Resultatet är inte det våra journalister/påverkare för fram. Resultatet kan ses i bilden nedan. Notera dock att bildens skala på Y-axeln inte går från noll d.v.s. den verkliga minskningen är inte så stor som man kunde tro då man slarvigt tittar på bilden.


Fig. 2 Global årligen brunnen areal sedan 1900.


Klimat och matproduktion
Den mjölk Arla och Valio försöker sälja i klimatets namn kräver att man matar i korna ämnet Bovaer som minskar på mängden metangas som korna avger med ungefär en tredjedel. Problemet, som jag uppfattar saken, är att man matar i djuren ett ämne som bevisligen vid höga doser kan ge problem som t.o.m kan leda till att djuret måste avlivas. Effekten på klimatet är så liten att man inte kan mäta den men för den goda sakens skull fyller man fickorna på ett monopolföretag.


På Yle hittar vi en artikel om boskapens metanutsläpp [3]. Klimatpanelens Ollikainen uppskattar att djurens metanutsläpp är 2.3 Mton d.v.s. 2 300 000 ton per år eller 2 300 000 000 kg/år vilket naturligtvis ser rafflande ut. Har månne Ollikainen själv kontrollerat mängderna eller har han i likhet med andra avdankade mellanting mellan beslutsfattare och forskare skakat siffran ur rockärmen varefter den citeras överallt?


Ollikainens uppgift 2.3 Mt betyder, då vi noterar att det finns 260 000 kor i Finland, att varje ko då måste producera 24 kg metan per dag d.v.s. ungefär 8800 kg/år. En ko äter ca. 50-60 kg/dag och mängden avföring uppgår till ca. 40 kg d.v.s. det verkar mycket osannolikt att Ollikainens uppgift stämmer d.v.s. att i stort sätt hälften av den mat vi matar i en ko skulle bli till metan. Då man gräver lite vidare hittar man på Luke:s sidor [4] uppgiften att en ko producerar ca. 450 g metan per dag. Ollikainens värde är 50 gånger för stort men naturligtvis i linje med den allmänna klimatagendan vars avsikt verkar vara att få till stånd ett Europeiskt samhälleligt självmord.

I stället för att mata kemikalier i djuren kunde man under vintern leda luften från ladugården till gårdens värmecentral. Luften kunde användas till förbränning av t.ex. hyggesrester. En mjölkgård med 50 kor skulle då under den tid då uppvärmning behövs få ett energitillskott motsvarande ca. 25 kg olja per dag från den metan förbränningsluften innehåller. Energiinnehållet i den producerade metangasen under hundra dagar under vintern har ett värde som motsvarar årsmjölkproduktionen från en ko … men i stället för att använda metangasen vill man mata kemikalier i djuren som dessutom endast eliminerar 30% av den producerade metangasen … bembölingarna är ute och cyklar igen.

Lösningen på det potentiella Bovaer-problemet är naturligtvis väldigt enkelt. Jag köper endast ekologisk mjölk. Det finns ingen anledning för mig att köpa en ”feel good” produkt som inte har en mätbar effekt på klimatet och som kan ge problem för djuren. Att eventuella långtidseffekter från Bovaer fås först efter många år spelar ingen roll. Varför mata en ny kemikalie i djuren helt i onödan … en fysiker kunde uttrycka saken med att en klimatpåverkan som inte kan mätas finns inte. Hela Bovaer-frågan luktar lobbning och korruption på långt håll.

Källor:

1) Deaths from extreme weather: https://a8d50b36.delivery.rocketcdn.me/wp-content/uploads/2011/09/deaths_from_extreme_weather_1900_2010.pdf

2) Brunnen areal globalt per år: https://agupubs.onlinelibrary.wiley.com/doi/full/10.1002/2013JG002532

3) Ollikainen YLE: https://yle.fi/a/74-20018244

3) Yle: https://yle.fi/a/74-20018244

4) Luke: https://www.luke.fi/fi/uutiset/maidontuotannon-kokonaismetaanituotanto-vahentynyt-60-vuodessa-57-prosenttia-maidontuotannossa-syntyvan-metaanin-maaraa-voidaan-edelleen-vahentaa

Jean Sibelius och Nordiska danser

28/01/2024

Konsert 6.2.2024 kl. 18.30 fritt inträde på Arbetets vänner Annegatan 26. Öppet för alla aveiter och ”potentiella aveiter” d.v.s. aveiter och aveiters bekanta och andra som är intresserade av föreningens verksamhet! Samma konsert kommer att framföras den 10.2.2024 i Musikhuset i Helsingfors.

Sebastian Silén (Photo by Alexander Bogdalov)

Introduktion

Jean Sibelius (1865 – 1957): Från Five pieces, Op. 81 (1915 – 1918):

  • Mazurka
  • Waltz
  • Menuetto

Jean Sibelius: From Six Morceaux, Op. 79 (1915 – 1917, rev: 1917/18):

  • Tempo di Menuetto
  • Danse caractéristique

Danmark:

Nils Gade (1817 – 1890): Folk Dance No. 3 (in Nordic character), Op. 62, No. 3 (1887):

  • Allegro moderato, ma vivace

Fini Henriques (1867 – 1940):

  • Nordisk Dans
  • Hexendansen (Witches Dance)

Paus

Sverige:

Tor Aulin (1866 – 1914):

  • Midsommardans (Nordic Dance) (1906)

Julius and Amanda Röntgen (1855 – 1932, 1853 – 1894): Från Schwedische Weisen und Tänze, Op. 6, No. 4 and No. 6 (1882/1887):

  • No. 4 Allegro
  • No. 6 Allegro

Norge:

Edvard Grieg (1843 – 1907): Norwegian Dance No. 2, Op. 35, No. 2 (1880) (arr. Hans Sitt):

  • Allegretto tranquillo e grazioso

Johan Halvorsen (1864 – 1935): Norwegian Dances No. 1 and 2 (1897):

  • Allegro con brio
  • Allegretto

Finland:

Jean Sibelius: 5 Dance Champetre, Op. 106 (1924/1926):

  • Largamente assai
  • Alla polacca
  • Tempo moderato
  • Tempo di Menuetto
  • Poco moderato

Sebastian Silén, violin Satu Elijärvi, piano

Kort bakgrund till konserten av Sebastian Silén

Konserten analyserar hur Sibelius danser passar in i det nordiska musiklandskapet. Detta sker genom att framföra verk av Sibelius för violin och piano parallellt med andra nordiska tonsättare. I programmet ingår ett antal i Finland rätt okända nordiska violin- och pianostycken.

Konserten är en del av ett doktorsarbete på Sibeliusakademin varför bakgrundsmaterialet är på engelska. För intresserade finns den relativt långa engelskspråkiga presentationen nedan.

Engelskspråkig bakgrund till konserten av Sebastian Silén

Jean Sibelius and Nordic Dances

My artistic doctoral work explores how Jean Sibelius’s works for violin and piano fit into the Nordic musical landscape. I approach this research question as a violinist and musician through a combination of artistic and scholarly work. This concert focuses on dances, which during the nineteenth and early twentieth century were one of the most popular forms of music for violin.

The reason for my interest in dances specifically is that Sibelius during his lifetime published a total of 34 pieces for violin and piano which are divided into 11 opuses. Of these 34 pieces, fourteen refer to dances in their titles. Dances therefore constitute over 40% of Sibelius’s production for violin and piano.

For this reason, it is integral to my artistic research to explore to what extent Sibelius’s approach to dances for violin and piano show similarities with, and in what ways they differ from dances for violin and piano by other Nordic composers. To explore this question, this concert will present dances by Jean Sibelius alongside dances by Nils Gade, Fini Henriques, Amanda Röntgen-Maier, Tor Aulin, Edvard Grieg, and Johan Halvorsen.

The historical context

Dances have been an integral part of music for millennia, but many of the dances most commonly found in classical music can trace its roots back to the baroque or renaissance. The legacy of the baroque dances can be seen in tonight’s concert program as the menuetto (or minuet in English) was one of the most popular baroque dances. But while baroque music found its way into the Danish and the Swedish courts, there was another tradition and another set of dances which came to play an even bigger role in forming Nordic music. That tradition can be found within the Nordic folk music.

Current scholarship suggests that the Nordic folk music tradition can trace its roots to Polish dances which became popular among both musicians and audiences. However, the influence was not geographically restricted, and based on the earliest manuscripts, the influences came both from Polish- and German-speaking areas. 1 It has also been noted that that Polish, German, Slovakian, and Hungarian music collections from the seventeenth and eighteenth century can be surprisingly similar to Swedish collections from the same centuries. 2

These melodies which nowadays are strongly associated with Nordic folk music can be traced back to renaissance dances from the sixteenth century. These dances gradually became known as polonäs, polska, pols, and springlek. 3 In this context Nordic folk music primarily refers to music from the Scandinavian peninsula. Finland is in some ways a more complicated case, which I will describe separately. This obviously does not mean that there was no earlier music in the Nordic countries – the earliest Nordic song can be found on a parchment from around 1300 – but Polish music came to be integrated to the point of it becoming ubiquitous. In Sweden these dances gradually became commonly known as ”polskas”, which uses the identical spelling as the plural form of the Swedish word for ”Polish”. In earlier collections these polskas were often described as polonaises. 4 What is notable, is that the Nordic folk tradition provided a foundation and a tonal language for the first Nordic works of classical music which were identified to possess unique Nordic characteristics. The earliest reference to the “Nordic tone” was a review after a performance of Nils Gade’s Echoes of Ossian in Leipzig in 1842. Robert Schumann was among the German critics who enthusiastically praised Gade’s work. 5

Gade’s knowledge and use of the Nordic folk idiom was no accident. He had studied with Andreas Peter Berggren (1801–1880) who spent his life collecting folk melodies all over the world. Berggren published his work in eleven large volumes called Folk Sange og Melodier between the years 1842 and 1871. While it may be obvious, it is still worth highlighting that the musical elements which were most strongly linked to the Nordic countries predates Gade’s composition and finds its roots in the folk tradition. Gade did in
other words not invent a Nordic style all on his own but found a unique musical voice by applying elements found in Nordic folk music.

Since I am interested in exploring if Sibelius’s dances show Nordic characteristics, I have primarily chosen dances by Nordic composers that either refer to the Nordic countries as a group or individually. Based on the Nordic dances performed in this concert, it seems apparent that the connection to the Nordic culture is most often achieved by using Nordic folk music as inspiration.

While it is convenient to refer to Nordic folk music as a single tradition, it can be noted that the reality on the ground shows great diversity. Despite a shared history, Nordic folk music differs widely from country to country and sometimes even from village to village. Melodies often evolved or changed as they traveled from one area to the next over the centuries. Berggreen described these national differences in the following way in 1842 in the foreword to his folk music collection:

The melodies, more than the texts, bear the impression of the individual character of the nation in which they originated. It seems to me that grace and a deep erotic feeling is more common in Swedish than in Danish melodies of which most have a quality of greater seriousness. In Norwegian melodies an idyllic cheerfulness prevails along with a feature of melancholy which is common in all Nordic songs.

When it comes to Finnish folk music the picture gets a little bit more complicated. Finland can pride itself with not just one, but two folk music traditions (actually three, but I will get to that later). One is an outgrowth of the Nordic folk tradition and shows some similarities with Swedish folk music. This form of folk music is often called pelimanni music, a word derived from the Swedish word Spelman, which can loosely be translated as fiddler (although the word is not tied exclusively to the violin).

A second tradition can trace its roots to the ancient Karelian tradition known as rune- singing. Rune-singing is strongly linked to the Kalevala and was of great interest to Sibelius as he developed his mature compositional style during the 1890s, which came to revolutionise Finnish music. Sibelius had a chance to hear the lamentations of Larin Paraske (1833–1904) in 1891 and travelled to Karelia on his honeymoon to learn more about this ancient tradition the following year. The topic was important enough to Sibelius, that he gave a trial lecture on the subject in his (unsuccessful) attempt to get appointed as Faltin’s successor as music teacher of the Imperial Alexander University of Finland (later renamed the University of Helsinki). 6

Glenda Goss has argued that Sibelius sources for inspiration may have been even wider as he was working on Kullervo (1892). 7 During the process Sibelius had access to at least two collections of folk songs. One was Emil Sivori´s Folk Songs of Mäntyharju, but the other one seems to have been a Russian collection. It seems likely that Russian characteristics in Sibelius’ music may not be a result of direct influence, but rather that the Karelian folk songs also served as an inspiration for Russian composers as well. 8

I want to highlight these complexities in order to make an observation. 9 It is tempting to imagine cultural origins as something simple, pure, and unspoiled that later became corrupted by outside influence, but culture does not come out of nothing. While we can choose an arbitrary point in time as the beginning of a historical narrative or a story, this starting point will inevitably be the middle or the end of another.

The point I am trying to make, is that both culture and history is complex and any attempt to organize them into neat categories is bound to be an oversimplification. The uniqueness of the Finnish language may have shielded it from outside influence but the parallels between for instance Norse mythology and the Kalevala suggests that the two cultures were not without interaction. 10

For the sake of completeness, it is worth acknowledging that there is another folk-music tradition in the Nordic countries which was not as strongly influenced by music from central Europe. That is the traditional Sámi music in the north of Scandinavia and Finland. The exoticism, both of the Sámi culture as well as the barren landscape caused composers to look for inspiration within this unique environment. To give one example, the Swedish composer and critic Peterson-Berger wrote his Third Symphony Same-Ätnam on melodies from Lapland in 1913–1915.

The interest in Sámi music also existed in Finland. Sibelius’ student Armas Launis (originally Lindberg) (1884–1959) travelled to Lapland to collect melodies in 1904. 11 Sibelius can therefore be assumed to have had some awareness of Sámi music, but it does not appear to have affected his compositional style in any obvious way. Launis composed an opera called Aslak Hetta in 1922, but the work was only premiered in 2004.

This development served a dual purpose. Locally it provided a sense of identity and often become strongly linked to a strive for independence. The existence of a unique local culture provided proof of distinction to surrounding peoples or nations. On a global level the influx of nationally derived music presented an expanding world of musical exoticism. While this exoticism often was treated with some combination of contempt and suspicion in the big cultural centres, it still greatly enriched the musical culture.

In Germany the Nordic exotism gained eminence. One reason for the German interest in the Nordic culture, was that it was thought that the Nordic countries had retained some of the purity that was getting lost in the increasingly Romantic German classical music.

Photo: As the young Jean Sibelius. Photo by Douglas Sivén From the documentary film ”Sibelius i Korpo”. https://areena.yle.fi/1-2425735

Källor:

1 (Gustafsson 2016, 812)

2 Ibid.

3 Ibid., 21

4 Ibid., 810 – 811

5 (Fjeldsøe and Groth 2019, 5)

6 (Oramo 1980)

7 (Goss 2009, 130)

8 (Bullock 2011, 36)

9 This point was made by Timothy Snyder in a lecture at Yale University, The Making of Modern Ukraine. Class 7. Rise of Muscovite Power. (2:20)

10 See for instance (Frog 2010) 11 (Pekkilä 2016, 11)

Landskap

02/11/2022

Området mellan Esbo Å:s och Gumböle Å:s utlopp används under sommaren som betesmark för kor. Under höst och vinter finns korna på annat håll och de stora öppna området fungerar bra för flygning med drönare. I den här videon flyger jag en rätt stor Yuneec Q500 drönare. Min goda vän Anders flyger en Dji Phantom 3 Professional. Kameratekniken i de båda drönarna är väldigt lika och det är främst en smakfråga vilkendera drönaren som producerar en bättre video. Dji Phantom 3 är eventuellt lite piggare att flyga … om detta är en fördel eller nackdel kan man fråga sig.

Video: Området mellan Esboå och Gumböleå nära åarnas utlopp kallas Glasdalen.

Nya regler för flygning med drönare kräver att drönaren är registrerad och att operatorn har avlagt ett prov på nätet. En stor drönare, båda drönarna på videon väger betydligt över ett kilogram, får inte flygas över utomstående och man måste hålla tillräckligt avstånd till hus och industri. Videons område är väl lämpat för drönarflygning men man måste medvetet undvika att flyga för nära småhusen i riktning nord ost.

Bilden visar en satellitbild av Glasdalen mellan de två åarna. Småhusområdet söder om Kristallvägen bör man vara medveten om för att inte gå för nära. Skogsområdet i väster är naturskyddsområde.

Enkelt elektronikprojekt

19/10/2022

Jag har två drontyper som jag regelbundet flyger med. DJI:s Phantom samt Yuneec Typhoon. Dronerna är rätt likvärdiga ur flygsynvinkel och kamerornas kvalitet är mycket lika. Det finns dock en betydande skillnad mellan dronfamiljerna.

Dji använder intelligenta batterier d.v.s. laddningslogiken finns i själva batteriet. Batteriet kan alltså helt autonomt följa med sin egen användning vilket är viktigt då man använder moderna LitiumPolymer (LiPo) batterier. Ett LiPo batteri tycker inte om att vara tomt men det skadas också på sikt av att vara fulladdat. Egenskaperna hos ett felbehandlat batteri förändras bl.a. så att batteriets inre motstånd stiger vilket ur dronens synvinkel syns som höjd batteritemperatur under flygningen och kortare flygtid. Dji:s batterier laddar själja ur sig till ca. 60% laddningsnivå inom några dagar om batteriet inte används efter laddning.

Yuneecs batterier är inte intelligenta d.v.s. hela underhållsansvaret faller på användaren. Det är på mitt asnsvar att se till att batterier då de lagras har en laddningsgrad kring 60% för att livslängden skall bli så lång som möjligt. Ett hjälpmedel som jag har för detta ändamål är en intelligent laddare (inte Yuneecs laddare) som har olika program för laddning, urladdning och underhållsladdning. Det jag har saknat är ett enkelt sätt att mäta batteriernas inre motstånd och det är detta denna artikel kommer att handla om.

Då ett batteri belastas kommer det att ske ett inre spänningsfall i batteriet d.v.s. den spänning man ser över batteriets poler kommer att sjunka vilket betyder att t.e.x. en drons varningssystem för låg batterispänning slår på allt tidigare ju högre det inre motståndet blir. Om dronen vid flygning behöver t.e.x. 2A ström kommer ett inre motstånd på 70 milliohm att sänka batteriets spänning med 0,14 V vilket motsvarar flera minuters flygning.

När skall jag kasta ett batteri

Ett batteri är slut då flygtiden blir för kort samt då batteriet eventuellt börja uppföra sig konstigt d.v.s. det kan efter någon minuts flygning ge en batterivarning som tvingar fram en plötslig påtvingad landning för att undvika krasch. Ett sätt att se när ett batteri börjar nå slutet av sitt liv är att mäta det inre motståndet samt naturligtvis ibland mäta den effektiva flygtiden med ett batteri.

Mätning av det inre motståndet

Bilden visar, i form av ett kretsschema, ett batteri som belastas över ett motstånd. För att kunna beräkna det inre motståndet måste vi mäta batteriets spänning obelastat (i vila) samt spänningen då batteriet är belastat. Vi vill också undvika lång urladdning innan vi mäter det belastade batteriets spänning eftersom belastningen också medför att spänningen sjunker till följd av att batteriet laddas ur.

Mätning av batteriets spänning med voltmätaren (V) obelastat då switchen är öppen och belastat då batteriet urladdas genom lastmotståndet Rl.

Då batteriet är obelastat så går det nästan ingen ström genom batteriet, endast en mycket liten läckström går genom voltmätaren kanske 1 uA. Detta betyder att den spänning voltmätaren mäter är batteriets spänning eftersom spänningsfallet över Ri är ungefär lika med noll.

Då man sluter switchen SW kommer batteriet att laddas ur med en ström som beroende av batterityp är mellan 1 och 1.5 A. Batteriets inre motstånd kommer då att leda till ett spänningsfall inne i batteriet med storleken strömmen*inre_motståndet eller Ui=I*Ri . I prktiken kan man se detta så att spänningen sjunker då batteriet laddas ur.

Då batteriet är obelastat är den mätta spänningen:

Vb = det obelastade batteriets polspänning

Då batteriet belastas mäter vi en spänning:

(1) Vl = Vb – I*Ri

Där:

I = strömmen genom lastmotståndet som vi i mitt fall vet att det är 10 ohm

Rl = lastmotståndet 10 ohm

Ri = batteriets okända inre motstånd

Vb = det obelastade batteriets spänning.

Strömmen kan vi beräkna ur den mätta spänningen med last:

(2) I = Vl/Rl

Vi kan lösa Ri ur ekvation (1) och får då:

(3) Ri = (Vb-Vl)/I

Vi byter ut I ekvation (3) mot I taget ur (2) och får då:

(4) Ri = Rl * (Vb-Vl)/Vl

Vi ser alltså att vi helt änkelt gör två spänningsmätningar den första med obelastat batteri och den andra med ett belastat batteri och därefter lägger vi in värdet i (4) tillsammans med det kända vädet på Rl=10 ohm. Lätt som en plätt där inget kan gå fel eller hur?

En Arduino Uno är ett billigt litet mikroprocessorkort med en trevlig utvecklingsomgivning. Processorn har en AD-konverter (voltmätare) med upplösningen 10 bitar d.v.s. mätområdet 0 … 5V delas in i 1024 spänningssteg. Den enklaste mätaren kunde således byggas utgående från en Arduino Uno kopplad till ett 5V relä som styr mätning av obelastat respektive belastat batteri.

Jag skrev ett litet program som gjorde ovanstående mätningar med hjälp av Uno:s AD-konverter. Resultatet blev negativa värden på den inre resistansen. Hur kan jag få negativa värden på den inre resistansen? Då vi tittar på ekvation (4) så ser vi att spänningen med last då måste vara större än det obelastade batteriets polspänning! Hur är detta möjligt?

Uno:s AD-konverter tar sin referensspänning från processorkortets 5V matningsspänning. Ett relä drar rätt mycket ström d.v.s. när relät aktiveras d.v.s. SW är slutet kommer hela processorkortets spänning att sjunka till ca. 4,5V. Plötsligt blev referensspänningen 4,5 i stället för 5V och resultatet är att det ryms 1024 spänningssteg i 0…4,5V i stället för 0…5V d.v.s. steglängden minskar och då processorn mäter det belastade batteriets spänning tror den sig mäta en spänning som är större än det obelastade batteriets spänning.

Lösningen som samtidigt testar diagnosen var att mata relät med ett separat spänningsaggregat. Processorns spänning hålls bättre konstant och felen minskar radikalt.

Nu dyker följande problem upp. Mätningar av riktiga batterier tyder på att upplösningen d.v.s. den precision vi kan uppnå vid mätningen blir av storleksorningen 10 milliOhm vilket är nästan 25% av det inre motståndet i ett typiskt batteri. En enkel kontroll visar vad detta problem beror på.

Antag att inspänningen till AD-konvertern är något över halva maxspänningen t.ex. 3.5 volt vilket motsvarar ett mätvärde på 716 enheter av 1024. Antag nu att Vb och Vl skiljer med endast en enhet och att lastmotståndet är 10 ohm. Det minsta resistansvärdet vi då kan mäta får vi genom att beräkna:

Ri = 10*(716-715)/715 = 14 milliohm … inte bra!

Slutsatsen blev att mätaren måste få en bättre AD-konverter. Ett alternativ kunde ha varit att gå över till en ARM-baserad ”BluePill” processor som erbjuder en 12-bitars AD-konverter d.v.s. med samma uppställning som för Uno och omkompilering av programkoden kunde jag få fyra gånger bättre upplösning d.v.s. ungefär 3.5 milliOhm vilket är betydligt bättre. Ett annat alternativ hittade jag i miljonlådan i form av ett litet kretskort som jag nångång skaffade för ett annat projekt. Kretsen ADS1115 erbjuder en fyrkanalig 16-bitars AD-konverter som kontrolleras över en seriebus I2C. Genom att använda ADS1115 kunde jag fortsätta att använda Arduino Uno men mäta spänningar med god precision. Voltmätaren ADS1115 marknadsförs som 16-bitars men i praktiken är det en 15-bitars konverter då jag mäter positiva spänningar. 15 bitar ger 32768 spänningssteg d.v.s. 32 ggr bättre än Uno.

Mätprogrammet går på 60-rader vilket väl ryms i en Arduino Uno som erbjuder 32k minne för program (en Commodore 64 från ungefär 1980 hade ungefär den här kapaciteten). Programmet använder ett färdigt bibliotek för kontroll av ADS1115 vilket gör programmeringen mycket enklare …

// Name= resistance_ADS1115
// Lars Silen 2022
// This is free source code. Feel free to copy and modify.

#include "Arduino.h"
#include "ADS1115-Driver.h"

#define Rly 6
uint16_t V_battery;
uint16_t V_load;
float R;
float loadResistance=10.1;

ADS1115 ads1115 = ADS1115(ADS1115_I2C_ADDR_GND);

uint16_t readValue(uint8_t input) {
  ads1115.setMultiplexer(input);
  ads1115.startSingleConvertion();

  delayMicroseconds(25); // The ADS1115 needs to wake up from sleep mode and usually it takes 25 uS to do that

  while (ads1115.getOperationalStatus() == 0);

  return ads1115.readConvertedValue();
}

void setup() {
  Serial.begin(9600);
  ads1115.reset();
  ads1115.setDeviceMode(ADS1115_MODE_SINGLE);
  ads1115.setDataRate(ADS1115_DR_250_SPS);
  ads1115.setPga(ADS1115_PGA_6_144);  // +/- 6.144 V
  ads1115.setMultiplexer(ADS1115_MUX_AIN0_GND);
  pinMode(Rly, OUTPUT);
}

void loop() {
    Serial.println("Program to measure the internal resistance of 3s and 4s Yuneec LiPo batteries");
    Serial.println("Ensure there is a very good contact to the battery.");
    Serial.println("Keep your finger on the battery side connector!");
    delay(1000);
    digitalWrite(Rly,LOW);  // Measure battery voltage
    delay(100);
    uint16_t V_battery = readValue(ADS1115_MUX_AIN0_GND);   
    Serial.print("V_battery: ");
    Serial.println(V_battery);
    Serial.println("Switch load to ON");
    digitalWrite(Rly,HIGH);  // Measure load voltage, switch load ON
    delay(10);
    uint16_t V_load = readValue(ADS1115_MUX_AIN0_GND);
    digitalWrite(Rly,LOW);
    Serial.print("V_load: ");
    Serial.println(V_load);
    R = (loadResistance*(V_battery-V_load)/V_load)*1000.0;
    Serial.print("Internal resdistance milliohm:");
    Serial.println(R,0);
    Serial.println();
    Serial.println();
    delay(5000);
}

Det färdiga mätsystemet visas i bilden nedan. Den alternativa plattformen ”Blue Pill” är det lilla processorkortet som ligger på det silverfärgade lilla nätaggregatet som används för att driva reläet. ”Blue Pill” används inte utan finns endast med som illustration. Blue Pill är sannolikt 10 ggr kraftfullare än en Arduino Uno. Både en Uno och Blue Pill kostar sannolikt kring en tia. En Arduino Uno, Mega eller Due är dock mycket lättare att komma igång med eftersom de har skräddarsytts för Arduino utvecklingsomgivningen.

Den färdiga mätaren. Batteriet kopplas till de två banan-honkontakterna. Lastmotståndet är den guldfärgade komponenten. Motståndet är 10 ohm och effekttåligheten 50W.

Programmet körs från Arduino IDE så att utskrift sker till ”Serial monitor”. Det vore enkelt att ansluta en LCD-skärm på vilken resultatet kunde visas. Att lägga till en skärm och på detta sätt göra mätaren oberoende av en PC lämnas som övningsuppgift till läsaren!

Ett gammalt batteri har mätts. Det inre motståndet har närstan fördubblats jämfört med ett färskt batteri. Notera att batteriet har tre celler d.v.s. den inre resistansen är ungefär 24 milliOhm per cell. I ett färskt batteri är motsvarande värde ungefär 14 milliOhm per cell.

Utpressning effektivt?

13/02/2022

Pedofilön d.v.s. Jeffrey Epsteins paradisö erbjöd alla de perversioner någon kunde önska sig. Mängder av politiker och inflytelserika påverkare i samhället vallfärdade till pedofilön och var goda vänner med Epstein som under lång tid, konstigt nog ( /sark), verkade vara immun mot åtal. Det finns väl knappast någon som utgår från att Epstein erbjöd sina tjänster till samhällets toppskikt gratis? Att tillhandahålla unga flickor och pojkar till sexuellt nöje för samhällets toppskikt var som historien kunde utvisa farligt. Det är självklart att det sätt entrepenören kunde skydda sig själv var att dokumentera gästernas utsvävningar.

Utpressning är en enkel metod att tysta en kund men informationen om kunderna är i sig en extremt värdefull handelsvara. Utpressning blir ännu effektivare om offret kan fås att välja mellan att ta emot pengar eller att hängas ut i offentligheten. Mutorna som sådana blir med tiden nya hållhakar som ser till att offret förstår sin plats i ledet. Pengar och god press finns i överflöd för den som är användbar och följer order. Dagens melodi är: Gör som vi säger så får du pengar och synlighet och allt du kan önska dig, om inte så gör du kanske ”självmord” som Epstein.

Jacob Nordangård har en intressant artikel om dagens unga ledare däribland Finlands statsminister Sanna Marin, Frankrikes president Emmanuel Macron, Justin Trudeau i Canada och många fler. Dagens unga beslutsfattare har alla skolats genom World Economic Forum (WEF) som styrs av världens ekonomiska elit. Vilka är de metoder man använder för att få dessa unga ledare att gå i takt och att samtidigt upprepa samma mantra på nytt och på nytt? Notera att jag inte påstår att alla unga politiska ledare är köpta/styrda men det är förvånande ofta (/sark) man ser samma mall användas på nytt och på nytt globalt. Är orsaken att mallen är ett bra verktyg eller är orsaken att dessa skolade politiker borde uppfattas som skådespelarna i en dockteater där vi inte ser dem som håller i trådarna? Ett tänkbart svar finns i en intervju av Justin Trudeaus halvbror Kyle Kemper:

Kyle kemper konstaterar att Justin Trudeau inte följer sitt eget hjärta, utpressning är ett mycket effektivt verktyg.

”Han är Canadas regerings talesman och ledare, men de policyn och de initiativ han driver, som enligt min uppfattning är anti frihet och anti Kanada, kommer ner uppifrån från grupper som World Ekonomi Forum, Council on Foreign Relations och Bilderberg. De förstår behovet av att ha dess starka agenter inom regeringar och en sak vi har sett i regeringar i hela världen är svaga ledare som fungerar som talesmän.” (för eliten, min kommentar)

“Han följer inte sitt hjärta. Jag kan inte ärligt tro … det stämmer inte, det finns ingen verklig diskussion. Han får inte diskutera med Freedom Convoy (lastbilskaravanen i Kanada) och med dessa människor eftersom där finns mycket att packa upp/gräva i och mängder av allvarliga frågor.”

“När du ser på historien kring människor som Jeffrey Epstein och vilken deras roll var, att locka människor i en fälla och utpressa dem. Tänk på ett liv i överflöd och möjligheter, du kommer att göra misstag och bli tvingad att göra något illa.”

”Utpressning är ett effektivt verktyg.”

Jacob Nordangård har samlat en lista på unga ledare som har gått igenom WEF:s utbildning för unga ledare. Tror någon att världens miljardärer har gett dessa ledare utbildning endast för hjärtats godhets skull och att inga genkänster förväntas?

Listan som inte är fullständig har följande utseende:

More examples of influential Young Global Leaders [2]:
Crown Princess Victoria of Sweden
Crown Prince Haakon of Norway
Crown Prince Fredrik of DenmarkPrince Jaime de Bourbon de Parme, Netherlands
Princess Reema Bint Bandar Al-Saud, Ambassador for Saudi-Arabia in USA
Jacinda Arden, Prime Minister, New Zeeland
Alexander De Croo, Prime Minister, Belgium
Emmanuel Macron, President, France
Sanna Marin, Prime Minister, Finland
Carlos Alvarado Quesada, President, Costa Rica
Faisal Alibrahim, Minister of Economy and Planning, Saudi Arabia
Shauna Aminath, Minister of Environment, Climate Change and Technology, Maldives
Ida Auken, MP, former Minister of Environment, Denmark (author to the infamous article “Welcome To 2030: I Own Nothing, Have No Privacy And Life Has Never Been Better”)
Annalena Baerbock, Minister of Foreign Affairs, Leader of Alliance 90/Die Grünen, Germany
Kamissa Camara, Minister of the Digital Economy and Planning, Mali
Ugyen Dorji, Minister of Domestic Affairs, Bhutan
Chrystia Freeland, Deputy Prime Minister and Minister of Finance, Canada
Martín Guzmán, Minister of Finance, Argentina
Muhammad Hammad Azhar, Minister of Energy, Pakistan
Paula Ingabire, Minister of Information and communications technology and Innovation, Rwanda
Ronald Lamola, Minister of Justice and Correctional Services, South Africa
Birgitta Ohlson, Minister for European Union Affairs 2010–2014, Sweden
Mona Sahlin, Party Leader of the Social Democrats 2007–2011, Sweden
Stav Shaffir, Leader of the Green Party, Israel
Vera Daves de Sousa, Minister of Finance, Angola
Leonardo Di Caprio, actor and Climate Activist
Mattias Klum, photographer and Environmentalist
Jack Ma, Founder of Alibaba
Larry Page, Founder of Google
Ricken Patel, Founder of Avaaz
David de Rothschild, adventurer and Environmentalist
Jimmy Wale, Founder of Wikipedia
Jacob Wallenberg
, Chairman of Investor
Niklas Zennström, Founder of Skype
Mark Zuckerberg, Founder of Facebook

Välkommen till vår sköna nya värld där svart kan göras till vitt, där krig kallas fred och där frihet kallas slaveri.

Personligen uppfattar jag att vi på sikt behöver en världsregering som kan hantera klart globala frågor men det världens elit jobbar för är en travesti på mina ideal. Som en finne skulle uttrycka det bildlikt: Man försöker klättra upp i trädet med rumpan före. Jag uppfattar att alla skyddsmekanismer som skulle kunna skydda oss från en tusenårig fascistisk diktatur saknas.

Länken ovan Välkommen till 2030 är värd att läsa. Mina tankar går till det forna Sovjetunionen som alltid var endast några år från riktig kommunism och utopia. Resultatet blev miljoner döda.

Vi har under 25-30 års tid sett en tilltagande infiltration av samhällets toppskikt med personer som jag uppfattar vara villiga att styras av världens multinationella storföretag och indirekt av deras ägare världens superrika oligarker. Hur denna infiltration har gjorts i detalj vet jag inte men det ligget nära till hands att samma metod som i början av artikeln beskrevs har använts i denna process. Tag reda på de potentiella ledarnas svagheter och se till att dessa svagheter utnyttjas och dokumenteras. En person som har att välja mellan rikedom och berömmelse eller att i skam bli uthängd i media har lätt att i små steg göra avkall på den egna moralen. Parallellt med WEF infiltration ser man en intressant trend där den traditionella vänstern plötsligt verkar stå på de rikastes sida, inte småfolkets. Som den cyniker jag har blivit så frågar man sig naturligtvis vad köpet av denna globala arbetarrörelse har kostat?

En korporatistisk rörelse där köpta politiker skapar en lagstiftning som passar de superrika samtidigt som politikerna själva rundligt belönas för sitt arbete och där lagstiftarna, se på situationen i Kanada, vägrar diskutera med sina väljare när det uppstår konflikter kan som jag uppfattar saken ses som mycket nära besläktad med 1930-talets fascism (det finns många definitioner). Samtidigt är det intressant att se hur tex. Trudeau anklagar motståndarna för att vara terrorister, rasister och nazister. Enligt handboken ”1984” blir svart till vitt och krig kallas fred. Då en modern WEF utbildad politiker gör ett uttalande/löfte kan det vara bra att alltid gå tillbaka till handboken och ställa frågan om ifrågavarande ledares handlingar bättre svarar mot motsatsen enligt modell från 1984.

Nedan en kort video där utvecklingsbiologerna, båda doktorer, diskuterar bl.a. situationen i Kanada och den inverterade bild media skapar.

https://youtu.be/QvpSTnnFcz0

Källor:

Intressanta länkar: https://www.technocracy.news/world-economic-forums-young-global-leaders-revealed/?fbclid=IwAR1zUSarj_-d3-1DQffhX8rRQZb-Zxe-WG4VYZVEamAM4iEKRL34ihr_nac

Första på denna lista på wayback maskinen är Esko Aho: http://web.archive.org/web/20131203013754/http://www3.weforum.org/docs/WEF_GLT_ClassOf1993.pdf

Steganografi och hemliga meddelanden

10/02/2022

Datorarkeologi, hemliga meddelanden.

Jag tror att rätt många barn som nyligen har lärt sig läsa har gjort sina egna hemliga alfabet där det vanliga latinska/nordiska alfabetet ersätts med ”hemliga tecken” så att meddelandet blir oläsligt. Alternativt kan man använda Cesars kryptering där man tänker sig alfabetet som två ringar där man förskjuter den ena med ett visst antal steg. Om vi antar att vårt vanliga alfabet är den första ringen och vi vrider kryptoalfabetsringen tillbaka ett steg så får vi ett kryptoalfabet där

Vanlig text    Krypterad text
a          --> b
b          --> c
osv.

Ett hemligt meddelande av denna typ är naturligtvis urenkelt att lösa. Med dator kan vi naturligtvis enkelt och snabbt testa alla kombinationer men också för hand går det snabbt att titta på tex. fördelningen av de vanligaste bokstäverna i det gissade språket i meddelandet vilket ger information om hur alfabetet skall förskjutas. Ett barns hemliga alfabet är likaså väldigt enkelt att läsa om vi har en vettig längd på meddelandet. Vi kan ur ordlängd etc. gissa bokstäver och rätt enkelt få fram det hemliga alfabetet.

Enkla substitutionsskiffer dvs. förskjutning av bokstäverna i alfabetet eller hemliga symboler i stället för det normala alfabetet är så enkla att lösa att man kan säga att ett meddelande som kodats på detta sätt egentligen endast visar att meddelandet inte är tänkt att läsas rakt upp och ner.

En intressant detalj är Stanley Kubricks film ”Ett rymdäventyr 2001” där skeppets tänkande dator heter ”HAL”. Av en slump 😉 så är HAL ordet IBM förskjutet en bokstav i riktning mot A d.v.s. IBM har kodats met ett Caesarskiffer försjutet endast ett steg i riktning mot A. Om man vill göra en textfil besvärlig att läsa men helt utan risk att man tappar lösenordet till texten så kan man koda en text med Unixverktyget rot13 som alltså förskjuter alfabetet med 13 steg. Säkerheten är lika med noll men det går inte att se vad texten innehåller bara genom att skumma av den med ögat.

Steganografi

Steganografi är tekniken att gömma ett meddelande tex inom ett skenbart oskyldigt meddelande. Antag att en medeltida krigsherre börjar ha slut på krutet och skickar ett meddelande till den egna kungen där han ber om 1500 kaggar fläsk, 20 kärror bröd … och på slutet konstaterar han krigståget måste avbrytas om han inte snabbt får mera mjöl, smör och salt … där den hemliga betydelsen kunde vara ‘mjöl=kol’, ‘smör=svavel’ och ‘salt=salpeter’ (de tre ingredienserna i svartkrut).

Under antiken kunde en kung t.ex. skicka en slav med ett hemligt meddelande så att håret rakades av huvudet på slaven varefter meddelandet skrevs på skalpen. Då håret hade vuxit ut skickades slaven till mottagaren som rakade av håret igen och läste meddelandet. Andra alternativ kunde vara att lägga in ett meddelande i ett bakat bröd … alternativen är många.

Vi såg i föregående inlägg hur man kan generera morsekod med hjälp av ett dataprogram. Ett kort meddelande, några ord, går på kanske 20 sekunder och ljudfilens längd är ungefär en miljon tecken. Antag att jag, den hemliga agenten, vill skicka en femsidig rapport till min uppdragsgivare utan att väcka uppmärksamhet. Jag kan då ta i bruk mitt morseprogram och regelbundet under en tid skicka t.ex. hälsningar till olika personer med morse. Meddelandet byts med någon dags mellanrum och fienden tittar på varje meddelande … men hittar inget.

Jag har redan tidigare, med tanke på användning för steganografi, modifierat både ljudfilerna och pauserna jag använder för att bygga upp meddelandena så att det finns brus i signalerna t.ex. med toppvärdet ungefär 8- bitar av den 16 bitars amplitud ljudfilen tillåter. Bruset ligger då på ungefär 0.5% vilket inte är speciellt störande.

Antag att jag vill skicka min rapport som innehåller 10000 tecken inbakad i morsesignalen. Min text består av tecken som alla ryms i en byte (8 bitar) som i sin tur ryms inom bottenbruset i min morsesignal. Jag behöver nu endast via någon annan kanal meddela min uppdragsgivare att ”Kom ihåg att gratulera den brittiska drottningen då hon fyller 100 år”. Hundra i detta meddelande betyder att jag byter ut vart hundrade talvärde i bruset i meddelandet mot en bokstav. Bruset kommer att öka marginellt men inte så att man enkelt hör skillnaden. Jag måste då skriva ett morsemeddelande som producerar en morse wav-fil med längden större än en miljon talvärden … enkelt.

Jag lägger ut den mixade morsefilen på den vanliga platsen för min morsehobby och min uppdragsgivare laddar ner filen och kör ett program som plockar ut vart hundrade talvärde i wav-filen och dumpar resultatet i en textfil som är min återskapade rapport.

Jag har alltså dolt en textrapport på 10000 tecken i ett oskyldigt morsemeddelande som gick på kanske 20-30 bokstäver. Notera att den sända dolda texten naturligtvis i sig kan vara krypterad innan den läggs till bruset i morsekoden. Det är naturligtvis självklart att texten inte behöver läggas in med 100 teckens intervall utan jag kan använda en slumptalsgenerator som genererar en lämplig slumptalssekvens som säger hur långt avståndet är mellan det hemliga dokumentets bokstäver. Det är också sannolikt att jag endast vill lägga in text i bruset i pauser inte i den reguljära sinusvågen jag använder som ljud eftersom det kan verka misstänkt in enstaka sampel ligger mycket nära noll då sinusvågen ligger nära ett. Jag kan hoppa över områden där jag har en morseton. Både jag och min uppdragsgivare måste naturligtvis kunna generera samma sekvens. Det är självklart att det enkelt går att gömma stora mängder text i en ljudfil som ovan men också självklart att det krävs en del funderande över hur man bäst döljer att det ligger ett meddelande inbakat i filen.

Bilden visar ljusrött brus med amplituden 0.125 (signalen har amplituden 1.0). Om vi antar att ljudfilen är kodad som 16-bitars PCM så kan vi lägga in data med ett största värde 8192 utan att vårt hemliga meddelande sticker ut på något sätt.

Digitalbilder innehåller också enorma mängder data. En modern digitalkamera producerar bilder vars storlek är tiotals megabyte d.v.s. tiotals gånger större än morseljudfilen. Varje bildpunkt innehåller information om tre olika färger och varje färg kodas i en eller flera byte. Det är självklart att jag kan koda information, om jag så vill i pixlar i bilden t.ex. så att jag modifierar färgdata så att jag modifierar en färg så att om färgens värde är ”jämnt” d.v.s. 2, 4, 6 … 254 så skall färgen tolkas som en etta d.v.s. en bit med värdet = 1. På motsvarande sätt kan jag koda en nolla så att jag modifierar ett färgvärde till ”udda” som då tolkas som en bit=0. Förändringarna jag behöver göra är extremt små och sannolikt odetekterbara speciellt som mitt meddelande matar in varierande bitar. Slutresultatet är en bild som ser helt normal ut men i vilken jag kan koda in mängder av dolda data. Olika typer av steganografiska metoder används idag till att koda in t.e.x. copyright information i bilden vilket gör att det i efterhand går att bevisa vem som ägde rättigheterna till bilden.

Notera att det inte är självklart att ovan beskrivna kodningar överlever packning. Om jag konverterar min morse ljudfil till mp3 formatet så kommer filen att packas ihop betydligt. En mp3 kodning är inte förlustfri vilket betyder att om jag packar upp filen tillbaka till wav så har sannolikt mitt hemliga meddelande också förstörts. Samma princip gäller bilder. Enkla hemliga kodningar kan förstöras av packning till något icke förlustfritt format.

En motståndare som försöker hitta mina dolda meddelanden skulle sannolikt bli mycket misstänksam om jag ibland skulle skicka mp3 morsemeddelanden och andra gånger wav meddelanden. Lösningen skulle naturligtvis vara att alltid skicka wav-filer som är opackade.

Morseljudsignal till text

09/02/2022

Detta är ett inlägg i serien datorarkeologi.

I tidigare inlägg har jag visat hur man automatiskt kan översätta skriven text till morse och därefter generera en ljudfil som man t.ex. kunde köra igenom en radiosändare och om effekten är tillräckligt stark och reflexionerna i atmosfären optimala så kan man i princip höra morsemeddelandet överallt på jorden.

Vad gör jag om jag inte kan morse d.v.s. meddelandet är bara en okänd serie blippar. Kan jag skriva ett program som läser in morsekoden som ljud och översätter ljudmeddelandet till text? Det visar sig att detta, om signalen är optimal, är mycket enkelt att göra. Amplituden på alla ljudsignaler är exakt lika och alla pauser har någon av tre exakt definierade längder.

Signalen har följande utseende om jag tittar på ljudfilen med hjälp av programmet Audacity:

Vi ser att signalen är extremt ren och störningsfri. Pauser har ljudnivån noll helt utan något brus och signalen är en sinusvåg med konstant amplitud.

För att kunna läsa av signalen likriktar vi den först d.v.s. vi tar absolutvärdet av signalen så att alla negativa värden under strecket i figuren blir positiva. Signalen varierar våldsamt mellan 0 och ca. 0.5 och för att vi skall kunna bedöma om vi detekterar ljud eller tystnad filtrerar vi signalen så att vi beräknar medelvärdet av ett antal ljudvärden. Om medelvärdet är klart positivt så hör programmet ljud och då medelvärdet ligger mycket nära noll så är det tyst.

Programmet har en funktion/subrutin. Jag skrev denna gång programmet i språket python. Översättningen går till så att jag samlar ihop fragment av korta ljdsignaler (*) och långa ljudsignaler (-). Ljudsignalerna läggs till en textsträng ända tills vi stöter på en ”teckenpaus” d.v.s. en paus mellan bokstäver. Vi skickar nu textsträngen t.ex. ‘*-‘ till funktionen translate_char(tecken) som jämför morsetecknet med alla morsetecken i morsealfabetet och därefter skriver ut resultatet som bokstaven ‘a’ i detta fall. Vi nollar nu morsesträngen och börjar samla * rep – för följande tecken. För att läsa vad programmet gör så hoppar vi över funktionen translate_char och börjar läsa kommandoraden på vilken vi vill ha endast en parameter d.v.s. ljudfilens namn. Ljudfilen kan vara en mp3- eller en wav-fil. Om vi ger en mp3-fil så konverterar programmet automatiskt mp3 filen till en wav-fil eftersom wav-filen är lättare att hantera rent tekniskt.

#!/home/lasi/miniconda3/bin/python
# Name=morse_receiver.py
# The program reads an audio file and converts the audio back to plain text.
# The analysis works as follows:
# Read the message and record the lengths of sound and silence to a file.
# Determine the length of dots and dashes and the lengths of silence.
# Create a new file vith * - and the character interval + word interval.
# The file can now be analyzed for morse patterns and converted into text.
# This is free code. Use on your own risk.

import wavfile
import sys
import os


def translate_char(m_string):
	m_string.strip()
	if (m_string=="*-"):
		return "A"
	if (m_string=="-***"):
		return "B"
	if (m_string=="-*-*"):
		return "C"
	if (m_string=="-**"):
		return "D"
	if (m_string=="*"):
		return "E"
	if (m_string=="**-*"):
		return "F"
	if (m_string=="--*"):
		return "G"
	if (m_string=="****"):
		return "H"
	if (m_string=="**"):
		return "I"
	if (m_string=="*---"):
		return "J"
	if (m_string=="-*-"):
		return "K"
	if (m_string=="*-**"):
		return "L"
	if (m_string=="--"):
		return "M"
	if (m_string=="-*"):
		return "N"
	if (m_string=="---"):
		return "O"
	if (m_string=="*--*"):
		return "P"
	if (m_string=="--*-"):
		return "Q"
	if (m_string=="*-*"):
		return "R"
	if (m_string=="***"):
		return "S"
	if (m_string=="-"):
		return "T"
	if (m_string=="**-"):
		return "U"
	if (m_string=="***-"):
		return "V"
	if (m_string=="*--"):
		return "W"
	if (m_string=="-**-"):
		return "X"
	if (m_string=="-*--"):
		return "Y"
	if (m_string=="--**"):
		return "Z"
	if (m_string=="*--*-"):
		return "Å"
	if (m_string=="*-*-"):
		return "Ä"
	if (m_string=="---*"):
		return "Ö"
	if (m_string=="*----"):
		return "1"
	if (m_string=="**---"):
		return "2"
	if (m_string=="***--"):
		return "3"
	if (m_string=="****-"):
		return "4"
	if (m_string=="*****"):
		return "5"
	if (m_string=="-****"):
		return "6"
	if (m_string=="--***"):
		return "7"
	if (m_string=="---**"):
		return "8"
	if (m_string=="----*"):
		return "9"
	if (m_string=="-----"):
		return "0"
	# Primitive error check
	print("Error m_string=",m_string)
	print("Len=",len(m_string))
	return "?"


if (len(sys.argv)<1) or (len(sys.argv)>=3):
	print("Usage: morse_receiver.py snd_file")
	exit(0)

# We only process wav-files. If I get a mp3 then convert it to wav
# Add further conversions here as nedessary.
# Filtypen bestäms utifrån filnamnet inte från magisk filtyp.
snd_file = sys.argv[1]
print("File to process: ",snd_file)

if snd_file.endswith('.mp3'):
	print("MP3 file detected")
	# Convert to a wav file
	# model ffmpeg -i song.mp3 -ar 44100 song.wav
	cmd = "ffmpeg -i "+snd_file+" -loglevel quiet -ar 44100 -y "+snd_file+".wav >/dev/null"
	snd_file=snd_file+".wav"
	print("Converted file="+snd_file)
	# Convert the mp3 file to wav before processing.
	os.system(cmd)

f = wavfile.open(snd_file, 'r')
frames=f.num_frames
wav_data=f.read_float(frames)
ampl=0
i=0
snd = False
nosnd = True
pstart=0
sstart=0
my_ch = "";
for d in wav_data:
	ampl=(9*ampl+abs(d[0]))/10
	i=i+1
	if((ampl>0.1) and (nosnd==True)):
		sstart=i
		l = i-pstart
		if(l<5000):
			sp=0
		elif((l>5000) and (l<20000)):
			print(translate_char(my_ch)+"  "+my_ch)
			my_ch=""

		else:
			print(translate_char(my_ch)+"  "+my_ch+"\n")
			my_ch=""
		snd = True
		nosnd = False
	elif((ampl<0.01) and (snd==True)):
		pstart = i
		if((i-sstart)<5000):
			my_ch = my_ch + "*"
		else:
			my_ch = my_ch + "-"
		snd=False
		nosnd=True

Vi kontrollerar om vi fick en mp3-fil som parameter. Om detta är fallet så bygger vi upp ett kommando som en textsträng där programmet ffmpeg används för att göra en wav-kopia av mp3-filen. Kommandot utförs av det externa programmet ffmpeg genom att anropa det via system() d.v.s. vi gör inifrån programmet detsamma som vi skulle ha kunnat göra på kommandoraden.

if snd_file.endswith('.mp3'):
	print("MP3 file detected")
	# Convert to a wav file
	# model ffmpeg -i song.mp3 -ar 44100 song.wav
	cmd = "ffmpeg -i "+snd_file+" -loglevel quiet -ar 44100 -y "+snd_file+".wav >/dev/null"
	snd_file=snd_file+".wav"
	print("Converted file="+snd_file)
	# Convert the mp3 file to wav before processing.
	os.system(cmd)

Vi läser nu in hela ljudfilen i minnet, PDP11 skulle storkna i detta skede eftersom användarminnet skulle ta slut innan ens halva filen är läst … fint att ha lite mera minne i en modern dator! Vi skapar också några hjälpvariabler som vi behöver lite senare. Om jag skulle dekoda en fil på PDP11 så skulle jag läsa in data från skiva i stället för att ha filen i datorns minne. Att använda skiva i stället för minnet fungerar precis lika bra men hastigheten är kanske en tusendel jämfört med att jobba direkt mot minne. PDP11 från 1970-talet skulle tugga länge på en dekodning av en 20 sekunders ljudfil. Gissar någon minut.

f = wavfile.open(snd_file, 'r')
frames=f.num_frames
wav_data=f.read_float(frames)
ampl=0
i=0
snd = False
nosnd = True
pstart=0
sstart=0
my_ch = "";

Vi börjar nu läsa in värden, ett datavärde i taget från filen som alltså ligger i centralminnet (RAM) och beräknar ett flytande medelvärde över tio ljudvärden. Experiment visade att detta gav en pålitlig detektion. Jag är övertygad om att en annan filtrering skulle fungera lika bra. För en annan ljudfil genererad av en utomstående producemt så skulle vi antagligen behöve experimentera här.

for d in wav_data:
	ampl=(9*ampl+abs(d[0]))/10

Vi går nu vidare och ser när vi stöter på ljud och lägger då på minnet vilket ljudvärde 0 … vi hade och kontrollerar samtidigt om vi går från noll (icke ljud) mot ljud (större än ca. 0.1). Vi kan nu skilja på en ljudpuls och en paus. Genom att vi lagrade start och slut på pulsen så kan vi genom subtraktion beräkna längden på en ljudpuls eller en paus. Om vi stötte på en kort ljudpuls så lägger vi till ‘*’ i slutet av variablen my_ch . Om vi stötte på en lång ljudpuls så lägger vi till ‘-‘. Om vi stötte på en mellanlång eller lång paus så vet vi att tecknet är färdigt för översättning. Om vi stöter på en riktigt lång paus så vet vi att ett ord har passerats och då skriver vi ett radbyte för att underlätta läsningen.

Hela detektorn har då följande utseende:

for d in wav_data:
	ampl=(9*ampl+abs(d[0]))/10
	i=i+1
	if((ampl>0.1) and (nosnd==True)):
		sstart=i
		l = i-pstart
		if(l<5000):
			sp=0
		elif((l>5000) and (l<20000)):
			print(translate_char(my_ch)+"  "+my_ch)
			my_ch=""

		else:
			print(translate_char(my_ch)+"  "+my_ch+"\n")
			my_ch=""
		snd = True
		nosnd = False
	elif((ampl<0.01) and (snd==True)):
		pstart = i
		if((i-sstart)<5000):
			my_ch = my_ch + "*"
		else:
			my_ch = my_ch + "-"
		snd=False
		nosnd=True

Intresserade läsare kan lyssna på morsekoden nedan. Min reaktion på denna morsemottagare är egentligen att det visade sig vara mycket lättare att skriva mottagaren än jag hade väntat mig.

Om någon läsare vill skriva en mottagare för svårare morsekod t.ex. morsekod där alla tidsvärden varierar då en människa sänder morse så gissar jag att jag skulle spela in alla meddelanden. Därefter skulle jag skriva en dynamisk analysator som gissar längden på kort/långt ljud samt länden av pause. Dv.s. jag skulle mäta längden på alla tidsvärden separat för vatje fil.

En annan komplikation är att signalamplituden sannolikt skulle kunna variera rätt mycket. Även detta skulle kräva separat hantering så att gränsvärdet för ljud/tystnad skulle kunna väljas utgående från signalen i stället för att ges ett fast värde som i detta exemple.

Global morsesändare

09/02/2022

Ett inlägg i serien datorarkeologi.

En gammal traditionell morsesändare sänder morse via en radiosändare. Om vi går mer än hundra år tillbaka i tiden så kunde sändningen gå över en enda tråd d.v.s. mellan två punkter vilket är ganska begränsat … så långt tillbaka går vi dock inte.

Om jag vill skicka iväg ett meddelande till i princip hela världen så hur gör jag? Problemet är främst hur jag skall kunna lagra den skapade ljudfilen automatiskt på en åtkomlig plats ute på nätet. Jag hade ursprungligen tänkt mig att jag lagrar filen på spegling.blog men jag råkade ut för en del tekniska komplikationer då jag försökte göra detta automatiskt. Jag kom då på att jag har en urgammal blog http://www.kolumbus.fi/larsil som stöder ftp-protokoll. Jag kan alltså flytta morse ljudfilen till kolumbus servern med ftp på samma sätt som jag flyttade filen från PDP11 till min huvuddator deNeb.

Att flytta en nygenererad morse ljudfil till kolumbus betyder att jag kör ett skript send.ftp som automatiskt flyttar filen upp till kolumbus där den är ”synlig för hela världen”.

#!/bin/bash
HOST=www.kolumbus.fi
USER=xxxxxxxx
PASSWORD=xxxxxxxxxxxx
ftp -inv $HOST <<EOF
user $USER $PASSWORD
put morse_message.mp3
bye
EOF
echo "Cleaning system variables"
unset HOST
unset USER
unset PASSWORD

Orsaken till att jag använder unset HOST etc. är att jag inte vill att dessa systemvariabler skall bli liggande i maskinen trots att maskinen naturligtvis är skyddad. Utan unset kunde en person som har vägen förbi, och terminalfönstret är öppet, får reda på t.ex. kolumbusserverns användarnamn och password genom att ge kommandona:

echo HOST
echo USER
echo PASSWORD

För att översätta en textrad till morse och flytta resultatet till Internet ger jag följande kommandon:

./smorse.run
Skriv text att sända som morse:sssss lars silen sssss
Ord=sssss
s  ***  ti ti ti 
s  ***  ti ti ti 
s  ***  ti ti ti 
s  ***  ti ti ti 
s  ***  ti ti ti 
Ord=lars
l  *-**  ti taa ti ti 
a  *-  ti taa 
r  *-*  ti taa ti 
s  ***  ti ti ti 
--- etc ...
Jag valde att omge namnet med 's' eftersom bokstanen 's' i morsealfabetet är '***' d.v.s. ti ti ti vilket är lätt att känna igen. 
Flyttning till servern kolumbus:
./send.ftp
Connected to xxxxxxxxxxxxxxxxxxx
220 ProFTPD Server (Elisa Oyj FTP Service)
331 Password required for xxxxxxxx
230 User xxxxxxxx logged in
Remote system type is UNIX.
Using binary mode to transfer files.
local: morse_message.mp3 remote: morse_message.mp3
200 PORT command successful
150 Opening BINARY mode data connection for morse_message.mp3
226 Transfer complete
169291 bytes sent in 0.10 secs (1.6789 MB/s)
221 Goodbye.
Cleaning system variables

Läsaren kan lyssna på hur morsesändaren låter nedan:

Att porta till BSD 2.11 Unix

07/02/2022

I en tidigare artikel visade jag hur man rätt enkelt kan skapa ett verktyg som möjliggör att tex. barn kan programmera på sitt eget modersmål i detta fall svenska. Språket ”sv” och kompilatorn ”csv” förstår svenska nyckelord och kompileras i två steg. Det första steget producerar c-kod och det andra skedet kompilerar från c-språket till körbar maskinkod (se den tidigare artikeln).

Hela paketet i den tidigare artikeln inkluderande lex-programmet som sköter översättningen från sv till c går på några hundra rader kod. Hur mycket jobb kräver det att modifiera programmen så att de kör på en urgammal Unix samt vilka är de begränsningar som är av sådan art att ny design behövs?

Kända begränsningar i PDP11

En maskin från 1970-talet var konstruerad för en specifikt engelsk/amerikansk miljö utan någon tanke på yttre nationella alfabet. Bokstäverna ÅÄÖ kunde stödas men sällan problemfritt. Jag valde att helt enkelt lämna bort prickar över åäöÅÄÖ d.v.s. texten ser ut som mina handskrivna skoluppsater på 1960-70-talet.

Maskinen stöder inte ljud vilket betyder att sändaren måste modifieras. I praktiken betyder detta att ljudet genereras på en annan (modern) maskin. Morsekoden som sådan lagras i en textfil och flyttas automatiskt till en annan maskin som tolkar den färdiga koden och genererar ljud. Jag kunde skriva kod på PDP11 emulatorn som styr in/ut pinnar på Raspberry Pi men jag uppfattar inte detta vara värt besväret.

Oväntade små problem

Det första problem jag stötte på var att det program lex genererade från swe.lex –> lex.yy.c inte kompilerade på PDP11 trots att jag körde en lex version som hörde hemma i BSD 2.11. Vad hände?

Jag kom inte ihåg att enradiga kommentarer ”// … till slutet av rad” är ett nytt påhitt. Jag löste problemet genom att ta bort denna typ av kommentarer. Samma sak måste göras med morseprogrammet. Det är naturligtvis möjligt att definiera om swe.lex så att jag genererar den gamla typens kommentarer i stället för nya enradiga. Detta blir en övning för framtiden.

Urgamla versioner av C-språket deklarerar parameterlistor till funktioner på ett annat sätt än moderna versioner. Ett exempel på detta är om jag vill läsa in någon parameter från kommandoraden.

I modern C-kod skulle jag deklarera kommandoradsparametrar på följande sätt:

main(int argc, char argv[])
{
  ... huvudprogrammet ...
}

I den gamla varianten av C-språket visar det sig att jag måste skriva på följande sätt:

main(argc, argv)
int argc;
char **argv;
{
  ... huvudprogrammet ...
}

Samma modifikation som i det senare exemplet måste jag göra för alla funktionsanrop som har parameterlista.

Funktionen getline som finns färdig i stdio.h i moderna varianter av C-språket eller egentligen i moderna varianter av C-biblioteket. Denna färdiga funktion introducerades ungefär 2010 d.v.s. långt efter att man slutade uppdatera min BSD 2.11. Lösningen är naturligtvis att skriva funktionen själv. Jag utgick från boken ”The C Programming Language” av Brian W. Kernighan och Dennis M. Ritchie. Boken är en klassiker! Min nya funktion fick följande utseende i språket sv:

heltal hamtarad(s,l)
tecken *s;
heltal l;
{
  heltal i,c;
  upprepa(i=0;i<=l-1 && (c=getchar())!=EOF && c!='\n';++i)
    s[i]=c;
  om(c=='\n'){
    s[i]=c;
    ++i;
    s[i]='\0';
    ++i;
  }
  s[i]='\0';
  s[i+1]='\0';
  return i;
}

Jag märker att jag använde return i stället för returnera vilket dock är ok eftersom return i såfall faller igenom oöversatt vilket ger korrekt C-språk … Notera att parametrarna är deklarerade på gammalt vis. Notera hur man gör två saker samtidigt i upprepa-slingan. Jag läser in ett tecken ‘c’ och kontrollerar samtidigt att inte filen har tagit slut. Detta kallas bieffekt och är något man försöker undvika i de flesta programmeringsspråk eftersom bieffekterna kan ge upphov till programmeringsfel som kan vara besvärliga att hitta om en bit programkod t.ex. förutom en tydlig jämförelse också ändrar värdet på en variabel.

Programmet kompilerar

Jag plockar bort ljudrutinerna i programmet som kör på PDP11 d.v.s. aplay eftersom det inte finns något ljudstöd.

Då programmet kompilerar första gången vet jag att jag börjar vara nära målet. Provkörning visade att den text jag matade in via getline splittrades upp i ord helt korrekt men vid körning fick jag diverse skräp efter det sista ordet. Problemet berodde på funktionen strtok som delar upp en sträng i en serie segment separerade av en eller flera separatorer i den gamla versionen ville ha två separatorer d.v.s. mellanslag ‘ ‘ och radbyte. I den nya C-versionen behövdes endast mellanslag som separator.

Då kompileringen går igenom märker jag att det inte lönar sig att kompilera om swe.lex varje gång eftersom kompileringen av lex.yy.c till programmet sv tar kanske 20 sekunder i stället för en blinkning under Linux på min normala PC. Lösningen är naturligtvis att kompilera om sv endast då detta behövs.

Då jag kör morseprogrammet blir resultatet:

./smorse
Skriv text att sanda som morse:lasse skriver
*-**
*-
***
***
*
+
***
-*-
*-*
**
***-
*
*-*
+

Tecknet ‘+’ betyder att det är en lång paus på 0.7 sekunder mellan ord.

Morsesekvensen ovan skickar jag i stället till en fil s.morse som jag sedan kan skicka vidare till morsesändaren på en annan maskin d.v.s. min Linux PC. Jag skriver ett enkelt shellskript som kör morseprogrammet och automatiskt skickar resultatet med ftp till min Linuxmaskin.

echo "Enter the text to send:"
./smorse >s.morse
sh send.ftp

Skriptet send.ftp använder ftp som har diskuterats tidigare för att skicka filen s.morse till Linuxmaskinen. Skriptet send.ftp har följande utseende:

ftp -inv $HOST <<EOF
user $USER $PASSWORD
put s.morse
bye
EOF

Jag har definierat systemvariablerna HOST, USER och PASSWORD som jag behöver för att kunna logga in på Linuxmaskinen. Filen morse.txt läggs för närvarande hemkatalogen men jag ändrar detta senare till att peka in till en egen katalog för sändaren. Från linux kan jag sedan med hjälp av ett enkelt litet program skicka resultatet vidare med epost som text eller skicka ljudet vidare tex. med radio. Det var roligt att se att det var enkelt att automatisera ftp-funktionen på PDP11.

Jag skrev en enkel morsetolk/sändare som kontinuerligt väntar på meddelanden att sända på min bordsdator deNeb. Programmet är listat nedan. Jag skrev på skoj programmet i programspråket Python som idag är en väldigt populär ersättare till forntidens Basic. Programmet sender.py visar hur man i Python kan generera ljud men också hur man enkelt kan använda kommandon ur operativsystemet eller något annat program på maskinen. Jag anropar operativsystemet för att kontrollera om det har kommit in något nytt sändningsjobb från PDP11 och putsar i såfall bort det gamla meddelandet. Programmet aplay genererar ljud till högtalarna och programmet ffmpeg skapar en ljudfil innehållande hela ljudsekvensen med bättre tidsprecision än anropen till aplay. Det tar ett ögonblick att starta upp aplay vilket gör timingen inexakt. Det kompletta meddelandet finns i ljudfilerna morse_message.wav samt i den komprimerade filen morse_message.mp3 . Vill man spara utrymme kan kvaliteten sänkas betydligt utan att meddelandet blir oläsligt. De råa ljudfilerna är så stora att de inte ryms i PDP11 normala användarminne (ca. 400 kb då ljudfilerna är 1.7 MByte och den packade mp3 filen är 462 kByte. I en 30 Euros Raspberry Pi läser man utan att blinka in ljudfilerna och behandlar dem i minnet om detta behövs. På 1970-talets PDP11 skulle man ha kört från skiva till skiva och behandlat små minnessegment och successivt skrivit data till skiva eller magnetband.

#!/home/lasi/miniconda3/bin/python
# Modify the python used to match your system (first line). Check with "which python".
# Name=sender.py
# The program "sends" morse code produced by the PDP11
# and automatically transferred to deNeb by ftp.
# This program checks if the file s.morse exists and
# if that is the case sends the morse code, deletes the
# morse message and then starts looking for the next message
# Author: Lars Silen
# This is free code. Feel free to use or modify on your own risk.

import os
import time
from os.path import exists

run = True

def send_morse(line):
	for i in range(0,len(line)):
		if line[i]=='*':
			os.system("aplay  0_1.wav")
			os.system("aplay  sp.wav")
			os.system('echo "file 0_1.wav" >>wav_files.txt\n')
			os.system('echo "file sp.wav" >>wav_files.txt\n')
		elif line[i]=='-':
			os.system("aplay  0_3.wav")
			os.system("aplay  sp.wav")
			os.system('echo "file 0_3.wav" >>wav_files.txt\n')
			os.system('echo "file sp.wav" >>wav_files.txt\n')
		elif line[i]=='\n':
			os.system("aplay  cp.wav")
			os.system('echo "file cp.wav" >>wav_files.txt\n')
		elif line[i]=="+":
			os.system("aplay  wp.wav")
			os.system('echo "file wp.wav" >>wav_files.txt\n')


while run:
	os.system("rm wav_files.txt")
	if exists("s.morse"):
		os.system("rm s.morse.old")
		os.system("rm morse_message.wav")
		os.system("rm morse_message.mp3")
		f=open("s.morse","r") 
		lines = f.readlines()
		# print(lines)
		for i in range(2,len(lines)):
			send_morse(lines[i])
			os.system("mv s.morse s.morse.old")
		# Create a wav file containing the audio of the message
		os.system("ffmpeg -f concat -i wav_files.txt -c copy morse_message.wav")
		os.system("ffmpeg -i morse_message.wav -vn -ar 44100 -ac 2 -b:a 192k morse_message.mp3")
		print("Generated audio message! Listen to: morse_message.wav or morse_message.mp3")
	else:
		print("Sleep 5 seconds")
		time.sleep(5)
		os.system("clear")

En intressant jämförelse mellan det ursprungliga morseprogrammet kompilerat via C till maskinkod är att man hör skillnad mod Pythonprogrammets direkta ljudgenerering. Pythonprogrammet kör hörbart långsammare vilket i sig är naturligt då Python är ett tolkat språk som kör kanske 20 ggr långsammare än kompilerad C-kod.


Pointman's

A lagrange point in life

THE HOCKEY SCHTICK

Lars Silén: Reflex och Spegling

NoTricksZone

Lars Silén: Reflex och Spegling

Big Picture News, Informed Analysis

Canadian journalist Donna Laframboise. Former National Post & Toronto Star columnist, past vice president of the Canadian Civil Liberties Association.

JoNova

Lars Silén: Reflex och Spegling

Climate Audit

by Steve McIntyre

Musings from the Chiefio

Techno bits and mind pleasers

Bishop Hill

Lars Silén: Reflex och Spegling

Watts Up With That?

The world's most viewed site on global warming and climate change

TED Blog

The TED Blog shares news about TED Talks and TED Conferences.

Larsil2009's Blog

Lars Silén: Reflex och Spegling