Streamen met YouTube, Twitch en OBS

Er komt wellicht een moment dat je wilt beginnen met het livestreamen van een les aan de leerlingen.

In een document  (klik hier om het te downloaden) hebben Jeroen en ik opgeschreven hoe we gelivestreamde lesje geven met behulp van het programma OBS (Open Broadcasting Software) en Twitch (Jeroen) en YouTube (ik). We doen dit nu twee weken. Bewerkelijk maar leuk en je leert elke dag wat bij. Wellicht zorgt dit document ervoor dat jullie minder fouten maken.

Gebruik dit document vrijelijk. We vinden het wel leuk als je deelt hoe je ervaringen zijn. Maar dat hoeft ook niet hoor. Je hebt je tijd vast hard nodig voor de leerlingen.

Als je je hardware op orde wil brengen is deze blogpost met boodschappenlijstje van Peet Sneekes helemaal geweldig. Goeie, niet al te dure spullen (rond de €70). https://ideanious.com/stream-your-thoughts-by-drawing/

Jeroen van den Ende
Arjan van der Meij

Een eenvoudig virusverspreidingsmodel

Mooi lesmateriaal van Wouter Burger van het Stedelijk Gymnasium Haarlem. Een model in Coach en SIR model + corona. Grote dank!

Wanneer je geïnteresseerd bent in lesmateriaal, stuur me dan een mailtje.

Aanleiding

Gisteren ontving ik een mail van het steunpunt NLT. NLT is een relatief nieuw vak voor de bovenbouw HAVO en VWO. De letters staan voor Natuur, Leven en Technologie. Het is een zogeheten snijvlakvak, een vak waar de bètavakken biologie, natuurkunde, scheikunde, wiskunde en aardrijkskunde bij elkaar komen. Er worden onderwerpen behandeld die vaak bij de monovakken blijven liggen. Mijn school, De Populier in Den Haag maakt zich sterk voor de bètavakken en wij bieden dit vak dus ook aan.

In dit vak proberen we ook een plek te reserveren voor de actualiteit. Als er eens nieuwe satelliet wordt gelanceerd of er is een vulkaanuitbarsting of het Higgsdeeltje is gevonden, dan is dit de plek om het daarover te hebben. Goed. Die mail dus. In die mail werd verteld dat er een module is die je goed zou kunnen gebruiken om het Corona-virus te bespreken. Doordat we zo hard bezig zijn dat vermaledijde afstandsonderwijs vorm te geven hadden we nog helemaal niet hierover gedacht. Maar toen ik mijn NLT-collega’s en de directie voorstelde om lesjes te maken over het Corona-virus, was iedereen meteen heel enthousiast! “Dat moeten we doen!” En zoals dat bij ons gaat, na 20 minuten (online) overleg waren we eruit. We doen allemaal waar we goed in zijn. Marten doet de biologie, Lindsey de scheikunde en ik doe de modellen.

Modelleren

En dan ga je op zoek. Ik wil met mijn leerlingen gaan modelleren. Er zijn wel een paar voorwaarden:

  • Leerlingen moeten thuis zelf aan de slag kunnen gaan. Modelleren wordt het practicum van deze “noodmodule”. Dus de software moet liefst gratis maar in ieder geval toegankelijk zijn.
  • Het moet begrijpelijk zijn voor alle leerlingen. We doen dit voor alle leerlingen die nu nog NLT volgen: HAVO 4, VWO 4 en VWO 5.
  • Het moet wel een beetje echt aanvoelen. Alleen exponentiële groei is niet genoeg. Liefst moet “flattening the curve” in het model aan te tonen zijn.

Eerst Google hulp vragen. Er zijn plekken waar de effecten van ingrijpen (en niet ingrijpen) prachtig wordt laten zien, zoals hier, in The Washington Post, met schitterende animaties, die het extreem helder laten zien. En deze Epidemic calculator is ook prachtig! Maar de onderliggende wiskunde kan ik daar niet helemaal uithalen. Dan maar even langs mijn slimme YouTubekanalen. De video’s van 3Blue1Brown (1 en 2) en de video van Numberphile. En die laatste bracht me op het spoor van een model, het zgn. SIR-model of in het Nederlands, het Ziektecompartimentenmodel. Eigenlijk kinderlijk eenvoudig:

Het model

Je begint met een aantal mensen N waarvan een klein deel geïnfecteerd is (I). De rest van het aantal mensen is dan Vatbaar (S, Susceptable). In het begin is er nog geen groep die genezen is (R Recovered) en de ziekte dus ook niet meer kan krijgen (ik weet het, dat is nog niet 100% zeker). Wat je daarna doet is stapjes nemen in de tijd. En elke keer als je zo’n stapje neemt, verandert het aantal geïnfecteerden I, het aantal genezen mensen R en dus ook het aantal vatbaren S.

Om te weten hoe deze veranderen, heb je een infectiefactor nodig; hoe hoger dit getal, hoe meer mensen geïnfecteerd raken. Je hebt ook een getal nodig dat vertelt hoe groot het percentage is van de geïnfecteerden dat gedurende de tijdstap geneest. In dit model staat “genezen, R” eigenlijk voor twee groepen: zij die daadwerkelijk genezen en zij die eraan sterven (n het Engels lossen ze dit op door voor R niet “Recovered” te zeggen, maar “Removed”, verwijderd uit de groep die gevaar loopt. Beide groepen zijn (best cru natuurlijk) niet meer vatbaar.

We hebben dus de volgende gegevens:

  • het totaal aantal mensen in de bevolking N
  • aantal vatbare mensen S
  • aantal geïnfecteerde mensen I
  • aantal genezen mensen R
  • infectiefactor i
  • geneesfactor g
  • de tijd t. Elke keer als je een stapje neemt wordt t 1 groter

Als eerste bereken je het aantal geïnfecteerde mensen I op tijdstip t. Omdat te kunnen berekenen bereken je allereerst wat erbij komt. Dit hangt natuurlijk af van de infectiefactor i,  het aantal mensen dat vatbaar is S en welk gedeelte van de bevolking geïnfecteerd is, de infectiegraad I/N Deze getallen vermenigvuldig je: extra geïnfecteerden= S(t-1) * I(t-1) / N.  De t-1 verwijst naar de vorige dag. Je berekent de nieuwe dag op grond van de getallen van de vorige dag.

Er zijn ook geïnfecteerden die beter worden. Die gaan van dat getal af. Dat aantal is afhankelijk van de geneesfactor g en het aantal geïnfecteerden: minder geïnfecteerden=g*I(t-1). 

De verandering van het totaal aantal geïnfecteerden per dag is dan dI=i*I(t-1)*S(t-1) – g*I(t-1)

Dan kunnen we dus het aantal geïnfecteerden op tijdstrip t berekenen:
I(t)=I(t-1) + dI

Het aantal genezen personen is vervolgens eenvoudig uit te rekenen. Daar komt bij:
dR=g*I(t-1), dat wat eraf ging bij het aantal geïnfecteerden. Dan wordt het aantal genezen personen op tijdstip t:
R(t)=R(t-1) + dR

Het aantal vatbaren S is nu zeer eenvoudig uit te rekenen. Het is namelijk het totaal aantal mensen – de geïnfecteerden – de herstelden. In een formule: S(t)=NI(t) – R(t)

Op een rijtje:
dI=i*I(t-1)*S(t-1) – g*I(t-1)
dR=g*I(t-1)

I(t)=I(t-1) + dI
R(t)=R(t-1) + dR
S(t)=NI(t) – R(t)

Overigens wordt vaak gesproken over de R0, het getal dat vertelt hoeveel mensen er aangestoken worden t.o.v. het aantal mensen dat beter wordt. Als dit groter dan 1 is, dan is dat niet goed, we moeten ervoor zorgen dat het kleiner dan 1 wordt. In dit model is R0 ook te vinden. Het is namelijk de verhouding van de infectiefactor en de geneesfactor: i/g. Vergelijk dit met de verhouding van moederneutronen en dochterneutronen bij kernsplijting in een kernreactor. Als die groter is dan 1, gaat de reactor harder (al snel een atoombom); als die 1 is, een is het vermogen contant en als deze kleiner is dan 1, dooft de kernreactor uit.

Ik heb later nog de mortaliteit toegevoegd. Het maakt voor het model niet veel uit. Wat je in feite doet is de groep “genezen” splitsen in een groep die echt genezen is en een groep die sterft. Ik heb er wel even over nagedacht maar ik vind dat als je een model maakt dat je moet proberen het zo nauwkeurig mogelijk te doen. Ook al is het model dan donkerder. Ik deel hier beide modellen. Kun je kiezen.

De verandering is dat er van de groep geïnfecteerden ook nog afgaat de groep die overlijdt:
dD= – m*I(t-1). Hierin is m ( (welke percentage sterft tijdens een tijdstap) de mortaliteit. We gebruiken D voor het aantal overledenen.

Het model met ook de groep overleden ziet er dan zo uit:

dI=i*I(t-1)*S(t-1) – g*I(t-1)
dR=g*I(t-1)
dD=-m*I(t-1)

I(t)=I(t-1) + dI
R(t)=R(t-1) + dR
D(t)=D(t-1) +dD
S(t)=NI(t) – R(t)

Software

In de video van Numberphile doen ze dit in het gratis programma Geogebra. Een schitterend programma dat heel veel kan. Ik heb het echter zelf even geprobeerd en twee dingen zorgden ervoor dat ik het niet ga gebruiken. Ten eerste is er toch nog een hoop “abracadabra“. Wat gebeurt er precies? De tijdstappen zie je bijvoorbeeld niet. Bovendien kreeg ik het niet goed voor elkaar in het programma. Het heeft, een redelijk steile leercurve. En dat is niet handig.

Ik overlegde even met mijn bètamakkers in het land en besloot eens te zien of ik het in Excel zou kunnen doen. Dat heeft een paar grote voordelen: alle leerlingen hebben er wel eens mee gewerkt, de mesten hebben het thuis op de computer staan (vanwege het feit dat we als school via het bestuur een licentie hebben) en het is heel makkelijk om te zetten naar andere spreadsheetprogramma’s waarvan er een aantal helemaal gratis en/of webbased zijn (Google Sheets bijvoorbeeld).

Excel en Google Sheets
Had ik dat maar meteen gedaan. Kinderlijk eenvoudig om het te maken en direct kwamen daar de gewenste curves uit! Flattening the curve is meteen zichtbaar als je de infectiefactor verkleint en ook het bijzondere effect dat als die factor heel laag is, dat dan niet iedereen wordt geïnfecteerd. Ik heb de Excel files ook direct in Google Sheets geïmporteerd waar alles precies zo werkte.

Modelleertaal
In het eindexamenprogramma natuurkunde is modelleren een onderdeel en dat kun je doen in Coach van CMA. Dat is een (prima) betaald programma dat niet alle scholen zullen hebben aangeschaft. Gelukkig is er ook een gratis alternatief, de webbased Modelleertaal van mijn onvolprezen makker Tom Kooij. Hierin heb ik dit beide modellen (met en zonder mortaliteit)  ook geladen en dat ging zo mogelijk nog gemakkelijker dan in Excel. Later heeft Tom dit model er apart ingezet en verbeterd. Je kunt in dit model ook de tijdspat veranderen. In de Excel-modellen heb ik dat weggelaten. Dit levert nl. moeilijkheden waar ik leerlingen niet mee lastig wil vallen. Het kan wel overigens.

Mitsen en maren

Dit model is natuurlijk slechts een model. Er is veel over te zeggen en wellicht ook wel wat aan te doen.

  • Je zou het model kunnen wijzigen zodanig dat de infectiefactor kan veranderen gedurende de run. Dan kun je de effecten van maatregelen beter zien.  In de software die we gebruiken is dat mogelijk. Vergt wel iets meer gebruikerslenigheid.
  • Het zou wellicht handig zijn om wat te kunnen spelen met de tijd. Veel langer of kortere tijdstappen.
  • Wellicht is het beter om aan de knop van R0 te draaien. Kan gemakkelijk wordt geregeld in de Excel-files.
  • In de jongste video van 3Blue1Brown laat de auteur allemaal prachtige modellen zien waar hij willekeurige mensen door elkaar heen laat lopen en elkaar aansteken. Dat weet vermoedelijk betere voorspellingen, is beter te finetunen en te verbeteren. Dit is echter veel ingewikkelder, vergt programmeer-vaardigheden en valt buiten de scoop van onze lessen. Wel mooi om naar te kijken en zeer instructief. Het is leuk om eens na te denken of er geen fysiek spel mee te maken is die je in een klas kunt doen (als we weer in een lokaal mogen zitten).

Files

Vanzelfsprekend deel ik de Excel-files, de Google Sheets en de files voor de Modelleertaal. Voor collega’s die dit willen gebruiken in de lessen over het virus of voor anderen die wel eens aan de knoppen willen zitten. Als je er mee aan de slag gaat, er dingen aan verbetert (en daar reken ik op) of er anderszins opmerkingen over hebt, deel ze met mij, dan deel ik dat weer hier. Ik gaf hier zelf nog lessen mee maken. Die zal ik hier ook delen.

  Model   Beschrijving   Excel   Google Sheets   Modelleertaal
  1   Zonder overlijden Model01   Virus01   Virus011
  2   Met overlijden Model02   Virus02   Virus02

1 Tom  heeft het model direct beschikbaar gemaakt! Als je een grafiek wil met alle interessante grootheden, dan moet je even klikken op Plot meerdere grafieken (klein linksonder). Dan kun je kiezen om de grafieken voor S,I en R aan te zetten.

Als laatste

En als een ding duidelijk is, is het dat een lagere infectiegraad, echt helpt. Dus, volg de richtlijnen van het RIVM en de regering, wees zelfs nog iets strenger en dan zal het altijd beter gaan. Stay safe!

Arjan van der Meij

Binary art: plotten

Sinds een week of twee beschikt mijn school over een tweedehands AxiDraw V3 van Evil Mad Scientist Laboratories (EMSL). In feite een gewone ouderwetse flatbed plotter die in het XY-vlak kan bewegen en een pen op en neer kan doen. De besturing kan op vele manieren maar de eenvoudigste is via het freeware vector-tekenprogramma InkScape. Wij (Per-Ivar, Marten en ik) waren een paar jaar geleden op bezoek in Californië bij de ontzettend aardige mensen van EMSL en die vertelden dat ze er toen mee bezig waren (ze lieten ons toen een enorme machine zien die met tandwielen en een speciaal gevormde rand de handtekening van een president kon zetten). Er zijn nu een paar versies op de markt die vooral verschillen in tekenoppervlak. Een nieuwe kost ongeveer €500. Wij kochten hem voor een beetje minder.

Als eerste probeer je dan natuurlijk een meegeleverd bestand. En dan begint de magie. Het is wat de Amerikanen “Mesmerizing” en wat mijn leerlingen in goed Nederlands “Satisfying” noemen. Heel fijn om te kijken naar een machine die iets analoogs doet: echt tekenen. Zo netjes kan niemand het. Maar een voorbeeld downloaden en afdrukken is leuk maar ook saai. En zelfs tekenen in InkScape, wat goed kan, is niet wat ik leuk vind. De voorbeelden die je op Twitter kunt vinden onder de hashtag #plottertwitter zijn tekeningen die eigenlijk allemaal gegenereerd zijn met behulp van een computer, geprogrammeerd dus. En dat wilde ik ook. En ik wist ook wat.

Een tijd geleden al (zo’n vijf jaar) maakte ik in de programmeertaal (ontworpen door en voor kunstenaars) Processing, de “Binary Tiles”. Kortweg een representatie van de binaire getallen (0-en en 1-en) in een vierkant rooster waarbij de bits ook weer in een vierkant waren gerangschikt. Je ziet hiernaast de eerste vijf getallen, 000000000, 000000001, 000000010, 000000011, 000000100. Ik maakte toen een vierkant met 216 =65.536 vierkantjes van  4×4 tegeltjes. Allemaal verschillend. Ik maakte een goede afdruk die je hiernaast afgedrukt ziet, liggend op de vloer. Hij is 1,2×1,2 m groot. Nu te zien in mijn lokaal op De Populier. Ik schreef daar toen ook een blogpost over waar ik het beter uitleg dan hier. Als je dat wil lezen, kun je hier klikken. Een voor een nerd als ik zeer bevredigende exercitie kwam toen tot een einde. Soms is er een leerling die ernaar vraagt en die leg ik het dan geduldig uit. Heel soms vindt zo’n leerling het dan ook “cool”.

Nu met een plotter tot onze beschikking bedacht ik me dat ik wel eens daar mee zou kunnen beginnen, met mijn “Binaire Tegeles” project. In die tijd heb ik wat uitstapjes gemaakt en een daarvan waren de “binaire elpees”. Je ziet er hier een paar rechts op een shirt getekend. Wat ik daar deed waren boven op elkaar, van buiten naar binnen, steeds kleinere cirkels maken. Zwart gevuld als het binaire getal een 1 is, en wit gevuld als Het een 0 is. Zo wordt elk binair getal een ander gevulde cirkel.

Ik bekeek de code weer, maakte het me weer eigen en download een Processing-bibliotheek die van het plaatje een SVG-bestand maakt, het native bestandsformaat van Inkscape. Na wat proberen, kreeg ik een goed SVG-bestand dat ik in Inkscape laadde. Plotten maar. Ik merkte direct twee dingen:

  1. De pen die ik gebruikte, een gewone fineliner, was helemaal niet zo “fine”. Veel te dik voor wat ik wilde laten zien.
  2. De plotter tekende alle cirkels. Dus ook de witte. Denkfout! De plotter tekent alle lijnen welke kleur ze ook zijn, dus ook de witte. En vullen kan hij niet, alleen lijnen tekenen.

Ik kocht betere pennen (zie hiernaast), beter papier en veranderde de code zodanig dat alleen de zwarte cirkels werden getekend (zie voor de uitleg hiernaast). Nu was de plot beduidend beter. Ik wilde de 212 versie maken. Dat levert echter 4096 cirkels op, 256×256 dus en dat was ook voor het ultradunne pennetje echt teveel van het goede op een A4-tje. De 210 versie, met 1024 cirkels dus, 32×32 was echter wel mooi tekenbaar.

Toen dit eenmaal lukt, was ik niet meer te stoppen. Ik maakte:

Binaire vierkanten. Twee versies: eentje zoals de cirkels: steeds kleiner naar het midden en toe en de ander ok steeds kleiner maar dan naar een hoek (was niet de bedoeling maar een fout in de code leverde deze laatste variant waar ik best tevreden over was.

 

[KGVID width=”480″]https://plakkenenknippen.nl/wp-content/uploads/2019/01/IMG_8583.mov[/KGVID]
Binaire sterren.
Vanuit het midden “spaken”. Beginnend op 12 uur en dan met de klok mee (processing wil op 3/9 uur beginnen en tegen de klok in). Degenen met de cirkeltjes aan het einde van een spaak is erg vrolijkmakend, zie het filmpje hierboven. Hiernaast zie je de  uurversie (212 met een cirkeltje eromheen) is mooi maar wel erg precies. Hier dus wel 4096 cirkeltjes met spaken. Hij deed er meer dan vier uur over om deze te maken.

 

 

Binaire “spikes”. Een soort signaal. Zoveel posities als er bits zijn en bij elke “1” een spike. Levert dus een veel bredere tekening op want deze is 8 breed en slechts 1 hoog. Hier varieerde ik in de vorm van de “spikes”. Kromme, signaalachtige spikes, maar ook driehoeken en zelfs vierkanten.

 

 

Patroon. Nog niet geplot.

Binaire zeshoeken. Een intrigerende vorm, een zeshoek. Ook een fijn wiskundig puzzeltje om de juiste coördinaten te vinden (√3 speelt een belangrijke rol). Hier ook weer steeds kleiner wordende zeshoeken. Ik koos ervoor om ze tegen elkaar aan te leggen: zeshoeken vullen de ruimte. Ik moet dit nog eens proberen met vierkanten, die dit ook doen.

Marten wees me op een kunstwerk dat hij ooit zag waarbij er heel veel objecten waren gegoten van gips maar elke was verschillend. “Zou je ook dat ook niet kunnen doen? Dus door elkaar heen maar allemaal verschillend?” Dat heb ik bij de cirkels, de vierkanen en de zeshoeken geprobeerd en de resultaten zijn vaak behoorlijk “pleasing to the eye”. Je mist wel de structuren die in elke “op volgorde” plot zitten vanwege de aard van de binaire getallen die het representeert.

Ik ben nog lang niet klaar met de binaire getallen en ok niet met de plotter. Wellicht ga ik ook plots verkopen dan kan ik een eigen plotter gaan kopen. De toekomst is mooi!

Arjan

Binaire “kunst”: het vervolg

Als mijn hoofd weer een beetje leeg raakt, na een weekje in de zomervakantie, komt mijn inwendige nerd hard naar boven. Een paar jaar geleden heb ik mijn binary tiles, ofwel Binaire Tegels gemaakt. Je kunt er hier (algemeen), en hier (the movie) over lezen. Deze tegels blijven in mijn hoofd zitten en ik besloot wat te gaan experimenteren. De eerste die ik wilde maken waren wat ik eerst “Binaire klokken” noemde maar die door mijn geslaagde leerling Quinty omgedoopt zijn tot Binaire taartjes. De code vind je hiernaast en het resultaat hieronder. De cirkels zijn verdeeld in 12 segmenten (12 uur dus) en die schuiven binair op. Zie hiernaast.Je kunt dan 212=4096 verschillende taartvormen maken.Als je dat wilt laten zien op een vierkant plaatje, dan moet je er dus √(4096)=64 op een zijde zetten.

Het programmeerwerk heb ik gedaan met de geweldige programmeertaal Processing. Niet voor niets een taal die door veel digitale kunstenaars wordt gebruikt (en nee, ik ben geen kunstenaar hoor). Niet veel regels code nodig (het zal vast korter kunnen). Zie hiernaast.

Het resultaat is toch weer verrassend. Je ziet weer patronen, donker/licht. Ga er met je muis overheen voor de details (niet op klikken: levert verkeerd plaatje; toch gedaan? Klik kruisje rechtsboven).

De tweede representatie die ik probeerde was de streep-representatie.Een witte achtergrond en een zwart, horizontaal streepje als het een “0” is en een witte als het een “1” is.
Een vierkant van 12 strepen, dus ook hier weer 64×64 “vierkantje” met strepen.
Deze representatie ziet er wat chaotischer uit maar daar wellicht wel wat spannender (ik weet, hier praat een nerd). De code lijkt vanzelfsprekend erg op de code hierboven en is nog iets eenvoudiger. Als je geïnteresseerd bent, laat het me dan weten, dan stuur ik de code op. Het leverde in ieder geval dit op:

De derde representatie die ik maakte, werd wellicht het mooist (je weet dat van te voren niet, heb ik gemerkt). Bij deze representatie heb ik cirkels gemaakt. De binnenste cirkel is de rechterbit (least significant), de buitenste de linkerbit (most significant). Als die “0” is dan is die zwart en bij “1” weer wit.

Het resultaat is een soort hallucinerend jaren 70 patroon. Ook lijken het wel LP’s. Mijn grote vriend Per-Ivar was onder de indruk en wil een t-shirt van een stukje.

Volgende actie: eens nadenken over het gebruik van kleur. Lastig maar lekker om je hoofd omheen te buigen.

 

 

Update:

Binaire LP’s: the movie!. Op dezelfde manier als hier beschreven, heb ik van de LP-plaatjes een animatiefilm gemaakt. Zitten toch weer geinige patronen in. Check it out! (duur: 2.43 min., kijk vooral door tot het einde, de laatste seconden zijn grappig omdat de cirkel dan wordt weggevaagd. Afijn.)

Top 2000: de talen

Zo leuk! De talen waarin alle liedjes van de Top 2000 worden gezongen is ook in de database ingevuld. Met name Jeroen heeft hiervoor hard gewerkt. Het is soms nog best lastig. In welke taal staat bijvoorbeeld dat lied over die vliegtuigstoelen, “Holiday in Spain” van Bløf en The Counting Crows? “Nederlands/Engels” is dat geworden. En liedjes in het Fries, Drents, Achterhoeks, Limburgs? Op het gevaar af te verzeilen in allerhande fundamentele discussie heb ik (en alleen ik) besloten slechts Fries toe te laten omdat dat echt een officiële taal is. De rest is gewoon Nederlands

De conclusie is helder: Engels is, by far, de voertaal van de Top 2000. Van de 2000 liedjes worden er 1753 in het Engels gezongen. Dat is dus 87,65%. Tweede is, dat zal je niet verbazen, Nederlands: 187 liedjes dus net geen 10%. Onze oosterburen leveren 18 nummers, bijna 1% is Duits dus. De rest staat hiernaast in een schema en hieronder in een treemap, waarbij het relatieve oppervlakte aangeeft wat het aandeel is. Ik heb die ingekleurd met de vlaggen van landen waar de taal gesproken wordt. En ik weet dat veel, zo niet de meeste, liedjes niet uit het Verenigd Koninkrijk komen (waar de Union Jack de valt van is) maar dit is wel zo mooi. Ik maak volgend jaar, als de data helemaal op orde is, wel eens een analyse van de herkomst van de liedjes naar land.

Hieronder zie je de heatmap met de verdeling van de verschillende talen over de Top 2000 van 2018.

Een paar opvallende zaken:

  • De langste reeks Engelse nummer achter elkaar is van 1924 t/m 1977: 44 nummers achter elkaar.
  • De langste reeks niet-Engelse nummers achter elkaar is van 1443 t/m 1446: vier Nederlandstalige nummers (twee keer André Hazes in dat rijtje!).
  • Ook een mooi rijtje: 910, 911, 912, respectievelijk “De Bom” van Doe Maar, “In Nije Dei” van de kast en als laatste “Con te Partiro” van Andrea Bocelli.
  • Op 1098 en 1099 vinden we twee instrumentele nummers achter elkaar: “Peter Gunn Theme” van Emerson, Lake & Palmer en “Comptine D’Un Autre Été: L’Après-Midi (Amélie)” van Yann Tiersen.
  • De merkwaardigste, qua talen is nummer 1978, “Sadeness” van Enigma. Een deel daarvan is in het Latijn en een deel in het Frans.

Fijne jaarwisseling!

#top2000: lengte van de liedjes

<update: Heatmap met de lengtes van de nummers van de TOP 2000 toegevoegd. Klik op het plaatje om te vergroten>

Een paar dagen geleden vroeg ik om hulp bij het vullen van de database van de Top 2000 die ik bijhoud. En dat hebben er een boel gedaan! Een stuk of 12 fijne twitteraars hebben meegeholpen en op dit moment, vrijdag 28 december, 20.35 uur is meer dan 70% van de database gevuld. Grote klappen zijn gemaakt door Quint, mijn oud-leerling die de Spotify-API heeft gebruikt om automatisch de Spotify-link, de cover-art en de lengte van de nummers erin te zetten. Meer dan 90% van de nummers kon hij zo vinden. Jeroen, een van mijn oudste twittervrienden noteerde de niet-Engelstalige nummers uit en anderen gingen op zoek naar moeilijke nummers en artiesten. Heel vrolijk!

Een van de zaken waar ik erg benieuwd naar was en ben, is de lengte van de liedjes. En vandaag heb ik die helemaal aangevuld. Het is nu volledig. Let op: er bestaan vaak verschillende versies van nummers en de tijdsduur die op wikipedia staat is niet altijd helemaal gelijk aan die op Spotify staat maar grosso modo klopt het redelijk. Highlights en grafieken!

Highlights:

  • Het kortste nummer in de Top 2000 van 2018 is “Mercedes Benz” van Janis Joplin. Het duurt nog geen twee minuten: 1:47. Er zijn slechts drie andere nummers die korter duren dan twee minuten: “Georgia On My Mind” van Ray Charles (1:58), “For no one” van The Beatles (1:59) en “Blue Suede Shoes” van Elvis Presley (ook 1:59).
  • Het langste nummer is “Echoes” van Pink Floyd (plek 307):  23:32. Goede tweede is “Autobahn” van Kraftwerk (22:47, plek 906).
  • Er zijn 10 nummers die langer duren dan 10 minuten, de kortste van deze is van Deep Purple: Child in Time (!)
  • Als je alle nummers helemaal wil draaien ben je 144,5 uur kwijt. Dat zou moeten passen. De uitzending begon op 1e Kerstdag, 25 december om 08.00 uur en dus zijn er 16+6×24=160 uur beschikbaar. Het zou wel betekenen dat er maar zo’n 15,5 uur beschikbaar zou zijn voor praatjes, reclame en nieuws. Dat is ongeveer 5,5 minuut per uur. Dat wordt niet gehaald.
  • De gemiddelde lengte van een nummer uit de top 2000 is 4:20. De mediaan is 4:04 (de helft van de nummers is langer dan dat en de helft korter).
  • De meest voorkomende lengte van een nummer is 3:33. 25 nummers hebben die lengte (dit is dus de modus). Hiernaast staat de lijst van de nummers die 3 minuten en 33 seconde duren (niet kijken als je niet ge-Rickrolled wil worden).

Grafieken

Hieronder vind je een paar grafieken over de lengtes van de nummers. Als eerste een overzicht van alle lengtes. De lange en de korte zijn netjes verdeeld.

Nu met de hele lange en hele korte eruit. Het lijkt erop dat er wel wat meer langere liedjes bij de eerste 800 nummers staan.

De verdeling van de nummers. De meeste nummer zijn tussen de drie en de vier minuten lang, op de voet gevolgd door de categorie tussen vier en vijf minuten.

Hieronder zie je leverdeling van alle nummers (dus niet per minuut:

“Vroeger had je veel langere nummers!” Deze claim is ook te bekijken. Hieronder zie de grafiek van de lengte van de nummers door de jaren heen. Je ziet dat we begonnen met hele korte nummers. In de jaren zeventig werden ze soms heel lang maar daarna lijkt het uit te vlakken.

Arjan van der Meij

Top2000 Wordcloud 2018

Mijn grote vriend Arjan en ik delen de liefde voor muziek en nerden, dus wat is mooier dan aan het einde van het jaar Arjan te helpen met zijn jaarlijkse analyse van de top 2000. Een mooie gelegenheid om mijn recente programmeervaardigheden in Python en interesse in natural language processing op bot te vieren. Wat zou je zien als je alle Top2000 teksten op één hoop gooit?

Allereerst: alle credits voor de code, api en teksten naar Karanveer Singh, John Miller en Genius.com! En om maar met de deur in huis te vallen: als je 80.915 regels (dat is 1.557 A4-tjes op lettergrootte 12) oftewel 514.092 woorden oftewel 2.172.361 tekens op één hoop gooit, dan zie je dit: de WORDCLOUD TOP2000 2018! (klik op plaatje voor vergrote weergave)


Aangezien (volgens Google) circa 50%-60% van de liedjes over de liefde gaat, was mijn verwachting (en hoop) dat ‘love’ wel hoog zou eindigen. Dat bleek inderdaad het geval (4.017 maal), een mooie conclusie in deze kersttijd. Naast het hart bleek het hoofd goed vertegenwoordigd blijkens het prominente woord ‘know’ (3.018 maal). Ook ’time’ komt vaak voor (1.559 keer), waarbij het vooral om het ‘now’ gaat (1.960 maal).

Het is geen verrassing dat de Engelse taal overheerst. Het Nederlandstalige aandeel van circa 8% (daarin Rowen Hèze, Neet Oet Lottum en Gé Reinders meegerekend) is te klein om een rol van betekenis te spelen. Dit is anders als we de wordcloud van de top10 maken. Daar domineert onze eigen Boudewijn de Groot met zijn standvastige ‘ik geloof’.

Gemiddeld heeft een nummer 40 regels (circa driekwart A4)  en 257 woorden. Let op: dit is inclusief herhaling, gemiddeld genomen is circa 37% van de woorden uniek. Hieronder staan de grootverbruikers van de top 2000 op een rijtje, met op kop de Sugarhill Gang. Zoals verwacht staan er nog meer rappers in dit lijstje (tweemaal Eminem) en opmerkelijk genoeg ook tweemaal Meat Loaf. Abba heeft zich ook bij de grootverbruikers gezongen, echter speelt enigszins vals door wel héél veel herhaling (Take a chance on me – 10% unieke woorden – zie tweede plaatje hieronder). Bob Dylan blijft van deze subset het meest origineel.

Kijkend naar de top10 is Billy Joel met zijn Piano Man het langst van stof, terwijl Pink Floyd en Pearl Jam onderaan bungelen. Echter als we naar de variëteit in woordgebruik kijken (berekend als het percentage unieke woorden), dan staan Pink Floyd en Pearl Jam weer fier aan de top. Dus beide bands zijn niet zo spraakzaam, echter als er wat gezegd wordt dan even opletten.

Wat betreft natural language processing: ook daarvoor heb ik me in eerste instantie gericht op de top10. Eens kijken wat er gebeurt als bij de sentimentsanalyse van Pythons’ Natural Language Processing Toolkit (NLTK) worden gehaald. Deze toolkit geeft de gebruikte woorden een score (positief, neutraal of negatief). In eerste instantie kwam daar weinig schokkends uit: grotendeels neutraal. Om het sentiment van de teksten te benadrukken, heb ik de positieve en negatieve scores versterkt en wel met de factor 10. Dat geeft het volgende beeld:

Een opmerkelijke uitslag met Led Zeppelin als meest positieve lied zonder maar één wolkje aan de hemel en best een positieve review voor Hotel California. De meest negatieve scores zijn voor Queen en Deep Purple, dat strookt wel met de verwachting gezien de schietincidenten. Met Boudewijn de Groot’s Avond kan de toolkit weinig ivm de taal.

Tot zover. Wij zijn druk met het verzamelen van data en hebben nog ideeën genoeg (o.a. jaar van uitgifte, genre etc). Dus we nerden nog even verder, wordt vervolgd!

Chris van Niekerk

Top 2000: data verzamelen

Al een aantal jaar ben ik een beetje aan het rommelen met de data van de Top 2000: de feestelijke afsluiting van het jaar op Radio 2. Radio 2 stelt de lijst in Excel beschikbaar en er zijn mensen die die data weer bij elkaar schrapen en er een totaalbestand van maken. Vorig jaar was ik weg in de Kerstvakantie maar dit jaar ben ik er weer en bekeek ik de “Lijst der Lijsten” weer eens.

Ik vond geen enkel bestand van alle nummers, zelfs niet t/m 2017, dus ik besloot die en die van 2018 zelf toe te voegen. Dat is nog geen sinecure: je moet twee lijsten in elkaar vlechten. En op radio 2 zijn ze niet heel consequent in de naamvoering. Zo zingen soms David Bowie & Tina Turner “Goodnight” en soms “Tina Turner & David Bowie”. Excel ziet dat als twee heel verschillende duo’s. Ik denk dat er een stuk of 100 per keer in staan die dat doen. Afijn. Mijn probleem en ik heb het opgelost. Alles staat er weer in.

Nu heb ik alhier weleens wat statistieken etc. gepubliceerd. Die zijn tijdens de recente hack verdwenen maar gelukkig was ik ze in 2016 gevraagd het ook te publiceren op Sargasso en daar stond het nog in volle glorie. Klik hier voor deze statistieken.

Een aantal van deze statistieken worden leuker als je meer jaren tot je beschikking hebt maar echt veel meer kan ik er niet aan toevoegen. En vele vragen die ik wel heb, kan ik niet met deze data beantwoorden.

Dit is de data die Radio 2 beschikbaar stelt:

  • Artiest
  • Titel
  • Release-jaar
  • Plaats in de top 2000 in het betreffende jaar

Je kunt daar natuurlijk wel wat extra data van maken. Zo kun je letters tellen, zoeken naar woorden in de titel (zo zijn er 5 titels waar het word “queen” in voorkomt en maar liefst 18 met “king”).  Maar hoeveel Nederlandstalige nummers erin staan, kun je niet weten. Hoeveel zijn er van een bandje? Zijn er in de top 50 meer bandjes dan solo-artiesten? Hoeveel rocknummers staan erin? Wat is het langste liedje? Wat het kortste? Hoe lang duurt het gemiddelde Duitstalige liedje?

Nu is mijn grote vriend Chris wel al aan de gang om de teksten erbij betrekken. Hij werkt met Python en de API van genius.com om bijvoorbeeld te kijken naar woordfrequenties of positief/negatief etc.

Ik zou dus echter meer gegevens willen hebben. Maar als ik dat allemaal zelf moet gaan doen van alle nummers, dan wordt dat een hele lange zit. Dus…

Crowdsourcen

Ik ga vragen of jullie mee willen helpen. Gewoon tussendoor, als je zin en tijd hebt, een paar nummers uitzoeken. Wat online zoekwerk op verschillende plekken, misschien weer even luisteren. Je mailt/DM-t me en ik deel de link naar de Google Sheets file (werkt hetzelfde als Excel). Beloning: nieuwe statistieken en, als je dat OK vindt, je naam op deze site als “contributor”.

Naar welke data ben ik op zoek?

  • Lengte van de song
  • Taal
  • Band/solo-artiest/duet
  • Nationaliteit band
  • Zanger/zangeres
  • Aantal leden van de band
  • Naam leadzanger/leadzangers
  • Genre (lastig, ik weet het)
  • URL YouTube
  • URL Spotify
  • URL plaatje single

[klik op het plaatje voor een voorbeeld]
We zullen wel zien hoever we komen. Als het goed gaat, kunnen we ook de nummers doen die ooit in de Top 2000 stonden maar nu niet meer. Als dat allemaal lukt, hoeven we volgend jaar alleen maar de nieuwe erbij te doen (een mens mag dromen nietwaar?).

Bronnen

Jullie kunnen vast beter zoeken dan ik maar voor de veiligheid de plekken waar ik mijn informatie over de nummers vind:

Goed. Mail of DM me als je mee wil doen. Hoe dan ook. Merry Christmas!

Arjan

Binaire tegels. The Movie

Na een hack verdwenen alle posts van onze site. Ik haal er af en toe eentje weer op, van het Internet Archive. 

De binaire patronen die staan op mijn poster zijn fascinerend. Vanaf elke afstand zie je andere, grotere patronen. Vanaf het moment dat de afdruk in mijn bezit was, wilde ik graag delen hoe gaaf het is om de er naar te kijken. Maar dat kunnen alleen maar de mensen doen die dichtbij zijn.

Toen bedacht ik dat het wellicht mooi zou zijn om er een film van te maken. Elke van de 65.536 vierkantjes zou langs moeten komen. Beginnend met een volledig zwart vierkant en eindigend met een volledig wit vierkant. Eerst heb ik uitgerekend of het geen avondvullend programma zou worden.

65.536 beeldjes afspelen met 25 beeldjes per seconde (PAL) levert op: 65.536/25= 2621,44 seconde. Dat zijn 43 minuten en 42 seconde. Ongeveer zo lang als De Wereld Draait Door. Lang maar uit te zitten.

Hoe moest ik dat nou gaan aanpakken? Het komt erop neer dat ik 65.536 afbeeldingen moest gaan maken. Die afbeeldingen moeten dan geïmporteerd worden in een movie-editor die er een film van maakt.

Kortom: ik moest weer gaan programmeren. Toen ik een tijdje geleden de poster maakte, maakte ik het in PHP: een programmeertaal die op het web leeft. Aan het gebruik daarvan kleven een paar nadelen. Zo is het een omslachtig proces om een programma te maken, het te uploaden naar een website en dan een pagina in een browser aan te roepen. Bovendien is het voor iedereen te doen die de URL kent (dat zullen er niet veel zijn). Maar het grootste nadeel is wel dat je de server nogal belast. Het programma gaat een tekening maken en die opslaan en dat 65.536 keer achter elkaar. Dat vergt nogal wat. Bovendien heb je dan 65.536 files op je server staan die je dan allemaal moet gaan downloaden op je computer. Gaat er ergens een stapje mis (en dat is niet zo gek, met programmeren) dan moet je de verkeerde files weggooien, opnieuw starten etc., etc. etc.

Ik was dus al snel af van het idee dat ik het met PHP moest doen. Er is bovendien een fantastisch alternatief dat pas op mijn pad was verschenen nadat ik de poster had geprogrammeerd. En dat is Processing. Processing is een Open Source programmeertaal, met name ontworpen voor kunstenaars en ontwerpers (Wikipedia). Niet al te ingewikkeld en stand-alone of binnen een website te draaien. En, wat belangrijk voor mij is, grafisch gericht.

 

Toen ik dit eenmaal bedacht was het niet al te lastig meer. Althans, programmeren is altijd een zwaar pad. Je doet heel snel iets fout (zie jij het verschil tussen (binairok[teller]) en binairok[teller)] ?) en de logica van een programma is onverbiddelijk. Maar gelukkig is er hele goede documentatie over Processing en als je er niet uitkomt zijn er ook nog ontzettend veel mensen die je helpen op fora.

Voorzichtig testen is de truc. Niet meteen alle files willen schrijven. Want dat zijn er veel! Uiteindelijk kreeg ik hem aan het werk. In de eerste versie maakte hij plaatjes met het “startvierkantje” rechtsonder. Logisch eigenlijk maar ik wilde hem graag rechtsboven; daar start hij ook op de poster. En dan moet je het helemaal opnieuw doen. De code herschrijven was geen probleem. Maar alle oude files weggooien wel. Dat duurde even. En het opnieuw laten lopen van het programma kost ook tijd (20 minuten). En het samenvoegen (met Time Lapse Assembler) ook (30 minuten). Maar, daar is ie dan. Nog een keer hier. En kijk eens goed.

Rechtsboven knippert hij het snelst: 25 x per seconde. Daarnaast gaat het twee keer zo langzaam, daarnaast nog twee keer zo langzaam etc. Hij doet telkens hetzelfde en “duwt” aan het eind van elke cyclus een wit blokje eentje verder. Dan begint het weer opnieuw. De tijd die het duurt voordat hij het volgende blokje wit heeft gemaakt, is net zo lang als de verstreken tijd. Elke keer! Dus: op de helft van de tijd (op 21.51m) maakt hij het blokje rechtsonder wit en begint hij weer van voren af aan!

Voor een nerd als ik, extreem fascinerend. Binnenkort versie 2.0 met een Hammingafstand van 1 (met dank aan @ongerijmd).

Update: hier is de film van de tegels met Hammingafstand = 1. Ik heb de data van @ongerijmd geïmporteerd in het programma en verder dezelfde weg gevolgd als hierboven. Het is zo mogelijk nog hallicunerender… 

Binaire tegels

Na een hack verdwenen alle posts van onze site. Ik haal er af en toe eentje weer op, van het Internet Archive. 

Andere getallenstelsels dan ons tientallig stelsel vind ik al heel lang heel fascinerend.

Twaalftallig ( “It’s counting, Jim, but not as we know it!”, zie hier) maar vooral binair. Tweetallig. Alleen met nullen en enen alle getallen kunnen maken die je maar wilt. Gekke rekenregels als: verdubbelen betekent een 0 erachteraan plakken (101+101=1010, oftewel 5+5=10). En die prachtige patronen. Kijk maar hiernaast. De minst belangrijke bit (rechts) alterneert telkens: even is een nul aan het eind, oneven een 1. De bit daarnaast alterneert om de twee, de bit daarnaast om de vier enzovoort. Het is van een verbluffende schoonheid.

Als een echte nerd, zat ik een paar jaar geleden te klooien met een binair patroon. Het begon met een vierkant raster van 3×3, dat ik binair wilde vullen. Dus starten met een leeg vierkant, dan links bovenin zwart, dan de tweede, dan de eerste en de tweede, dan de derde, etc. Zie hieronder voor de start van het patroon:

Je kunt dan dus op negen plekken een witte of zwarte vulling hebben. Dat betekent dat je dus 29 = 512 vierkantjes hebt. Ik wilde het graag in een vierkant plaatsen. Dat was even lastig: √(512)=22,63. Ik besloot het vierkant 23×23 te maken. Dat betekent dat ik 23×23-512=529-512=17 vierkantjes niet kon vullen.

Wat moest ik nu met die 17 lege vakjes? Ik maakte eerst in een tekenprogramma (Fireworks) alle vierkantjes. Veel werk maar door de herhalende patronen  in een uurtje klaar. Het was mooier dan ik had gedacht. Allerlei patronen die zich plotseling manifesteerden! Maar ik had nog steeds die 17 lege vakjes. Ik zag dat sommige vakjes net een letter leken. Even puzzelen en ik had een oplossing. Ik plakte ergens in het midden die vakjes die “binary tiles” vormden. Dat zijn 12 letters. Een spatie erbij en het was klaar.Voor een goede-doelen-actie op mijn school heb ik er twee afgedrukt en verkocht. Mijn eerste verkochte kunstwerken! Maar het bleef een beetje kriebelen.

Het feit dat er niet een mooi vierkant van een 3×3 model te maken is, zat me dwars. En de oplossing ligt om de hoek! Een 4×4 model kan makkelijk in een vierkant. Er zijn 16 plekken, dus er ontstaan 216 =65.536 vierkantjes. En  √(65.536) = 256!

Maar. 65.536 tegels maken. Als je er 1024 per avond maakt, ben je toch nog 64 dagen bezig! Dat moet dus anders. Gelukkig zijn binaire getallen de natuurlijke vrienden van programmeren! Dat moet dus kunnen. Nu was het alweer een tijdje geleden dat ik had geprogrammeerd en ik moest ook een programmeertaal vinden die grafisch werkt. Na een avondje zoeken en proberen, besloot ik te gaan werken met een programmeertaal waarmee ik in een ver verleden wel wat had gewerkt: PHP.

Als je dat niet zo vaak doet, wordt je code niet heel efficiënt maar het lukt me uiteindelijk. De code staat hier (als een plaatje) onder.

En weer, zoals altijd eigenlijk, werd ik overvallen door de kracht van programmeren. Met een paar regels code een vlak van 1793×1793 pixels vullen, precies op de manier zoals ik dat wilde, dat is welhaast magie.

Dit is alweer een tijdje geleden. Ik heb het eens laten afdrukken maar vergat toen dat het nogal klein is. Op 30×30 cm is één vierkantje slechts 30/256=0,12 cm groot. En dat is niet te zien. En ja, dan komen er weer andere zaken voorbij en ik vergat het.

Een week geleden liet ik het fotoalbum van onze vakantie in Wales afdrukken en dacht ik plotseling aan mijn pixelart, mijn binaire tegels kunstwerk. Ik heb uitgerekend dat als de foto afgedrukt zou worden op 100×100 cm het wel te zien zou zijn (100/256=0,4 cm). Ik zocht naar de juiste (lees: niet zo dure) afdrukcentrale (posterxxl.nl), zag dat een 120×120 cm poster een paar euro meer was dan de 100×100 cm poster, koos de eerste en drukte op de Verzend-knop. Een paar dagen later kwam de (enorme) koker binnen.

Wat een feest! Ik kan er uren naar kijken. Je ziet hiernaast het eerste stukje, linksboven. Ik heb ervoor gekozen het vlakke in een zwart kader te plaatsen en tussen elke tegel een pixelbreed randje te zetten. 16×16=256 tegels. Van zo’n stukje zijn er dus nog 256. Het begint links bovenaan met een volledig zwart vakje, meteen daarnaast zie je 0000000000000001, daarnaast 0000000000000010, daarnaast 0000000000000011 etc. Rechts onderaan zie je, als je goed kijkt, 0000111100001111 (3855).

Hieronder zie je hem helemaal, uitgespreid over de grond in onze woonkamer:

En wat nu? De afdruk is dus goed gelukt. Ik ga deze plakken op een stuk foamboard en ik hang hem in mijn lokaal. Ook ga ik hem nog eens bestellen maar dan achter plexiglas opgeplakt of op aluminium. Duur maar mooi.

En een volgende grootte? Een vierkantje van 5×5 heeft 225=33.554.432 mogelijke invullingen. Dat is veel. Bovendien is deze niet vierkant af te drukken; √(33.554.432)=5792,61875148. Een vierkantje van 6×6 dan? Dat zijn nog veel meer vierkantjes: 236 = 68.719.476.736. Dat zijn er wel extreem veel. Deze is wel vierkant af te drukken: 262.144 x 262.144. Als ik de vierkantjes dan echter op dezelfde grootte (0,4 cm, zie boven) wil afdrukken wordt de poster meer dan 1000 x 1000m. Ik vermoed dat weinig afdrukcentrales dit aankunnen.

Update 02:

Raymond (ook een #plakkerenknipper, zie twitter) heeft een LED-paneel de patronen van de Binaire Tegels laten afspelen. Supervet! Bedankt man!

https://www.youtube.com/watch?v=GA54n-McmE0

Update 01:

Ik heb een video geschoten vaneen virtuele vlucht over de poster. Van linksboven via rechtsboven naar rechtsonder. Geeft een beeld hoe groot het is.

Rechten e.d.

Ik heb de code en de uiteindelijke jpg-file van de tegels niet beschikbaar gesteld. Het is namelijk best veel werk geweest om dit te maken. En een digitale kopie is exact. Mocht je geïnteresseerd zijn, mail me dan even: arjan@plakkenenknippen.nl. Ik denk overigens dat degenen die belangstelling hebben, wellicht zelf zo “nerderig” zijn dat ze dit, zeker met mijn uitleg, best zelf zouden kunnen maken.