<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Methodenkniff mit Piff</title>
	<atom:link href="https://gymnasium-oberpfalz.de/category/methodenkniff-mit-piff/feed/" rel="self" type="application/rss+xml" />
	<link>https://gymnasium-oberpfalz.de</link>
	<description></description>
	<lastBuildDate>Sun, 15 Mar 2026 07:39:48 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://gymnasium-oberpfalz.de/wp-content/uploads/2024/02/cropped-BDB-Logo-half-size-32x32.jpg</url>
	<title>Methodenkniff mit Piff</title>
	<link>https://gymnasium-oberpfalz.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>NotebookLM von Google &#8211; das entgültige Aus für die W-Seminararbeit?</title>
		<link>https://gymnasium-oberpfalz.de/2026/03/02/notebooklm-von-google-das-entgueltige-aus-fuer-die-w-seminararbeit/</link>
					<comments>https://gymnasium-oberpfalz.de/2026/03/02/notebooklm-von-google-das-entgueltige-aus-fuer-die-w-seminararbeit/#respond</comments>
		
		<dc:creator><![CDATA[wpadmin]]></dc:creator>
		<pubDate>Mon, 02 Mar 2026 12:23:00 +0000</pubDate>
				<category><![CDATA[KI]]></category>
		<category><![CDATA[Methodenkniff mit Piff]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[NotebookLM]]></category>
		<category><![CDATA[W-Seminar]]></category>
		<guid isPermaLink="false">https://gymnasium-oberpfalz.de/?p=54209</guid>

					<description><![CDATA[NotebookLM ist ein KI-gestütztes Notiz- und Recherchetool von Google, das als persönlicher Forschungsassistent arbeitet. Man lädt eigene Quellen wie PDFs, Webseiten oder Dokumente hoch, und die KI hilft dabei, Inhalte zu verstehen, zusammenzufassen, zu strukturieren und gezielt Fragen dazu zu...]]></description>
										<content:encoded><![CDATA[
<p>NotebookLM ist ein KI-gestütztes Notiz- und Recherchetool von Google, das als persönlicher Forschungsassistent arbeitet. Man lädt eigene Quellen wie PDFs, Webseiten oder Dokumente hoch, und die KI hilft dabei, Inhalte zu verstehen, zusammenzufassen, zu strukturieren und gezielt Fragen dazu zu beantworten – inklusive Verweisen auf die jeweiligen Originalstellen.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="544" src="https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/NotebookLM-1024x544.jpg" alt="" class="wp-image-54595" srcset="https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/NotebookLM-1024x544.jpg 1024w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/NotebookLM-300x159.jpg 300w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/NotebookLM-768x408.jpg 768w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/NotebookLM-1536x815.jpg 1536w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/NotebookLM.jpg 1912w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>NotebookLM bietet für wissenschaftliches Arbeiten eine Reihe klarer Vorteile:</p>



<ul class="wp-block-list">
<li><strong>Keine Halluzinationen:</strong> Die KI greift ausschließlich auf die Quellen zurück, die man selbst bereitstellt, und erfindet keine externen Inhalte.</li>



<li><strong>Quellengestützte Antworten:</strong> Aussagen werden mit Verweisen auf konkrete Textstellen belegt.</li>



<li><strong>Schnelle Zusammenfassungen:</strong> Lange Texte lassen sich effizient auf Kernaussagen verdichten.</li>



<li><strong>Gezielte Fragestellungen möglich:</strong> Komplexe Inhalte können präzise abgefragt und vertieft werden.</li>



<li><strong>Strukturierungshilfe:</strong> Unterstützung beim Ordnen von Themen, Argumenten und Kapiteln.</li>



<li><strong>Zeitersparnis:</strong> Recherche- und Sichtungsprozesse werden deutlich beschleunigt.</li>



<li><strong>Fördert Verständnis:</strong> Hilft, schwierige Passagen verständlich zu erklären.</li>



<li><strong>Ideal für große Materialmengen:</strong> Auch umfangreiche Dokumentensammlungen bleiben handhabbar.</li>
</ul>



<p>In Summe wirkt das Tool wie ein persönlicher, quellentreuer Forschungsassistent – und genau darin liegt seine besondere Stärke.</p>



<p>Die Expertinnen und Experten des Referentennetzwerks testen das Tool derzeit intensiv und informieren Sie demnächst über das Potenzial von NotebookLM sowie darüber, ob es tatsächlich das endgültige Aus für die W-Seminararbeit bedeuten könnte.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://gymnasium-oberpfalz.de/2026/03/02/notebooklm-von-google-das-entgueltige-aus-fuer-die-w-seminararbeit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ilovepdf.com &#8211; ein kostenloses starkes pdf-Tool</title>
		<link>https://gymnasium-oberpfalz.de/2026/03/02/ilovepdf-com-ein-kostenloses-starkes-pdf-tool/</link>
					<comments>https://gymnasium-oberpfalz.de/2026/03/02/ilovepdf-com-ein-kostenloses-starkes-pdf-tool/#respond</comments>
		
		<dc:creator><![CDATA[wpadmin]]></dc:creator>
		<pubDate>Mon, 02 Mar 2026 09:54:07 +0000</pubDate>
				<category><![CDATA[Methodenkniff mit Piff]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[ilovepdf]]></category>
		<category><![CDATA[PDF]]></category>
		<guid isPermaLink="false">https://gymnasium-oberpfalz.de/?p=54571</guid>

					<description><![CDATA[Die Seite ilovepdf.com bietet eine umfassende Sammlung von Online‑Werkzeugen rund um PDF‑Dateien. Sie richtet sich an Nutzerinnen und Nutzer, die PDFs schnell bearbeiten, konvertieren oder organisieren möchten, ohne zusätzliche Software installieren zu müssen. Sie stellt zahlreiche Funktionen zur Verfügung, etwa...]]></description>
										<content:encoded><![CDATA[
<p>Die Seite <em><a href="http://www.ilovepdf.com">ilovepdf.com</a></em> bietet eine umfassende Sammlung von Online‑Werkzeugen rund um PDF‑Dateien. Sie richtet sich an Nutzerinnen und Nutzer, die PDFs schnell bearbeiten, konvertieren oder organisieren möchten, ohne zusätzliche Software installieren zu müssen.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="456" src="https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/ilovepdf6-1024x456.jpg" alt="" class="wp-image-54574" srcset="https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/ilovepdf6-1024x456.jpg 1024w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/ilovepdf6-300x134.jpg 300w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/ilovepdf6-768x342.jpg 768w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/ilovepdf6-1536x684.jpg 1536w, https://gymnasium-oberpfalz.de/wp-content/uploads/2026/03/ilovepdf6.jpg 1868w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sie stellt zahlreiche Funktionen zur Verfügung, etwa PDF zusammenführen, teilen, komprimieren, in Word, PowerPoint oder Excel umwandeln, Word/PowerPoint/Excel in PDF umwandeln, PDFs bearbeiten, in JPG umwandeln, JPG in PDF umwandeln, unterschreiben, Wasserzeichen einfügen, drehen und vieles mehr.</p>



<p>Das Tool funktioniert ohne Anmeldung oder Registrierung und ist kostenlos nutzbar. Der einzige Haken: PDFs müssen auf die Server von ilovepdf.com hochgeladen werden. Da die Server weltweit verteilt stehen, ist die Nutzung aus datenschutzrechtlicher Sicht problematisch – insbesondere, wenn es sich um schulisch relevante oder sensible Inhalte handelt.</p>



<p><br><br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://gymnasium-oberpfalz.de/2026/03/02/ilovepdf-com-ein-kostenloses-starkes-pdf-tool/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Schallinterferenz mit Vibe-Coding</title>
		<link>https://gymnasium-oberpfalz.de/2026/03/01/schallinterferenz-mit-vibe-coding/</link>
					<comments>https://gymnasium-oberpfalz.de/2026/03/01/schallinterferenz-mit-vibe-coding/#respond</comments>
		
		<dc:creator><![CDATA[wpadmin]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 08:58:00 +0000</pubDate>
				<category><![CDATA[KI]]></category>
		<category><![CDATA[Methodenkniff mit Piff]]></category>
		<category><![CDATA[Unterricht]]></category>
		<guid isPermaLink="false">https://gymnasium-oberpfalz.de/?p=54094</guid>

					<description><![CDATA[Dieses Programm wurde von ChatGPT in 2 Minuten erstellt. Kurzbeschreibung Diese interaktive Simulation macht Schall sichtbar und hörbar.Mit wenigen Reglern erleben Schülerinnen und Schüler, wie sich Töne verstärken oder gegenseitig auslöschen – ein Aha-Moment, wenn aus Lärm plötzlich Stille wird.Ideal...]]></description>
										<content:encoded><![CDATA[
<p>Dieses Programm wurde von ChatGPT in 2 Minuten erstellt. <br></p>



<p><strong>Kurzbeschreibung</strong></p>



<p>Diese interaktive Simulation macht <strong>Schall sichtbar und hörbar</strong>.<br>Mit wenigen Reglern erleben Schülerinnen und Schüler, wie sich Töne <strong>verstärken oder gegenseitig auslöschen</strong> – ein Aha-Moment, wenn aus Lärm plötzlich <strong>Stille</strong> wird.<br>Ideal für eine kurze, eindrucksvolle Einführung in das Thema <strong>Interferenz</strong> im Physikunterricht.</p>



<!doctype html>
<html lang="de">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Interferenz-Simulation (Physik 7) – Schall &#038; Wellen</title>
  <style>
    :root{
      --bg:#0b0f14; --card:#121a24; --text:#e9eef6; --muted:#a6b7cb;
      --line:#223145; --accent:#6ee7ff; --ok:#7cffb2; --warn:#ffcf6e;
    }
    *{box-sizing:border-box}
    body{
      margin:0; font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
      background: radial-gradient(1200px 800px at 15% 10%, #132034 0%, var(--bg) 55%, #06080b 100%);
      color:var(--text); min-height:100vh;
      display:flex; flex-direction:column;
    }
    header{padding:16px 16px 10px; max-width:1100px; width:100%; margin:0 auto;}
    h1{margin:0; font-size:18px; font-weight:750; letter-spacing:.2px}
    p{margin:6px 0 0; color:var(--muted); font-size:13px; line-height:1.35}
    .wrap{
      max-width:1100px; width:100%; margin:0 auto; padding:12px 16px 18px;
      display:grid; grid-template-columns: 360px 1fr; gap:14px; flex:1;
    }
    @media (max-width: 980px){ .wrap{grid-template-columns:1fr;} }
    .card{
      background: linear-gradient(180deg, rgba(18,26,36,.92), rgba(12,16,24,.92));
      border:1px solid rgba(110,231,255,.14);
      border-radius:16px; box-shadow:0 18px 50px rgba(0,0,0,.35);
      padding:14px;
    }
    .card h2{margin:0 0 10px; font-size:14px; letter-spacing:.2px}
    .row{
      border:1px solid rgba(255,255,255,.06);
      background: rgba(255,255,255,.02);
      border-radius:12px;
      padding:10px 10px;
      margin-bottom:10px;
    }
    .rowTop{display:flex; justify-content:space-between; gap:10px; align-items:baseline;}
    .row label{font-size:13px}
    .val{font-variant-numeric:tabular-nums; font-size:12px; color:var(--muted);
         padding:6px 8px; border:1px solid rgba(255,255,255,.08);
         border-radius:10px; background:rgba(0,0,0,.22); min-width:78px; text-align:right;}
    input[type="range"]{width:100%; accent-color: var(--accent); margin-top:8px;}
    .tog{display:flex; gap:10px; align-items:center; padding:10px 10px; margin-bottom:10px;
         border:1px solid rgba(255,255,255,.06); background:rgba(255,255,255,.02); border-radius:12px;}
    .tog input{width:18px; height:18px; accent-color:var(--accent);}
    .btns{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:10px;}
    button{
      border:none; border-radius:14px; padding:10px 12px; cursor:pointer;
      background: rgba(110,231,255,.14); color:var(--text); font-weight:700;
      border:1px solid rgba(110,231,255,.22); transition: transform .05s ease, background .2s ease;
      user-select:none;
    }
    button:hover{background:rgba(110,231,255,.20)}
    button:active{transform:translateY(1px)}
    button.secondary{
      background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.10);
    }
    button.secondary:hover{background: rgba(255,255,255,.10)}
    .hint{
      margin-top:10px; padding:10px; border-radius:12px;
      border:1px dashed rgba(255,255,255,.14);
      background: rgba(0,0,0,.18);
      color:var(--muted); font-size:12px; line-height:1.35;
    }
    .stage{padding:0; overflow:hidden; position:relative; min-height:540px;}
    canvas{display:block; width:100%; height:100%;}
    .overlay{
      position:absolute; left:12px; top:12px; display:flex; flex-wrap:wrap; gap:8px;
      padding:8px 10px; background:rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.10);
      border-radius:14px; backdrop-filter: blur(6px);
    }
    .pill{font-size:12px; padding:6px 8px; border-radius:999px;
      background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.10);
      color:var(--text);}
    .pill strong{font-variant-numeric:tabular-nums}
    .status{position:absolute; right:12px; top:12px; max-width:420px;}
    .statusBox{
      padding:10px 12px; border-radius:14px; backdrop-filter: blur(6px);
      border:1px solid rgba(255,255,255,.10);
      background: rgba(0,0,0,.28);
      color:var(--muted); font-size:12px; line-height:1.35;
    }
    .badge{display:inline-block; padding:2px 8px; border-radius:999px; margin-right:6px;
      border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.06); color:var(--text);}
    .ok{border-color: rgba(124,255,178,.35); background: rgba(124,255,178,.10)}
    .warn{border-color: rgba(255,207,110,.35); background: rgba(255,207,110,.10)}
  </style>
</head>
<body>
<header>
  <h1>Interferenz (Schall): Zwei Wellen überlagern sich</h1>
  <p>Stelle <b>Frequenz</b>, <b>Amplitude</b> und <b>Phasenverschiebung</b> ein. Du siehst die zwei Einzelwellen und ihre <b>Summe</b> – und kannst den Ton hören.</p>
</header>

<div class="wrap">
  <section class="card">
    <h2>Regler</h2>

    <div class="row">
      <div class="rowTop">
        <label for="freq">Frequenz (Hz)</label>
        <div class="val" id="freqVal">220</div>
      </div>
      <input id="freq" type="range" min="80" max="880" step="1" value="220" />
    </div>

    <div class="row">
      <div class="rowTop">
        <label for="a1">Amplitude Welle 1</label>
        <div class="val" id="a1Val">0.60</div>
      </div>
      <input id="a1" type="range" min="0" max="1" step="0.01" value="0.60" />
    </div>

    <div class="row">
      <div class="rowTop">
        <label for="a2">Amplitude Welle 2</label>
        <div class="val" id="a2Val">0.60</div>
      </div>
      <input id="a2" type="range" min="0" max="1" step="0.01" value="0.60" />
    </div>

    <div class="row">
      <div class="rowTop">
        <label for="phase">Phasenverschiebung Δφ (Grad)</label>
        <div class="val" id="phaseVal">180</div>
      </div>
      <input id="phase" type="range" min="0" max="180" step="1" value="180" />
    </div>

    <div class="row">
      <div class="rowTop">
        <label for="mix">Lautstärke (Master)</label>
        <div class="val" id="mixVal">0.25</div>
      </div>
      <input id="mix" type="range" min="0" max="0.8" step="0.01" value="0.25" />
    </div>

    <div class="tog">
      <input id="showParts" type="checkbox" checked />
      <span>Einzelwellen anzeigen</span>
    </div>

    <div class="tog">
      <input id="audioOn" type="checkbox" />
      <span><b>Ton an</b> (Browser fragt evtl. nach Interaktion)</span>
    </div>

    <div class="btns">
      <button id="presetCancel">Preset: Auslöschung</button>
      <button id="presetAdd" class="secondary">Preset: Verstärkung</button>
      <button id="pause" class="secondary">Pause/Weiter</button>
      <button id="reset" class="secondary">Reset</button>
    </div>

    <div class="hint">
      <b>Merksätze:</b><br>
      • <span class="badge ok">Δφ = 0°</span> → Wellen „gehen zusammen“ → <b>lauter</b> (konstruktiv).<br>
      • <span class="badge warn">Δφ = 180°</span> bei gleicher Amplitude → Berg trifft Tal → <b>leiser/0</b> (destruktiv).<br>
      • Noise Cancelling: Man erzeugt gezielt eine <b>Gegenwelle</b> (≈ 180°).
    </div>
  </section>

  <section class="card stage">
    <div class="overlay">
      <div class="pill">Summe (Peak): <strong id="sumPeak">–</strong></div>
      <div class="pill">Interferenz: <strong id="kind">–</strong></div>
      <div class="pill">Δφ: <strong id="phi">180°</strong></div>
    </div>
    <div class="status">
      <div class="statusBox" id="statusBox">
        <span class="badge">Info</span>
        Klicke zuerst <b>Ton an</b>, dann läuft Audio stabil. (Auf iPads/Handys nötig.)
      </div>
    </div>
    <canvas id="cv"></canvas>
  </section>
</div>

<script>
(() => {
  // ---------- UI ----------
  const $ = (id) => document.getElementById(id);
  const freq = $("freq"), a1 = $("a1"), a2 = $("a2"), phase = $("phase"), mix = $("mix");
  const showParts = $("showParts"), audioOn = $("audioOn");
  const freqVal = $("freqVal"), a1Val = $("a1Val"), a2Val = $("a2Val"), phaseVal = $("phaseVal"), mixVal = $("mixVal");
  const sumPeakEl = $("sumPeak"), kindEl = $("kind"), phiEl = $("phi");
  const statusBox = $("statusBox");
  const btnCancel = $("presetCancel"), btnAdd = $("presetAdd"), btnPause = $("pause"), btnReset = $("reset");

  function bindRange(el, out, fmt){
    const update = () => out.textContent = fmt(el.value);
    el.addEventListener("input", update);
    update();
  }
  bindRange(freq, freqVal, v => String(v));
  bindRange(a1, a1Val, v => Number(v).toFixed(2));
  bindRange(a2, a2Val, v => Number(v).toFixed(2));
  bindRange(phase, phaseVal, v => String(v));
  bindRange(mix, mixVal, v => Number(v).toFixed(2));

  // ---------- Canvas ----------
  const canvas = $("cv");
  const ctx = canvas.getContext("2d");
  let W=800, H=540, dpr=1;

  function fit(){
    const rect = canvas.getBoundingClientRect();
    dpr = Math.max(1, Math.min(2, window.devicePixelRatio || 1));
    W = Math.max(300, Math.floor(rect.width));
    H = Math.max(420, Math.floor(rect.height));
    canvas.width = Math.floor(W * dpr);
    canvas.height = Math.floor(H * dpr);
    ctx.setTransform(dpr,0,0,dpr,0,0);
  }
  window.addEventListener("resize", fit);

  // ---------- Audio (WebAudio) ----------
  let audioCtx = null, osc1=null, osc2=null, g1=null, g2=null, master=null;
  let audioReady = false;

  async function ensureAudio(){
    if(audioReady) return true;
    try{
      audioCtx = new (window.AudioContext || window.webkitAudioContext)();
      master = audioCtx.createGain();
      master.gain.value = Number(mix.value);
      master.connect(audioCtx.destination);

      osc1 = audioCtx.createOscillator();
      osc2 = audioCtx.createOscillator();
      g1 = audioCtx.createGain();
      g2 = audioCtx.createGain();

      osc1.type = "sine"; osc2.type = "sine";
      osc1.frequency.value = Number(freq.value);
      osc2.frequency.value = Number(freq.value);

      g1.gain.value = Number(a1.value) * 0.4; // scaled for comfort
      g2.gain.value = Number(a2.value) * 0.4;

      // Phase shift: approximate by delay (Δt = Δφ / 360 / f)
      // We'll implement using DelayNode on osc2 path for audible effect.
      const delay = audioCtx.createDelay(1.0);
      delay.delayTime.value = phaseToDelay(Number(phase.value), Number(freq.value));

      osc1.connect(g1).connect(master);
      osc2.connect(delay).connect(g2).connect(master);

      osc1.start(); osc2.start();

      audioReady = true;
      statusBox.innerHTML = `<span class="badge ok">Audio</span> Ton läuft. Probiere Δφ = 0° (lauter) und 180° (leiser).`;
      return true;
    } catch(e){
      statusBox.innerHTML = `<span class="badge warn">Audio</span> Audio konnte nicht gestartet werden (Browser/Policy). Visualisierung funktioniert trotzdem.`;
      return false;
    }
  }

  function phaseToDelay(phiDeg, fHz){
    const phi = Math.max(0, Math.min(180, phiDeg));
    const f = Math.max(1, fHz);
    const dt = (phi/360) * (1/f); // seconds
    return Math.min(0.02, dt); // cap to 20ms for stability
  }

  function updateAudio(){
    if(!audioReady) return;
    const f = Number(freq.value);
    osc1.frequency.setTargetAtTime(f, audioCtx.currentTime, 0.01);
    osc2.frequency.setTargetAtTime(f, audioCtx.currentTime, 0.01);

    g1.gain.setTargetAtTime(Number(a1.value) * 0.4, audioCtx.currentTime, 0.01);
    g2.gain.setTargetAtTime(Number(a2.value) * 0.4, audioCtx.currentTime, 0.01);
    master.gain.setTargetAtTime(Number(mix.value), audioCtx.currentTime, 0.01);

    // Update delay for phase shift
    // Recreate delay node would be expensive; simplest: adjust delayTime if exists
    // We used a delay node inline, but we didn't keep a reference. So: keep it now.
  }

  // Keep a reference to delay node (rewrite ensureAudio slightly)
  let delayNode = null;
  async function ensureAudio2(){
    if(audioReady) return true;
    try{
      audioCtx = new (window.AudioContext || window.webkitAudioContext)();
      master = audioCtx.createGain();
      master.gain.value = Number(mix.value);
      master.connect(audioCtx.destination);

      osc1 = audioCtx.createOscillator();
      osc2 = audioCtx.createOscillator();
      g1 = audioCtx.createGain();
      g2 = audioCtx.createGain();
      delayNode = audioCtx.createDelay(1.0);

      osc1.type = "sine"; osc2.type = "sine";

      osc1.connect(g1).connect(master);
      osc2.connect(delayNode).connect(g2).connect(master);

      osc1.start(); osc2.start();

      audioReady = true;
      statusBox.innerHTML = `<span class="badge ok">Audio</span> Ton läuft. Probiere Δφ = 0° (lauter) und 180° (leiser).`;
      syncAudioAll(true);
      return true;
    } catch(e){
      statusBox.innerHTML = `<span class="badge warn">Audio</span> Audio konnte nicht gestartet werden (Browser/Policy). Visualisierung funktioniert trotzdem.`;
      return false;
    }
  }

  function syncAudioAll(immediate=false){
    if(!audioReady) return;
    const t = audioCtx.currentTime;
    const f = Number(freq.value);
    const phi = Number(phase.value);
    osc1.frequency.setTargetAtTime(f, t, immediate?0.001:0.01);
    osc2.frequency.setTargetAtTime(f, t, immediate?0.001:0.01);
    g1.gain.setTargetAtTime(Number(a1.value)*0.4, t, immediate?0.001:0.01);
    g2.gain.setTargetAtTime(Number(a2.value)*0.4, t, immediate?0.001:0.01);
    master.gain.setTargetAtTime(Number(mix.value), t, immediate?0.001:0.01);
    delayNode.delayTime.setTargetAtTime(phaseToDelay(phi, f), t, immediate?0.001:0.01);
  }

  // ---------- Simulation math ----------
  let running = true;
  let t0 = performance.now();

  function classifyInterference(phiDeg, A1, A2){
    // rough: if phi near 0 => constructive; near 180 with similar amplitudes => destructive
    const phi = Math.abs(phiDeg);
    if(phi <= 20) return {label:"konstruktiv", badge:"ok"};
    const ampRatio = (Math.min(A1,A2) / Math.max(A1,A2 || 1));
    if(phi >= 160 && ampRatio >= 0.85) return {label:"destruktiv", badge:"warn"};
    return {label:"teilweise", badge:""};
  }

  function draw(){
    fit();
    const now = performance.now();
    const dt = (now - t0) / 1000;
    if(running) t0 = now;

    // background
    ctx.clearRect(0,0,W,H);

    // axes
    const midY = H*0.55;
    const topY = H*0.25;
    const padX = 18;
    ctx.lineWidth = 1;
    ctx.strokeStyle = "rgba(255,255,255,0.10)";
    ctx.beginPath();
    ctx.moveTo(padX, midY); ctx.lineTo(W-padX, midY);
    ctx.moveTo(padX, topY); ctx.lineTo(W-padX, topY);
    ctx.stroke();

    // parameters
    const f = Number(freq.value);
    const A1 = Number(a1.value);
    const A2 = Number(a2.value);
    const phiDeg = Number(phase.value);
    const phi = (phiDeg*Math.PI)/180;

    phiEl.textContent = `${phiDeg}°`;

    // time mapping for visible motion (slow down)
    const time = running ? (now/1000) : (t0/1000);

    // wave drawing
    const samples = Math.min(1200, Math.max(400, Math.floor(W*1.2)));
    const span = (W - padX*2);
    const k = 2*Math.PI * 2.2; // spatial frequency on canvas (controls how many periods shown)
    const omega = 2*Math.PI * (f/220) * 0.9; // temporal speed scaled (not real-time frequency)
    const ampPx = Math.min(120, H*0.20);

    function y1(xn){ return A1 * Math.sin(k*xn - omega*time); }
    function y2(xn){ return A2 * Math.sin(k*xn - omega*time + phi); }
    function ys(xn){ return y1(xn) + y2(xn); }

    // compute peak of sum (approx)
    let peak = 0;
    for(let i=0;i<200;i++){
      const xn = i/199;
      peak = Math.max(peak, Math.abs(ys(xn)));
    }
    sumPeakEl.textContent = peak.toFixed(2);

    const kind = classifyInterference(phiDeg, A1, A2);
    kindEl.innerHTML = `<span class="badge ${kind.badge}">${kind.label}</span>`;

    // draw sum (always)
    ctx.lineWidth = 2;
    ctx.strokeStyle = "rgba(110,231,255,0.95)";
    ctx.beginPath();
    for(let i=0;i<samples;i++){
      const xn = i/(samples-1);
      const x = padX + xn*span;
      const y = midY - ys(xn)*ampPx;
      if(i===0) ctx.moveTo(x,y); else ctx.lineTo(x,y);
    }
    ctx.stroke();

    // draw parts (optional)
    if(showParts.checked){
      ctx.lineWidth = 1.6;
      ctx.strokeStyle = "rgba(255,255,255,0.40)";
      ctx.beginPath();
      for(let i=0;i<samples;i++){
        const xn = i/(samples-1);
        const x = padX + xn*span;
        const y = topY - y1(xn)*ampPx*0.9;
        if(i===0) ctx.moveTo(x,y); else ctx.lineTo(x,y);
      }
      ctx.stroke();

      ctx.strokeStyle = "rgba(124,255,178,0.75)";
      ctx.beginPath();
      for(let i=0;i<samples;i++){
        const xn = i/(samples-1);
        const x = padX + xn*span;
        const y = topY - y2(xn)*ampPx*0.9;
        if(i===0) ctx.moveTo(x,y); else ctx.lineTo(x,y);
      }
      ctx.stroke();

      // labels
      ctx.fillStyle = "rgba(255,255,255,0.70)";
      ctx.font = "12px system-ui, sans-serif";
      ctx.fillText("Einzelwellen (oben)", padX, topY - ampPx*0.9 - 10);
      ctx.fillStyle = "rgba(110,231,255,0.85)";
      ctx.fillText("Summe (unten): Interferenz", padX, midY - ampPx - 10);
    } else {
      ctx.fillStyle = "rgba(110,231,255,0.85)";
      ctx.font = "12px system-ui, sans-serif";
      ctx.fillText("Summe: Interferenz", padX, midY - ampPx - 10);
    }

    // little guide text
    ctx.fillStyle = "rgba(255,255,255,0.55)";
    ctx.font = "12px system-ui, sans-serif";
    ctx.fillText("Δφ = 0° → lauter (konstruktiv) | Δφ = 180° &#038; A1≈A2 → leiser/0 (destruktiv)", padX, H - 16);

    requestAnimationFrame(draw);
  }

  // ---------- Events ----------
  const syncAll = () => {
    // update audio if running
    if(audioReady) syncAudioAll();
  };
  [freq,a1,a2,phase,mix].forEach(el => el.addEventListener("input", syncAll));

  audioOn.addEventListener("change", async () => {
    if(audioOn.checked){
      // must be in user gesture context; checkbox change usually counts
      const ok = await ensureAudio2();
      if(ok){
        if(audioCtx.state === "suspended") await audioCtx.resume();
        syncAudioAll(true);
      } else {
        audioOn.checked = false;
      }
    } else {
      if(audioReady){
        master.gain.setTargetAtTime(0, audioCtx.currentTime, 0.02);
        statusBox.innerHTML = `<span class="badge">Audio</span> Ton aus (Visualisierung läuft weiter).`;
      }
    }
  });

  btnCancel.addEventListener("click", () => {
    a1.value = "0.60"; a2.value = "0.60"; phase.value = "180";
    a1Val.textContent = "0.60"; a2Val.textContent = "0.60"; phaseVal.textContent = "180";
    syncAll();
    statusBox.innerHTML = `<span class="badge warn">Preset</span> Auslöschung: gleiche Amplitude + 180°.`;
  });

  btnAdd.addEventListener("click", () => {
    a1.value = "0.60"; a2.value = "0.60"; phase.value = "0";
    a1Val.textContent = "0.60"; a2Val.textContent = "0.60"; phaseVal.textContent = "0";
    syncAll();
    statusBox.innerHTML = `<span class="badge ok">Preset</span> Verstärkung: gleiche Amplitude + 0°.`;
  });

  btnPause.addEventListener("click", () => {
    running = !running;
    btnPause.textContent = running ? "Pause/Weiter" : "Weiter";
    statusBox.innerHTML = running
      ? `<span class="badge">Info</span> Animation läuft.`
      : `<span class="badge">Info</span> Animation pausiert (Wellen stehen).`;
  });

  btnReset.addEventListener("click", () => {
    freq.value="220"; a1.value="0.60"; a2.value="0.60"; phase.value="180"; mix.value="0.25";
    freqVal.textContent="220"; a1Val.textContent="0.60"; a2Val.textContent="0.60"; phaseVal.textContent="180"; mixVal.textContent="0.25";
    syncAll();
    statusBox.innerHTML = `<span class="badge">Reset</span> Standard: 220 Hz, A1=A2=0.6, Δφ=180° (nahe Auslöschung).`;
  });

  // Start
  fit();
  requestAnimationFrame(draw);

  // Small note for audio: keep master at 0 if audio checkbox off
  setInterval(() => {
    if(audioReady && !audioOn.checked){
      master.gain.setTargetAtTime(0, audioCtx.currentTime, 0.03);
    } else if(audioReady && audioOn.checked){
      master.gain.setTargetAtTime(Number(mix.value), audioCtx.currentTime, 0.03);
    }
  }, 250);
})();
</script>
</body>
</html>
]]></content:encoded>
					
					<wfw:commentRss>https://gymnasium-oberpfalz.de/2026/03/01/schallinterferenz-mit-vibe-coding/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Filme im Unterricht anschauen</title>
		<link>https://gymnasium-oberpfalz.de/2025/03/15/filme-im-unterricht-anschauen/</link>
					<comments>https://gymnasium-oberpfalz.de/2025/03/15/filme-im-unterricht-anschauen/#respond</comments>
		
		<dc:creator><![CDATA[wpadmin]]></dc:creator>
		<pubDate>Sat, 15 Mar 2025 07:25:00 +0000</pubDate>
				<category><![CDATA[Methodenkniff mit Piff]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[Filme]]></category>
		<category><![CDATA[Kino]]></category>
		<category><![CDATA[YouTube]]></category>
		<guid isPermaLink="false">https://gymnasium-oberpfalz.de/?p=53964</guid>

					<description><![CDATA[Ein Thema sorgt in den Wochen vor Weihnachten in den Lehrerzimmern regelmäßig Gesprächsstoff sorgt: das Zeigen von Spielfilmen im Unterricht in der letzten Schulwoche. Hier kursiert seit Jahren ein hartnäckiger Mythos: Lehrkräfte sollen angeblich von der GEMA oder anderen „Filmwächtern“ mit hohen...]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>Ein Thema sorgt in den Wochen vor Weihnachten in den Lehrerzimmern regelmäßig Gesprächsstoff sorgt: <strong>das Zeigen von Spielfilmen im Unterricht in der letzten Schulwoche.</strong> Hier kursiert seit Jahren ein hartnäckiger Mythos: Lehrkräfte sollen angeblich von der GEMA oder anderen „Filmwächtern“ mit hohen Geldstrafen belegt worden sein, weil sie einen Disney-Klassiker im Klassenzimmer gezeigt haben. Manche Geschichten gehen sogar so weit, dass Schüler ihre Lehrkraft „angeschwärzt“ haben – natürlich, weil die Eltern zufällig bei einer Organisation arbeiten, die sich für eine strenge Auslegung der Vorführrechte starkmacht. Unsere Recherche zeigt jedoch: Diese Geschichten sind so belastbar wie ein Schneemann im Hochsommer. <strong>Es gibt keine auffindbaren Fälle in Bayern, in denen Lehrkräfte juristisch belangt wurden, weil sie Filme im Klassenverband gezeigt haben.</strong> Aber wie bei jeder guten Legende gilt: Sie hält sich hartnäckig, weil sie so schön dramatisch klingt. Trotzdem lohnt sich zur Klärung und Selbstversicherung ein Blick auf die rechtliche Lage:</p>



<p>Viele Spielfilme sind ausschließlich für private,&nbsp;<strong>also nicht-öffentliche</strong>, Vorführungen lizenziert. Ob ihre Nutzung im Unterricht erlaubt ist, hängt davon ab, ob die Vorführung als&nbsp;<strong>nicht-öffentlich oder öffentlich</strong>&nbsp;beurteilt wird. Nach § 60a UrhG dürfen Lehrkräfte bis zu 15 % eines Werkes problemlos nutzen. Ganze Spielfilme sind somit nur zulässig, wenn die Vorführung im Klassenzimmer als „nicht-öffentlich“ eingestuft wird. Einige Fachportale wie iRights.info, OER.de und das Landesmedienzentrum Baden-Württemberg vertreten die Ansicht, dass der Klassenraum nicht als rein privater Kreis gilt. Demnach wäre eine Lizenz zum Zeigen ganzer Spielfilme zwingend erforderlich. Andere Institutionen wie das FWU und der Lehrerfortbildungsserver Baden-Württemberg hingegen sehen im festen Klassenverband eine abgegrenzte, nicht-öffentliche Gruppe. Nach deren Auffassung dürfen Lehrkräfte privat erworbene DVDs im Unterricht zeigen. Das FWU führt hierzu aus: „Die Vorführung eines Films im Klassenverband ist keine öffentliche Wiedergabe, da die Gruppe eindeutig begrenzt ist.“&nbsp;Quelle:&nbsp;<a href="https://www.friedrich-verlag.de/friedrich-plus/sekundarstufe/englisch/literatur-film-medien/was-ist-erlaubt/" target="_blank" rel="noreferrer noopener">Friedrich Verlag – Was ist erlaubt?</a></p>



<p><strong>Wichtig: Vom Bayerischen Kultusministerium gibt es bislang keine explizite offizielle Aussage, ob eine Filmvorführung im Klassenzimmer als „nicht-öffentlich“ oder „öffentlich“ gilt. Die Rechtslage bleibt damit interpretationsbedürftig, und Schulen orientieren sich in der Praxis an den genannten Fachmeinungen oder treffen eigene Regelungen. Wenn es eine Regelung an Ihrer Schule dazu gibt, sollten Sie diese kennen und befolgen!</strong></p>



<p>Ein entscheidender&nbsp;<strong>Unterschied ergibt sich zudem zwischen der Nutzung von DVDs und Streamingdiensten:</strong>&nbsp;Streamingdienste wie Netflix, Disney+ oder Amazon Prime gestatten in ihren AGB die Nutzung ausschließlich für private Zwecke, was die Vorführung im Klassenzimmer in der Regel ausschließt –&nbsp;<strong>selbst wenn man sich auf § 60a UrhG beruft, kann dies gegen die Nutzungsbedingungen verstoßen und rechtliche Konsequenzen nach sich ziehen.</strong>&nbsp;<strong>Während DVDs also vergleichsweise unproblematisch sind, setzen Streamingdienste klare Grenzen</strong>&nbsp;– außer spezielle Bildungsfreigaben liegen vor. Netflix bietet beispielsweise einige eigene Dokumentationen wie „Das Dilemma mit den sozialen Medien“ oder „Vergiftet: Die schmutzige Wahrheit über unser Essen“ ausdrücklich für Bildungszwecke an. Diese dürfen im Rahmen einer einmaligen, nicht-kommerziellen Vorführung im Unterricht gezeigt werden, sofern keine Eintrittsgelder erhoben werden.</p>



<p><strong>Unbedenkliche Anlässe für Spielfilme im schulischen Kontext gibt es aber au</strong><strong>ch</strong>: Ein sicherer Rahmen ist die&nbsp;<a href="https://www.schulkinowoche.bayern.de/" target="_blank" rel="noreferrer noopener"><strong>SchulKinoWoche Bayern</strong></a>, organisiert vom ISB. Im März 2026 findet die nächste Ausgabe statt, mit Spielfilmen und begleitenden Unterrichtsmaterialien in über 130 Kinos – alles offiziell als Unterricht anerkannt. Darüber hinaus stellen die&nbsp;<a href="https://mediendienste.info/" target="_blank" rel="noreferrer noopener"><strong>Landesmediendienste Bayern</strong></a>&nbsp;über ihre Verleihstellen Filme mit Vorführrechten bereit, sodass auch nicht-private Vorführungen rechtlich abgesichert sind. Weitere lizenzierte Angebote sind das&nbsp;<a href="https://www.ardalpha.de/lernen/schulfernsehen/index.html" target="_blank" rel="noreferrer noopener"><strong>Schulfernsehen des BR (ARD alpha)</strong></a>, das Filme zum Download und zur Ausstrahlung im Unterricht anbietet, sowie&nbsp;<a href="https://www.planet-schule.de/index.html" target="_blank" rel="noreferrer noopener"><strong>Planet Schule</strong></a>, das für Bayern zugeschnittene Bildungsfilme bereitstellt.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gymnasium-oberpfalz.de/2025/03/15/filme-im-unterricht-anschauen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
